Dual EC DRBGの安全性検証

神奈川大学理学部情報科学科 2014 年度学士論文要旨
指導教員:松尾和人
Dual EC DRBG の安全性検証
鈴木 涼平
1
はじめに
使用する必要があるが、本研究ではその中で “Curve P-
安全な暗号技術において、乱数は必要不可欠である。乱
数を生成する方法の一つに DRBG(Deterministic Ran-
dom Bit Generator)が存在する。DRBG とは、ランダ
ムビットを出力する生成器である。一般にこのようなメ
カニズムは、「疑似乱数生成器 (Pseudo-Random Num-
ber Generator)」と呼ばれている。この DRBG の中で、
本研究では NIST SP800-90 [2] で規定された Dual EC
DRBG を取り上げる。Dual EC DRBG は、
「位数 n の楕
円曲線上の点 P , 点 Q を考えると、Q = d ∗ P のような式
から d を求めるのは難しい」という、よく知られる「楕
円曲線上の離散対数問題」に基づいている。ここで d ∗ P
は点 P を d 倍することを意味する。Dual EC DRBG は、
楕円曲線 E 上の2つの有理点と初期シードと呼ばれる初
期値を用いて疑似乱数を導出する。この Dual EC DRBG
において、設計者が d を知っている場合、乱数列を推定
する攻撃が可能であることが Shumow と Ferguson [1] に
よって指摘されている。Shumow と Ferguson によって
指摘されている攻撃は、Dual EC DRBG により生成さ
256”を利用する。以下では Dual EC DRBG の動作を説
明する。
初期シードを t とする。まず有理点 P を t 倍し、その
乗算の結果から x 座標を取り出す((x(t∗P )))。次にこの
有限体の元である x 座標を整数に直す((φ(x(t ∗ P ))))。
そして整数に直した値を別の変数 s とする。次に有理
点 Q を s 倍する。先ほどと同様に、x 座標を取り出し
((x(s ∗ Q)))、整数に直す((φ(x(s ∗ Q))))。この値を変
数 r とする。また、有理点 P を s 倍した結果から、x 座
標を取り出し整数に直した値((φ(x(s ∗ P ))))を t とす
る。この t は次の疑似乱数を生成するための新たなシー
ドとなる。先ほど求めた r の一番右から outlen ビット
個を取り出す処理をする。outlen とは、ビットをいくつ
か削り最終的に出力される疑似乱数のビット数である。
この outlen の最大値は、パフォーマンス上の理由により
240 となっている。つまり削るビット数は最低 16 ビット
となる。取り出した値を疑似乱数として出力する。この
一連の流れを図 1 に記す。
れた疑似乱数の1つを使い、この疑似乱数を導出するの
に使用したシードの次のシードを求める。これにより使
用した疑似乱数以降の疑似乱数が一致することを示す。
そこで本研究では2つの有理点の間の離散対数問題が分
かっている場合、安全性を検証するために実際に攻撃実
験をおこなう。本研究では、この Dual EC DRBG を用
い実際に疑似乱数を生成する。その疑似乱数を使い実際
図 1: Dual EC DRBG [2]
に Shumow と Ferguson が指摘した攻撃方法による実験
をおこない、Dual EC DRBG を用いた暗号技術の安全
性を検証する。
2
3
Dual EC DRBG
本節では、Shumow と Ferguson [1] の攻撃方法を説明
まず Dual EC DRBG で利用する有限体 Fp 上の楕円
曲線 E を定義する。
3
する。Shumow と Ferguson の攻撃は導出した疑似乱数
のうち1つを使用して攻撃を行なう。その際 P = e ∗ Q
を満足する e をあらかじめ知っているものとする。
E : y = x + ax + b (a, b ∈ Fp , 4a + 27b ̸= 0)
2
Shomow と Ferguson の攻撃方法
3
2
有理点とは楕円曲線 E 上の点のうち、x, y 座標が有限体
Fp の要素であるような点 (x, y) である。また、無限遠点
と呼ばれる点 O も有理点として扱う。この無限遠点は
(x, y) と表記することが出来ない唯一の点である。
Dual EC DRBG で使用する楕円曲線 E, 点 P, Q はあ
らかじめ NIST SP800-90 [2] により定められたものを
Dual EC DRBG により導出した複数の疑似乱数のう
ち1つを選び攻撃を実行する。まず、使用する疑似乱数
のビットを削る前の値すなわち r を求める必要がある。
しかし、削った部分は攻撃者にはわからない。そこで 0
から 2256−outlen − 1 の全パターンを疑似乱数と結びつけ
る。結びつけた値はそのまま x = (x(s ∗ Q)) となるため、
この値を楕円曲線の定義式(z ≡ x3 + ax + b
(mod p))
へ代入する。代入した結果の平方根、すなわち楕円曲線
神奈川大学理学部情報科学科 2014 年度学士論文要旨
指導教員:松尾和人
の定義式における y が存在すれば、点 A = (x, y) は曲線
上の点ということになる。存在するかは、z
p−1
2
== 1 の
256−outlen
真偽のよって判別する。点 A の候補は約 2
−1
個存在する。この x は図 1 における r となる。ここで、
x = r より、A = s ∗ Q であり、φ(x(e ∗ A)) は P = e ∗ Q
から次のように変形が出来る。
outlen
攻撃
探索
合計
240
4328.87
1586.25
5915.12
239
8682.26
3206.82
11889.08
238
17583.97
6778.26
24362.23
237
36672.01
13828.50
50500.51
236
71387.03
27314.89
98701.92
φ(x(e ∗ A)) = φ(x(e ∗ s ∗ Q)) = φ(x(s ∗ P )) = t
表 1: 攻撃・探索の実行時間(秒)
つまり、点 A を e 倍し、その x 座標を取り出した値が
そのまま t、すなわち新たなシードとなる。この新たな
シードは点 A の候補の数だけ存在する。
次に導出した複数の新たなシードを使用して Dual EC
DRBG を再び動作させ、導出した疑似乱数が、攻撃に使
用した疑似乱数の次の疑似乱数と一致するものを探す。
一致した場合、そのシードを出力する。この動作は、す
べてのシードに対しておこない複数の候補を 1 通りに絞
る。ただし 1 度で候補を 1 通りに絞ることができるとは
限らない。その場合は、出力された値を新たなシードと
してもう一度 Dual EC DRBG を動作させる必要がある。
この時、比較する対象は、攻撃に使用した疑似乱数の次々
の疑似乱数となる。最終的に 1 通りになった時点で攻撃
は終了となる。
時間は 1 ビットにつき 2 倍になる。時間が 2 倍かかる理
由は、攻撃アルゴリズムにおいて、0 から 2256−outlen − 1
を総当たりさせているため、総当たりさせる数が 2 倍に
なるからである。outlen が 240 である場合から推測する
と、outlen が 128 の場合、動作を終了する時間は 1030 年
となる。安全性を確保するには、攻撃終了時間が最低で
も約 50 年にする必要がある。攻撃時間が約 50 年かかる
ようにするには outlen を 222 にする必要がある。
5
まとめ
本稿では、疑似乱数生成器の一つである Dual EC DRBG
の安全性の検証をおこなった。この Dual EC DRBG は
楕円曲線上の有理点のうち2点と初期シードを使用して
攻撃実験
4
Shomow と Ferguson の攻撃の実験を行なった。本実
験では、Dual EC DRBG によって出力する疑似乱数の
数は 10 個としている。また初期シードは 2250 とする。
攻撃で使用する疑似乱数は、出力した疑似乱数のうち一
番最初に出力されたものを使用する。使用する楕円曲線
E 、定数、点 P は、NIST SP800-90 により定められた
ものを利用する。点 Q は自分で選択する必要がある。こ
こでは Q = d ∗ P 、d = 6 とした。本研究では outlen を
240 から 236 の5通りで実験を行なった。
使用マシンは Core i7-4820K 3.7GHz、使用 OS は Linux
2.6、使用ソフトは Sage Version 5.6 である。
4.1
実行結果
攻撃から探索までの動作を行なった時間を表 1 に示す。
outlen は出力ビット数であり、時間は秒単位である。
探索により出力された値は、outlen が 240 から 236 全て
の場合において一致した。
4.2
結果からわかること
探索をした結果を Dual EC DRBG の初期シードとし
て動かすと出力結果は、攻撃するために使用した疑似乱
数以降と一致する。outlen が 240 では、Dual EC DRBG
はこの攻撃方法によってわずか約 6000 秒で解けてしまう
ことがわかった。しかし outlen の値を減らすことで実行
疑似乱数を生成するものである。この疑似乱数のうち 1
つを使用して Shumow と Ferguson [1] の攻撃方法を基に
し攻撃実験をおこなった。outlen が 240 の場合では、わ
ずか約 6000 秒で攻撃されてしまうことがわかった。従
来の形では安全性はないと考える。解決策として outlen
を 1 ビットを減らすと、1 ビットあたり攻撃時間は約 2
倍ずつ増えていく。安全性を確保するには攻撃時間が最
低約 50 年かかる必要があるため、この Dual EC DRBG
を使う場合、outlen を 222 にすることで安全性が確保で
きると考える。
参考文献
[1] Dan Shumow, Niels Ferguson ,“On the Possibilirity of a Back Door in the NIST SP800-90 Dual EC
Prng,”, Crypto 2007 rump session Slide15-shumow
[2] Elaine Barker and John Kelsey,“NIST Special Publication 800-90A”, PP.60∼71, P.77
[3] Daniel J. Bernstein, Tanja Lange,
Niederhagen ,“Dual EC DRBG”,
Rubenhttps:
//projectbullrun.org/dual-ec/
[4] 伊豆哲也 ,“楕円曲線暗号入門”, 立教大学理学部数学
科講「計算機緒論2」講義補助資料, 2006.8