素数 に対し、 は法 での原始根であり、 における の位数は である。ベビーステップ・ジャイアントステップ法を用いて、
を満たす整数 を求めよ。ただし とする。
ベビーステップ・ジャイアントステップ法
( は の位数)として ()の表を作り、 と照合して を見つけ、 の離散対数を小さな で求められる
前提
- 繰り返し二乗法によるべき剰余 (大学数学 暗号理論)
- 法 での逆元(拡張ユークリッドの互除法) (大学数学 暗号理論)
- 剰余類環の単元群とオイラー関数 (大学数学 代数学)
この技能までの道筋(28 技能)
読み込み中…
右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
- 分数のたし算・ひき算 (算数 計算と数のきまり)
- 小数の四則計算 (算数 計算と数のきまり)
- 正負の数の加法・減法 (中学数学 数と式)
- 分数のかけ算・わり算 (算数 計算と数のきまり)
- 四則の混じった計算の順序 (算数 計算と数のきまり)
- 正負の数の乗除・累乗と四則混合 (中学数学 数と式)
- 分配法則を使った計算のくふう (算数 計算と数のきまり)
- 文字式の計算(同類項・分配法則) (中学数学 数と式)
- 乗法公式による展開 (中学数学 数と式)
- 因数分解 (中学数学 数と式)
- 約数の見つけ方 (算数 整数の性質)
- 文字式で表した整数の性質 (中学数学 数と式)
- 余りによる整数の分類 (数学A 整数の性質)
- 樹形図で数え上げる (算数 場合の数)
- 積の法則と和の法則 (算数 場合の数)
- 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
- 合同式 (数学A 整数の性質)
- n 進法 (数学A 整数の性質)
- 繰り返し二乗法によるべき剰余 (大学数学 暗号理論)
- 最大公約数と最小公倍数 (算数 整数の性質)
- 素因数分解と約数の個数 (算数 整数の性質)
- 最大公約数と最小公倍数 (数学A 整数の性質)
- ユークリッドの互除法 (数学A 整数の性質)
- 1 次不定方程式の整数解 (数学A 整数の性質)
- 法 での逆元(拡張ユークリッドの互除法) (大学数学 暗号理論)
- 群の位数と元の位数 (大学数学 代数学)
- 有限アーベル群の構造と部分群の個数 (大学数学 代数学)
- 剰余類環の単元群とオイラー関数 (大学数学 代数学)
説明
ベビーステップ・ジャイアントステップ法(BSGS 法)は、素数 と整数 が与えられたとき、 を満たす指数 (離散対数)を求める方法です。 の位数を とすると、 と順に試す方法では最大で約 回の掛け算が必要です。BSGS 法ではこれが約 回で済みます。暗号(ディフィー・ヘルマン鍵共有など)の安全性を考えるときの基本的な攻撃法でもあり、小さな なら手計算で離散対数を求められます。
なぜそうしてよいのか
の位数を とし、 とおきます。 なので、 の整数 はどれも を で割った商 と余り を使って ()と書けます。商 も 未満に収まるのは、 だからです。
この について、 は と同じです。両辺に を掛けると となります。 なので は法 での逆元として存在します。そこで、左辺の候補 を先に表にしておきます(小さな歩幅なのでベビーステップ)。次に右辺 を順に作って表と照合します( ずつの大きな歩幅なのでジャイアントステップ)。一致すれば が解です。
どちらの列も長さは 程度なので、全体の手間は約 回の掛け算と照合で済みます。 の位数が なので、解 は を法としてただ 1 つに決まります。 をすべて試しても一致しなければ、 は のべきで表せない(解なし)と判定できます。
手順
の位数 を確認し、 とする( となる最小の整数)。
ベビーステップ: について を、前の値に を掛けながら計算し、「値 → 」の表を作る( も必ず入れる)。
を求める。 を繰り返し二乗法で計算し、その逆元を拡張ユークリッドの互除法で求める( として計算してもよい)。
ジャイアントステップ: 、 として の順に を作り、そのつど表に同じ値があるか調べる。
となる組 が見つかったら とし、 となることを確かめる。最後まで一致しなければ解はない。
例題
の法 での位数は である。 を満たす整数 ()を、ベビーステップ・ジャイアントステップ法で求めよ。
例題の解答
手順1: で、 より とする。
手順2(ベビーステップ): を掛けながら法 で計算すると、 となる。表は である。
手順3: だから、 となる。逆元を求める。、、 を逆にたどると となる。よって で、 である(確認: )。
手順4(ジャイアントステップ): は表にない。 も表にない。 は表にあり、 である。
手順5: より となる。確認する。 なので、 となり正しい。よって 。
答え:
よくある誤り
ジャイアントステップで ではなく を掛けてしまう誤り。例題で と照合すると、一致から得られるのは なので、 とすると誤る。正しくは (例題では )を掛けて を照合し、 とする。
を にしてしまう誤り。 で とすると、表せる最大値は である。 が解のときに見つからない。正しくは とし、 を満たすようにする( なら )。
を「符号を反転した値」や分数と取り違える誤り。例えば から としてしまう。正しくは法 での逆元で、 より である。
ベビーステップの表に ()を入れ忘れる誤り。この場合、 が の倍数(例題なら )のときに見落とす。正しくは の 個すべてを表に入れる。
この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。