STEP 6 詳細解説

📦 ブロック暗号 vs ストリーム暗号:何が違う?どう使い分ける?

もふねこ

もふねこだよ🐾 今回は「ブロック暗号」と「ストリーム暗号」の違いについて!

暗号の種類は1つじゃないんだよ。どこで何を使うかを知ると、セキュリティの読み方がぐっと変わるよ!

✨ そもそも「共通鍵暗号」って何?

ブロック暗号とストリーム暗号を理解するには、まず「共通鍵暗号(対称暗号)」の概念を知っておく必要があります。

共通鍵暗号とは、暗号化するときと、元に戻す(復号する)ときに同じ鍵を使う暗号方式です。送信者と受信者が同じ鍵を共有します。

ブロック暗号とストリーム暗号は、どちらもこの共通鍵暗号の「サブカテゴリ」です。違いは「データをどう処理するか」にあります。

読者
読者

どっちも同じ鍵を使うなら、何が違うの?

もふねこ
もふねこ

データを「かたまりに分けて処理するか」「流れのまま処理するか」の違いね!引っ越しで例えると、ブロック暗号は荷物を箱に詰めて運ぶ方式、ストリーム暗号はベルトコンベアで流しながら処理する方式だよ🐾


🔸 ブロック暗号とは?

ブロック暗号(Block Cipher)は、データを一定の大きさ(ブロック)に区切って、まとめて暗号化する方式です。

仕組みのイメージ

「データを64個(または128個)ずつ箱に詰めて、その箱ごとに鍵で暗号化する」というイメージです。

  • データ全体を固定長のブロックに分割する
  • 余った部分は「パディング(詰め物)」で埋める
  • ブロックごとに暗号化処理を行う

代表的なブロック暗号

  • AES(128ビットブロック):現在の世界標準。Wi-Fi、HTTPS、暗号資産ウォレットに使用。
  • DES(64ビットブロック):現在は廃止。AESの前身。
  • Twofish(128ビットブロック):AES最終候補5方式のひとつ。Bruce Schneierが設計。
  • Blowfish(64ビットブロック):Twofishの前身(1993年設計)。AES選考には参加していないが、bcryptパスワードハッシュの基盤として現在も使用。
  • 3DES(64ビットブロック):DESを3回繰り返す延命策。現在は非推奨。

ブロック暗号のメリット・デメリット

✅ メリット

  • セキュリティが高い(AESで証明済み)
  • ランダムアクセスが可能(中間ブロックだけ復号できる)
  • エラーの影響が1ブロックに限定される
  • 様々なモードで使い方を変えられる

⚠️ デメリット

  • パディングが必要(データ量が増える)
  • リアルタイム処理はやや苦手
  • 「同じブロックは同じ暗号文」になる問題(モードで解決)

🔸 ストリーム暗号とは?

ストリーム暗号(Stream Cipher)は、データを1ビット(または1バイト)ずつ、流れながら連続的に暗号化する方式です。

仕組みのイメージ

「鍵から長い使い捨て乱数列(キーストリーム)を生成して、データと1ビットずつ混ぜ合わせる」というイメージです。混ぜ合わせにはXOR(排他的論理和)演算を使います。

💡 XOR(排他的論理和)とは?
「2つのビットが異なれば1、同じなら0」というシンプルな演算。重要な性質は「同じ値でXORすると元に戻る」こと。
例:A XOR 鍵 = 暗号文 → 暗号文 XOR 鍵 = A(元に戻る)。これが暗号化と復号を同じ操作でできる理由。

代表的なストリーム暗号

  • RC4:かつてSSL/TLSやWEPで使われたが、脆弱性発見により廃止。
  • ChaCha20:Googleが採用した現代的ストリーム暗号。TLS 1.3でも使用。セキュリティが高くモバイル端末での処理が速い。
  • Salsa20:ChaCha20の前身。セキュリティコンテストで評価が高かった。

ストリーム暗号のメリット・デメリット

✅ メリット

  • 高速処理(低スペック機器でも軽い)
  • 低遅延(リアルタイム通信に最適)
  • パディング不要(データサイズが変わらない)

⚠️ デメリット

  • 同じ鍵を再利用すると危険(使い回し禁止)
  • エラーが連鎖しやすい
  • 乱数生成の品質に安全性が依存
読者
読者

ストリーム暗号って「同じ鍵の使い回し禁止」って怖いね…

もふねこ
もふねこ

これはとても重要ね!同じ鍵を2つの異なる平文に使うと、XORの性質から両方の平文の特徴が漏れてしまうんだよ。実際に第二次世界大戦のソ連の暗号が、鍵の使い回しから解読された歴史があるよ😱


🔸 どちらを選ぶべき?使い分けの基準

用途・状況 おすすめ 代表的な暗号
ファイルやデータの暗号化 ブロック暗号 AES
Webサイト(HTTPS)の通信 両方(状況による) AES-GCM / ChaCha20
動画や音声のリアルタイム配信 ストリーム暗号 ChaCha20
スマートカード・IoT機器 ストリーム暗号 or 軽量ブロック暗号 ChaCha20 / PRESENT
暗号資産ウォレットの保護 ブロック暗号 AES-256
もふねこ
もふねこ

現代では「どちらかを使わなければならない」というより、AES-GCMというモードがブロック暗号をストリーム暗号のように動かすことができて、両方のいいとこどりをしているね。実際にTLS 1.3(現代のHTTPS)はAES-GCMかChaCha20を使っているよ🐾


📌 まとめ:ブロック暗号 vs ストリーム暗号

ポイントまとめ

📦 ブロック暗号

  • データを固定長のブロックに分けて処理
  • 高セキュリティ、ランダムアクセス可能
  • 代表:AES(現在の世界標準)
  • 用途:ファイル暗号化、HTTPS

〜 ストリーム暗号

  • データを1ビット/バイトずつ連続処理
  • 高速・低遅延、軽量機器に向く
  • 代表:ChaCha20(現代の主流)
  • 用途:リアルタイム通信、モバイル
もふねこ
もふねこ

「どっちが強い?」ではなく「どっちが向いている?」が暗号の選び方ね。目的と環境に合わせた暗号選びが、本当のセキュリティ知識だよ🐾 STEP 6のまとめ記事もぜひ読んでみてね!

暗号の知識を「実際のお金」に活かそう!

ブロック暗号(AES)は暗号資産ウォレットの秘密鍵保護に、ChaCha20は暗号資産取引所のAPIセキュリティに使われています。
暗号技術の仕組みがわかったら、ぜひ姉妹サイトで「暗号資産の実践」に挑戦してみよう🐾

👉 暗号資産カフェで実践を学ぶ

この記事を読み終えたらスタンプをゲットしよう!

🔙 前の記事:AES暗号の誕生 STEP 6 まとめを読む →