RC6とは — 可変ブロック/可変鍵/可変ラウンドの対称鍵ブロック暗号(AES最終候補)
RC6の概要と設計原理を分かりやすく解説。可変ブロック/可変鍵/可変ラウンドやAES最終候補としての歴史、性能・実装上の特徴を網羅。
暗号の分野で、RC6はRC5から派生した対称鍵のブロック暗号です。RC6 は可変ブロックサイズ、可変鍵サイズ、可変ラウンド数を持つパラメータ化されたアルゴリズムで、名称の「RC」は "Rivest Cipher"(別名 "Ron's Code")の略です。
背景と歴史
1997年、NISTは、データ暗号化規格(DES)の後継を選定するための競争を発表しました。これがのちにAdvanced Encryption Standard(AES)として知られるものです。RC6 は RC5 に基づき、競争要件を満たすように設計された派生案で、AES競争における最終候補5つのうちの1つに選ばれましたが、最終的に標準規格としては選ばれませんでした(規格には至らなかった)。
設計上の特徴
RC6 は構造的にRC5 に非常に似ていますが、いくつかの重要な拡張があります。RC5は基本的に2つのワーキングレジスタ(各々 b/2 ビット)を用いる単純な回転・加算・XOR(ARX)構造ですが、RC6ではこれを拡張して4つの b/4 ビットの作業レジスタを用いる点が特徴です(feistel 暗号における平文ブロックの分割を参照)。さらに、RC6ではRC5にはない整数の乗算演算を導入しています。乗算を用いることで、1ラウンドあたりの拡散を強化でき、必要とされるラウンド数を減らして処理速度を改善することが狙いです。
パラメータ性(可変性)
設計上、RC6 は以下のようにパラメータを柔軟に設定できます。
- ブロックサイズ:32ビット(実験用)、64ビット(DES代替向け)、128ビット(AES用)などから選択可能(ブロックサイズを複数サポート)。
- ラウンド数:0~255 の範囲で設定可能。AES候補として提示された典型的な構成ではラウンド数は20が採用されました。
- 鍵サイズ:0ビット~2040ビットの範囲であるなど、広い範囲で可変(実用的には128/192/256ビットなどが一般的)。
RC6 の AES 候補仕様では、ワード長 w = 32 ビット(したがってブロック長 = 4w = 128 ビット)、ラウンド数 r = 20、鍵長は128/192/256ビットが想定されていました。これによりAESとの適合性が図られています。
実装上の考慮点と性能
4つの作業レジスタを採用している理由の一つは、主に 32 ビット CPU に最適化するためです。RC5のデフォルトのブロックサイズは64ビットで、32ビット単位の演算が2つのワードで事足りましたが、AESの標準的ブロック長128ビットを32ビット演算のみで処理するには4つのワーキングレジスタが都合がよいためです。乗算演算を導入することでラウンド数を減らして総合的な速度を上げる設計判断が取られていますが、乗算はCPUアーキテクチャによってはコストがかかるため、実装環境に応じた最適化(ソフトウェア、ハードウェア、組込み系など)が重要です(最適化の観点)。
セキュリティと暗号解析
RC6 は設計上、ARX(加算・回転・XOR)に乗算を組み合わせた構造により高い拡散を目指しています。研究コミュニティによる暗号解析では、縮小ラウンド版に対する差分解析や線形解析などの攻撃手法が提案されていますが、提案時の典型設定(128ビットブロック、r=20)に対して「実用的な鍵復元が可能な攻撃」は公知の範囲では見つかっていません。とはいえ、セキュリティ評価や最新の暗号解析は継続的に進展しており、実際の利用に際しては最新の研究成果を参照することが重要です。
特許とライセンス
RC6 は RSA Security により、米国特許 5,724,428 および米国特許 5,835,600 により特許を取得した、プロプライエタリなアルゴリズムです。商用製品や組み込み製品でこのアルゴリズムを採用する場合、ライセンス料やロイヤリティーの支払いが必要となる場合があります。実装・配布前にライセンス条件を確認してください。
設計者と提出先
RC6 は Ron Rivest、Matt Robshaw、Ray Sidney、および Yiqun Lisa Yin によって設計されました。提出先としては AES 競争以外にも NESSIE や CRYPTREC といった複数の評価プロジェクトにも提出されています。
まとめ(実務的な判断)
RC6 は柔軟なパラメータ設定、乗算を用いた拡散強化、32ビット環境に適した設計などが特徴のブロック暗号です。AES の最終規格には選ばれませんでしたが、暗号設計の興味深いアプローチを示す例であり、研究および実装の対象として価値があります。ただし、特許・ライセンスの問題や、最新の暗号解析動向を踏まえて採用判断を行う必要があります(効率性の観点とセキュリティの両面から比較検討してください)。
質問と回答
Q:RC6とは何ですか?
A:RC6は、RC5から派生した共通鍵ブロック暗号です。ブロックサイズ、鍵サイズ、ラウンド数を可変とするパラメータ化されたアルゴリズムです。
Q:RC6を設計したのは誰ですか?
A: RC6は、Ron Rivest、Matt Robshaw、Ray Sidney、Yiqun Lisa Yinによって設計されました。
Q:RC5とAESのデフォルトのブロックサイズは何ですか?
A:RC5のデフォルトのブロックサイズは64ビットで、AESのデフォルトのブロックサイズは128ビットです。
Q:RC6の構造はRC5と比較してどうなっているのか?
A:RC6の構造はRC5と非常に似ていますが、RC5にはない乗算演算を使用し、2つのb/2ビットレジスタの代わりに4つのb/4ビットワーキングレジスタを使用しています。
Q: AESアーキテクチャを32ビット演算のみで構築するために、2本の作業レジスタではなく4本の作業レジスタを使用するのはなぜか?
A: 1ラウンドあたりの拡散量を増やすために整数の乗算を行うので、ラウンド数が少なくなり高速化できる。64ビットブロックを扱う場合は32ビット演算、128ビットブロックを扱う場合は64ビット演算を行うため、4本のワーキングレジスタが必要です。
Q:アルゴリズムを使用した製品にライセンスやロイヤリティの支払いは必要ですか?
A:はい、独自の特許アルゴリズム(RSA Security U.S. Patent 5,724,428 および U.S. Patent 5,835,600 )であるため、このアルゴリズムを使用した製品にはライセンスおよびロイヤリティの支払いが必要になる場合があります。
百科事典を検索する