ラウンド(暗号化)

暗号学において、ラウンドまたはラウンド関数とは、アルゴリズム内で複数回繰り返される(反復される)基本的な変換です。大規模なアルゴリズム関数をラウンドに分割することで、実装と暗号解読の両方が簡素化されます。[ 1 ]

例えば、過度に単純化された3ラウンド暗号を用いた暗号化は と表すことができます。ここで、 C暗号文Pは平文です。通常、ラウンドは同じ関数を用いて実装され、ラウンド定数と、ブロック暗号の場合は鍵スケジュールから得られるラウンド鍵によってパラメータ化されます。パラメータ化は、スライド攻撃につながる可能性のある暗号の自己相似性を低減するために不可欠です。[ 1 ]CR3R2R1P{\displaystyle C=R_{3}(R_{2}(R_{1}(P)))}R1R2{\displaystyle R_{1},R_{2},...}

ラウンド数を増やすと「ほぼ確実に」[ 2 ] 、差分解読法や線形解読法から保護されます。これらのツールでは、ラウンド数の増加に伴って計算量(労力)が指数関数的に増加するためです。しかし、ラウンド数を増やしても必ずしも弱い暗号が強い暗号になるわけではありません。なぜなら、ラウンド数に依存しない攻撃もあるからです。[ 3 ]

単純な非可換演算を繰り返し適用することで拡散と混乱を引き起こす反復暗号のアイデアは、1945年、当時秘密だったC・E・シャノンの著書「秘密システムの通信理論」にまで遡ります。[ 4 ]シャノンは、力学系理論の分野で用いられる混合変換(馬蹄形写像を参照)に着想を得ました。現代の暗号のほとんどは反復設計を採用しており、ラウンド数は通常8から32の間で選択されます(暗号ハッシュでは64、さらには80ラウンドが使用されることもあります)。[ 5 ]

フェイステル型暗号の記述、特にRC5では、「半ラウンド」という用語がデータの一部の変換を定義するために用いられます(フェイステル型暗号の設計の特徴です)。この操作は、従来のフェイステル型暗号( DESなど)の記述における全ラウンドに相当します。 [ 6 ]

丸め定数

暗号化プロセスにラウンド依存定数を挿入することで、ラウンド間の対称性が崩れ、最も明白なスライド攻撃を阻止することができます。[ 3 ]この手法は、ほとんどの現代のブロック暗号の標準的な機能です。しかし、ラウンド定数の選択が適切でなかったり、定数と他の暗号コンポーネントとの間に意図しない相互関係があったりすると、依然としてスライド攻撃(例えば、フォーマット保存暗号化モードFF3の初期バージョンへの攻撃)が許される可能性があります。[ 7 ]

多くの軽量暗号は非常に単純な鍵スケジューリングを採用しています。ラウンド鍵は、ラウンド定数を暗号化鍵に加算することで生成されます。この場合、ラウンド定数の選択を誤ると、暗号が不変攻撃に対して脆弱になる可能性があります。この方法で解読された暗号には、 SCREAMMidori64などがあります。[ 8 ]

最適化

デイメンライメンは、暗号の最適化の目標の一つは、ラウンドの複雑さとラウンド数の積である全体的な作業負荷を削減することであると主張している。この目標に対処するには2つのアプローチがある。[ 2 ]

  • ローカル最適化により、単一ラウンド(Feistel 暗号の場合は 2 ラウンド)の最悪のケースの動作が改善されます。
  • グローバル最適化では、複数のラウンドの最悪ケースの動作を最適化し、それほど洗練されていないコンポーネントの使用を可能にします。

ラウンド数を減らした暗号

暗号解読技術には、設計者が指定したよりも少ないラウンド数を持つ暗号のバージョンを用いることが含まれる。1ラウンドでは暗号学的に弱いため、完全なバージョンの暗号に対しては通用しない攻撃の多くが、このようなラウンド数を減らしたバージョンでは通用する。このような攻撃の結果は、アルゴリズムの強度に関する貴重な情報を提供する。[ 9 ]完全な暗号の解読は、ラウンド数を減らしたバージョンに対しては成功することが多い。[ 10 ]

Sateesanらは軽量ハッシュと暗号の短縮版を非暗号ハッシュ関数として使用することを提案している。[ 11 ]

参考文献

出典

「 https://en.wikipedia.org/w/index.php?title=ラウンド_(暗号化)&oldid=1315335269#ラウンド定数」より取得