RC5は、
1994年に著名な
暗号研究者である
ロナルド・リベストによって開発された
ブロック暗号です。その名称は「Rivest Cipher」または「Ron's Code」の頭文字に由来し、RC2や
RC4といった他のRCシリーズ
暗号とも関連があります。この
暗号システムは、特にラウンド関数内で使用される演算手法の研究や評価を進めることを目的として、非常に簡潔な構造を持つように設計されました。また、後に高度な性能が求められる次世代
暗号標準であるAESの候補の一つとなったRC6は、このRC5の設計思想を基盤としています。
RC5が
暗号解読者や研究者の注目を集めた最大の要因は、その革新的な特徴である「データ依存回転」演算を採用したこと、そしてアルゴリズム全体の構造が極めて単純である点にあります。データ依存回転とは、入力されるデータの値そのものによってビットの回転数が変化するという性質を持つ演算です。この特性は、差分攻撃や線形攻撃といった主要な
暗号解読手法における確率的な上界の評価を複雑にし、解析を困難にさせる効果があります。この新しい演算手法の導入は、当時の
ブロック暗号設計において一石を投じるものでした。
RC5の構造は、他の多くの
ブロック暗号とは異なり、いくつかのパラメータを柔軟に変更できる点が特徴です。具体的には、
暗号化するデータのブロック長を32ビット、64ビット、128ビットのいずれかから選択可能です。また、鍵の長さも0ビットから最大2040ビットまで任意に設定できます。さらに、
暗号化処理の繰り返し回数を示すラウンド数も0回から255回まで自由に設定が可能です。ただし、推奨される標準的なパラメータとしては、ブロック長64ビット、鍵長128ビット、そして12ラウンドでの使用が挙げられています。アルゴリズムの基本的な構成は、データを左右に分割して処理を行うFeistel構造を改良したネットワークに基づいています。処理の最初には、秘密鍵から生成された拡大鍵を用いて入力データをスクランブルするWhitening処理が行われ、その後、指定された回数だけラウンド関数が繰り返されます。
暗号化および復号の手順自体は非常に簡潔で、コードで記述してもわずか数行で済むほどですが、一方で、秘密鍵から複数の拡大鍵を生成する鍵スケジュールの部分は、これに比べて複雑な処理を伴います。ラウンド関数は、ビットごとの
排他的論理和(XOR)、RC5独自のデータ依存回転、そして拡大鍵との剰余加算という、三つの基本的な演算を組み合わせて構成されています。
RC5の安全性については、設定されたパラメータによって大きく異なります。例えば、推奨パラメータの一つであるブロック長64ビットで12ラウンドのRC5は、約2の44乗個の選択平文を用いる差分攻撃によって理論的に解読可能であることが示されています。これは、実用的な安全性を持つにはラウンド数が不足していることを意味します。しかし、ラウンド数を18回から20回に増やすことで、既知の攻撃手法に対して十分に安全であると評価されています。RC5の特許を所有していた
RSAセキュリティ社は、その安全性を検証する目的で、RC5で
暗号化されたデータを解読できた個人や団体に1万ドルの賞金を贈呈する
暗号解読コンテストを複数回開催しました。このコンテストのうち、56ビット鍵および64ビット鍵を用いた
暗号文は、
分散コンピューティングプロジェクトであるdistributed.netによって、インターネット上の多数のコンピュータ資源を活用して解読に成功しました。しかし、
暗号技術の研究や社会情勢の変化に伴い、
RSAセキュリティは2007年9月にこれらの公開
暗号解読コンテストの終了を発表しました。一方、distributed.netは現在も、より長い72ビット鍵を用いたRC5
暗号の解読挑戦を継続しています。RC5は、そのシンプルさとデータ依存回転という特徴的な演算によって、その後の
ブロック暗号設計にも影響を与えた重要な
暗号の一つと言えます。