こんにちは、数強塾代表の藤原進之介です。この記事は参考書『藤原進之介の最強120講義』の第17講「公開鍵暗号・電子署名・電子証明書」のWeb版です。共通テスト「情報Ⅰ」での重要度はS(毎年出る。落とすと致命的)、情報Ⅱでの接続先は(1)情報社会の進展と情報技術/(4)情報システムとプログラミングです。
公開鍵暗号は「鍵が2種類あって、公開鍵で暗号化して秘密鍵で復号する」と覚えて終わりにされがちな分野です。しかしそれでは、共通テストが毎年のように問う「誰の、どちらの鍵を使うのか」で必ず迷います。この講ではなぜ鍵を公開してよいのかを原理から説明し、小さな素数を使って実際に手で暗号化・復号・署名・検証まで追い、最後に「鍵マークがあっても詐欺サイトはありうる」という話の意味を完成させます。
1. この講の問い
なぜ、暗号の鍵を世界中に公開してしまって構わないのか。
2. 結論
鍵を2本1組で作り、片方で掛けたものは、その鍵では開かず、対になるもう片方でしか開かないという非対称な仕組みにするからです。だから掛けるための鍵は配って構いません。そして掛ける鍵と開ける鍵を逆に使うと、そのまま電子署名になります。暗号(機密性)と電子署名(本人性・完全性)は、同じ道具の裏表です。ただし「その公開鍵が本人のものか」は公開鍵自身には書けません。だから第三者が保証する電子証明書と認証局が必要になります。
3. なぜそうなるのか
3-1. 前の講が残した宿題 ── 鍵をどうやって渡すのか
前の講で扱った共通鍵暗号は、暗号化と復号に同じ鍵を使う方式でした。強くて速い。けれど致命的な穴が1つ残ります。その鍵を、相手にどうやって渡すのか。
盗聴されるかもしれない通信路を通して鍵を送れば、鍵ごと盗まれます。かといって安全な経路が最初からあるなら、そもそも暗号は要りません。これが鍵配送問題です。しかも人数が増えると鍵の本数が爆発します。n 人が互いに秘密の通信をするには n(n−1)/2 本必要で、100人なら 4,950本です。
ここで発想を変えます。鍵を渡すのをやめる。渡すのは「掛けるための道具」だけにする。
3-2. 南京錠を配って回るモデル
私が開いた状態の南京錠を大量に作り、駅前で配って回るとします。その錠を開ける鍵は、私が1本だけ持っていて、誰にも渡しません。
- あなたが私に秘密の手紙を送りたい → 箱に入れて、配られた私の南京錠を掛ける
- 錠は誰でも掛けられる(カチッと押すだけでよい)
- しかし開けられるのは、鍵を持つ私だけ
このとき、南京錠が公開鍵、鍵が秘密鍵です。南京錠は世界中にばらまいて構いません。南京錠を持っていても、それで開けることはできないからです。
共通鍵暗号は「同じ鍵で開け閉めする錠」でした。だから錠を使ってもらうには、鍵そのものを渡すしかなかった。公開鍵暗号は掛ける操作と開ける操作を別物にした。ここがすべての出発点です。
鍵の本数も変わります。n 人がいれば各自が1組ずつ持てばよいので 2n 本。100人なら 4,950本 → 200本です。しかも自分の秘密鍵は、誰にも渡しません。
3-3. そんな都合のいい計算が本当にあるのか ── 一方通行の計算
ここは疑うべきところです。「掛けたら開けられない」計算など、本当に存在するのか。
存在します。鍵になるのは行きは簡単だが、帰りが絶望的に難しい計算です。RSA という方式が使うのは、次の非対称性です。
- 2つの素数を掛けるのは一瞬
- その積を素因数分解するのは、桁が大きくなると手も足も出ない
RSA では、2つの素数 p, q から n = pq を作り、n と e の組を公開鍵、d を秘密鍵にします。暗号化は c = me を n で割った余り、復号は m = cd を n で割った余り。e を知っていても d は出てきません。 d を作るには (p−1)(q−1) が必要で、それを知るには n を素因数分解しなければならないからです。
つまり「公開鍵から秘密鍵が逆算できない」という性質が、素因数分解の難しさに丸ごと預けられている。これが公開鍵暗号の正体です。安全性は数学的に証明されているのではなく、「今のところ誰も速く解けていない」という状態に乗っています。
3-4. 同じ仕組みで、なぜ署名ができるのか ── 逆向きに使う
ここが本講の山です。掛ける鍵と開ける鍵を、逆にして使ってみます。
私が自分の秘密鍵で文書を処理する。すると、それを元に戻せるのは私の公開鍵だけです。私の公開鍵は世界中にあるので、誰でも戻せます。
「誰でも戻せるなら意味がないのでは」と思うでしょう。逆です。署名の目的は隠すことではありません。「作れるのが1人だけ」であることを示すことです。
- 戻せた ⇒ その処理をしたのは、対になる秘密鍵を持つ本人しかいない(本人性)
- 戻した結果が文書と一致した ⇒ 途中で1文字も書き換えられていない(完全性)
日本の法律も、電子署名をこの2つで定義しています。電子署名及び認証業務に関する法律(平成十二年法律第百二号)第二条第1項が挙げる要件は次の2つです。
一 当該情報が当該措置を行った者の作成に係るものであることを示すためのものであること。
二 当該情報について改変が行われていないかどうかを確認することができるものであること。
電子署名及び認証業務に関する法律 第二条第1項(e-Gov法令検索)
一号が本人性、二号が完全性です。技術の話と法律の言葉が、きれいに一致しています。
図1 暗号と電子署名は、同じ2本の鍵を逆向きに使っているだけ
| 暗号(機密性) | 電子署名(本人性・完全性) | |
|---|---|---|
| 掛ける(作る) | 受信者の公開鍵 | 送信者の秘密鍵 |
| 開ける(戻す) | 受信者の秘密鍵 | 送信者の公開鍵 |
| できること | 受信者だけが読める | 誰でも読めるが、送信者だけが作れる |
| 効く脅威 | 盗聴対策 | 改ざん・なりすまし対策 |
情報Ⅱの教員研修用教材も、この2つを「盗聴対策に効果的」「改ざん対策に効果的」と、はっきり書き分けています(第4章 学習20 図表3)。同じ道具でも、守っているものが違うのです。
3-5. なぜ実際のHTTPSは公開鍵と共通鍵を併用するのか
公開鍵暗号は万能に見えます。ではなぜ共通鍵暗号が生き残っているのか。遅いからです。
CRYPTREC(デジタル庁・総務省・経済産業省による暗号技術の評価体制)の「暗号強度要件(アルゴリズム及び鍵長選択)に関する設定基準」は、「アルゴリズムの中には(特にRSAなどの公開鍵暗号では)必要以上に長い鍵長を使用すると処理効率などに悪影響が出る場合がある」と明記しています。動画やページ本文を丸ごとこの方式で暗号化するのは、現実的ではありません。
そこで役割を分けます。
- 鍵の受け渡しだけを公開鍵暗号で行う(盗聴されている経路でも、共通鍵を安全に共有できる)
- 本文はその共通鍵で暗号化する(速い)
これがハイブリッド方式です。前の講の弱点だった鍵配送問題が、ここで解決されます。
この設計は一次資料からも読めます。CRYPTREC暗号リストは、公開鍵暗号を「署名」「守秘」「鍵共有」の3用途に分けて掲載しています。「鍵共有」という用途が独立して立っていること自体が、公開鍵暗号が本文の暗号化ではなく鍵のやり取りに使われている証拠です。文部科学省の情報Ⅱ教員研修用教材も、SSL/TLS をこう定義しています。
SSLは,共通鍵暗号方式の利点と,公開鍵暗号方式の利点の双方を生かすような暗号方式である。SSLの仕組みは,TLSに引き継がれている。
文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第4章 学習20 図表3
HTTPSが何を守り、何を守らないのかは第74講「Webの仕組み(HTTP・HTTPS)」で詳しく書きました。本講はその3つを支えている暗号の側の話です。
3-6. それでも残る穴 ── 公開鍵が本物である保証は、どこにもない
最後の穴です。公開鍵は、それが誰のものかを自分で名乗れません。
私が「これは佐藤さんの公開鍵です」と言って自分の公開鍵を配ったら、あなたは佐藤さん宛の秘密を私宛に暗号化してしまいます。公開鍵はただの数値であって、そこに持ち主の名前は書けません。書いたところで、その名前ごと偽物にできます。
だから、「この公開鍵は確かにこの相手のものだ」と第三者が保証する必要があります。その保証書が電子証明書、保証する第三者が認証局(CA)です。認証局は相手の本人確認をしたうえで、「この公開鍵はこの人のものだ」という内容の文書に自分の秘密鍵で署名します。3-4 で作った道具が、そのまま使われるわけです。
ここも法律に定義があります。電子署名法 第二条第2項の「認証業務」は、「当該利用者が電子署名を行ったものであることを確認するために用いられる事項が当該利用者に係るものであることを証明する業務」。「確認に用いられる事項」=検証に使う公開鍵であり、それがその人のものであることを証明する業務、と読めます。
では「認証局の公開鍵が本物だ」は、誰が保証するのか。ここは循環します。断ち切るために、ルート証明書をブラウザやOSが最初から内蔵しています。IPAの基本情報技術者試験シラバス Ver.9.2 は、これを「トラストアンカー(信頼の基点)」と呼んでいます。信頼はどこかで「最初から信じることにする」と決め打ちするしかない。それが正直な設計です。
図2 信頼の連鎖。どこかで「最初から信じる」と決め打ちしないと成立しない
ここまで来ると、第74講で書いた「鍵マークがあっても詐欺サイトはありうる」の意味が完成します。サーバ証明書が保証しているのは「このサーバは確かにそのホスト名の持ち主だ」ということだけで、運営者が誠実かどうかは一言も証明していないからです。詐欺師にとっても「そのホスト名の持ち主である」ことは真実なので、詐欺サイトも正当に証明書を取れます。
4. 手で確かめる ── 小さな素数でRSAを作る
4-1. 鍵ペアを作る
p = 3, q = 11 とします。
- n = p × q = 33
- (p−1)(q−1) = 2 × 10 = 20
- 20 と互いに素な e を選ぶ → e = 3
- e × d を 20 で割った余りが 1 になる d を探す → 3 × 7 = 21 = 20 + 1 → d = 7
公開鍵 (n, e) = (33, 3) ← 配ってよい。秘密鍵 (n, d) = (33, 7) ← 絶対に渡さない。
4-2. 暗号化と復号を手で追う
暗号化:平文 m = 5 を、公開鍵 e = 3 で処理します。
53 = 125 = 33 × 3 + 26 → 暗号文 c = 26
復号:267 を 33 で割った余りを、順に計算します。
| k | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 26k を 33 で割った余り | 26 | 16 | 20 | 25 | 23 | 4 | 5 |
元の 5 に戻りました。途中の 16 や 25 は元の数と何の関係もないのに、7回目でぴたりと戻る。この「戻る」ことが、e と d が対になっているという意味です。
4-3. 同じ鍵ペアで署名と検証を追う
今度は逆向きです。文書 m = 7 を、秘密鍵 d = 7 で処理します。
| k | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 7k を 33 で割った余り | 7 | 16 | 13 | 25 | 10 | 4 | 28 |
署名 s = 28 ができました。検証は、これを公開鍵 e = 3 で処理するだけです。
283 = 21952 = 33 × 665 + 7 → 7(文書と一致)
署名だけ書き換えても通りません。s を 27 にすると検証結果は 15、29 にすると 2 になり、文書の 7 とは一致しません。「文書に合う署名」を作れるのは、d を知っている本人だけです。
ここまでの数値は、すべて Python で独立に検算しています。m = 0 から 32 までの全通りで、暗号化 → 復号も、署名 → 検証も元に戻ることを確認しました。
>>> n, e, d = 33, 3, 7
>>> pow(5, e, n) # 暗号化
26
>>> pow(26, d, n) # 復号
5
>>> pow(7, d, n) # 署名
28
>>> pow(28, e, n) # 検証
7
>>> all(pow(pow(m, e, n), d, n) == m for m in range(n))
True
4-4. この例は、暗号としてはまったく使い物にならない
33 は誰でも 3 × 11 に分解できます。分解できれば (p−1)(q−1) = 20 が求まり、公開されている e = 3 から d = 7 が出てしまいます。秘密鍵が丸見えです。
つまりこの例が示しているのは仕組みだけで、安全性はゼロ。安全性は「n が分解できないこと」だけに乗っています。
4-5. 掛け算と素因数分解の非対称性を、実測する
素数の大きさを変えながら、掛け算の時間と、試し割りで分解する時間を測りました。次のコードは実際に実行したものです。
import time, random
def is_prime(x):
if x < 2: return False
for p in [2,3,5,7,11,13,17,19,23,29,31,37]:
if x % p == 0: return x == p
d, r = x-1, 0
while d % 2 == 0: d //= 2; r += 1
for a in [2,3,5,7,11,13,17,19,23,29,31,37]:
y = pow(a, d, x)
if y in (1, x-1): continue
for _ in range(r-1):
y = y*y % x
if y == x-1: break
else: return False
return True
def randprime(bits):
while True:
c = random.getrandbits(bits) | (1 << (bits-1)) | 1
if is_prime(c): return c
random.seed(17)
for bits in [12, 16, 20, 24, 28]:
p, q = randprime(bits), randprime(bits)
t0 = time.perf_counter(); n = p*q; t1 = time.perf_counter()
t2 = time.perf_counter()
i = 3
while i*i <= n:
if n % i == 0: break
i += 2
t3 = time.perf_counter()
print(bits, len(str(n)), t1-t0, t3-t2)
| p のビット数 | n の桁数 | 掛け算 | 試し割りで分解 |
|---|---|---|---|
| 12 | 7桁 | 0.0000002秒 | 0.0001秒 |
| 16 | 10桁 | 0.0000002秒 | 0.0023秒 |
| 20 | 12桁 | 0.0000001秒 | 0.054秒 |
| 24 | 15桁 | 0.0000001秒 | 0.53秒 |
| 28 | 17桁 | 0.0000001秒 | 12.5秒 |
筆者環境(macOS・Python 3.9.6)で2026年8月3日に実測。時間は環境で変わりますが、増え方の形は変わりません。
掛け算の時間はほとんど変わらないのに、分解は素数を4ビット伸ばすたびにおよそ10倍になっています。この「行きと帰りの差」が、そのまま暗号の強さです。
4-6. 実運用の鍵長とは、桁が違うどころではない
n = 33 は6ビットです。実運用はまるで別世界にあります。
CRYPTREC の「暗号強度要件(アルゴリズム及び鍵長選択)に関する設定基準」表2は、RSA は鍵長2048ビットで112ビットセキュリティ、3072ビットで128ビットセキュリティと推定しています。ここでいう「x ビットセキュリティ」とは、同文書の定義によれば解読に 2x 程度の計算量が必要という意味です。
さらに同文書の表8では、112ビットセキュリティは2022〜2030年が移行完遂期間とされ、2031年以降は新規の署名生成に「利用不可」と定められています。実際、政府システムでは SHA-1・RSA-1024 から SHA-2・RSA-2048 への移行が行われ、その移行に5〜10年単位の時間がかかったとも記されています。
ですから「2048ビット以上ならOK」と丸暗記するのではなく、暗号の強度は時間とともに目減りする(危殆化する)と理解してください。
5. 共通テストではこう出る(重要度 S)
出題の型
最頻出は鍵の向きを問う型です。「誰の、どちらの鍵を使うか」を選ばせる、あるいは通信の手順を並べ替えさせる。用語の意味だけ覚えていると、ここで確実に迷います。
学習指導要領解説 情報編の情報Ⅰ(4)ア(ア)は、こう書いています。
個人認証や情報の暗号化,通信されるデータを暗号化するプロトコル,デジタル署名やデジタル証明書などの情報セキュリティを確保するために開発された技術の仕組みと必要性などについて理解するようにする。
文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月
「仕組み」まで求められている以上、名前の暗記では足りません。
向きを間違えないための、原理からの覚え方
語呂で覚えさせません。目的から一意に決まります。
- 「1人だけが読める」ようにしたい(=機密性)→ その1人しか持っていない鍵でしか開かないようにする → 受信者の公開鍵で暗号化
- 「1人だけが作れる」ことを示したい(=本人性)→ その1人しか持っていない鍵でしか作れないようにする → 送信者の秘密鍵で署名
言い換えると、秘密鍵は必ず本人の手元でだけ使われる。読むのが本人なら本人の秘密鍵、作るのが本人なら本人の秘密鍵。相手にやってほしい側の操作に使う鍵が、公開鍵です。この1行を握っていれば、4択で迷いません。
引っかけの急所
- 「公開鍵暗号のほうが安全だから共通鍵暗号は不要」→ 誤り。 併用されている理由は速度と役割分担です。
- 「電子署名をすれば中身が他人に読まれない」→ 誤り。 検証に使うのは公開鍵なので、誰でも戻せます。秘密にしたいなら別に暗号化が要ります。
- 「認証局がデータを暗号化してくれる」→ 誤り。 認証局がするのは、公開鍵と持ち主の対応を保証することだけです。
- 「鍵マークが出ていれば安全なサイト」→ 誤り。 証明書が保証するのは、ホスト名の持ち主であることだけです。
- 「秘密鍵は認証局に預ける」→ 誤り。 秘密鍵を渡した時点で、本人性の根拠が崩れます。
私が作った類題
山田さんが佐藤さんに、他人に読まれたくない文書を送る。暗号化に使う鍵はどれか。
① 山田さんの公開鍵 ② 山田さんの秘密鍵 ③ 佐藤さんの公開鍵 ④ 佐藤さんの秘密鍵
答 ③。読めるのを佐藤さん1人にしたいので、佐藤さんの秘密鍵でしか開かない状態にします。
山田さんが、自分が書いたと証明できる形で文書を公開する。署名の作成と検証に使う鍵の組合せはどれか。
① 作成=山田さんの秘密鍵/検証=山田さんの公開鍵
② 作成=山田さんの公開鍵/検証=山田さんの秘密鍵
③ 作成=認証局の秘密鍵/検証=山田さんの公開鍵
④ 作成=山田さんの秘密鍵/検証=認証局の公開鍵
答 ①。作れるのが山田さん1人であることを示したいので、作成は本人の秘密鍵。検証は誰でもできるべきなので公開鍵です。
HTTPSが公開鍵暗号と共通鍵暗号を併用する理由として最も適切なものはどれか。
① 公開鍵暗号は解読されやすいから
② 公開鍵暗号は処理が重く本文全体には向かないため、共通鍵の受け渡しに用途を絞るから
③ 共通鍵暗号のほうが鍵の本数が少なくて済むから
④ 法律で併用が義務づけられているから
答 ②。③は逆です。鍵の本数が少なくて済むのは公開鍵暗号のほうです。
なお、大学入試センターが公表した「令和7年度大学入学共通テスト 試作問題『情報』の概要」の段階では、セキュリティ分野の題材は無線LANの暗号化キー、ブルートフォース攻撃、情報セキュリティの三要素であり、公開鍵暗号そのものは題材になっていません。しかし出題範囲は学習指導要領であり、そこにデジタル署名とデジタル証明書は明記されています。「まだ出ていないから出ない」とは考えないでください。
6. 情報Ⅱではこうなる
6-1. 語数調査 ── 情報Ⅰの本文には「公開鍵」が1回も無い
同じ語が、①学習指導要領解説 情報編 ②情報Ⅰ教員研修用教材(全4章) ③情報Ⅱ教員研修用教材(全章)で何回出てくるかを、全文検索で数えました(2026年8月3日実施)。
| 語 | 解説 | 情報Ⅰ教材 | 情報Ⅱ教材 |
|---|---|---|---|
| 公開鍵 | 0 | 0 | 5 |
| 秘密鍵 | 0 | 0 | 3 |
| 共通鍵 | 0 | 1 | 2 |
| デジタル署名 | 1 | 1 | 2 |
| 認証局 | 0 | 0 | 0 |
| 電子証明書 | 0 | 0 | 0 |
| SSL | 0 | 0 | 4 |
| TLS | 0 | 0 | 3 |
| RSA | 0 | 0 | 1 |
| 暗号 | 10 | 41 | 47 |
この表の読み方は3つあります。
(1) 情報Ⅰ教員研修用教材に「公開鍵」「秘密鍵」は1回も出てこない。 情報Ⅰ教材の「暗号」41回のうち35回は第4章にありますが、中身はすべて無線LANの暗号化方式(WEP/WPA/WPA2/WPA3、AES)を設定・運用する話です。仕組みの説明ではありません。「デジタル署名」の1回も、章冒頭の学習内容一覧に語が並んでいるだけです。
(2) しかし学習指導要領解説は名指ししている。 5節で引いたとおり、情報Ⅰ(4)ア(ア)に「デジタル署名やデジタル証明書などの…技術の仕組みと必要性」とあります。つまり「教えろと書いてあるのに、国が作った教員向け教材の本文に説明が無い」という状態です。これは本書が集めている「情報Ⅰ本文の空白」の典型例で、しかも落差が最も大きいものの一つです。
(3) 「認証局」「電子証明書」は情報Ⅰにも情報Ⅱにも0回。 ではどこにあるのか。IPAの基本情報技術者試験シラバス Ver.9.2 です。「⑤公開鍵基盤」の用語例に、PKI、デジタル証明書(公開鍵証明書)、ルート証明書、トラストアンカー(信頼の基点)、中間CA証明書、サーバ証明書、CRL(証明書失効リスト)、OCSP、CA(認証局)が並びます。「①暗号技術」の用語例には RSA暗号・ハイブリッド暗号・危殆化、「②認証技術」にはデジタル署名(署名鍵,検証鍵)。この「署名鍵/検証鍵」という呼び分けこそ、3-4 で見た向きをそのまま名前にしたものです。
6-2. 情報Ⅱでは「暗号方式の表」になり、設計の選択肢に変わる
情報Ⅱ教員研修用教材 第4章 学習20「情報システムの情報セキュリティ」の図表3「データの暗号化の仕組みの例」で、はじめて表になります。原文はこうです。
共通鍵暗号方式:暗号化の鍵も復号の鍵も同じ鍵を使用する暗号方式。鍵を盗まれないように大切に管理する必要がある。代表的な方式にAESなどがある。盗聴対策に効果的である。
公開鍵暗号方式:暗号化する公開鍵と復号する秘密鍵の2種類の鍵を使用した暗号方式。公開鍵だけを広く公開し,秘密鍵は公開しないので情報を安全にやり取りできる。不特定多数の人と情報をやり取りすることに向いており,代表的な方式にRSAや楕円曲線暗号がある。盗聴対策に効果的である。
デジタル署名:送信者の秘密鍵で電子文書の署名データを生成し,送信者の公開鍵で署名データの作成者が電子文書の送信者と同一であることを検証する仕組み。改ざん対策に効果的である。
文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第4章 学習20 図表3
情報Ⅰとの決定的な差は、最後の「〜対策に効果的である」という列です。情報Ⅰでは、暗号は「守ってもらうもの」でした。情報Ⅱでは、脅威(盗聴・改ざん)を先に挙げ、それに効く道具を選ぶという順序になります。5節で書いた「目的から鍵の向きが決まる」という考え方が、そのまま設計作業になるわけです。
6-3. 「自分のシステムのテスト項目」に変わる
同じ第4章の学習24「分割したシステムの結合とテスト」の3節「セキュリティテスト」は、こう締めくくっています。「通信方式が平文で暗号化されていない場合は盗聴や改ざんの可能性が考えられる。重要な通信をする場合は,SSL/TLSなどのプロトコルを利用して通信経路での暗号化を行う必要があるだろう」。
情報Ⅰが「HTTPSのサイトを使いましょう」なら、情報Ⅱは「自分が作ったシステムがHTTPSになっているかを、テスト項目として検証しなさい」です。使う側から作る側へ。第74講と同じ移動が、暗号でも起きます。
6-4. 発展 ── 素因数分解の難しさは、永久には続かない
3-3 で見たとおり、RSAの安全性は素因数分解の難しさに丸ごと預けられています。ということは、分解が簡単になれば一斉に崩れます。
CRYPTREC は同じ文書で警告しています。「大規模な量子コンピュータが利用可能になった場合、Shorのアルゴリズムにより多項式時間で素因数分解問題や(楕円)離散対数問題が解けることが知られており、とりわけCRYPTREC暗号リストの公開鍵暗号(守秘、署名、鍵共有)に掲載されている全てのアルゴリズムにとって理論的には大きな脅威になっている」。同時に、2021年3月時点の調査として「現状の量子コンピュータでは暗号で用いるほど大きなパラメータの合成数を素因数分解することは困難」とも書いています(この文書の評価時点は2022年6月。本記事は2026年8月時点で書いています)。
なお同じ文書は、共通鍵暗号については「おおむね鍵長の半分程度のセキュリティ強度に低下するが、公開鍵暗号ほど大きな影響は受けない」としています。量子計算機が効くのは、まさに「一方通行の計算」に乗っている公開鍵暗号のほうだ、という点まで理解できると、3-3 の議論が生きてきます。
まとめ
- 公開鍵暗号は「片方で掛けたものは、対になるもう片方でしか開かない」。だから掛ける側の鍵は公開してよい。
- その非対称性は、素因数分解の難しさ(行きは簡単・帰りは絶望的)に乗っている。数学的な証明ではなく「今のところ誰も速く解けていない」という状態に乗っている。
- 掛ける鍵と開ける鍵を逆に使えば署名になる。暗号=機密性、署名=本人性・完全性。同じ道具の裏表。
- 向きは目的から決まる。「1人だけが読める」なら受信者の公開鍵、「1人だけが作れる」なら送信者の秘密鍵。
- 公開鍵暗号は遅い。だから鍵の受け渡しだけ公開鍵で行い、本文は共通鍵で暗号化する(ハイブリッド)。
- 公開鍵が本物である保証は、公開鍵自身には無い。だから電子証明書と認証局が要る。信頼はルート証明書で打ち止めにする。
- 情報Ⅰ教員研修用教材に「公開鍵」は0回。解説は名指ししているのに本文が無い。認証局・電子証明書はIPAのシラバス側にある。
出典(すべて2026年8月3日に取得)
- 文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」平成30年7月
- 文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第4章 情報通信ネットワークとデータの活用
- 文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第4章 情報システムとプログラミング(令和2年6月)
- CRYPTREC「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)」LS-0001-2022R1、令和5年3月30日(最終更新 令和6年5月16日)デジタル庁・総務省・経済産業省
- CRYPTREC「暗号強度要件(アルゴリズム及び鍵長選択)に関する設定基準」LS-0003-2022r1
- 情報処理推進機構(IPA)「基本情報技術者試験(レベル2)シラバス Ver.9.2」
- 電子署名及び認証業務に関する法律(平成十二年法律第百二号、平成12年5月31日公布)e-Gov法令検索
- 大学入試センター「令和7年度大学入学共通テスト 試作問題『情報』の概要」(令和4年11月9日公表)
この講の前提になる論理の話は第43講「論理演算」、鍵長の「ビット」がそもそも何なのかは第40講「2進数・10進数・16進数の変換」に書きました。『最強120講義』の全体像は情報Ⅰ 最強120講義(総目次)から、公開済みの講はカテゴリ一覧から追えます。
執筆:藤原進之介(数強塾グループ代表)
オンライン数学専門塾「数強塾」代表。累計3,500名以上の中高一貫校生を指導。東進ハイスクール・東進衛星予備校・代々木ゼミナールなど出講実績あり。情報Ⅰの参考書を複数執筆しており、KADOKAWA『ゼロから始める情報I』、Gakken『きめる!共通テスト 情報Ⅰ』などがあります。本記事は参考書『藤原進之介の最強120講義』第17講のWeb版です。
「情報Ⅰ、独学でいけるのか不安」という方へ
数強塾では数学と情報Ⅰの両方に対応したオンライン個別指導を行っています。学習相談は無料、体験授業は3,000円(税込)でお受けしています。
