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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

インストーラ作成ツール調査(VisualStudio Installerと簡単インストーラ)

まずは20年ほど前に書いた記事「簡単インストーラ」を読み返してみた。当時はInstallShieldをよく知らんかったが、今はよくわかっているほうで、さらにはInstallShieldに慣れきってしま …

no image

プログラムっておもしろいなぁとつくづく思うなり

ここんところぜんぜんプログラムを書いてなくて仕事がつまんなくなってきたところに、トラブル対応があってプログラムをじっくりと書いてみた。いやはやおもしろい。余計な仕事が飛び込んでこない環境で、スピッツ聞 …

no image

いたちごっこ1

ソフト開発者とクラッカー。その果てしない戦いの日々をここに記します。現在進行形のその戦いに終止符を打つべく、努力を重ねている今、臨場感をもって伝えられれば、と思います。 その前に、「いたちごっこ」とい …

PDFファイルを扱うプログラミング用ライブラリ一覧

以下の記事がよく読まれているみたいなので、もっと幅広く「PDFファイルを扱うプログラミング用ライブラリ一覧」という本記事を書いてみる気になった。 iTextSharpのバージョンとライセンスが難しい …

デュアルモニターでツールバーをドラッグすると枠非表示で残像が出る

デュアルモニター環境で、MFCで作ったアプリをメインモニター側に出して、アプリのツールーバー(CToolBar)をドラッグすると、枠がメインモニター側に表示されずに、サブモニター側に枠と残像が表示され …