第2章:対称暗号と公開鍵暗号

Symmetric and Public Key Cryptography

現代暗号学の2つの柱である対称暗号と公開鍵暗号の違いと特徴を理解します。

この章で学ぶこと

第1章で暗号の基礎を学んだ次のステップとして、現代暗号学の中核である「鍵」の概念を深く理解し、 対称暗号と公開鍵暗号という2つの重要な暗号方式の違いを学習します。 それぞれの長所・短所を理解し、現実のシステムでどのように組み合わせて使用されているかを探ります。

暗号における「鍵」とは

第1章で学習したシーザー暗号を思い出してください。文字をいくつずらすかを決める「シフト数」が、 実は暗号における「鍵」の概念そのものでした。鍵は暗号化と復号化を制御する重要な情報で、鍵を知らない人は暗号文を読むことができません。

現代の暗号学では、鍵の長さ(ビット数)が安全性を決定する重要な要素となります。 シーザー暗号の場合、シフト数は1から25までの25通りしかなく、これは約5ビット相当の鍵空間です。 現代のコンピュータなら数秒で全ての可能性を試すことができるため、非常に弱い暗号と言えます。

一方、現代の強力な暗号では128ビット、256ビットといった長い鍵を使用します。 256ビットの鍵空間は2^256 ≈ 10^77通りもの可能性があり、 これは現在の技術では事実上解読不可能な強度を持ちます。鍵の長さが暗号の強さを決定する 重要な要素であることを理解しておきましょう。

共通鍵暗号(対称暗号)

対称暗号は、暗号化と復号化に同じ鍵を使用する暗号方式です。 シーザー暗号も対称暗号の一種で、暗号化時のシフト数と復号化時のシフト数は同じでした。 送信者と受信者が事前に同じ鍵を共有していることが前提となります。

対称暗号の最大の利点は処理速度の高さです。 現代のコンピュータでは、AES暗号を使って毎秒数ギガバイトのデータを暗号化することができます。 そのため、大容量のファイル暗号化や高速通信での暗号化に適しています。

しかし、対称暗号には重大な問題があります。それが「鍵配送問題」です。 暗号化された通信を始める前に、どうやって安全に鍵を相手に渡すのでしょうか? インターネット上で鍵をそのまま送信すれば、第三者に傍受される危険性があります。 この問題の解決策として、公開鍵暗号が発明されました。

DES (Data Encryption Standard)

鍵長 56ビット

速度 高速

1970年代から長く使用されていた対称暗号。現在は鍵長が短すぎるため非推奨。

レガシーシステム(現在は使用非推奨)
AES (Advanced Encryption Standard)

鍵長 128/192/256ビット

速度 非常に高速

現在最も広く使用されている対称暗号。米国政府標準として採用され、極めて高い安全性を持つ。

ファイル暗号化、データベース暗号化、Wi-Fi通信
ChaCha20

鍵長 256ビット

速度 モバイルで高速

Googleが開発した現代的なストリーム暗号。モバイルデバイスでの高速処理が特徴。

TLS通信、モバイルアプリ暗号化

公開鍵暗号(非対称暗号)

公開鍵暗号は1976年に発明された革命的なアイデアで、公開鍵と秘密鍵という2つの異なる鍵を使用します。 公開鍵で暗号化されたデータは、対応する秘密鍵でのみ復号化できます。 重要なのは、公開鍵から秘密鍵を計算することが事実上不可能だということです。

公開鍵暗号の仕組みは日常生活の郵便ポストに例えることができます。 郵便ポストの投入口(公開鍵)は誰でも使用できますが、 中身を取り出すには鍵(秘密鍵)を持つ郵便局員だけができます。 同様に、公開鍵は誰でも使って暗号化できますが、 復号化は秘密鍵を持つ人だけが可能です。

これにより鍵配送問題が解決されました。公開鍵は名前の通り公開されており、 誰でもアクセスできる場所に置いても安全です。 しかし、公開鍵暗号は数学的に複雑な計算を必要とするため、 対称暗号と比べて処理速度が格段に遅いという欠点があります。

RSA

鍵長 2048/3072/4096ビット

特徴 汎用性が高い

最も有名な公開鍵暗号。大きな数の素因数分解の困難性を基礎とする。

HTTPS通信、デジタル署名、証明書
楕円曲線暗号 (ECC)

鍵長 256/384/521ビット

特徴 鍵長が短く効率的

楕円曲線上の離散対数問題を基礎とする。RSAより短い鍵長で同等の安全性を実現。

モバイルデバイス、IoT、Bitcoin
DH (Diffie-Hellman)

鍵長 2048/3072ビット

特徴 鍵交換専用

鍵交換に特化した公開鍵暗号。直接的な暗号化ではなく、共通鍵を安全に共有する。

TLS鍵交換、VPN

公開鍵暗号による安全な鍵交換

公開鍵暗号の最も重要な用途の一つが、対称暗号の鍵を安全に交換することです。 これにより、両方の暗号方式の長所を組み合わせることができます。

以下のシミュレーションでは、アリスとボブが公開鍵暗号を使って 安全に対称鍵を共有する過程を段階的に見ることができます。 イブという攻撃者が通信を盗聴しようとしていますが、 公開鍵暗号により対称鍵を安全に交換できることを確認してください。

公開鍵暗号による安全な鍵交換

アリスとボブが安全に通信したいとき、どのように対称鍵を共有するでしょうか? 公開鍵暗号を使った鍵交換の流れを見てみましょう。イブは通信を盗聴しようとする攻撃者です。

1. 公開鍵の公開

アリスが自分の公開鍵をボブに送信(盗聴されても安全)

アリス(受信者)

公開鍵を送信

ボブ(送信者)

公開鍵を受信

イブ(攻撃者)

公開鍵を傍受(問題なし)

RSA暗号の仕組みを体験する

公開鍵暗号の代表であるRSA暗号は、素因数分解の困難性を利用した巧妙な仕組みで動作します。 実際のRSAでは600桁以上の巨大な数を使いますが、ここでは小さな素数を使って その数学的な仕組みを体験してみましょう。

以下のデモでは、実際に計算過程を追いながら、なぜ公開鍵から秘密鍵を 導出することが困難なのか、そして暗号化されたメッセージが 秘密鍵でのみ復号化できる理由を理解することができます。

小さな素数で体験するRSA暗号

実際のRSA暗号では600桁以上の巨大な素数を使いますが、ここでは小さな素数を使って RSA暗号の数学的な仕組みを体験してみましょう。各ステップの計算過程を追いながら、 なぜ公開鍵から秘密鍵を導出することが困難なのかを理解できます。

ステップ 1: 素数の選択

2つの素数を選びます: p = 3, q = 5

素数は1と自分自身でしか割り切れない特別な数です。

なぜ安全なのか?

この例では n=153×5 に素因数分解するのは簡単ですが、 実際のRSAでは:

  • 2048ビット(約600桁)の巨大な数を使用
  • 現在の技術では素因数分解に数千年かかる
  • 量子コンピュータの脅威に備えて、より強力な暗号の研究も進行中

まとめ

この第2章では、現代暗号学の2つの柱である対称暗号と公開鍵暗号について学習しました。 対称暗号は高速で効率的ですが鍵配送問題があり、 公開鍵暗号は鍵配送問題を解決しますが処理速度が遅いという特徴があります。

現実のシステムでは、これらの長所を組み合わせたハイブリッド暗号システムが使用されており、 私たちの日常生活を支える重要な技術となっています。 次章では、暗号学のもう一つの重要な要素である「データの完全性」を保証する ハッシュ関数について学習していきます。

この章で学んだ重要なポイント

  • 対称暗号の特徴同じ鍵で暗号化・復号化を行う方式。高速だが鍵の共有が課題となる。
  • 公開鍵暗号の特徴公開鍵と秘密鍵のペアを使用。鍵配送問題を解決するが処理速度が遅い。
  • ハイブリッド暗号システム現実のシステムでは両方の長所を活かして組み合わせて使用される。
次の章
なし