素数 と、法 の原始根 を公開パラメータとして、アリスとボブがディフィー・ヘルマン鍵共有を行う。アリスは秘密の整数 を選んで を、ボブは秘密の整数 を選んで を計算し、互いに送る()。このとき、2 人が共有する鍵 ()を求めよ。
ディフィー・ヘルマン鍵共有
公開パラメータ と秘密の整数 から , を作り、共有鍵 を求められる
前提
- 繰り返し二乗法によるべき剰余 (大学数学 暗号理論)
この技能までの道筋(19 技能)
読み込み中…
右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
- 分数のたし算・ひき算 (算数 計算と数のきまり)
- 小数の四則計算 (算数 計算と数のきまり)
- 正負の数の加法・減法 (中学数学 数と式)
- 分数のかけ算・わり算 (算数 計算と数のきまり)
- 四則の混じった計算の順序 (算数 計算と数のきまり)
- 正負の数の乗除・累乗と四則混合 (中学数学 数と式)
- 分配法則を使った計算のくふう (算数 計算と数のきまり)
- 文字式の計算(同類項・分配法則) (中学数学 数と式)
- 乗法公式による展開 (中学数学 数と式)
- 因数分解 (中学数学 数と式)
- 約数の見つけ方 (算数 整数の性質)
- 文字式で表した整数の性質 (中学数学 数と式)
- 余りによる整数の分類 (数学A 整数の性質)
- 樹形図で数え上げる (算数 場合の数)
- 積の法則と和の法則 (算数 場合の数)
- 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
- 合同式 (数学A 整数の性質)
- n 進法 (数学A 整数の性質)
- 繰り返し二乗法によるべき剰余 (大学数学 暗号理論)
説明
ディフィー・ヘルマン鍵共有を使うと、盗聴されているかもしれない通信路の上で、2 人が同じ秘密の数(共有鍵)を作れます。公開パラメータ と、各自が手元だけに持つ秘密の整数 から、送り合う数 と共有鍵 を計算します。計算の中身は、繰り返し二乗法によるべき剰余を何回か行うことです。暗号通信の最初に鍵を決める場面で使われます。
なぜそうしてよいのか
アリスとボブは、素数 と を満たす整数 を公開して共有します。アリスは秘密の整数 、ボブは秘密の整数 を選びます(ふつう の範囲から選びます)。アリスは を、ボブは を計算し、 だけを相手に送ります。
合同式では、 ならば が成り立ちます(合同式どうしは掛け算できるためです)。そこで、アリスは受け取った を自分の秘密 乗して を得ます。ボブも を得ます。指数法則 のおかげで、2 人は相手の秘密を知らないまま、同じ数 にたどり着きます。
盗聴者に見えるのは だけです。 を作るには か が必要ですが、 となる を から逆算する問題(離散対数問題)は、 が十分大きいと現実的な時間では解けないと考えられています。一方、正しい手順で を計算する側は、繰り返し二乗法を使えば速く計算できます。この「順方向は易しく、逆方向は難しい」という差が、安全性の根拠になっています。
手順
公開パラメータ と、2 人の秘密の整数 を確認する。
アリスが送る値 を繰り返し二乗法で求める( の余りにする)。
ボブが送る値 を同じように求める。
アリス側の共有鍵 を計算する(相手の値を自分の秘密乗する)。
検算として、ボブ側の も計算し、 と一致することを確かめる。
例題
公開パラメータを , とする。アリスの秘密の整数を 、ボブの秘密の整数を とするディフィー・ヘルマン鍵共有で、共有鍵 ()を求めよ。
例題の解答
手順 1: , , , である。
手順 2: を求める。(2 進法で )である。、 なので、。よって 。
手順 3: を求める。()である。 なので、。 より 。
手順 4: アリス側で を計算する。 なので、、。よって 。
手順 5: ボブ側で を計算して検算する。、、 なので、。2 人の値が一致した。
したがって 。
答え:
よくある誤り
送り合った値を掛けて としてしまう誤り。 となり、指数が和になってしまう。正しくは で、例題では だが、 である。
相手の値を相手の秘密乗して や を計算してしまう誤り。 となり共有鍵にならない。正しくは、受け取った相手の値を自分の秘密乗する(アリスは 、ボブは )。
指数を で割った余りに置き換えてしまう誤り。例えば とするのは誤りで、実際には である。合同式 で小さくしてよいのは底(掛け合わせる数)であって、指数ではない。
を余りにせずにそのまま次の計算へ使い、数が巨大になって計算を誤る誤り。正しくは、2 乗するたび・掛けるたびに で割った余りにしてから次へ進む(例: のように、余りで計算を続ける)。
この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。
入口の問題
素数 と、法 の原始根 を公開パラメータとして、アリスとボブがディフィー・ヘルマン鍵共有を行う。アリスは秘密の整数 を、ボブは秘密の整数 を選ぶ。
アリスは 、ボブは を計算して互いに送り、それぞれ共有鍵 を求める。ただし はいずれも 以上 以下の整数とする。
の値を、組 の形でこの順に求めよ。
素数 と、法 の原始根 を公開パラメータとして、アリスとボブがディフィー・ヘルマン鍵共有を行う。
アリスは秘密の整数 を選び、()をボブに送る。ボブは秘密の整数 を選び、()をアリスに送る。
このとき、2 人が共有する鍵 ()を求めよ。
この技能を使う問題
素数 と、法 の原始根 を公開パラメータとして、アリスとボブがディフィー・ヘルマン鍵共有を行う。
アリスは秘密の整数 を選び、()をボブに送る。ボブは秘密の整数 を選び、()をアリスに送る。その後、アリスは を、ボブは を計算し、これを共有鍵 ()とする。
共有鍵 を求めよ。
を奇素数とする。 と互いに素な整数 の を法とする位数とは、 をみたす最小の正の整数 のことであり、位数が である整数を を法とする原始根という。 を を法とする原始根とする。
ディフィー・ヘルマン鍵共有では、秘密の 0 以上の整数 に対して を で割った余りが公開される。このとき、すべての 0 以上の整数 に対して
が成り立つこと(したがって公開された値から秘密 の偶奇がわかること)を証明せよ。ただし、次の事実は用いてよい。
- と互いに素な整数 の位数を とすると、0 以上の整数 について となるのは のとき、かつそのときに限る
- 素数 が整数の積 を割り切るならば、 または である有限体 上の楕円曲線
を考えます。 の 有理点全体は、無限遠点 を単位元とし、通常の加法(弦と接線による加法)で群になります。この曲線と基点 を公開パラメータとして、アリスとボブが楕円曲線ディフィー・ヘルマン鍵共有を行います。アリスは秘密鍵 を選んで公開鍵 を送り、ボブは秘密鍵 を選んで公開鍵 を送ります。二人が共有する点を とします。
の座標 を、 の整数の組で求めてください。
を奇素数、 を を法とする原始根とする。 と互いに素な整数 について、 をみたす整数 が存在するとき を を法とする平方剰余、存在しないとき平方非剰余という。
アリスとボブが群 上でディフィー・ヘルマン鍵共有を行う。アリスは秘密の正の整数 、ボブは秘密の正の整数 を選び、、 を公開し、共有鍵を とする。
このとき、「 が を法とする平方非剰余であるための必要十分条件は、 と がともに を法とする平方非剰余であることである」を証明せよ。ただし、原始根の定義( の位数が であり、 と互いに素な任意の整数は を法としてある ()と合同になること)と、「 となる整数 は の倍数に限る」ことは用いてよい。
この技能の次に学べること
- エルガマル暗号 (大学数学 暗号理論)