ページ 11

共通鍵暗号方式に関する幾つかの疑問

Posted: 2011年10月12日(水) 22:27
by shiro4ao
現在、ファイルをRC4にて暗号化するプログラムを作っています。
幾つかの疑問が出てきました。

1.「鍵の長さは128bitあれば安全」という記述を見つけましたが、これは
 「鍵の長さが16バイトあれば安全」という意味でしょうか?
例)鍵="12345"←危ない
鍵="1234567890abcdef"←安全

2.現在の実装だと暗号鍵を確認するために、鍵を暗号化して暗号化したファイルに埋め込んでいます。
 気になる点は、ファイルから暗号化してある鍵を取り出して(→取り出し自体は極めて容易)
 解析する攻撃が現実的か否かという点です。

3.ファイルに埋め込んだ暗号化された鍵についてです。
 鍵を暗号化するためにRC4を使っています。
 暗号化に使った鍵を(K)
 鍵を暗号化するために使う鍵(=これは一定の値)を(A)
 (K)を(A)で暗号化したものを(X)として、
 (K)と(A)と(X)の対応表を書いておけば、解析するまでもなく
 割れてしまいそうです。こういった攻撃に対しては対策はないのでしょうか?
 
あまりよくわかっていないので、誤解もあるかもしれませんが、よろしくお願いします。

Re: 共通鍵暗号方式に関する幾つかの疑問

Posted: 2011年10月13日(木) 00:45
by tk-xleader
1.についての回答
データの暗号化は、一般的に鍵長が長いほど解読されにくくなります。というのは、パスワード総攻撃に時間がかかるようになり、総攻撃が現実的ではなくなるからです。しかし、これはコンピューターの性能との相談になりますので、一概に「安全」とは言い切れないかと思います。
ただし、いくら長くしたところで、パスワードが漏洩したり、単語組み合わせ攻撃などでパスワードが知られたらその瞬間に安全でもなんでもなくなります。
2.3.についての回答
いくら暗号化されているとはいえ、パスワードを暗号化ファイルに埋め込むのはかなり危険です。埋め込まれたパスワードを解析する攻撃に対する対策はただ一つ。「パスワードを暗号化ファイルに埋め込むのをやめること」です。
たぶん、多数の(K)に対応する(X)を収集すれば、(A)及び鍵の暗号化アルゴリズムが容易に発覚すると思います。そうなれば、暗号化ファイルを読み出すのは簡単になってしまいます。

Re: 共通鍵暗号方式に関する幾つかの疑問

Posted: 2011年10月13日(木) 00:48
by bitter_fox
shiro4ao さんが書きました:1.「鍵の長さは128bitあれば安全」という記述を見つけましたが、これは
 「鍵の長さが16バイトあれば安全」という意味でしょうか?
例)鍵="12345"←危ない
鍵="1234567890abcdef"←安全
ビットとバイトの言いかえですのでそれで合っています。
ですが、"1234567890abcdef"というのを鍵にするのは問題があります。
もし[0-9a-zA-Z]などで構成された文字列のビット列を鍵にした場合は一バイト当たりの取りうる値が255から60~70程度に限定されるのでそういったものを鍵にするにはさらに長いビット数にする必要があります。
0~255のランダムなバイト列を用いてください。
オフトピック
安全というのもブルート・フォース・アタックに対して非現実的な時間がかかるという点での安全なので今後のコンピュータの進化によって安全でなくなる可能性もありますが・・・
それに暗号アルゴリズム自体への脆弱性が見つかれば鍵のビット長の安全性自体が無意味になってしまう可能性も・・・
shiro4ao さんが書きました:2.現在の実装だと暗号鍵を確認するために、鍵を暗号化して暗号化したファイルに埋め込んでいます。
 気になる点は、ファイルから暗号化してある鍵を取り出して(→取り出し自体は極めて容易)
 解析する攻撃が現実的か否かという点です。
これはどういった暗号アルゴリズムと鍵を用いるかによります。
ですが、暗号文と同じファイルに暗号鍵につながる情報があるのは解析者からしたらシメシメでしょう。
shiro4ao さんが書きました:3.ファイルに埋め込んだ暗号化された鍵についてです。
 鍵を暗号化するためにRC4を使っています。
 暗号化に使った鍵を(K)
 鍵を暗号化するために使う鍵(=これは一定の値)を(A)
 (K)を(A)で暗号化したものを(X)として、
 (K)と(A)と(X)の対応表を書いておけば、解析するまでもなく
 割れてしまいそうです。こういった攻撃に対しては対策はないのでしょうか?
テーブル化できないようなビット長の鍵を用いて暗号化することでしょう。
仮に全てのAについて列挙できたとしても、全てのKに対しても全てのAを当てはめなければならないので基本的には非現実的な攻撃方法ではないでしょうか?

ちなみに鍵の保存についてはPBE(Password Based Encryption)というものが有効だと思います。

Re: 共通鍵暗号方式に関する幾つかの疑問

Posted: 2011年10月14日(金) 00:09
by shiro4ao
ご回答ありがとうございます。
鍵長については当初の理解で合っていたということで安心しました。
鍵の埋め込みについては十分な準備がない限りかなりの危険を伴うということでしたので、
鍵の埋め込みは諦めることにします。
秘密により成り立っているセキュリティなので、鍵は大切に保管しておこうと
想います。


ありがとうございます、また、挑戦してみようと思います。