従来の暗号技術を支える数学
はじめに
現在広く利用されている暗号技術は、量子コンピュータの登場によって安全性が揺らぐ可能性があると指摘されています。
この問題への解決策として二つのアプローチが注目を集めています。
一つは、量子コンピュータでも解けない計算問題に基づいた「耐量子計算機暗号(PQC)」 です。
もう一つは、量子力学の原理を利用する「量子暗号(QKDなど)」 です。
私はこれらの最先端の暗号技術に強い関心があり、独学で得た知識を体系的に整理するために、記事シリーズとしてまとめています。
本記事では、その中でも従来の暗号技術の安全性を保証してきた数学的基盤に焦点を当てて整理します。
RSA暗号、ElGamal暗号、そして楕円曲線暗号といった公開鍵暗号の安全性はそれぞれ、素因数分解問題、離散対数問題、楕円曲線離散対数問題といった、解くのに膨大な時間がかかる「数学的に困難な問題」 によって守られています。
ここでは、これらの「困難な問題」がどのように暗号方式の安全性を保証しているのかを解説します。さらに、これらの数学の壁を脅かす解読手法についてもご紹介します。
また、暗号技術を深く理解するための参考として、その基盤となる数学的構造や性質(群・環・体・位相・フェルマーの小定理など) についても触れています。
なお、従来の暗号方式である公開鍵暗号方式と共通鍵暗号方式の仕組みや応用、さらには次世代の暗号として注目されている格子問題、およびそれを採用したML-KEM(PQC(耐量子計算機暗号)の一種) について知りたい方は、以下の記事もあわせてご覧ください。
RSA暗号:素因数分解の困難性を利用した公開鍵暗号方式
RSA暗号は、現在広く利用されている代表的な公開鍵暗号方式です。
安全性の根拠
RSA暗号の安全性は、二つの大きな素数を掛け合わせてできた合成数を、元の素数に分解する(素因数分解)ことが極めて難しいという数学的な困難性に基づいています。
鍵生成の仕組み
RSA暗号の鍵生成が、以下の手順で行われます。
- 素数の準備:非常に大きな、互いに異なる二つ素数
を用意します。p,q - 法
の計算:これらの積N を計算します。このN = pq を「法」として使用します。N - オイラーのトーシェント関数:
が持つ性質を利用するため、N (オイラートーシェント関数)を計算します。これは、法φ(N) = (p-1)(q-1) に関する乗法群N の位数(要素の個数)を表します。{Z_N}^* - 公開鍵
の決定:e と互いに素である整数φ(N) を一つ選びます。(e (1 < e < N) )gcd(e,φ(N)) = 1
※ を小さくしすぎると、脆弱になるため、通常はe のような値が設定されます。e = 2^{16} + 1 - 秘密鍵
の計算:d とe を掛けた時にd で割ると余りが1になる整数φ(N) を計算します。(d (moded ≡ 1 )φ(N) - 鍵の完成
- 公開鍵:(
)N,e - 秘密鍵:
d
- 公開鍵:(
暗号化と復号
-
暗号化
- 送りたいメッセージ(平文)を
とし、公開鍵(M )を使って、暗号文N,e を計算します。c
c = M^e (mod N)
- 送りたいメッセージ(平文)を
-
復号
- 暗号文
と秘密鍵c を使って、復号後のメッセージd を計算します。M'
M' = c^d (mod N) - この計算により、元の平文
と復号されたM は必ず一致します。(M' )M = M'
- 暗号文
素数判定法:大きな素数を探す
RSA暗号の鍵生成では、安全性を保つために非常に巨大な素数
Miller-Rabin素数判定法
これは、ある大きな数
-
フェルマーの小定理の応用
- この判定法は、「もし
が素数で、n とa が互いに素ならば、n が成り立つ」というフェルマーの小定理を利用しています。a^{n-1} \equiv 1 \pmod{n} - この定理の対偶を取り、「もし
ならば、a^{n-1} \not\equiv 1 \pmod{n} は合成数である」という判定を行います。しかし、この条件を満たす合成数(カーマイケル数など) が存在するため、さらに改良したのがMiller-Rabin素数判定法です。n
- この判定法は、「もし
-
判定のステップ
- まず、
をn-1 (n-1 = 2^s \cdot d は奇数)の形に分解します。d - 次に、
で割り切れない任意の整数n を選び、以下のどちらかの条件が成り立つかをテストします。a -
が成り立つ。a^d \equiv 1 \pmod{n} -
のうち、どれか一つが法a^d, a^{2d}, a^{4d}, \dots, a^{2^{s-1}d} においてn に一致する。n-1
-
- これらのどちらかの条件を満たせば
は素数であると判定し、両方を満たさなければn は合成数であると判定します。n
- まず、
RSA暗号の解読(素因数分解法)
RSA暗号の安全性を破るには、公開鍵
p-1法
この方法は、合成数
- 原理の利用: フェルマーの小定理より、
が素数であれば、p が成り立ちます。a^{p-1} \equiv 1 \pmod{p} - 因子の発見: したがって、
の倍数となる数p-1 を考えると、M 、つまりa^M \equiv 1 \pmod{p} はa^M - 1 の倍数となります。p - 計算: この性質を利用し、
を計算することで、高い確率で素因子\text{gcd}(a^M - 1, N) を見つけることができます。p -
の選び方:M は秘密情報で不明であるため、p としては、小さな素数のべき乗を全て掛け合わせた数(「滑らかな」M を約数として含む可能性が高い数)が実用的には選ばれます。p-1
ElGamal暗号:離散対数問題の困難性を利用した公開鍵暗号
RSA暗号と並ぶ公開鍵暗号の一つにElGamal暗号があります。この暗号は、離散対数問題(DLP) という数学的な困難性を安全性の根拠としています。
-
鍵共有の土台:Diffie-Hellman鍵共有
ElGamal暗号の基盤を理解するために、まず二者間で安全に共通鍵を共有するための画期的な手法、Diffie-Hellman鍵共有を紹介します。-
仕組み
- 公開パラメータの準備:まず、大きな素数
と、そのp を割り切る大きな素数p-1 を用意します。さらに、法q に関する剰余群p の中で、位数が\mathbb{Z}_p^* であるような特別な値q を選びます。これらのg は全員に公開されます。(p, q, g) - 秘密鍵と公開鍵の生成:
-
Aliceはランダムな秘密鍵
を選び、公開鍵a を計算します。A = g^a \pmod{p} -
Bobもランダムな秘密鍵
を選び、公開鍵b を計算します。B = g^b \pmod{p}
-
Aliceはランダムな秘密鍵
- 公開鍵の交換:Aliceは
をBobに、BobはA をAliceに渡します。B - 共有鍵の生成:
- Aliceは、受け取った
と自身の秘密鍵B を使ってa を計算します。B^a \pmod{p} - Bobは、受け取った
と自身の秘密鍵A を使ってb を計算します。A^b \pmod{p} - 結果: 両者が
という同じ共通鍵を導出できます。攻撃者が公開鍵K = g^{ab} \pmod{p} とA を盗聴できても、秘密鍵B やa を知らなければ、この共通鍵b を計算することは困難とされています。K
- Aliceは、受け取った
- 公開パラメータの準備:まず、大きな素数
-
仕組み
ElGamal暗号の仕組み
ElGamal暗号は、Diffie-Hellman鍵共有の概念を応用し、暗号化と復号の機能を持たせた方式です。
安全性の根拠:離散対数問題(DLP)の困難性
ElGamal暗号の安全性の核は、以下の離散対数問題(DLP: Discrete Logarithm Problem) にあります。
- 問題:公開されている
が与えられたとき、(p, q, g, y) を満たす秘密の指数y \equiv g^x \pmod{p} を求めよ。x
この指数 を求めることが非常に難しいため、暗号の安全性が保たれます。x
鍵生成
- 準備:Diffie-Hellman鍵共有と同様に、公開パラメータ
を決定します。(p, q, g) - 鍵の生成:
- 秘密鍵
:x からランダムに選びます。\mathbb{Z}_q - 公開鍵
:y を計算します。y = g^x \pmod{p} - 公開鍵は
、秘密鍵は(p, q, g, y) となります。x
- 秘密鍵
暗号化
平文
c_1 = g^r \pmod{p} c_2 = m \cdot y^r \pmod{p}
復号
暗号文
【復号が成り立つ理由】
群の構造を利用した構成
元のElGamal暗号は、大きな素数
ElGamal暗号はこの位数
一般の群への拡張
Elgamal暗号は、整数剰余群に限らず、一般の素数位数
鍵生成
- 準備:素数位数
を持つ可換群q と、その位数G の生成元q を設定します。g - 鍵の生成:
秘密鍵 :x からランダムに選びます。\mathbb{Z}_q
公開鍵 :群y の演算を用いてG を計算します。y = g^x
鍵の完成: 公開鍵は 、秘密鍵は(G, q, g, y) となります。x
暗号化
平文
c_1 = g^r c_2 = m \cdot y^r
復号
受信者は、暗号文
安全性を保証する困難な問題
-
計算Diffie-Hellman問題 (CDH)
Diffie-Hellman鍵共有の安全性の核心です。公開鍵 とg^x (秘密の指数g^y は不明)だけが与えられたとき、共通鍵x, y を計算上求めることが困難である、という問題です。g^{xy} -
判定Diffie-Hellman問題 (DDH)
の組と、ランダムなg^x, g^y, g^{xy} を含む組が与えられたとき、どちらが正当な共有鍵g^z の組であるかを区別する問題です。g^{xy}
ElGamal暗号とCDH問題の関係
ElGamal暗号の解読の困難性は、計算Diffie-Hellman問題(CDH)の困難性と等価であるとされています。そして、離散対数問題(DLP)が解ければ、CDH問題も解けることが分かっています。
したがって、DLPを解くことが困難であるという前提が、ElGamal暗号の安全性を担保しているのです。
楕円曲線暗号(ECC):楕円曲線離散対数問題の困難性を利用した公開鍵暗号方式
楕円曲線暗号(Elliptic Curve Cryptography)は、従来のRSA暗号やElGamal暗号よりも短い鍵長で同等以上の安全性を確保できる、極めて効率的な公開鍵暗号方式です。
安全性の根拠
楕円曲線暗号の安全性は、楕円曲線離散対数問題(ECDLP: Elliptic Curve Discrete Logarithm Problem) を解くことが非常に難しいという数学的な困難性に基づいています。
楕円曲線
暗号で使われる楕円曲線は、次のような特殊な方程式で表される、滑らかな曲線です。
- p:3より大きい素数(演算の「法」)
- a,b
(すなわち、a,bは「0, 1, 2, …, p−1」のいずれかの値)\in F_p - 条件:
(mod p)4a^3 + 27b^2 \not{\equiv}0
=>これにより、曲線は「特異点のない滑らかな曲線」となります。
楕円曲線上の有理点(群の要素)
この方程式を満たす有限体
-
は「無限遠点」と呼ばれ、これを含めた\mathcal{O} 全体が、加法演算によって「可換群」を構成します。\text{E}(\mathbb{F}_p) -
はこの群における単位元(加法の\mathcal{O} のようなもの)の役割を果たします。0 - 点
の逆元はP=(x, y) です。-P = (x, -y)
群
楕円曲線離散対数問題(ECDLP)
この群の構造において、暗号の安全性の基盤となるのが ECDLP です。
- 問題: 楕円曲線
とその上の二点\text{E} とS が与えられたとき、T を満たす整数T = [d]S (スカラー)を求めよ。d
つまり、点
楕円曲線暗号方式の応用
公開パラメータとして、位数が巨大な素数
- 楕円曲線上のDiffie-Hellman鍵共有(EDCH)
通常のDiffie–Hellman鍵共有(DH)を楕円曲線上の可換群に拡張したものです。
- 鍵の交換:参加者 A は秘密値
から公開点a を、参加者 B は秘密値\boldsymbol{A} = [a]S から公開点b をそれぞれ計算し、交換します。\boldsymbol{B} = [b]S - 共通鍵の計算:双方が、受け取った公開点と自身の秘密値を使って、共通鍵
を計算します。\boldsymbol{K}
\boldsymbol{K} = [a]\boldsymbol{B} = [a][b]S = [ab]S = [b]\boldsymbol{A}
ECDHの安全性は、攻撃者が公開されている
- 楕円曲線上のElGamal暗号
DLPよりもECDLPの方が解くことが困難とされているため、ECCでは短い鍵長で高い安全性を確保でき、処理が高速になります。
- 鍵生成:Bobが秘密鍵
(乱数)を選び、公開鍵\beta を計算します。\boldsymbol{T} = [\beta]S - 暗号化:Aliceは平文を曲線上の点
として表現し、乱数M を用いて暗号文\alpha を計算します。\boldsymbol{c} = (\boldsymbol{C}_1, \boldsymbol{C}_2) \boldsymbol{C}_1 = [\alpha]S \boldsymbol{C}_2 = M + [\alpha]\boldsymbol{T}
- 復号:Bobは暗号文
と秘密鍵\boldsymbol{c} を使って、以下の計算で平文\beta を復元します。M
\boldsymbol{C}_2 - [\beta]\boldsymbol{C}_1 = (M + [\alpha]\boldsymbol{T}) - [\beta][\alpha]S = M + [\alpha][\beta]S - [\alpha][\beta]S = M
- 楕円曲線を利用したデジタル署名アルゴリズム(ECDSA署名)
-
鍵生成:Aliceが秘密鍵
を選び、公開鍵\alpha を計算します。\boldsymbol{T} = [\alpha]S -
署名:Aliceは乱数
を使って点k を計算し、平文\boldsymbol{R} = [k]S = (x, y) と秘密鍵M を用いて署名\alpha を生成します。署名s \equiv k^{-1}(M + \alpha x) \pmod{r} を送ります。(\boldsymbol{R}, s) -
検証:Bobは
と公開鍵\boldsymbol{R}, s を使って検証点\boldsymbol{T} を計算します。\boldsymbol{V}
\boldsymbol{V} = [u_1]S + [u_2]\boldsymbol{T} \quad \text{ただし、} u_1 \equiv s^{-1}M \pmod{r}, u_2 \equiv s^{-1}x \pmod{r} と\boldsymbol{V} が一致する場合(\boldsymbol{R} )、署名が正当であると判断します。\boldsymbol{V} = \boldsymbol{R}
楕円曲線離散対数問題の解読(ρ法)
ECDLPに対する有効な解読手法の一つに、Pohlig-Hellman(ポーリグ–ヘルマン)の
-
反復関数の設定:巡回群
上の写像\langle S \rangle (群の中の点を同じ群の中の別の点に写す関数)を、f: \langle S \rangle \to \langle S \rangle を満たすように定義します。この\boldsymbol{f}(\boldsymbol{X}) = \boldsymbol{X} + [a]S + [b]T の組は効率的に計算できる必要があります。a, b -
点の生成:
- 初期点
をランダムな整数\boldsymbol{X}_0 = [u_0]S + [v_0]T から生成します。u_0, v_0 - 反復関数
を用いて、f により、点の列\boldsymbol{X}_{i+1} = f(\boldsymbol{X}_i) を生成します。\boldsymbol{X}_i - このとき、各
は\boldsymbol{X}_i の形で表され、整数ペア\boldsymbol{X}_i = [u_i]S + [v_i]T も効率的に得られます。(u_i, v_i)
- 初期点
-
衝突の検出: 巡回群
は有限集合であるため、点の列\langle S \rangle はやがて同じ点に衝突します(\boldsymbol{X}_i かつ\boldsymbol{X}_i = \boldsymbol{X}_j )。i \neq j -
解の導出: 衝突した点から、以下の関係式が得られます。
[u_i]S + [v_i]T = [u_j]S + [v_j]T
であるため、T=[d]S
[u_i]S + [v_i][d]S = [u_j]S + [v_j][d]S
([v_i] - [v_j])[d]S = ([u_j] - [u_i])S
もし であれば、この関係式から ECDLP の解v_i \not\equiv v_j \pmod{r} を導くことができます。d
d \equiv (u_i - u_j) \cdot (v_i - v_j)^{-1} \pmod{r}
暗号を支える数学的性質:群・環・体
暗号技術の安全性を理解するには、「群(Group)」「環(Ring)」「体(Field)」といった抽象的な代数構造の理解が不可欠です。これらは、特定のルールで数を操作する「数の世界」を定義します。
- 群(Group)
群は、最も基本的な代数構造であり、「一つの操作」に関して閉じている集合です。
集合
- 結合法則: どの要素
についても、a, b, c \in G が成り立つ。(a \circ b) \circ c = a \circ (b \circ c) - 単位元
の存在: どの要素e も操作しても変わらない特別な要素a \in G が存在する (e )。a \circ e = e \circ a = a - 逆元
の存在: どの要素a^{-1} に対しても、単位元に戻す要素a \in G が存在する (a^{-1} )。a \circ a^{-1} = a^{-1} \circ a = e
- 可換群(アーベル群): 上記に加えて、どの
に対してもa, b \in G (交換法則)が成り立つ群を指します。a \circ b = b \circ a
- 環(Ring)
環は、「足し算」と「かけ算」の二つの操作に関して閉じている集合です。
集合
- 加法に関してアーベル群である(単位元を
、逆元を0 と定義)。-a - 乗法は結合法則を満たす。
- 乗法の単位元(
)が存在し、加法の単位元(1 )とは異なる。0 - 分配法則が成り立つ(
)。a(b+c) = ab + ac
- 可換環: 上記に加えて、乗法に関して交換法則(
)が成り立つ環を指します。ab = ba
- 体(Field)
体は、環の性質に加え、割り算(乗法の逆元)も自由にできる、最も完全な数の世界です。
環
剰余演算と暗号への応用
暗号で頻繁に登場するのは、これらの構造を有限の数の集合に適用した「剰余系」の世界です。
-
剰余環
と可逆元\mathbb{Z}_N
剰余環 は、\mathbb{Z}_N という有限集合に、「法\mathbb{Z}_N = \{0, 1, 2, \dots, N-1\} による加算と乗算」を定義した環です。N -
可逆元(割り算ができる数)
の中で、乗法に対する逆元(割り算のようなもの)が存在する要素を可逆元と呼びます。\mathbb{Z}_N
\mathbb{Z}_N^* = \{a \in \mathbb{Z}_N \mid a \text{は乗法の逆元を持つ}\} - 可逆になる条件: 要素
が逆元を持つための条件は、a 、すなわち 「\text{gcd}(a, N) = 1 と互いに素」 であることです。N
- 可逆になる条件: 要素
-
乗法群
\mathbb{Z}_N^*
この可逆元だけを集めた集合 は、乗法に関して群をなすため、「乗法群」または「単元群」と呼ばれます。\mathbb{Z}_N^*
-
可逆元(割り算ができる数)
-
有限体
\mathbb{F}_q 有限体
は、要素の数(位数)が有限である体です。\mathbb{F}_q
有限体 が存在するのは、その位数\mathbb{F}_q が素数q 、または素数p のべき乗p の場合に限られます。p^k - 位数
が素数q の場合p
暗号で最も一般的に利用されるのは、位数が素数 である有限体p です。\mathbb{F}_p
\mathbb{F}_p = \{0, 1, 2, \dots, p-1\}
この集合に、加法と乗法を「法 での剰余演算(p )」として定義した世界のことです。\pmod{p} - 性質:
の\mathbb{F}_p 以外のすべての要素は、0 と互いに素であるため乗法の逆元を持ちます。つまり、この集合内ではp 以外のすべての数で割り算が可能です。0
- 性質:
- 位数
その他の重要な概念
- 位数 (Order)
- 群の位数: その群に含まれる要素の総数です(∣G∣ などで表す)。
- 元の位数: 群
の元G に対してg を何回操作(掛ける、足すなど)すれば単位元に戻るかを示す、最小の正の整数g です。n - 乗法表記の場合:
g^n=e - 加法表記(楕円曲線など)の場合:
nS = \mathcal{O}
- 乗法表記の場合:
-
巡回群 ⟨g⟩
群 のすべての元が、ある一つの要素G を繰り返し操作(べき乗や倍算)することで生成されるとき、g を巡回群と呼びます。G
\text{G} = \langle g \rangle = \{e, g, g^2, \dots, g^{n-1}\}
- 性質: 巡回群は必ず可換群であり、巡回群の位数と、その生成元
の位数は一致します。また、位数が素数である群は必ず巡回群になります。g
| 特徴 | 乗法表記(RSA, ElGamal など) | 加法表記(楕円曲線暗号など) |
|---|---|---|
| 群の演算 | 掛け算: ( g^a \cdot g^b = g^{a+b} ) | 加算: ( aS + bS = (a+b)S ) |
| 単位元 | ( e )(掛け算の単位元、1のようなもの) | ( O )(無限遠点、加算の単位元) |
| 元の表現 | ( { e, g, g^2, \dots, g^{n-1} } ) | ( { O, S, 2S, \dots, (r-1)S } ) |
| 元の位数 | 最小の ( n ) で ( g^n = e ) | 最小の ( r ) で ( rS = O ) |
-
オイラーのトーシェント関数
この関数は、**\phi(N) の乗法群\mathbb{Z}_N の位数(要素数)**を与える非常に重要な関数です。\mathbb{Z}_N^*
\phi(N) = \lvert \{a \in \{1, 2, \dots, N-1\} \mid \text{gcd}(a, N) = 1\} \rvert - 意味:
から1 のうち、N-1 と互いに素な数の個数(つまり、N において逆元を持つ要素の数)を数えます。\mathbb{Z}_N
- 意味:
RSA暗号における応用
-
フェルマーの小定理
素数 と、n と互いに素な整数n に対して、以下の合同式が成立するという定理です。a
a^{n-1} \equiv 1 \pmod{n}
これは、RSA暗号の鍵生成や、素数判定法(Miller-Rabin法など)の理論的な基礎となっています。
Discussion