Symmetric and Public Key Cryptography
現代暗号学の2つの柱である対称暗号と公開鍵暗号の違いと特徴を理解します。
第1章で暗号の基礎を学んだ次のステップとして、現代暗号学の中核である「鍵」の概念を深く理解し、 対称暗号と公開鍵暗号という2つの重要な暗号方式の違いを学習します。 それぞれの長所・短所を理解し、現実のシステムでどのように組み合わせて使用されているかを探ります。
第1章で学習したシーザー暗号を思い出してください。文字をいくつずらすかを決める「シフト数」が、 実は暗号における「鍵」の概念そのものでした。鍵は暗号化と復号化を制御する重要な情報で、鍵を知らない人は暗号文を読むことができません。
現代の暗号学では、鍵の長さ(ビット数)が安全性を決定する重要な要素となります。 シーザー暗号の場合、シフト数は1から25までの25通りしかなく、これは約5ビット相当の鍵空間です。 現代のコンピュータなら数秒で全ての可能性を試すことができるため、非常に弱い暗号と言えます。
一方、現代の強力な暗号では128ビット、256ビットといった長い鍵を使用します。 256ビットの鍵空間は2^256 ≈ 10^77通りもの可能性があり、 これは現在の技術では事実上解読不可能な強度を持ちます。鍵の長さが暗号の強さを決定する 重要な要素であることを理解しておきましょう。
対称暗号は、暗号化と復号化に同じ鍵を使用する暗号方式です。 シーザー暗号も対称暗号の一種で、暗号化時のシフト数と復号化時のシフト数は同じでした。 送信者と受信者が事前に同じ鍵を共有していることが前提となります。
対称暗号の最大の利点は処理速度の高さです。 現代のコンピュータでは、AES暗号を使って毎秒数ギガバイトのデータを暗号化することができます。 そのため、大容量のファイル暗号化や高速通信での暗号化に適しています。
しかし、対称暗号には重大な問題があります。それが「鍵配送問題」です。 暗号化された通信を始める前に、どうやって安全に鍵を相手に渡すのでしょうか? インターネット上で鍵をそのまま送信すれば、第三者に傍受される危険性があります。 この問題の解決策として、公開鍵暗号が発明されました。
鍵長 56ビット
速度 高速
1970年代から長く使用されていた対称暗号。現在は鍵長が短すぎるため非推奨。
鍵長 128/192/256ビット
速度 非常に高速
現在最も広く使用されている対称暗号。米国政府標準として採用され、極めて高い安全性を持つ。
鍵長 256ビット
速度 モバイルで高速
Googleが開発した現代的なストリーム暗号。モバイルデバイスでの高速処理が特徴。
公開鍵暗号は1976年に発明された革命的なアイデアで、公開鍵と秘密鍵という2つの異なる鍵を使用します。 公開鍵で暗号化されたデータは、対応する秘密鍵でのみ復号化できます。 重要なのは、公開鍵から秘密鍵を計算することが事実上不可能だということです。
公開鍵暗号の仕組みは日常生活の郵便ポストに例えることができます。 郵便ポストの投入口(公開鍵)は誰でも使用できますが、 中身を取り出すには鍵(秘密鍵)を持つ郵便局員だけができます。 同様に、公開鍵は誰でも使って暗号化できますが、 復号化は秘密鍵を持つ人だけが可能です。
これにより鍵配送問題が解決されました。公開鍵は名前の通り公開されており、 誰でもアクセスできる場所に置いても安全です。 しかし、公開鍵暗号は数学的に複雑な計算を必要とするため、 対称暗号と比べて処理速度が格段に遅いという欠点があります。
鍵長 2048/3072/4096ビット
特徴 汎用性が高い
最も有名な公開鍵暗号。大きな数の素因数分解の困難性を基礎とする。
鍵長 256/384/521ビット
特徴 鍵長が短く効率的
楕円曲線上の離散対数問題を基礎とする。RSAより短い鍵長で同等の安全性を実現。
鍵長 2048/3072ビット
特徴 鍵交換専用
鍵交換に特化した公開鍵暗号。直接的な暗号化ではなく、共通鍵を安全に共有する。
公開鍵暗号の最も重要な用途の一つが、対称暗号の鍵を安全に交換することです。 これにより、両方の暗号方式の長所を組み合わせることができます。
以下のシミュレーションでは、アリスとボブが公開鍵暗号を使って 安全に対称鍵を共有する過程を段階的に見ることができます。 イブという攻撃者が通信を盗聴しようとしていますが、 公開鍵暗号により対称鍵を安全に交換できることを確認してください。
アリスとボブが安全に通信したいとき、どのように対称鍵を共有するでしょうか? 公開鍵暗号を使った鍵交換の流れを見てみましょう。イブは通信を盗聴しようとする攻撃者です。
アリスが自分の公開鍵をボブに送信(盗聴されても安全)
公開鍵を送信
公開鍵を受信
公開鍵を傍受(問題なし)
公開鍵暗号の代表であるRSA暗号は、素因数分解の困難性を利用した巧妙な仕組みで動作します。 実際のRSAでは600桁以上の巨大な数を使いますが、ここでは小さな素数を使って その数学的な仕組みを体験してみましょう。
以下のデモでは、実際に計算過程を追いながら、なぜ公開鍵から秘密鍵を 導出することが困難なのか、そして暗号化されたメッセージが 秘密鍵でのみ復号化できる理由を理解することができます。
実際のRSA暗号では600桁以上の巨大な素数を使いますが、ここでは小さな素数を使って RSA暗号の数学的な仕組みを体験してみましょう。各ステップの計算過程を追いながら、 なぜ公開鍵から秘密鍵を導出することが困難なのかを理解できます。
2つの素数を選びます: p = 3, q = 5
素数は1と自分自身でしか割り切れない特別な数です。
この例では n=15 を 3×5 に素因数分解するのは簡単ですが、 実際のRSAでは:
この第2章では、現代暗号学の2つの柱である対称暗号と公開鍵暗号について学習しました。 対称暗号は高速で効率的ですが鍵配送問題があり、 公開鍵暗号は鍵配送問題を解決しますが処理速度が遅いという特徴があります。
現実のシステムでは、これらの長所を組み合わせたハイブリッド暗号システムが使用されており、 私たちの日常生活を支える重要な技術となっています。 次章では、暗号学のもう一つの重要な要素である「データの完全性」を保証する ハッシュ関数について学習していきます。