RC4(Rivest Cipher 4)は、1987年にRon Rivestによって設計されたストリーム暗号です。疑似ランダムなビットストリーム(キーストリームと呼ばれる)を生成し、これを平文データと組み合わせることで(通常はXOR演算)、暗号文を生成します。
暗号化:平文の各バイトをキーストリームの対応するバイトと組み合わせることで、暗号文を生成します。
復号:同じキーストリームを使用して暗号文をXOR演算し、元の平文を復元します。
速度:RC4 は、特にリソースが限られた環境において、その速度と効率性で知られています。
シンプルさ:実装が簡単で、必要なリソースも最小限に抑えられるため、処理能力が限られた環境に適しています。
歴史的使用:RC4 は、安全な通信のための SSL/TLS や、無線ネットワークセキュリティのための WEP などのプロトコルで広く使用されていました。
鍵生成:秘密鍵(通常 40~2048 ビット) RC4 状態を初期化するために使用されます。
キーストリーム生成: RC4 アルゴリズムは、キーに基づいて疑似乱数キーストリームを生成します。
暗号化: 平文の各バイトをキーストリームのバイトと排他的論理和(XOR)演算し、暗号文を生成します。
復号化: 同じキーストリームを使用して暗号文を排他的論理和演算し、元の平文を復元します。
ライブラリ/ツール: RC4 はさまざまなライブラリでサポートされていますが、セキュリティ上の理由から非推奨となることがよくあります。
Python: pycryptodome ライブラリ
Java: javax.crypto パッケージ(ただし、より強力なアルゴリズムを使用する方が望ましいため、使用は推奨されません)。
C#: System.Security.Cryptography 名前空間。
レガシーシステム: RC4 暗号化をまだ使用している古いシステム(古い SSL/TLS 実装など)で作業する場合。
非クリティカルアプリケーション: セキュリティよりも 速度 が重要なプロジェクトで作業している場合。ただし、より強力な暗号を使用する方が望ましいため、一般的には推奨されません。
教育目的: RC4 はそのシンプルさから、対称暗号やストリーム暗号の教育によく使用されます。