CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

データ暗号化レポート

投稿日:

【様々な暗号化方式】
共通鍵暗号方式と公開鍵暗号化方式の2種類がある。両者を組み合わせてハイブリット方式を用いる場合もある。
共通鍵は、暗号化と復号化で同じ鍵を使う。アルゴリズムがシンプルで素早く実行できるメリットあり。暗号化方式はDES、RC4、AESが有名で、現在の世界標準は、高い安全性からAES256となっている。
公開鍵は、暗号化と復号化で異なる鍵を使う。管理すべき鍵の数が少なくて済むのがメリット。データの証明に使う電子署名としての利用。暗号化方式はRSA、楕円曲線暗号が有名。

【身近な暗号化】
インターネット通信を暗号化するSSLが最も身近な暗号化。ユーザーが利用しているブラウザとサーバー間の通信を暗号化し、第三者による盗聴やデータ改ざんを防止可能。
zipにパスワードを付けると暗号化される。強度としてStandard ZIP 2.0とAES-256を指定できる。pdfも同様で、PDFバージョン1.7ではAES256に対応。古くはバージョン1.3時代にRC4 40bitだった。パスワード付きのzipやpdfを読み込むプログラムを作る際には、利用するライブラリがこれら暗号化方式に対応しているかが重要となる。
ドライブ丸ごと暗号化するならBitLocker。アタッシェケース、秘分などオリジナル系の暗号化ソフトもあり。

【案件概要】
アプリのライセンスを管理するための仕組みがある。アプリが必要になったら、オンラインでライセンスを取得して、不要になったら返却することが可能。ライセンスが特定マシンに固定化されないため、必要なアプリ本数が少なくて済むというユーザーメリットがある。アプリの不正利用をさせたくないというCADの文化から生まれた仕組み。詳細は省くが、要するにどのマシンでもアクティベーションができては困るので、ライセンス情報の暗号化と復号化を行う必要があった。

【C#による実装】
マネージドコードの代表格C#であれば実装は容易(アンマネージドコードのC++だと情報が少なく実装が困難)。
共通鍵暗号方式を採用するなら、AESの一択。アルゴリズムが完全にオープンにされており、多くの数学者や暗号研究家たちにより選考されているため。
暗号化方式がAESであれば、AesManagedクラスを利用する。キー長、ブロックサイズ、モード(CBC、CFB、CTSなど)、パディング(PKCS7、ISO10126など)、共通鍵、初期化ベクトルをパラメータで渡すのみ。
共通鍵がパスワードのことで、キー長さが128bitであれば16バイトの文字列を指定できる。

CBCモードでの初期化ベクトル(Initial Vectorを略してIV)が興味深い。ようするにキー(パスワード)のことで固定値にしておいてもよいが、AesManagedクラスのGenaerateIVメソッドで作らせて、暗号結果のファイルの先頭などに埋め込んでおく運用とすると、暗号化する度にランダムなデータ列となって、強度の高い暗号ファイルとなる。復号化時に、ファイル先頭のIVを読み込むことはもちろん必要。
暗号化の前後でのzip圧縮やbaase64でのエンコードを行うのも定石。暗号化時の順序を取り決めておき、復号化時に逆の手順を踏むことで正しく複合化することができる。これによって暗号化強度が高まる。

【参考URL】
『暗号化とは?方式・仕組み・アルゴリズムの種類・方法 – 復号化やハッシュ化の意味も解説』
『ZIPを暗号化する際に気にしたい強度とは。暗号化のメリット・デメリットも紹介』
『Visual Studio C#でファイルを暗号化してみる』

-ソフト開発

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

VC2015のプロジェクトを久しぶりにビルドしたらエラーになったけど。。

エラーはこんな感じ。

最小化したウインドウの位置を保存して復元するとまずい話(C++編)

ウインドウを最小化した状態としてタスクバーから右クリックして閉じるってやると、次回ウインドウを起動したときに画面外に出てしまって、操作不能になるアプリがある。そんなときは、タスクバーの上にカーソルを置 …

マルチスレッドプログラミング(C++編)

マルチスレッドプログラミング(VB.net編) マルチスレッドプログラミング(C#編) もあるので、ご覧あれ。 5秒以上の時間を要する処理をやらせていると応答なしになってかっこ悪い、なんてことをアラフ …

zipcopy Ver1.07リリース

zipcopyをリビジョンアップして、Ver1.07とした。 詳細は以下の通り。 Ver1.07 2020/3/1 ・zip圧縮と解凍、ファイルコピーと削除処理についてスレッド化して、これら処理中にダ …

PDFium第2弾はPDFを画像化するWindowsフォームアプリケーションなり

「PDFium ViewerによるPDFレンダリングがイケてる」では、最低限のWindowsフォームアプリケーションを作ったわけだが、その第2弾は普通の人(非プログラマー)でも使えるPDFの画像変換ア …