公開:

RC4(Rivest Cipher 4)とは?意味をわかりやすく簡単に解説

text: XEXEQ編集部


RC4(Rivest Cipher 4)とは

RC4は、ストリーム暗号の一種で、セキュリティ技術に使用されるアルゴリズムです。RC4は「Rivest Cipher 4」の略称で、ロン・リベスト氏によって設計されました。

RC4は、可変長のキーを使用して疑似乱数を生成し、平文とXORすることで暗号化を行います。RC4の特徴は、アルゴリズムがシンプルで実装が容易なことです。

RC4は、SSL/TLSなどのセキュリティプロトコルで広く使用されてきました。しかし、RC4には脆弱性が発見され、現在ではより安全な暗号アルゴリズムが推奨されています。

RC4の内部状態は、256バイトの置換ボックス(S-box)と2つのインデックス変数で構成されます。暗号化と復号は同じアルゴリズムを使用し、キーストリームを生成します。

RC4は、無線LANの暗号化規格WEPや、Microsoft Officeの旧バージョンの保護機能にも使用されていました。ただし、これらの用途でのRC4の使用は脆弱性のため現在は推奨されていません。

RC4の仕組みと動作原理

RC4の仕組みと動作原理に関して、以下3つを簡単に解説していきます。

  • RC4のキー初期化アルゴリズム
  • RC4の疑似乱数生成アルゴリズム
  • RC4の暗号化と復号の手順

RC4のキー初期化アルゴリズム

RC4のキー初期化では、まず256バイトの置換ボックス(S-box)を初期化します。S-boxには0から255までの値が順番に格納されます。

次に、指定されたキーを使用してS-boxを並べ替えます。キーの各バイトを順番に使用し、S-boxのインデックスを計算して要素を交換することで、キーに依存したS-boxが生成されます。

このキー初期化プロセスにより、暗号化に使用する疑似乱数生成器の初期状態が設定されます。キーが同じであれば、生成される疑似乱数のシーケンスも同じになります。

RC4の疑似乱数生成アルゴリズム

RC4の疑似乱数生成は、初期化されたS-boxを使用して行われます。疑似乱数生成では、2つのインデックス変数iとjを使用します。

疑似乱数生成の各ステップでは、iとjを更新し、S-boxの要素を交換します。そして、S-box[i]とS-box[j]の和を計算し、その値をインデックスとしてS-boxから疑似乱数のバイトを取り出します。

この疑似乱数生成プロセスを繰り返すことで、連続した疑似乱数のバイト列(キーストリーム)が生成されます。生成されたキーストリームは、暗号化や復号に使用されます。

RC4の暗号化と復号の手順

RC4による暗号化は、平文のバイトとキーストリームのバイトをXOR(排他的論理和)することで行われます。暗号化の手順は以下の通りです。

1. RC4の疑似乱数生成アルゴリズムを使用して、平文と同じ長さのキーストリームを生成します。
2. 平文の各バイトとキーストリームの対応するバイトをXORします。
3. XORの結果が暗号文のバイトになります。

RC4による復号は、暗号文のバイトとキーストリームのバイトをXORすることで行われます。復号の手順は、暗号化の手順と同じです。暗号文とキーストリームをXORすることで、元の平文が得られます。

RC4の脆弱性と安全性の問題

RC4の脆弱性と安全性の問題に関して、以下3つを簡単に解説していきます。

  • RC4のキーストリームの偏り
  • WEPにおけるRC4の脆弱性
  • SSL/TLSにおけるRC4の脆弱性

RC4のキーストリームの偏り

RC4の脆弱性の一つは、生成されるキーストリームに偏りがあることです。特に、キーストリームの先頭部分にはパターンが現れやすいという問題があります。

この偏りを利用することで、暗号文から平文の一部を推測したり、キーを復元したりする攻撃が可能になります。キーストリームの偏りは、RC4の安全性を低下させる要因の一つとなっています。

キーストリームの偏りを軽減するために、RC4の改良版であるRC4-dropや、キーストリームの先頭部分を破棄するなどの対策が提案されていますが、根本的な問題の解決にはなっていません。

WEPにおけるRC4の脆弱性

無線LANの暗号化規格であるWEPでは、RC4が使用されていました。しかし、WEPにおけるRC4の使用方法には脆弱性があることが明らかになりました。

WEPでは、同じキーを繰り返し使用していたため、キーストリームの偏りを利用した攻撃が可能でした。また、WEPのキーは短く、総当たり攻撃にも脆弱でした。

これらの脆弱性により、WEPの暗号化は簡単に破られてしまいます。現在では、WEPは安全性が低いため使用が推奨されておらず、より安全な暗号化規格であるWPAやWPA2が使用されています。

SSL/TLSにおけるRC4の脆弱性

SSL/TLSは、インターネット上の通信を暗号化するためのプロトコルです。過去のSSL/TLSの実装では、RC4が使用されていました。

しかし、RC4のキーストリームの偏りを利用した攻撃により、SSL/TLSの安全性が脅かされることが明らかになりました。攻撃者は、大量の暗号文を収集し解析することで、平文の一部を復元できる可能性があります。

そのため、現在ではSSL/TLSでのRC4の使用は推奨されておらず、より安全な暗号アルゴリズムであるAESなどが使用されています。RFC 7465では、TLSでのRC4の使用を禁止することが明記されました。

RC4の現在の使用状況と推奨される代替手段

RC4の現在の使用状況と推奨される代替手段に関して、以下3つを簡単に解説していきます。

  • RC4の現在の使用状況
  • 推奨される代替の暗号アルゴリズム
  • 安全なストリーム暗号の選択肢

RC4の現在の使用状況

RC4は、過去に広く使用されていましたが、現在ではその使用は推奨されていません。多くのセキュリティプロトコルやアプリケーションで、RC4からより安全な暗号アルゴリズムへの移行が進められています。

例えば、SSL/TLSではRC4の使用が禁止され、AESなどの暗号アルゴリズムが使用されるようになりました。また、無線LANの暗号化規格もWEPからWPAやWPA2に移行しています。

一部の古いシステムでは、まだRC4が使用されている場合がありますが、セキュリティ上の理由から、できるだけ早期にアップグレードすることが推奨されます。

推奨される代替の暗号アルゴリズム

RC4の代替として推奨される暗号アルゴリズムは、主にブロック暗号です。ブロック暗号は、固定長のブロックごとにデータを暗号化する方式です。

最も広く使用されているブロック暗号の一つは、AES(Advanced Encryption Standard)です。AESは、安全性が高く、効率的な実装が可能であるため、多くのセキュリティプロトコルやアプリケーションで採用されています。

そのほかにも、Camellia、ChaCha20、Serpentなどのブロック暗号やストリーム暗号が、RC4の代替として使用されています。これらの暗号アルゴリズムは、十分な安全性と性能を提供します。

安全なストリーム暗号の選択肢

RC4はストリーム暗号ですが、安全性の問題から使用が推奨されていません。しかし、ストリーム暗号自体は有用な暗号方式であり、安全な選択肢も存在します。

ChaCha20は、ストリーム暗号の一種で、高速で安全性が高いとされています。ChaCha20は、TLS 1.3などのセキュリティプロトコルでも使用されており、RC4の代替として適しています。

そのほかにも、Salsa20、HC-128、Rabbit、Grain、MICROなどのストリーム暗号が存在します。これらのストリーム暗号は、十分な安全性を提供し、状況に応じて適切に選択することができます。

参考サイト

  1. Microsoft. https://www.microsoft.com/ja-jp

※上記コンテンツはAIで確認しておりますが、間違い等ある場合はコメントよりご連絡いただけますと幸いです。

「セキュリティ」に関するコラム一覧「セキュリティ」に関するニュース一覧
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。