RC4
RC4は、Ron Rivestが1987年に設計したストリーム暗号である。シンプルで高速だが深刻なバイアスがあり、TLSなどから禁止された。
目的
パディング不要の高速なストリーム暗号化を提供し、SSL/TLSやWEPで広く使われましたが、脆弱性のため引退しました。
メカニズム
KSA(鍵スケジューリングアルゴリズム)が鍵で256バイトのSボックスを置換し、PRGA(疑似ランダム生成アルゴリズム)が1バイトごとにSボックスの2要素を交換してキーストリームを1バイト出力し、平文とXORする。先頭数バイトのキーストリームには統計的バイアスがある。
ユースケース
- 旧式のWEP/WPA Wi-Fi暗号
- 旧SSL/TLS(現在は無効)
- 過去のOffice/PDF暗号
- 教材例(ストリーム暗号の欠陥)
例
- 入力
key="Secret", data="Hi"Outputciphertext byte streamInsecure; do not use in new systems
よくあるエラー
- Using RC4 in new systems
- Use AES-GCM or ChaCha20-Poly1305
関連用語
AES
AES(Advanced Encryption Standard)は NIST が 2001 年に確立した対称ブロック暗号であり、128/192/256 ビット鍵をサポートし、現代暗号化の事実上の標準である。 用語集
ChaCha20
ChaCha20 は Daniel Bernstein が設計したストリーム暗号であり、ARX(加算・回転・XOR)演算で構成され、Poly1305 と組み合わせて AEAD として使われることが多い、AES-GCM の高性能な代替である。 用語集
Stream Cipher
ストリーム暗号はバイト単位やビット単位で暗号化し、鍵ストリームを平文と XOR する。パディングが不要で、リアルタイムやストリーミングデータに適する。 用語集