- ベストアンサー
AESとRijndaelの違いと安全性についての質問
- AESとRijndaelは、鍵とブロックの長さの種類が異なります。
- AESの鍵とブロック長は128,192,256ビットであるのに対し、Rijndaelは128,160,192,224,256ビットの5通りです。
- AESがRijndaelを採用しなかった理由は、最小公倍数の違いや安全性の変化によるものかもしれません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> ブロックや鍵の長さが長くなると解きにくくなるから > 法律で制限されていると考えたのです。 この考えは正しいと思いますが > 使用する鍵の長さの最小公倍数が大きければ、多重暗号化で結果的にな、大きなサイズの鍵を使っていることになると > 考えたのです。 この考え方がよく判らないです。複数種類の鍵長さを選べる場合でも、使用する鍵はそのうち1種類です。基本的に、暗号化のアルゴリズムが同一なら鍵長が長い方が強度が高いです。 また、多重暗号化は一度暗号化したものをもう一度暗号化することを指していると思いますが、鍵長を増やすことに比べればあまり強度的には向上しないと思います。 例えば、128bitの鍵で2回暗号化を繰り返すとします。このとき、暗号化強度としてはせいぜい129bit鍵と同程度しかないと思います。128bit鍵の暗号を解読するのに必要な時間を a とすると、2回暗号化を繰り返した場合、解読に必要な時間は 2a 、つまり2倍になるからです。 一方、256bit鍵を使用した場合、解読に必要な時間は単純計算で (2^128)a 、約3x10^36 倍になります。192bit鍵を使用した場合でも解読に必要な時間は (2^64)a、約18 x 10^18 倍になります。 AESで言うなら、128bit鍵で2重暗号化するより、192bit鍵で暗号化した方が安全性が高いことになります。
その他の回答 (2)
- Toshi0230
- ベストアンサー率51% (836/1635)
んーと、なんかAESの動作について思いっきり誤解があるような気がします。 AES/Rijindaelは128bit単位でデータを暗号化します。 これは、このときの暗号化鍵が128bitだろうが256bitだろうが、変わらないです。 なので、 > 最初のデータの193ビットめから384ビット目までが影響します。 > そうすると、2回目の変換では、最初のデータの192ビット分から > 変換されたデータと、最初のデータの193ビット目から384ビット目までの影響を受けたデータの64ビット分が一緒なると考えました。 というような動きはしないはずなんですが。 挙げられている参考文献は洋書で、結構難しそうです。失礼ですが、この本の内容、きちんと理解されていますか?
補足
何度も教えていただきありがとうございます。 たしかに、AES は ブロックサイズは128ビットで固定されている ようですが、 Rijndaelでは、 ブロックサイズは、128、。。。、256と128ビットから256ビットまで 36ビット刻みで自由に設定できると書いてありました。 もちろん、鍵の長さも、128ビットから32ビット刻みで256ビットまで、自由に設定できて、さらにブロックサイズと鍵の長さの組み合わせは自由である。 (参考文献にそう書いてありました。) と理解しているのですが、 この理解が、間違っているのでしょうか?
- Toshi0230
- ベストアンサー率51% (836/1635)
選択できる鍵長の最小公倍数の大きさと暗号強度が関係ある、なんて話はどこから出てきたんでしょか? なんかどこかで誤解があるように思うのですが? 鍵長やブロック長の選択肢の多さと、暗号強度のさも直接の関係はないはずですし…。 そりゃ、いろいろ選べた方が便利ですが、逆に暗号プログラムを実装するほうは面倒になるわけで、むやみやたらに選択肢があるよりはよく使うものに絞っておいたほうが実用上は使い勝手がよい、ということではないでしょうか。
お礼
ありがとうございます。 日本での暗号輸出制限が無いのは鍵の長さが56ビットまでだったと思います。 ブロックや鍵の長さが長くなると解きにくくなるから 法律で制限されていると考えたのです。 使用する鍵の長さの最小公倍数が大きければ、多重暗号化で結果的にな、大きなサイズの鍵を使っていることになると 考えたのです。 実装については、すでに参考文献にソースコードが 掲載されていますので、問題ないと思いました。 また、ご指導下さい。ありがとうございました。
補足
ありがとうございます。 たとえば、2回続けて暗号化するとき、 256ビットで2回やったときは、元のデータの256ビット分が2回変換されます。 でも、 最初に、192ビットで変換してから、256ビットで変換すると、 最初の変換で193ビットめから256ビットめまでの64ビット分は、 最初のデータの193ビットめから384ビット目までが影響します。 そうすると、2回目の変換では、最初のデータの192ビット分から 変換されたデータと、最初のデータの193ビット目から384ビット目までの影響を受けたデータの64ビット分が一緒なると考えました。 したがって、2回の変換後のデータの256ビット分は 元のデータの384ビット分の影響を受けているので、 ブロックサイズを384ビットにした場合と似たような 効果があると考えました。 これは、鍵やブロックのサイズを大きくするような 働きではないかと考えたのです。 128ビットと256ビットではこのような効果は生まれないので 鍵の長さの最小公倍数が大きなほうがよいと考えたのです。