※小説ではない※専門書 要約資料集 為替(換算)3.9万円でもらう 紐解集生成 専門 初入門 資料   作:{作者名}

203 / 382
# BOOK-0133 暗号II — 鍵を公開する時代の数学(情報派生 第2巻)

> この冊の前提=BOOK-0073_情報派生_暗号_第1巻(→BOOK-0073)。第1巻ではシーザー暗号から頻度分析、ヴィジュネル暗号、エニグマ、そして1976年のディフィー゠ヘルマンによる公開鍵の発想と1977年のRSA暗号の直感的な入り口までを扱った。本冊はその続きとして、公開鍵暗号を実際に動かす数学の中身、そして現代のインターネットがどのように「見知らぬ相手と安全に話す」を実現しているかを追っていく。
>
> 水準: 五〜六(後半) / 冠: 情報・計算
> 安全境界(本冊の執筆方針): 本冊は暗号の**原理・歴史・防御の考え方**のみを扱う。特定の実装に対する攻撃の実務手順や、悪用可能な具体的な攻撃手引きは一切記載しない。「なぜ安全とされるか」「何が問題として研究されているか」という理解のための記述に徹する。
> 相互リンク: →BOOK-0073(暗号第1巻・本冊の前提) →BOOK-0074(数論・オイラーのφ関数の出典) →BOOK-0127(数論第2巻) →BOOK-0066(アルゴリズムとデータ構造) →BOOK-0116(アルゴリズム第2巻) →BOOK-0070(ネットワーク第1巻) →BOOK-0119(ネットワーク第2巻・TLSの接続先) →BOOK-0010(コンピュータの始まり) →BOOK-0075(集合と論理)



# BOOK-0133 暗号II — 鍵を公開する時代の数学(情報派生 第2巻)

# BOOK-0133 暗号II — 鍵を公開する時代の数学(情報派生 第2巻)

 

> この冊の前提=BOOK-0073_情報派生_暗号_第1巻(→BOOK-0073)。第1巻ではシーザー暗号から頻度分析、ヴィジュネル暗号、エニグマ、そして1976年のディフィー゠ヘルマンによる公開鍵の発想と1977年のRSA暗号の直感的な入り口までを扱った。本冊はその続きとして、公開鍵暗号を実際に動かす数学の中身、そして現代のインターネットがどのように「見知らぬ相手と安全に話す」を実現しているかを追っていく。

>

> 水準: 五〜六(後半) / 冠: 情報・計算

> 安全境界(本冊の執筆方針): 本冊は暗号の**原理・歴史・防御の考え方**のみを扱う。特定の実装に対する攻撃の実務手順や、悪用可能な具体的な攻撃手引きは一切記載しない。「なぜ安全とされるか」「何が問題として研究されているか」という理解のための記述に徹する。

> 相互リンク: →BOOK-0073(暗号第1巻・本冊の前提) →BOOK-0074(数論・オイラーのφ関数の出典) →BOOK-0127(数論第2巻) →BOOK-0066(アルゴリズムとデータ構造) →BOOK-0116(アルゴリズム第2巻) →BOOK-0070(ネットワーク第1巻) →BOOK-0119(ネットワーク第2巻・TLSの接続先) →BOOK-0010(コンピュータの始まり) →BOOK-0075(集合と論理)

 

## はじめに——南京錠の「錠」を実際に鋳造してみる

 

BOOK-0073では、公開鍵暗号を「開いた南京錠を誰でも受け取れる場所に置いておく」という比喩で説明した。錠(公開鍵)は誰が持っていても荷物を閉じることしかできず、それを開ける(復号する)には対応する特別な鍵(秘密鍵)が要る、という発想の大転換だった。

 

本冊では、その錠を実際に「鋳造」してみる。RSA暗号の計算を、小さな数を使って最初から最後まで自分の手で(あるいは計算機で)たどり、暗号化した数がちゃんと元に戻ることを確かめる。さらに、RSAだけが公開鍵暗号のすべてではないことを知るために、まったく異なる発想で同じ目的を達成する楕円曲線暗号の考え方にも触れる。そして、暗号を支えるもう一つの柱である「ハッシュ関数」、暗号技術を組み合わせて「なりすまし」を防ぐデジタル署名と証明書、それらすべてが実際にブラウザとサーバーの間でどう組み上がっているかを示すTLSハンドシェイク、最後に量子コンピュータという新しい脅威と、それに備える研究の現在地までを見ていく。

 

なぜ面白いか。公開鍵暗号は「掛け算は一瞬でできるのに、その逆(素因数分解)は途方もなく難しい」という、数の世界にたまたま存在する非対称性を人類が発見し、それを盗んで「秘密を運ぶ道具」に仕立て上げた物語である。自然界の物理法則を利用するのではなく、純粋に数学的な性質——しかも一見地味な整数の割り算の余り——だけを頼りに、地球の裏側の見知らぬ相手と安全に話せる仕組みを作った。これは人類の知的発明の中でも屈指の「発想の掛け算」であり、しかもその仕組みは今、量子コンピュータという新参者によって静かに問い直されている最中でもある。

 

---

 

## 第七章 RSA暗号を最初から最後まで計算する

 

### 7-1 用語→一行定義→水準: 法(モジュラス)

 

**用語: 法(モジュラス、n)→一行定義: 剰余計算の「輪の大きさ」を決める数で、RSAでは二つの素数の積として作られる→水準: 五**

 

BOOK-0073の第五章で、RSA暗号は「二つの大きな素数を掛け合わせて一つの巨大な数(積)を作り、その積を公開鍵の一部とする」という直感を紹介した。ここでは、その積が実際の計算の中でどう使われるかを、具体的な小さな数値でたどっていく。

 

まず、二つの素数を選ぶ。素数とは「1とその数自身でしか割り切れない、2以上の整数」のことである(素数の性質そのものは→BOOK-0074で詳しく扱っている)。ここでは教科書的な例としてよく使われる、以下の二つの素数を選ぶ。

 

```

p = 61

q = 53

```

 

この二つを掛け合わせると、法(モジュラス)nが得られる。

 

```

n = p × q = 61 × 53 = 3233

```

 

この n = 3233 が、公開鍵の一部として世界に公開される数である。

 

### 7-2 オイラーのφ(ファイ)関数——「n未満で互いに素な数」を数える

 

n を作っただけでは鍵は完成しない。次に必要なのが、BOOK-0074で扱われている「オイラーのφ関数」である。φ(n)とは、「1以上n未満の整数のうち、nと互いに素な(1以外に共通の約数を持たない)数がいくつあるか」を数える関数である。

 

pとqが両方とも素数である場合、φ(n)は驚くほど単純な式で求められる。

 

```

φ(n) = (p − 1) × (q − 1)

```

 

先ほどの例で計算すると、

 

```

φ(3233) = (61 − 1) × (53 − 1) = 60 × 52 = 3120

```

 

この 3120 という数字が、この後の鍵作りすべての土台になる。φ(n)は「pとqという二つの素数さえ知っていれば一瞬で計算できるが、nだけを見ても(素因数分解できない限り)計算できない」という性質を持つ。この非対称性こそが、RSA暗号の安全性の核心である。nを知っているだけの外部の攻撃者は、pとqの積であるnを素因数分解しない限りφ(n)を求められず、φ(n)が分からなければこの先の秘密鍵を計算する道が開けない。

 

### 7-3 公開指数eを選ぶ

 

次に、公開鍵のもう一つの部品となる「公開指数e」を選ぶ。eはφ(n)と互いに素な(共通の約数を1以外に持たない)数でなければならない。実務でもよく使われる値として、ここでは

 

```

e = 17

```

 

を選ぶ。17とφ(n)=3120が互いに素であること(最大公約数が1であること)は、ユークリッドの互除法という手続きで確認できる。実際に計算機で検算すると、gcd(17, 3120) = 1 であることが確認された(検算済み、検算リストに記載)。

 

この時点で、公開鍵は (n, e) = (3233, 17) の組として完成する。これは誰に見られても構わない、堂々と公開してよい情報である。

 

### 7-4 秘密指数dを求める——拡張ユークリッドの互除法

 

公開鍵の相方となる秘密鍵dは、以下の関係を満たす数として定義される。

 

```

e × d ≡ 1 (mod φ(n))

```

 

これは「eとdを掛け合わせてφ(n)で割ると、余りがちょうど1になる」という意味である。この式を満たすdを求める手続きを「拡張ユークリッドの互除法」と呼び、pとqの値(すなわちφ(n))を知っている者だけが効率的に計算できる。

 

e=17、φ(n)=3120についてこの計算を実行すると、

 

```

d = 2753

```

 

が得られる。実際に検算すると、17 × 2753 = 46801、これを3120で割った商は15、余りは1(46801 = 15 × 3120 + 1)であり、確かに e × d ≡ 1 (mod φ(n)) が成り立つことが確認された(検算済み)。

 

この d = 2753 こそが秘密鍵であり、pとqを知らない第三者がnだけから求めようとすると、事実上nを素因数分解するのと同じ難しさに直面する。

 

### 7-5 暗号化と復号を実際に行う——数の往復を確認する

 

鍵がすべて揃ったところで、実際にメッセージを暗号化し、復号してみよう。ここでは説明を単純にするため、平文をあらかじめ一つの数値に変換したものとして扱う(実際の通信では文字列を数値に変換する下ごしらえの手順が別途必要になるが、本冊では暗号化そのものの計算に焦点を当てる)。

 

平文として、次の数を選ぶ。

 

```

m = 65

```

 

暗号化は次の式で行う。

 

```

c = m^e mod n

```

 

つまり、平文mをe乗し、その結果をnで割った余りを取る。実際に計算すると、

 

```

c = 65^17 mod 3233 = 2790

```

 

となる(この計算は「繰り返し二乗法」という効率的な手順で行われるのが実務上の常識だが、原理としては単純にm^e乗を計算してnで割った余りを取るだけである)。この c = 2790 が暗号文であり、これが公開鍵(n, e)を使って誰でも作れる部分である。

 

復号は、秘密鍵dを使って次の式で行う。

 

```

m' = c^d mod n

```

 

実際に計算すると、

 

```

m' = 2790^2753 mod 3233 = 65

```

 

となり、元の平文 m = 65 と完全に一致する(検算済み)。暗号化と復号の往復が正しく元に戻ることが、この小さな数値例で確認できた。

 

なぜこの往復が成立するのか、その数学的な仕組みの核心は、オイラーの定理(フェルマーの小定理の一般化)という数論の結果に基づいている。この定理の詳細な証明は→BOOK-0074および→BOOK-0127で扱われている数論の体系に依っており、本冊ではその「使われ方」に絞って紹介した。ここで重要なのは、暗号化に使うeと復号に使うdが、φ(n)を介した特別な関係(e×d≡1 mod φ(n))によって結びついているからこそ、m→c→m'という往復が保証されるという点である。

 

### 7-6 なぜ盗聴者はdを計算できないのか

 

暗号文cとその生成に使われた公開鍵(n, e)を盗聴者がすべて手に入れたとしても、秘密鍵dを計算するには、φ(n)を知る必要がある。φ(n)を求めるには、nを素因数分解してpとqを取り出す必要がある。

 

先ほどの例では n = 3233 は小さいので、7 × 11 = 77 の例と同様に(BOOK-0073第五章参照)、実は 3233 = 61 × 53 とすぐに見抜けてしまう程度の大きさである。実際のRSA暗号では、nは数百桁(2048ビットや3072ビットといった単位で語られる)の巨大な数が使われる。現在知られている最も効率的な素因数分解のアルゴリズムを使っても、そのような桁数のnを分解するには、現実的な時間内では終わらない計算量が必要とされている。この「計算量的に困難」という性質が、RSA暗号の安全性の根拠である(数百桁の数を素因数分解する具体的な攻撃手法や高速化の実装手引きは、本冊の扱う範囲外であり、記載しない)。

 

### 7-7 なぜφ(n)=(p-1)(q-1)という式が成り立つのか——直感で捉える

 

第七章7-2で紹介した「φ(n) = (p − 1) × (q − 1)」という式は、なぜこれほど単純な形になるのだろうか。数式による厳密な証明は→BOOK-0074の数論の体系に譲るが、直感的な理由づけだけをここで示しておこう。

 

φ(n)とは「1以上n未満の整数のうち、nと互いに素な数の個数」を数える関数である。n = p × q(pとqは異なる素数)のとき、1以上n未満の整数の中で「nと互いに素でない」数、つまりpの倍数かqの倍数である数を全体から除けばよい。pの倍数はn未満にq個存在し(p, 2p, 3p, ……, (q-1)p)、qの倍数はn未満にp個存在する(q, 2q, ……, (p-1)q)。pとqはどちらも素数で互いに素なので、「pの倍数かつqの倍数」であるものはpq=nの倍数しかなく、n未満の範囲には存在しない。したがって、全体n個から、pの倍数(q個)とqの倍数(p個)を引き算し、境界の重複を整えると、最終的に(p-1)(q-1)という式にきれいにまとまる。これは、大きな四角形の面積から縦横の帯を除いていくと、残る面積が縦×横の掛け算の形にまとまる、という図形的なイメージに近い。

 

この式の単純さこそが、RSA暗号の鍵生成を実用的な速さで行える理由である。pとqさえ分かっていれば、φ(n)は掛け算と引き算だけで一瞬に求まる。この後の秘密鍵dの計算(拡張ユークリッドの互除法)も、φ(n)さえ手元にあれば効率よく実行できる。鍵の持ち主にとっては軽い計算で済む一方、pとqを知らない第三者にとっては、φ(n)を求める唯一の現実的な道筋がnの素因数分解というとてつもなく重い計算になる——この「持っている情報の違いによる計算コストの非対称性」こそが、RSA暗号という仕組み全体を支える一番の柱である。

 

### 7-8 RSAという名前の由来と、その少し複雑な歴史

 

RSA暗号という名前は、BOOK-0073第五章で紹介した通り、1977年にこの方式を発表したロナルド・リベスト、アディ・シャミア、レナード・エーデルマンの三人の頭文字に由来する。彼らの成果は1978年に論文として正式に発表され、公開鍵暗号を実際に動く形にした最初の実装として広く知られることとなった。

 

興味深いことに、後年になって、イギリスの政府通信本部(GCHQ)に所属していた数学者クリフォード・コックスが、RSAと本質的に同じ発想の暗号方式を1973年に発見していたことが明らかになっている。ただし、コックスの発見は当時、国家機関の内部で機密扱いとされ、外部に公表されることがなかった。そのため、RSA暗号という名称と栄誉は、独立に、そして公に発表したリベスト・シャミア・エーデルマンの三人に与えられることになった。この逸話は、暗号研究という分野が学術的な発見だけでなく、機密性や公表のタイミングという政治的・組織的な事情とも複雑に絡み合ってきた歴史を持つことを示す一例として、しばしば語られる。

 

---

 

## 第八章 楕円曲線暗号——同じ目的への、まったく違う道

 

### 8-1 用語→一行定義→水準: 楕円曲線暗号(ECC)

 

**用語: 楕円曲線暗号(ECC)→一行定義: 楕円曲線上の点同士の特殊な「足し算」の逆算の困難さを安全性の根拠とする公開鍵暗号方式→水準: 六**

 

RSA暗号が「大きな数の素因数分解の困難さ」を土台にしていたのに対し、楕円曲線暗号(ECC: Elliptic Curve Cryptography)はまったく異なる数学的困難さを土台にする。1980年代半ばに、ニール・コブリッツとビクター・ミラーがそれぞれ独立に、楕円曲線を暗号に応用するアイデアを提案したことが、この分野の始まりとして知られている。

 

楕円曲線とは、大まかに言えば「y² = x³ + ax + b」という形の方程式で表される曲線のことである(具体的な式の形は曲線ごとに異なるパラメータa, bによって決まる)。この曲線上の点同士に対して、幾何学的な操作から導かれる特殊な「足し算」のルールを定義することができる。二つの点を選んで足し算をすると、曲線上の別の点が得られる、という具合である。

 

### 8-2 「点を何度も足す」ことと、その逆問題

 

楕円曲線暗号の核心は、ある点Pを自分自身に何度も繰り返し足し合わせる(これを「スカラー倍算」と呼ぶ)操作にある。点Pをk回足し合わせて得られる点をQとすると、

 

```

Q = k × P (Pをk回繰り返し足す、という意味)

```

 

という関係になる。ここで、PとQが分かっているときに、それを何回足し合わせたのか(kの値)を求める問題を「楕円曲線離散対数問題」と呼ぶ。この「掛け算(足し合わせ)は簡単だが、逆に回数を割り出すのは極めて難しい」という非対称性が、RSAにおける「掛け算は簡単、素因数分解は困難」という非対称性と同じ役割を果たす。

 

実装の細かい手順(具体的な曲線パラメータの選び方や実装上の注意点)は本冊の範囲外とするが、原理として押さえておくべきは、楕円曲線暗号がRSAとは全く別の数学的な「一方向性」(ある方向の計算は簡単だが逆方向は困難という性質)に依拠しているという点である。

 

### 8-3 短い鍵でも同等の強度——なぜ実務で好まれるか

 

楕円曲線暗号が実務上注目される最大の理由は、RSAと同程度の安全強度を、はるかに短い鍵長で実現できる点にある。たとえば、256ビット程度の楕円曲線暗号の鍵は、3072ビットのRSA鍵とおおむね同等の安全強度を持つとされる(このビット数の対応関係は、両方式の困難さの性質の違いに由来する見積もりであり、正確な対応は評価機関や時期によって多少の幅がある)。

 

鍵が短くて済むということは、計算量が少なく、通信量も少なく、消費電力も少なく済むということを意味する。これは、処理能力やバッテリーに制約のあるスマートフォンやICカード、IoT機器などで特に重要な利点となる。今日のTLS通信(第十一章で扱う)の多くが楕円曲線暗号を採用しているのは、この効率性が大きな理由の一つである。

 

### 8-4 楕円曲線暗号が使われている身近な場面

 

楕円曲線暗号は、私たちの生活の中で意識されないまま、すでに広く実用されている。TLS通信における鍵交換や署名(後述するECDSA、楕円曲線デジタル署名アルゴリズム)、スマートフォンの決済機能、行政機関が発行する電子証明書など、鍵の短さと処理の軽さが重視される場面で採用が進んでいる。

 

また、分散型のデジタル台帳技術(暗号資産の基盤技術としても知られる)においても、取引の正当性を証明する署名の仕組みとして楕円曲線暗号が使われている例が広く知られている。これは、送金や取引の記録に対して「これは確かにその鍵の持ち主が承認した取引である」ということを、デジタル署名(第十章で扱う)の形で証明する必要があるためであり、楕円曲線暗号が持つ「短い鍵で高い安全強度」という性質が、大量の取引データを扱う上での実務的な利点となっている。

 

このように、RSAと楕円曲線暗号は、どちらか一方が優れているという単純な優劣関係にあるわけではなく、それぞれ異なる数学的困難さに基づきながら、状況に応じて使い分けられている二本の柱として、現代の暗号基盤を支えている。

 

---

 

## 第九章 ハッシュ関数——「指紋」を作る一方向の仕組み

 

### 9-1 用語→一行定義→水準: ハッシュ関数

 

**用語: ハッシュ関数→一行定義: どんな長さの入力からも固定長の出力(ハッシュ値)を作り出し、逆算や偽造が困難な一方向の変換→水準: 五**

 

ここまでは「情報を隠す」ための暗号を見てきたが、ここからは少し毛色の違う道具、ハッシュ関数を扱う。ハッシュ関数は情報を隠すためのものではなく、情報の「指紋」を作るための道具である。

 

ハッシュ関数に何かのデータ(文章でも、ファイルでも、数値でもよい)を入力すると、そのデータがどれほど長くても、決まった長さの出力(ハッシュ値、あるいはダイジェストと呼ぶ)が返ってくる。同じ入力からは必ず同じハッシュ値が得られるが、入力をほんの1文字変えるだけでハッシュ値は全く別のものに変わる。

 

ハッシュ関数に求められる重要な性質は次の二つである。

 

**一方向性**: ハッシュ値から元の入力を逆算することが、事実上不可能に近い。

 

**衝突耐性**: 異なる二つの入力から、たまたま同じハッシュ値が生まれてしまうこと(これを「衝突」と呼ぶ)を見つけ出すのが、事実上不可能に近い。

 

### 9-2 誕生日のパラドックス——「23人で50%」を検算する

 

衝突耐性を考えるうえで避けて通れないのが、「誕生日のパラドックス」と呼ばれる確率の性質である。これは暗号そのものというより確率論の話だが、ハッシュ関数の衝突がどれくらいの規模で起こりうるかを考える上で重要な直感を与えてくれる。

 

問題設定はこうだ。ある部屋にランダムに集められた人々がいるとき、その中に誕生日が同じ人が(少なくとも一組)いる確率は、何人集まれば50%を超えるだろうか。直感的には「365日もあるのだから、大勢集めないと一致しないのでは」と感じやすいが、実際に計算すると驚くほど少ない人数で50%を超える。

 

実際に計算機で検算した結果は以下の通りである(検算済み、365日・うるう年を無視した単純化モデル)。

 

```

10人: 衝突確率 = 11.69%

20人: 衝突確率 = 41.14%

22人: 衝突確率 = 47.57%

23人: 衝突確率 = 50.73%

30人: 衝突確率 = 70.63%

```

 

23人集まった時点で、誕生日が一致する組がどこかに存在する確率はすでに50%を超える。この直感に反する結果が生まれる理由は、「特定の1人と誕生日が一致する確率」ではなく、「集まった全員同士の組み合わせのどこかで一致が起こる確率」を考えているからである。23人いれば、二人一組の組み合わせは23×22÷2=253通りも存在し、そのどれか一つでも一致すればよいので、思ったよりずっと起こりやすくなる。

 

この「思ったより早く衝突が起こる」という性質は、ハッシュ関数の設計者にとって重要な警告になる。ハッシュ値の出力長がn ビットだとすると、単純な理屈では2のn乗通りの組み合わせがあるように思えるが、誕生日のパラドックスの理屈により、実際には2のn乗より遥かに少ない(おおよそその平方根程度の)試行回数で衝突が発見される可能性が理論上生まれる。このため、暗号学的ハッシュ関数を設計する際には、想定される攻撃者の計算資源に対して十分な余裕を持った出力長が選ばれる。

 

### 9-3 ハッシュ関数は何に使われるか

 

ハッシュ関数は、大きなファイルが改ざんされていないかを確認する(ファイルのハッシュ値を比較するだけで、内容が一致するかどうか高速に判定できる)、パスワードを安全に保管する(パスワードそのものではなくハッシュ値を保存し、照合時にもハッシュ値同士を比べる)、そして次章で扱うデジタル署名の土台になる、など幅広い場面で使われている。データを効率よく整理し検索する技術全般との関連は→BOOK-0066および→BOOK-0116のアルゴリズムの話とも接続している。

 

---

 

## 第十章 デジタル署名と証明書——「なりすまし」を防ぐ信頼の連鎖

 

### 10-1 用語→一行定義→水準: デジタル署名

 

**用語: デジタル署名→一行定義: 秘密鍵で作った「署名」を公開鍵で誰でも検証できるようにし、送信者本人であることとデータが改ざんされていないことを両方保証する仕組み→水準: 六**

 

第七章で見た公開鍵暗号は「暗号化には公開鍵、復号には秘密鍵」という使い方をしたが、この関係を逆転させると、また別の便利な使い道が生まれる。それがデジタル署名である。

 

デジタル署名の基本的な考え方は次の通りである。送信者は、送りたいデータのハッシュ値を計算し、そのハッシュ値を自分の秘密鍵で変換する(これを「署名」と呼ぶ)。受信者は、送られてきたデータのハッシュ値を自分でも計算し、送信者の公開鍵を使って署名を検証する。もし計算したハッシュ値と、署名から復元された値が一致すれば、次の二つが同時に証明されたことになる。

 

一つ目は、このデータが確かにその秘密鍵の持ち主によって署名されたということ(なりすましの防止)。二つ目は、署名された後にデータが一切改ざんされていないということ(改ざんの検出)。この二つを同時に保証できる点が、デジタル署名の強力さである。

 

### 10-2 証明書と「信頼の連鎖」

 

デジタル署名がうまく機能するためには、「この公開鍵は、本当にこの人(このサーバー)のものである」という対応関係が信頼できなければならない。もし攻撃者が偽の公開鍵を「これは正規のサーバーの鍵です」と偽って配布できてしまえば、署名の仕組み自体が意味をなさなくなる。

 

この問題を解決するのが「デジタル証明書」であり、その裏側にある「認証局(CA: Certificate Authority)」という信頼できる第三者機関の存在である。認証局は、あるサーバーの公開鍵とそのサーバーの身元を確認した上で、「この公開鍵は確かにこのサーバーのものである」ということを、認証局自身の秘密鍵で署名した証明書として発行する。

 

ブラウザやOSには、あらかじめ信頼された認証局の公開鍵のリストが組み込まれている。ユーザーがウェブサイトにアクセスすると、サーバーは自分の証明書を提示し、ブラウザはその証明書に付けられた認証局の署名を、あらかじめ信頼している認証局の公開鍵で検証する。この「信頼できる機関が署名し、その機関自体もさらに上位の機関に信頼されている」という連なりを「信頼の連鎖」と呼ぶ。この連鎖のどこかで検証が失敗すると、ブラウザは「この接続は安全ではない可能性があります」といった警告を表示する。

 

### 10-3 証明書には「有効期限」と「失効」がある

 

デジタル証明書は、発行されたらそれで永久に有効というわけではない。証明書には必ず有効期限が設定されており、期限が切れると再発行の手続きが必要になる。この仕組みがある理由の一つは、鍵の状態や運用環境は時間とともに変化しうるため、一定期間ごとに正当性を再確認する仕組みを組み込んでおくことが安全上望ましいためである。

 

さらに、有効期限が来る前であっても、何らかの理由(秘密鍵が漏洩した疑いがある、証明書の記載内容に誤りが見つかったなど)で証明書を無効にしたい場合に備えて、「失効」という仕組みが用意されている。認証局は失効した証明書のリストを公開しており、ブラウザは通信の際にこのリストと照合することで、まだ有効期限内であっても失効済みの証明書を検出し、警告を出すことができる。

 

なぜ一つの巨大な認証局がすべての証明書を発行する体制にしないのかという疑問を持つかもしれない。実際には、世界中に複数の認証局が存在し、それぞれが独立に証明書を発行している。これは、単一の組織にすべての信頼を集中させるリスクを分散させる意味合いもあるが、同時に、どの認証局を信頼するかという判断をブラウザやOSの開発元が慎重に審査し、リストを管理するという運用上の負担も伴う。この「信頼を分散させつつ、その分散した信頼をどう束ねて検証するか」という設計上の課題は、暗号の数学的な強さとはまた別の、運用面での重要な論点として今も議論され続けている。

 

---

 

## 第十一章 TLSハンドシェイク——理論が実際に組み上がる瞬間

 

### 11-1 なぜ公開鍵暗号だけでは足りないのか

 

ここまでに登場した道具——公開鍵暗号、ハッシュ関数、デジタル署名、証明書——が、実際のインターネット通信の中でどのように組み合わされているかを見てみよう。舞台となるのは、ブラウザとウェブサーバーの間で安全な通信路を確立するための手順、TLS(Transport Layer Security)である。通信の土台となるネットワークの仕組みそのものは→BOOK-0070および→BOOK-0119で扱われている。

 

BOOK-0073の第五章末尾で触れた通り、公開鍵暗号は計算に比較的時間がかかる。大量のデータを毎回公開鍵暗号だけでやり取りするのは非効率であるため、実務では「最初の鍵交換にだけ公開鍵暗号(や鍵交換アルゴリズム)を使い、その後の大量データのやり取りには高速な共通鍵暗号を使う」という役割分担が行われる。この役割分担の具体的な手順が、TLSハンドシェイクである。

 

### 11-2 ハンドシェイクの大まかな流れ

 

TLSハンドシェイクの流れを、大まかな段階に分けて見てみよう(具体的な実装のバージョンによって細部の手順は異なるが、共通する骨格を示す)。

 

**第一段階(挨拶と提案)**: ブラウザがサーバーに接続を試み、「私はこういう暗号方式に対応していますが、どれを使いますか」という提案を送る。

 

**第二段階(サーバーの応答と証明書提示)**: サーバーは使用する暗号方式を選び、自分のデジタル証明書(公開鍵を含む)を提示する。ブラウザは、この証明書を第十章で説明した「信頼の連鎖」を辿って検証する。

 

**第三段階(鍵交換)**: ブラウザとサーバーは、その後の通信で使う共通鍵(セッション鍵)を安全に合意する。この合意には、BOOK-0073第五章で紹介したディフィー゠ヘルマンの発想の発展形や、公開鍵暗号を使った鍵交換の手法が使われる。重要なのは、この段階で合意された共通鍵は、通信の当事者以外の誰にも(証明書を発行した認証局にすら)分からないという点である。

 

**第四段階(共通鍵での通信開始)**: 鍵交換が完了すると、以降の実際のデータのやり取りは高速な共通鍵暗号で行われる。ページの中身、フォームに入力した情報などは、すべてこの共通鍵で暗号化されて送受信される。

 

この一連の流れが、ブラウザのアドレスバーに鍵マークが表示されるまでのわずか数百ミリ秒の間に行われている。二千年前のシーザー暗号から始まった「秘密を運ぶ技術」の物語が、現代では意識されることすらなく日常のクリック一つの裏側で完結しているのである。

 

### 11-3 乱数の重要性——鍵の強さは「予測不可能性」で決まる

 

TLSハンドシェイクや鍵生成のあらゆる場面で、静かに、しかし決定的に重要な役割を果たしているのが「乱数」である。共通鍵やセッション鍵、RSAの素数選びに使われる候補値などは、すべて予測不可能な乱数から作られる必要がある。

 

もし乱数の生成方法に偏りがあったり、外部から予測可能なものであったりすると、どれほど数学的に優れた暗号方式を使っていても、鍵そのものが推測されてしまい、暗号の安全性は根底から崩れる。「暗号アルゴリズムは正しいのに、乱数の質が低いせいで全体が破られる」という事態は、暗号システム設計における現実的なリスクの一つとして広く認識されている。このため、暗号用途の乱数生成には、通常のプログラムで使われる乱数とは区別された、より厳格な「暗号論的擬似乱数生成器」と呼ばれる仕組みが用いられる。

 

---

 

## 第十二章 量子の脅威と耐量子暗号——確実な範囲と、まだ見えない先

 

### 12-1 ショアのアルゴリズム——1994年の理論的衝撃

 

1994年、数学者ピーター・ショアは、量子コンピュータを使えば、大きな数の素因数分解を、古典的なコンピュータでは実現不可能な速さで解けるアルゴリズム(のちに「ショアのアルゴリズム」と呼ばれる)を理論的に示した。これは暗号研究者にとって大きな衝撃だった。なぜなら、RSA暗号の安全性はまさに「素因数分解の困難さ」に依拠しており、もし実用規模の量子コンピュータが実現すれば、理論上はRSA暗号を効率的に解読できてしまうことになるからである。

 

同様に、ショアのアルゴリズムの考え方は、楕円曲線暗号が依拠する「楕円曲線離散対数問題」にも応用できることが理論的に示されている。つまり、RSAと楕円曲線暗号という、現在広く使われている公開鍵暗号の二本柱がどちらも、将来の大規模な量子コンピュータに対しては脆弱になりうるというのが、確実に言える範囲の事実である。

 

ここで明確にしておくべき重要な点がある。ショアのアルゴリズムの理論そのものは1994年に確立された確実な数学的事実だが、「その理論を実行できるだけの規模と精度を持つ量子コンピュータがいつ実現するか」は、2026年現在においても**未確定**である。現在の量子コンピュータは急速に発展を続けているものの、RSAの実用的な鍵長を解読するために必要とされる規模の、誤り訂正を伴った量子コンピュータの実現時期については、研究者の間でも見解が分かれており、確定的な予測はできない段階にある。

 

### 12-2 耐量子暗号(PQC)——量子時代に備える新しい数学

 

この将来的な脅威に備えて、「量子コンピュータが実用化されても解読が困難であると考えられる」新しい種類の暗号方式を研究・標準化する取り組みが進められている。これらは「耐量子暗号」または「PQC(Post-Quantum Cryptography)」と呼ばれる。

 

耐量子暗号の研究では、素因数分解や離散対数問題とは異なる数学的困難さが土台として検討されている。たとえば、格子と呼ばれる幾何学的構造の中で特定の問題を解く困難さに基づく方式などが、有力な候補として研究されてきた。これらの数学的な仕組みの詳細は非常に専門的であり、本冊では原理の存在を示すにとどめる。

 

米国のNIST(国立標準技術研究所)は、こうした耐量子暗号の候補を公募し、複数年にわたる評価プロセスを経て、標準として採用する方式を選定する取り組みを進めてきた。この標準化の取り組みが行われてきたこと自体は確実な事実であるが、どの方式が最終的にどこまで普及するか、既存のRSAや楕円曲線暗号からの移行がどの程度の速さで進むかは、引き続き**研究途上・未確定**の部分が大きい分野である。

 

### 12-3 なぜ「今すぐ」対策が議論されているのか

 

実用規模の量子コンピュータが存在しない現在でも、耐量子暗号への移行が既に議論され始めている理由の一つに、「今のうちに暗号化されて盗まれたデータを保存しておき、将来量子コンピュータが実現した時点で解読する」という考え方への警戒がある。長期間秘匿する必要がある情報については、将来の解読リスクを見越して、今から対策を検討する価値があるという考え方である。ただし、これがどの程度現実的な脅威として扱われるべきかについても、評価は分野や機関によって幅がある。

 

---

 

## おわりに——鍵をめぐる物語は、まだ終わっていない

 

BOOK-0073では、シーザー暗号の単純な文字のずらしから始まり、頻度分析との攻防、機械式暗号と人間の知恵比べ、そして「鍵配送問題」という壁に突き当たるまでの物語を追った。本冊では、その壁を「鍵そのものを公開してしまう」という逆転の発想で乗り越えたRSA暗号の計算を最初から最後まで自分の手でたどり、楕円曲線暗号という全く異なる数学的アプローチ、ハッシュ関数による「指紋」の仕組み、デジタル署名と証明書による信頼の構築、そしてそのすべてが組み合わさって動くTLSハンドシェイクの実際の流れを見てきた。

 

最後に見た量子コンピュータの脅威は、この物語がまだ終わっていないことを教えてくれる。二千年前のシーザー暗号が「25通りの総当たり」という弱点を持っていたように、今日の公開鍵暗号もまた、将来のある時点で新しい種類の「解き方」に直面するかもしれない。暗号の歴史とは、常に「守る側」が新しい発想で壁を乗り越え、その壁がまたいつか別の角度から崩される可能性と向き合い続ける、終わりのない知恵比べの記録である。そして、その次の一手を用意する研究が、まさに今この瞬間も世界のどこかで進められている。

 

---

 

## この巻のまとめ

 

- RSA暗号の鍵生成は、二つの素数p, qの積n、オイラーのφ関数φ(n)=(p-1)(q-1)、φ(n)と互いに素な公開指数e、e×d≡1(mod φ(n))を満たす秘密指数dという手順で構成される(本冊ではp=61, q=53, n=3233, e=17, d=2753の例で暗号化・復号の往復を検算済み)。

- 楕円曲線暗号(ECC)は、楕円曲線上の点のスカラー倍算の逆問題(離散対数問題)の困難さを土台にした、RSAとは異なる公開鍵暗号方式であり、短い鍵長で同等の安全強度を実現できる。

- ハッシュ関数は一方向性と衝突耐性を持つ「指紋」を作る仕組みであり、誕生日のパラドックスにより、思ったより少ない試行回数で衝突が起こりうることが確率的に示される(23人で衝突確率50.73%、検算済み)。

- デジタル署名は秘密鍵で署名し公開鍵で検証する仕組みで、なりすまし防止と改ざん検出を同時に実現する。証明書と認証局による「信頼の連鎖」が、公開鍵の正当性を保証する。

- TLSハンドシェイクは、証明書検証・鍵交換・共通鍵通信という段階を経て、公開鍵暗号と共通鍵暗号の「良いとこ取り」を実現する具体的な手順である。

- 乱数の予測不可能性は暗号システム全体の安全性を支える基盤であり、質の低い乱数は暗号方式自体の強さとは無関係にシステムを脆弱にする。

- 1994年のショアのアルゴリズムにより、量子コンピュータは理論上RSAと楕円曲線暗号の両方を脅かしうることが示された。ただし実用規模の量子コンピュータの実現時期は未確定であり、NISTなどによる耐量子暗号の標準化が進められているものの、普及の速度や最終的な到達点は研究途上である。

 

> 相互リンク: →BOOK-0073(暗号第1巻・本冊の前提) →BOOK-0074(数論) →BOOK-0127(数論第2巻) →BOOK-0066(アルゴリズムとデータ構造) →BOOK-0116(アルゴリズム第2巻) →BOOK-0070(ネットワーク第1巻) →BOOK-0119(ネットワーク第2巻) →BOOK-0010(コンピュータの始まり) →BOOK-0075(集合と論理)

 




# BOOK-0133 暗号II — 鍵を公開する時代の数学(情報派生 第2巻)
  1. 目次
  2. 小説情報
  3. 縦書き
  4. しおりを挟む
  5. お気に入り登録
  6. 評価
  7. 感想
  8. ここすき
  9. 誤字
  10. 閲覧設定