« FMPSG015 -いちご- 新作デモが公開されました。 | トップページ | 今年の出演予定 »

2011/04/15

暗号技術の研究

AES暗号を処理するソフトウェアを作りました。
目指すところは、国際規格の完全準拠!!。
その為に、英文の標準類を読み漁っている最中です。

とりあえず、現状は、暗号利用モードとして、CBCモードを使い、
暗号化ファイルは、PKCS#7の構文(Encrypted-Type)にし、
暗号鍵ファイルは、PKCS#8の構文で出力する仕様としてあります。

暗号技術も、暗号化されたファイルも、国際的な規格に準拠!!
そのヴァージョンは、ここからダウンロード可能です。
SSE2による高速AES暗号・復号プログラム

・・・しかしながら、現在のパスワードの処理方法にも、規格があった!!。

現在は、パスワードの文字列を、SHA-256関数によってハッシュ値化した数値を、暗号鍵に採用する方法をとっています。
しかしながら、PKCS#5(パスワードに基づいた暗号技術)を読んでいたところ、パスワードによる暗号にも規格があるようです。

まだ、読んでいる途中なのですが、現在のままでは『辞書攻撃法』、つまり、辞書に載っている単語を片っ端から試していく暗号文攻撃法に弱い事が解りました。
パスワードを、辞書に載っている単語や人名を設定しただけでは、その攻撃に弱いのです。

このため、PKCS#5で定義されている方法では、パスワードから暗号鍵を生成する方法として、
引数に
 ・ソルト      … これは、乱数値とする。
 ・繰り返し回数 … ハッシュ関数を繰り返す回数。(推奨では1000回)
の二つの値が必要になります。
繰り返し回数までは、まだ英文の翻訳が終わっていないのですが、ソルトの存在理由としては、『辞書攻撃法』への耐性。
例えば、ソルトを8バイト(64bit)の数値にした場合、つまり、同じパスワードでも2の64乗通り存在する事になります。


・・・・・・・
パスワードの仕様は、ヴァージョンアップにより変更しなければならないかもしれない。
そして、また、互換性が失われる。しかし、セキュリティーを高める為にはしょうがない。

暗号技術、勉強中です。

PKCS#7のEnvloped-Data形式であれば、パスワードベースの暗号にする場合にでも、パスワードから暗号鍵を求めるアルゴリズムの識別値(oid)を指定しないといけないので、必然的にこの方法が使われることになります。

PKCS#7のEncrypted-Data形式では、コンテンツ用の暗号鍵を暗号化ファイルに含まないので、暗号化鍵は外部から提供しなければならない。
そこで、PKCS#8の暗号鍵ファイルか、パスワードを指定できるようにしていますが、・・・
実は、PKCS#5によれば、PKCS#8の暗号鍵ファイルを、パスワードで保護できるようです。

暗号鍵ファイルを、パスワードで保護するってことは、つまり、暗号ファイルを復号するには、その暗号鍵ファイルと、パスワードの2つの鍵が無いと復号できないって事じゃないか?
これ、強いな。
こんな事も、PKCS#5を読んでいて、気付いてしまいました。

今後のヴァージョンアップに、取り入れるかもしれません。

|

« FMPSG015 -いちご- 新作デモが公開されました。 | トップページ | 今年の出演予定 »

コメント

しかし、これ、よくよく思えば、PKCS#7のEnveloped-Dataでパスワードベースの暗号化を使った場合、アルゴリズムを示すoidのパラメータフィールドに、ソルトも、繰り返し回数もDER符号かされて入っちゃうから、
暗号文攻撃者は、そのDER符号化されたソルトと繰り返し回数を読んで、辞書攻撃できるんじゃないか?

投稿: S.W. | 2011/04/15 19:14

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/36969/51396030

この記事へのトラックバック一覧です: 暗号技術の研究:

« FMPSG015 -いちご- 新作デモが公開されました。 | トップページ | 今年の出演予定 »