OpenSSLによるファイルの暗号化

  OpenSSLとは,SSL/TLSプロトコルを実現するために開発されたオープンソースなソフトウェアです. SSL/TLSとは,Secure Sockets Layer/Transport Layer Securityの略称で,端的に説明すれば現代の暗号化通信を支えているプロトコルのことです. SSL/TLS通信を利用すれば,セキュリティ上の危険(盗聴,改ざん,なりすまし)を予防することが出来ます. 個人情報をインターネット経由でやり取りする場合,Webブラウザは自動的にこのSSL/TLSプロトコルを使って通信を行います. Webブラウザのアドレスバーに鍵マークが見えたら,WebブラウザはSSL/TLSプロトコルを使って通信中です. OpenSSLには,このSSL/TLS通信を確立するために必要なツールが全て揃っています. 今回はその中のひとつである暗号化ツールを使ってみましょう.

AES暗号
  AESとは,Advanced Encryption Standardの略称で,暗号化方式の一です. 現在,標準暗号として採用されているため,セキュアな通信を行う時に広く利用されています. 以前はDES(Data Encryption Standard)と呼ばれる暗号化方式が標準暗号として採用されていたのですが,DESを現実的な時間で破る方法が発見されたため,2002年にAESが標準暗号として採用されました. 特徴をひとつ挙げると,鍵サイズを128,192,256ビットの中から選べることでしょう. 鍵サイズは長い(大きい)方が強力な暗号化を実現できる,ひとつの目安となります. ちなみに,DESの鍵サイズは56ビットとAESに比べると短い(小さい)ことが判ります. OpenSSLではAESの暗号化モードも選ぶことが出来ます. ECB(Electronic Code-Book)とCBC(Cipher-Block Chaining)という2つのモードから選べます. モードについての詳細はWikipediaに詳しく書かれているので参照下さい.

ファイルの暗号化
  今回は,暗号方式の中でも強力な,AES(鍵サイズ256ビット)CBCモードでの暗号化を実行して見ましょう. アメリカの政府機関や匿名通信でお馴染みのTor御用達な暗号方式です.
openssl aes-256-cbc -a -salt -in 入力ファイル名 -out 出力ファイル名
入力ファイル名には暗号化したいファイルのパスを,出力ファイル名には暗号化後のファイル名を入力します. 上コマンドを入力したらパスワードを入力しReturnキーを押下します. これで暗号化終わりです! 出力されたファイルは,先に入力したパスワードを知らない限り,復号されることはまず有り得ません. 軽くオプションの説明を. -aは,Base64へ暗号化するという意味です. つまり,印字可能文字へ暗号化するということです. このオプションを付加すれば暗号化されたファイルをテキストエディタで開くことが出来るように成ります. 開いても文書自体は暗号化されているので,文字や記号の羅列しか眺められません. -saltオプションを付与することで,より強固な暗号化を実現することが出来ます. これにより,Rainbow-Tableと呼ばれる暗号文(正しくはハッシュ値)と平文(暗号化されていない文書)の対応表を利用した解読への耐性を得られます.
  短い文書の暗号化をお望みでしたら,echoコマンドとの組み合わせが便利です.
echo "暗号化したい文書" | openssl aes-256-cbc -a -salt
とパイプ(|)を利用してコマンドを実行します. これならばターミナル上に暗号化された文書が表示されるので,コピペして自由に使うことが出来ます.

ファイルの復号化
  AES(256ビットCBCモード)で暗号化したので,復号化の際も同じ暗号方式を指定します.
openssl aes-256-cbc -d -a -in 入力ファイル名 -out 出力ファイル名
入力ファイル名には復号化したいファイルのパスを,出力ファイル名には復号化後のファイル名を入力します. その後,暗号化した時と同じパスワードを入力しReturnキーで復号化完了です. -dオプションはデコード,すなわち復号化するという意味です. -aはBase64なファイルを入力するよ,という合図です. これで元のファイルへ元通りです. また,opensslコマンドの最初の引数"aes-256-cbc"を"aes-192-cbc"とすれば,鍵サイズ192ビットのAESを復号出来ますし,また"aes-256-ecb"とすればEBCモードでの復号化も選択出来ます.
  ちなみに,復号化でもechoコマンドとの併用で,短い暗号文を簡単に復号化することが出来ます.
echo "暗号文" | openssl aes-256-cbc -d -a
暗号化時のパスワードを入力すれば,ターミナル上で直接復号した文書を閲覧することが出来ます.

  このように,OpenSSLを用いれば暗号方式に関する知識が無くとも文書およびファイルを暗号化することが出来ます. OpenSSLはその名の通りオープンソースなソフトウェアなので,公式サイトからソースコードをダウンロードすることが出来ます. OpenSSLはC言語とアセンブリ言語で出来ているので,言語に対する知識のある方は一読の価値有りです.
2875954842267617422 http://www.storange.jp/2014/11/openssl.html http://www.storange.jp/2014/11/openssl.html OpenSSLによるファイルの暗号化 2014-11-01T20:57:00+09:00 http://www.storange.jp/2014/11/openssl.html Hideyuki Tabata 200 200 72 72