数強塾代表の藤原進之介です。『藤原進之介の最強120講義』第16講は「共通鍵暗号」。共通テスト重要度は最高の S です。この講で扱うのは、たった一つの問いです。暗号の強さは「やり方を秘密にすること」から来るのか、それとも「鍵を秘密にすること」から来るのか。答えは後者で、しかもその理由は国が公表している暗号リストを1枚見れば確かめられます。シリーズ「情報Ⅰ 最強120講義」の全講一覧はこちら。
1. この講の問い
暗号の強さは、どこから来るのでしょうか。「やり方(方式)を誰にも教えないこと」でしょうか、それとも「鍵を誰にも教えないこと」でしょうか。
2. 結論
暗号の強さは、方式を秘密にすることではなく、鍵を秘密にすることから来ます。方式は公開されていて構いません。むしろ公開して世界中の研究者に叩かせたほうが強くなります。
そのうえで鍵に要求されるのは2つ。候補が総当たりでは尽くせないほど多いことと、暗号文に平文の統計的な偏りを残さないこと。シーザー暗号はこの両方で失格します。
そして共通鍵暗号には原理から来る弱点が2つあります。その鍵をどうやって相手に渡すのか(鍵配送問題)と、n人が互いに通信するには n(n−1)/2 本の鍵が要ることです。
3. なぜそうなるのか
3-1 まず用語を固定する
文部科学省の「情報Ⅱ」教員研修用教材 第4章 学習20 が、暗号化をこう定義しています。
暗号化とは、元のデータのビット列を、容易にその内容が分からない別のビット列に変換する技術のことである。逆に復号とは、暗号化されたデータを元のデータに戻すことである。
出典:文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第4章(PDF)/令和2年6月/2026年8月3日取得
ここで注目してほしいのは、定義が「ビット列を別のビット列に変える」になっていることです。文字を別の文字に置き換える話ではありません。だから文章でも画像でも音声でも、デジタル化されてビット列になってさえいれば、同じ道具で暗号化できます。第40講(基数変換)で見た「すべてが0と1の並びになる」という性質が、ここでも効いてくるわけです。
用語を整理します。平文(暗号化する前のデータ)→ 暗号化 → 暗号文 → 復号 → 平文。試験で書くときは「復号化」ではなく「復号」です。そして共通鍵暗号方式とは、同じ教材の図表3 の定義によれば「暗号化の鍵も復号の鍵も同じ鍵を使用する暗号方式」のことです。
3-2 強さは「方式の秘密」ではなく「鍵の秘密」から来る
生徒からときどき「自分だけの秘密の暗号を考えた」という話を聞きます。気持ちは分かるのですが、素人が考えた秘密の方式は、ほぼ確実に弱い。理由は3つです。
- 秘密の方式は、誰にも検証されていない。 弱点が「無い」のではなく「まだ誰も探していない」だけです。
- 方式はいずれ漏れる。 ソフトウェアなら解析され、機械なら分解されます。方式が漏れた瞬間に全部読まれるなら、それは暗号ではありません。
- 方式が漏れたとき取り替えられない。 鍵なら替えれば済みますが、方式を替えるにはシステムを作り直すことになります。
だから暗号の世界には「方式は公開してよい。秘密にするのは鍵だけ」という原則があります。オランダの暗号研究者アウグスト・ケルクホフスが1883年に発表した論文で述べた原則として知られ、ケルクホフスの原理と呼ばれます。
この原則が本当に運用されていることは、日本の一次資料で確かめられます。デジタル庁・総務省・経済産業省が公表している「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)」は、国が推奨する暗号技術の名前をすべて公開しています。共通鍵暗号の欄はこうなっています。
| 技術分類 | 暗号技術 |
|---|---|
| 64ビットブロック暗号 | 該当なし |
| 128ビットブロック暗号 | AES / Camellia |
| ストリーム暗号 | KCipher-2 |
出典:デジタル庁・総務省・経済産業省「電子政府における調達のために参照すべき暗号のリスト(CRYPTREC暗号リスト)」CRYPTREC LS-0001-2022R2(令和5年3月30日/最終更新 令和8年3月30日)(CRYPTREC 公式ページ)/2026年8月3日取得
方式を隠すどころか、名前もアルゴリズムも公開されています。CRYPTREC は「公募された暗号技術及び業界で広く利用されている暗号技術」を評価対象とし、評価の過程と結果を公開しているプロジェクトです(2000年度に活動を開始し、2003年2月20日に電子政府推奨暗号リストを公表)。公募して、世界中に叩かせて、生き残ったものだけを推奨する。これがケルクホフスの原理の実装です。
出典:CRYPTREC「CRYPTRECとは」(公式ページ)/2026年8月3日取得
そして決定的なのが、同じリストの次の一文です。
なお、利用する鍵長について、「暗号強度要件(アルゴリズム及び鍵長選択)に関する設定基準」の規定に合致しない鍵長を用いた場合には、電子政府推奨暗号リストの暗号技術を利用しているとは見なされないことに留意すること。
アルゴリズムが AES であっても、鍵の長さが足りなければ「推奨暗号を使っている」とは認めない。安全性の所在が方式ではなく鍵にあることを、国の文書がはっきり書いているわけです。ここが本講の芯です。
3-3 シーザー暗号がなぜ簡単に破られるのか
シーザー暗号は、アルファベットを決まった数だけずらす暗号です。3ずらすなら A→D、B→E、…、Z→C。鍵は「いくつずらすか」という数ひとつです。
これが破られる理由は2つあります。そしてこの順番が大事です。
理由その1:鍵が26通りしかない。 ずらす数は0〜25の26通り。0は何も変えないので実質25通りです。全部試して意味の通る文を探せば終わり。これを総当たり攻撃(ブルートフォース攻撃)といいます。26通りなら紙に書き出しても数分で終わります。
ここから第1の要件が出ます。鍵の候補の総数(鍵空間)が、総当たりでは尽くせないほど大きいこと。
理由その2:文字の出現頻度が保存される。 こちらが本質です。シーザー暗号は全部の文字を同じ数だけずらします。ということは、平文で13回出た文字は、暗号文でも必ず13回出ます。頻度の分布は形をまったく変えず、位置だけが横にずれる。英文でいちばん多い文字が E なら、暗号文でいちばん多い文字は「E をずらしたもの」です。つまり暗号文の頻度上位を数えるだけで、鍵が分かってしまう。これを頻度分析といいます。
ここから第2の要件が出ます。暗号文に、平文の統計的な偏りを残さないこと。
3-4 鍵空間を大きくするだけでは足りない
「では鍵空間を増やせばいいのか」と考えて、26文字それぞれの行き先を自由に決める暗号(単換字暗号)を作ったとしましょう。鍵の総数は 26 の階乗です。
26! = 403,291,461,126,605,635,584,000,000 通り。約 4.03×1026、おおよそ 2 の 88.4 乗。
これは総当たりでは絶対に破れません。にもかかわらず、単換字暗号は紙と鉛筆で破れます。頻度分析が効くからです。文字の対応をどうひねっても「E が一番多い」という偏りは、形を変えて残り続けます。
鍵空間の大きさは必要条件であって、十分条件ではない。2つの要件は独立していて、両方満たさなければ暗号にならない。ここを取り違えると「桁数を増やせば安全」という誤解に直行します。
3-5 XOR が暗号の基本演算である理由
第43講(論理演算)で扱った排他的論理和 XOR を思い出してください。「どちらか一方だけが1のとき1」でしたね。ここに、もう一度 b を XOR してみます。
| a | b | a XOR b | (a XOR b) XOR b |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 |
1列目と4列目が、4行すべてで一致しました。 つまり (a XOR b) XOR b = a。同じ値をもう一度 XOR すると元に戻るのです。入力の組は4通りしかないので、これで証明は終わりです。
この性質が暗号にとってどれほど都合がよいか、並べてみてください。
- 暗号化:平文 XOR 鍵 = 暗号文
- 復号:暗号文 XOR 鍵 = 平文
暗号化と復号が、まったく同じ操作になります。 逆向きの手続きを別に用意する必要がない。プログラムも回路も1種類で済みます。しかも XOR は1ビットずつ独立に計算できるので、CPU の1命令で何十ビットもまとめて処理できる。速いのです。
そして重要なのは、この性質そのものが「暗号化の鍵と復号の鍵が同じ」=共通鍵暗号の定義になっていることです。XOR は共通鍵暗号のいちばん素朴な姿だと言えます。実際、AES のような現代の共通鍵暗号も、内部で鍵と XOR を取る操作を何度も繰り返す構造をしています。
なお AND や OR ではこうなりません。a AND b をもう一度 b と AND しても a には戻らないからです。0 と AND した瞬間に元の値が消えてしまう。元に戻せる=情報を失わない演算が XOR だった、というのが理由です。
3-6 落とし穴:同じ鍵を使い回すと、平文どうしが露出する
ただし XOR をそのまま使うのは危険です。同じ鍵で2つの平文を暗号化してしまうと、次のことが起きます。
- 暗号文1 = 平文1 XOR 鍵
- 暗号文2 = 平文2 XOR 鍵
この2つを XOR すると、鍵が2回かかることになるので消えます。
暗号文1 XOR 暗号文2 = (平文1 XOR 鍵) XOR (平文2 XOR 鍵) = 平文1 XOR 平文2
攻撃者は鍵を知らないまま「2つの平文の XOR」を手に入れます。片方の平文の一部でも推測できれば、そこからもう片方が丸ごと出てきます。4-4 で実演します。
だから現代の暗号は、同じ鍵を使うときも毎回違う初期値を混ぜ、同じ平文が同じ暗号文にならないようにしています。CRYPTREC暗号リストが「暗号利用モード」(CBC・CTR・GCM など)を暗号技術と並べて掲載しているのは、このためです。鍵と方式が正しくても、使い方を間違えれば破れる。
3-7 決定的な弱点その1:鍵配送問題
共通鍵暗号の最大の問題は、暗号の中身ではなくその手前にあります。
送り手と受け手が同じ鍵を持っていなければ、共通鍵暗号は使えません。では、その鍵をどうやって相手に渡すのでしょうか。
- インターネットで送る → 盗聴される。鍵が盗まれたら暗号の意味がない
- 鍵を暗号化して送る → その暗号の鍵をどうやって渡すのか。同じ問題が1段深いところに移っただけ
- 直接会って手渡す → 地球の裏側の相手とは会えない
鍵を安全に渡せるのなら、そもそもメッセージ自体を安全に渡せるはずです。 堂々巡りになる。これを鍵配送問題といいます。
情報Ⅰの教員研修用教材も、無線LANの文脈でこの構造を書いています。
共通鍵暗号ならば、暗号化、復号の両方で同じキーを使うので、この方式を使う無線 LAN は、キーがわかってしまえば、安全な通信はできないことになる。
出典:文部科学省「高等学校情報科『情報Ⅰ』教員研修用教材」第4章(PDF)/2026年8月3日取得
飲食店で Wi-Fi のパスワードが壁に貼り出されているのは、まさに「鍵を安全に配れないので、諦めて全員に見せている」状態です。あの貼り紙を見た人は全員、その店の無線通信を復号できる立場に立ちます。公衆無線LANが危ないと言われる理由の中核はここで、「知らない人が使っているから怖い」という気分の話ではありません。
3-8 決定的な弱点その2:鍵の本数が人数の2乗で増える
もうひとつ、規模の問題があります。
共通鍵暗号では、通信する2人ごとに専用の鍵が1本要ります。A さんと B さんの鍵を C さんにも配ってしまったら、C さんは AB 間の通信を読めてしまうからです。
ということは、n 人が互いに秘密で通信できるようにするには、2人の組の数だけ鍵が要ります。これは第56講の交換ソートの比較回数とまったく同じ組み合わせの数で、
n(n−1)/2 本
です。n=10 なら45本。n=100 なら4,950本。n=1,000 なら499,500本。人数が10倍になると、鍵は約100倍に増えます。さらに1人あたりが管理する鍵は n−1 本なので、1,000人の組織なら1人が999本の鍵を安全に保管しなければなりません。
共通鍵暗号だけでは、不特定多数と通信する仕組みは作れません。 これが第17講(公開鍵暗号)が生まれた理由そのものです。
4. 手で確かめる
ここから先は、私が実際に手元の Python 3 で実行し、出力を確認したものだけを載せます(2026年8月3日実行)。数値はすべて独立に検算しました。
4-1 シーザー暗号では頻度が保存される(実測)
共通テストの問題文は転載できませんので、例文は私が自分で書いた英文を使います。
from collections import Counter
plain = ("MEET ME AT THE SCHOOL GATE AT THREE IN THE AFTERNOON "
"AND BRING THE NOTEBOOK THAT YOU BORROWED FROM ME")
def caesar(text, k):
out = []
for ch in text:
if "A" <= ch <= "Z":
out.append(chr((ord(ch) - 65 + k) % 26 + 65))
else:
out.append(ch)
return "".join(out)
cipher = caesar(plain, 3)
print("暗号文:", cipher)
print("平文 の頻度上位5:", Counter(c for c in plain if c.isalpha()).most_common(5))
print("暗号文の頻度上位5:", Counter(c for c in cipher if c.isalpha()).most_common(5))
実行結果です。
暗号文: PHHW PH DW WKH VFKRRO JDWH DW WKUHH LQ WKH DIWHUQRRQ DQG
EULQJ WKH QRWHERRN WKDW BRX ERUURZHG IURP PH
平文 の頻度上位5: [('E', 13), ('T', 12), ('O', 11), ('A', 6), ('H', 6)]
暗号文の頻度上位5: [('H', 13), ('W', 12), ('R', 11), ('D', 6), ('K', 6)]
見てください。13回・12回・11回・6回・6回という数字の並びが、完全に一致しています。そして文字のほうは E→H、T→W、O→R、A→D、H→K。すべてちょうど3つ後ろにずれています。
度数を降順に並べたものも、両方まったく同じでした。
平文の度数を降順に並べたもの : [13, 12, 11, 6, 6, 6, 6, 4, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1]
暗号文の度数を降順に並べたもの: [13, 12, 11, 6, 6, 6, 6, 4, 3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1]
度数の多重集合が一致するか: True
『Xの度数 == (X+3)の度数』が全26文字で成立するか: True
グラフにするとこうです。棒の形はそっくりそのまま、右に3つ平行移動しているだけだと分かります。
4-2 鍵空間の全体が、1画面に収まってしまう
頻度分析を使うまでもありません。26通りを全部並べれば終わりです。
for k in range(26):
print(f"鍵={k:2d} : {caesar(cipher, -k)[:34]}")
鍵= 0 : PHHW PH DW WKH VFKRRO JDWH DW WKUH
鍵= 1 : OGGV OG CV VJG UEJQQN ICVG CV VJTG
鍵= 2 : NFFU NF BU UIF TDIPPM HBUF BU UISF
鍵= 3 : MEET ME AT THE SCHOOL GATE AT THRE <<< 意味が通る
鍵= 4 : LDDS LD ZS SGD RBGNNK FZSD ZS SGQD
鍵= 5 : KCCR KC YR RFC QAFMMJ EYRC YR RFPC
鍵= 6 : JBBQ JB XQ QEB PZELLI DXQB XQ QEOB
鍵= 7 : IAAP IA WP PDA OYDKKH CWPA WP PDNA
鍵= 8 : HZZO HZ VO OCZ NXCJJG BVOZ VO OCMZ
鍵= 9 : GYYN GY UN NBY MWBIIF AUNY UN NBLY
鍵=10 : FXXM FX TM MAX LVAHHE ZTMX TM MAKX
鍵=11 : EWWL EW SL LZW KUZGGD YSLW SL LZJW
鍵=12 : DVVK DV RK KYV JTYFFC XRKV RK KYIV
鍵=13 : CUUJ CU QJ JXU ISXEEB WQJU QJ JXHU
鍵=14 : BTTI BT PI IWT HRWDDA VPIT PI IWGT
鍵=15 : ASSH AS OH HVS GQVCCZ UOHS OH HVFS
鍵=16 : ZRRG ZR NG GUR FPUBBY TNGR NG GUER
鍵=17 : YQQF YQ MF FTQ EOTAAX SMFQ MF FTDQ
鍵=18 : XPPE XP LE ESP DNSZZW RLEP LE ESCP
鍵=19 : WOOD WO KD DRO CMRYYV QKDO KD DRBO
鍵=20 : VNNC VN JC CQN BLQXXU PJCN JC CQAN
鍵=21 : UMMB UM IB BPM AKPWWT OIBM IB BPZM
鍵=22 : TLLA TL HA AOL ZJOVVS NHAL HA AOYL
鍵=23 : SKKZ SK GZ ZNK YINUUR MGZK GZ ZNXK
鍵=24 : RJJY RJ FY YMJ XHMTTQ LFYJ FY YMWJ
鍵=25 : QIIX QI EX XLI WGLSSP KEXI EX XLVI
鍵空間の全体が、画面1つに収まってしまいました。これがシーザー暗号の正体です。
4-3 鍵空間の大きさを比べる
| 暗号 | 鍵の総数 | おおよその大きさ |
|---|---|---|
| シーザー暗号 | 26 | 2 の 4.7 乗 |
| 単換字暗号(26!) | 403,291,461,126,605,635,584,000,000 | 約 4.03×1026=2 の 88.4 乗 |
| AES-128(2128) | 340,282,366,920,938,463,463,374,607,431,768,211,456 | 約 3.40×1038 |
AES-128 の鍵を総当たりするとどうなるか、仮定を置いて試算してみます。1秒に1兆(1012)個の鍵を試せる計算機を、10億(109)台並べたとしましょう。合計で毎秒1021個。それでも
3.403e+17 秒 = 約 1.078e+10 年
およそ108億年かかります。総当たりは選択肢に入りません。ただし、単換字暗号の 2 の 88.4 乗も総当たりでは破れないのに、紙と鉛筆で破れる。もう一度確認しておきます。鍵空間の大きさは必要条件にすぎません。
4-4 XOR は、まったく同じ操作で暗号化も復号もできる
def xor_bytes(data, k):
kb = k.encode()
return bytes(b ^ kb[i % len(kb)] for i, b in enumerate(data))
msg, key = "SUUGAKU", "KAGI"
enc = xor_bytes(msg.encode(), key)
dec = xor_bytes(enc, key) # まったく同じ関数をもう一度呼ぶだけ
print("暗号文 :", enc.hex().upper())
print("復号 :", dec.decode())
print("元に戻ったか:", dec.decode() == msg)
平文 : SUUGAKU -> 01010011 01010101 01010101 01000111 01000001 01001011 01010101
鍵 : KAGI
暗号文 : 00011000 00010100 00010010 00001110 00001010 00001010 00010010 (16進: 1814120E0A0A12)
復号 : SUUGAKU -> 01010011 01010101 01010101 01000111 01000001 01001011 01010101
元に戻ったか: True
暗号化と復号で、呼んでいる関数が同じであることを確認してください。 xor_bytes を2回通しただけです。これが「共通鍵」という言葉の意味を、いちばん短く表しています。
4-5 同じ鍵を使い回すと、鍵が消えて平文が出る(実演)
p1 = "ATTACK AT DAWN"
p2 = "RETREAT AT NOO"
k = "HIMITSUKAGI" # 2つとも同じ鍵で暗号化してしまう
c1, c2 = xor_bytes(p1.encode(), k), xor_bytes(p2.encode(), k)
x_cipher = bytes(a ^ b for a, b in zip(c1, c2)) # 暗号文どうしのXOR
x_plain = bytes(a ^ b for a, b in zip(p1.encode(), p2.encode())) # 平文どうしのXOR
print("一致するか:", x_cipher == x_plain)
print("復元した平文2:", bytes(a ^ b for a, b in zip(x_cipher, p1.encode())).decode())
暗号文1 : 091D19081718750A15670D091E03
暗号文2 : 1A0C191B1112016B001369060602
暗号文1 XOR 暗号文2 : 13110013060A74611574640F1801
平文1 XOR 平文2 : 13110013060A74611574640F1801
この2つが一致するか: True ← 鍵が完全に消えている
暗号文2つと平文1だけから復元した平文2: 'RETREAT AT NOO'
鍵 HIMITSUKAGI は一度も使わずに、平文2 が丸ごと復元されました。攻撃者に必要だったのは「2つの暗号文」と「片方の平文の見当」だけです。同じ鍵を使い回すことが、なぜ致命的なのかが分かると思います。
4-6 鍵の本数 n(n−1)/2 を数える
公式を信用せず、実際に組を数え上げて一致を確認しました(n=2〜100 で全一致)。
| 人数 n | 必要な鍵の本数 n(n−1)/2 | 1人が管理する鍵 n−1 |
|---|---|---|
| 2 | 1 | 1 |
| 3 | 3 | 2 |
| 5 | 10 | 4 |
| 10 | 45 | 9 |
| 100 | 4,950 | 99 |
| 1,000 | 499,500 | 999 |
100人から1,000人へ、人数が10倍になったとき、鍵の本数は 4,950 → 499,500 で約100.9倍になりました。n(n−1)/2 は n の2乗にほぼ比例するからです。全校生徒1,000人の学校で、全員が互いに秘密のやり取りをしようとした瞬間に、鍵は50万本になる。これを配って管理することは現実的に不可能です。
5. 共通テストではこう出る(重要度 S)
5-1 一次資料で確認できる出題実績
大学入試センターが公表した「令和7年度大学入学共通テスト 試作問題『情報』の概要」を見ると、『旧情報(仮)』の第4問(配点25点・必答)が、まるごと情報セキュリティの大問になっていました。各設問の概要には次のものが並びます(問題文そのものは大学入試センターの著作物ですので、公表資料に書かれた設問のねらいのみを引用します)。
- 問2「家庭などで利用される無線 LAN の機器に接続するために必要となる SSID や暗号化キーについて、具体的な例と関連付けて理解しているかを問う」
- 問5「無線 LAN のネットワーク一覧から読み取れることと…暗号化キーがない見知らぬネットワークに接続することで、どのような危険があるかについて考察できるかを問う」
- 問7「問題文からパスワードを不正に取得する手段の一つであるブルートフォース攻撃の説明を読み取った上で、情報セキュリティを考える上でパスワードの文字種類と長さから、具体的にどの程度の時間でパスワードが解析できるかについて考察できるかを問う」
- 問9「情報セキュリティの三つの要素について…自分たちができる身近な対応策を考察できるかを問う」
出典:独立行政法人大学入試センター「令和7年度大学入学共通テスト 試作問題『情報』の概要」(PDF)/2022年11月9日公表/2026年8月3日取得
問7が、この講そのものです。「文字種類と長さから解析時間を求める」とは、要するに鍵空間の大きさを計算して、総当たりの所要時間を出すということです。4-3 でやったことと同じ計算を、センターが設問にしている。「暗号の安全性は鍵空間で測る」という考え方が、出題のねらいとして一次資料に書かれているわけです。私がこの講の重要度を S にしているのは、このためです。
なお2026年度の本試験では、第1問の問1に「情報セキュリティに関する知識問題」(マーク数3)が置かれたと分析されています(河合塾「2026年度 大学入学共通テスト速報 情報Ⅰ」2026年8月3日取得。予備校の分析=二次情報です)。
5-2 出題される3つの型
| 型 | 計算の中身 | 注意点 |
|---|---|---|
| 鍵空間と総当たり時間を計算する型 | (文字種類)(長さ) ÷ 1秒あたりの試行回数 | 長さは指数の側に乗る。1文字増やすと文字種類の倍になる |
| 鍵の本数を計算する型 | n(n−1)/2 | n 本と答えない。1人あたりは n−1 本 |
| 暗号化・復号の手順を追う型 | XOR やずらしを1ステップずつ適用 | 同じ鍵を2回かけると戻る、を使うと検算できる |
5-3 引っかけはこの6つ
| 引っかけ | 正しい理解 |
|---|---|
| 「方式を秘密にすれば安全」 | 安全性は鍵から来る。方式は公開されている前提で考える |
| 文字数を1増やす効果を過小評価する | 文字種類が k なら、長さが1増えるごとに鍵空間は k 倍。増え方は指数的 |
| 「文字種類を増やす」と「長さを増やす」を同じ効き目と思う | 長さは指数の側に乗るので効きが強い |
| n人なら鍵は n 本と答える | n(n−1)/2 本。1人あたりは n−1 本 |
| 「復号化」と書く | 正しくは「復号」 |
| 共通鍵と公開鍵の役割を取り違える | 共通鍵は速いが鍵配送が難しい/公開鍵は鍵配送に強いが遅い |
6. 情報Ⅱではこうなる
6-1 語数調査:「鍵」は情報Ⅰ側の一次資料にほとんど存在しない
同じ語が①学習指導要領解説 情報編 ②情報Ⅰ教員研修用教材(第1〜4章)③情報Ⅱ教員研修用教材(第1〜4章)で何回出てくるかを、2026年8月3日に当方で全文検索して数えました。
| 語 | 学習指導要領解説 情報編 | 情報Ⅰ 教員研修用教材 | 情報Ⅱ 教員研修用教材 |
|---|---|---|---|
| セキュリティ | 218 | 49 | 110 |
| 暗号 | 10 | 40 | 46 |
| 鍵 | 4 | 2 | 17 |
| 共通鍵 | 0 | 1 | 2 |
| 公開鍵 | 0 | 0 | 5 |
| 秘密鍵 | 0 | 0 | 3 |
| 平文 | 0 | 0 | 3 |
この表から読み取れることが3つあります。
1つめ。学習指導要領解説の全文に「共通鍵」も「公開鍵」も1度も出てきません。 しかも「鍵」の4件は、すべて「深い学びの鍵となるのが見方・考え方である」という比喩で、暗号の鍵ではありませんでした。
2つめ。情報Ⅰ教員研修用教材で「共通鍵」はたった1回。 しかも第1章(情報社会の問題解決)ではなく第4章(情報通信ネットワーク)の、無線LANの暗号化方式を説明する途中に1行だけ出てきます。3-7 で引用したあの文です。「公開鍵」は0回。「平文」という語すら0回でした。
3つめ。共通鍵と公開鍵が並べて定義されるのは、情報Ⅱ教員研修用教材の第4章だけ。
つまり、暗号方式の中身は情報Ⅰの一次資料のどこにも書かれていません。文部科学省の「高等学校情報科の授業・研修用コンテンツ」にも、暗号を単独で扱う教材はありませんでした(2026年8月3日確認)。
にもかかわらず、学習指導要領解説の情報Ⅰ(4)ア(ア)はこう要求しています。
個人認証や情報の暗号化、通信されるデータを暗号化するプロトコル、デジタル署名やデジタル証明書などの情報セキュリティを確保するために開発された技術の仕組みと必要性などについて理解するようにする
出典:文部科学省「高等学校学習指導要領(平成30年告示)解説 情報編」(PDF)/平成30年7月/2026年8月3日取得
デジタル署名を「仕組み」から理解させよと書きながら、その土台になる鍵の話は教材側に無い。 教科書会社が各社の判断で補っている領域です。この空白こそが、第16講と第17講が存在する理由です。
6-2 情報Ⅱ(1)では、暗号が「導入の必修項目」に格上げされる
情報Ⅱの(1)「情報社会の進展と情報技術」について、学習指導要領解説の〔内容の取扱い〕はこう書いています。
(1)の内容については、この科目の導入として位置付けるものとする。アの(ア)については、情報セキュリティ及び情報に関する法規・制度についても触れるものとする。
さらにア(ア)の解説には「機密性・完全性・可用性などを確保する情報セキュリティ技術の必要性が増したこと、情報セキュリティに関連する法律が整備されていること」とあります。情報Ⅰでは(1)で3要素の名前を習い、実際の技術は(4)で扱う、という分業でした。情報Ⅱでは科目の入口に置かれるのです。
これを受けて「情報Ⅱ」教員研修用教材の第1章は、6つの学習のうち2番目をまるごと「情報セキュリティの必要性」に充てています。
| 学習 | 表題 |
|---|---|
| 学習1 | 情報社会の発達と社会や人への影響 |
| 学習2 | 情報セキュリティの必要性 |
| 学習3 | コミュニケーション手段の多様化 |
| 学習4 | コンテンツの創造と活用の意義 |
| 学習5 | 人に求められる資質・能力の変化 |
| 学習6 | 将来の情報技術と社会 |
そして学習2 の演習1 が、これです。
無線 LAN において暗号化を行う必要性と、どのような暗号方式を選ぶべきかを調べてまとめましょう。
出典:文部科学省「高等学校情報科『情報Ⅱ』教員研修用教材」第1章(PDF)/令和2年6月/2026年8月3日取得
「暗号方式を選ぶ」ことが課題になっている。 情報Ⅰでは「暗号化されているか確認しよう」でしたが、情報Ⅱでは選定が学習者の作業になります。選ぶためには、方式の違いと弱点を知っていなければなりません。本講で扱った「共通鍵は速いが鍵配送が難しい」は、その判断材料そのものです。
6-3 情報Ⅱ(4)では、方式が「表」になり、テスト項目になる
方式の中身が定義されるのは、情報Ⅱ教員研修用教材 第4章 学習20「情報システムの情報セキュリティ」の図表3「データの暗号化の仕組みの例」です。ここで初めて、共通鍵暗号方式・公開鍵暗号方式・デジタル署名・SSL/TLS が1枚の表に並び、効果が「盗聴対策」「改ざん対策」と書き分けられます。
| 方式 | 教材の記述(要旨) | 効果 |
|---|---|---|
| 共通鍵暗号方式 | 暗号化の鍵も復号の鍵も同じ鍵を使用する。鍵を盗まれないよう大切に管理する必要がある。代表例は AES | 盗聴対策 |
| 公開鍵暗号方式 | 公開鍵と秘密鍵の2種類を使用。不特定多数の人と情報をやり取りすることに向いている。代表例は RSA・楕円曲線暗号 | 盗聴対策 |
| デジタル署名 | 送信者の秘密鍵で署名データを生成し、送信者の公開鍵で検証する | 改ざん対策 |
| SSL/TLS | 共通鍵暗号方式の利点と、公開鍵暗号方式の利点の双方を生かすような暗号方式 | — |
「共通鍵は不特定多数に向かない/公開鍵は向く」という書き分けは、まさに本講で計算した n(n−1)/2 の帰結です。教材はその理由を書きませんが、みなさんはもう理由を知っています。
さらに同じ第4章の学習24「セキュリティテスト」は、こう締めくくります。「通信方式が平文で暗号化されていない場合は盗聴や改ざんの可能性が考えられる。重要な通信をする場合は、SSL/TLS などのプロトコルを利用して通信経路での暗号化を行う必要があるだろう」。情報Ⅱでは暗号が「守られる側の知識」から「自分が作るシステムでテストすべき項目」に変わるのです。HTTPS が具体的に何を守るのかは 第74講(HTTPとHTTPS)で扱っています。
6-4 情報Ⅰと情報Ⅱの違いを1枚に
| 情報Ⅰ | 情報Ⅱ | |
|---|---|---|
| 暗号の位置 | (4)ネットワークの中の1トピック。教材では無線LANの注意点 | (1)導入の必修項目(学習2)+(4)で方式の表 |
| 問われること | 暗号化されているか/鍵は安全か | どの方式を選ぶか/自分のシステムでテストする |
| 鍵の扱い | 与えられるもの(Wi-Fiのパスワード) | 選ぶもの(方式と鍵長) |
| 一次資料での語数 | 「共通鍵」1回・「公開鍵」0回 | 方式が図表として並び、効果が書き分けられる |
6-5 共通鍵暗号は、量子計算機の時代にも生き残る
最後に、本講の芯である「安全性は鍵から来る」がどこまで効いているかを示す資料を挙げます。CRYPTREC暗号リスト(令和8年3月30日最終更新)には、現行の推奨リストと並んで「耐量子計算機暗号(PQC)リスト」が載っています。
| 技術分類 | PQCリストに載っている暗号技術 |
|---|---|
| 公開鍵暗号(署名) | 該当なし |
| 公開鍵暗号(鍵共有) | ML-KEM(新しく作り直したもの) |
| 共通鍵暗号 | AES(AES-192/AES-256) |
公開鍵暗号は作り直しになるのに、共通鍵暗号は AES のまま、鍵を長くするだけで生き残る。 しかも同リストの注記は、安全性の「カテゴリ」をこう定義しています。
・Category 1 128ビット鍵を持つブロック暗号に対する鍵探索
・Category 3 192ビット鍵を持つブロック暗号に対する鍵探索
・Category 5 256ビット鍵を持つブロック暗号に対する鍵探索
安全性を測る物差しそのものが「鍵を全部試すのに必要な計算資源」で定義されている。この講の3-2で述べた「安全性は鍵から来る」という原則が、国の暗号リストの脚注で数量化されているわけです。
ついでにもう1つ。同じリストの「運用監視暗号リスト」(互換性維持のためだけに継続利用を容認するリスト)には、3-key Triple DES と SHA-1 が載っています。かつて標準だった暗号が「実際に解読されるリスクが高まるなど、推奨すべき状態ではなくなった」と国が認定しているのです。暗号には寿命がある。この1枚から、それも読み取れます。
7. この講のまとめと、次の講への問い
- 暗号の強さは方式の秘密ではなく鍵の秘密から来る(ケルクホフスの原理)。CRYPTREC は方式名を全部公開し、鍵長で合否を判定している
- 鍵に要る条件は2つ。鍵空間が大きいことと統計的な偏りを残さないこと。単換字暗号は前者を満たすが後者で破れる
- XOR は同じ鍵を2回かけると元に戻る。だから暗号化と復号が同じ操作になる=共通鍵暗号のいちばん素朴な姿
- ただし同じ鍵を使い回すと平文どうしの XOR が露出する。だから暗号利用モードが要る
- 共通鍵暗号の弱点は鍵配送問題と鍵の本数 n(n−1)/2。1,000人なら499,500本
- 情報Ⅰの一次資料には「共通鍵」が1回しか出ず「公開鍵」は0回。方式の中身は情報Ⅱ第4章で初めて表になる
そして、この講の最後に残る問いはこれです。
「その鍵を、どうやって相手に渡すのか。」
会ったこともない通販サイトと、初めてアクセスしたその瞬間に、盗聴されているかもしれない回線の上で、共通の鍵を持つ。それが可能だとしたら、いったいどういう仕組みでしょうか。次の第17講(公開鍵暗号と電子署名)で扱います。
関連して、『藤原進之介の最強120講義』の全講一覧、およびシリーズのカテゴリページもあわせてご覧ください。数学の学習で行き詰まっている方は 学習状況の診断ページ、高校2年生の方は 高2向けの案内、オンライン指導の仕組みを知りたい方は オンライン数学塾ガイド が参考になります。
情報Ⅰ・数学の学習について相談したい方へ
数強塾では、進路相談・学習相談を無料で受け付けています。実際の授業を受けてみたい方には体験授業(3,000円・税込)もご用意しています。「暗号の話は面白かったけれど、計算問題になると手が止まる」といったご相談も歓迎です。
