群と楕円曲線とECDH鍵共有
初めに
ここでは暗号でよく使われる数学的な概念である群を紹介します。
そして楕円曲線暗号のPythonによる実装その1(有限体とECDH鍵共有)で紹介したECDH鍵共有を群の言葉を使って見直します。
掛け算の重要な性質
群(group)とは日常的に使われる掛け算を抽象化した数学用語です。掛け算は
掛け算は次の性質を持っています。
- 3個以上の数字を掛けるとき、掛ける順序を変えても変わらない。例 :
(2 \times 3) \times 4 = 6 \times 4 = 24. 2 \times (3\times4) = 2\times 12 = 24. - 数字に1を掛けても値は変わらない。例 :
123 \times 1 = 123. - 逆数を掛けると1になる。例 :
5 \times (1/5) = 1.
1番目の性質は結合法則が成り立つといいます。これはかなり重要な性質で、たとえばべき乗
と前から順に計算しても、
と計算しても結果は同じとなり、楽に計算できる方法を選べます。
2番目の性質を「演算に対する単位元1がある」といいます。
3番目の性質は「○倍する」というある操作に対して、それをキャンセルする操作があるという意味です。
暗号では暗号化した後、元の値を復号しなくてはいけません。そのときにキャンセルに相当する操作がよく使われます。
群の定義
前節の性質を定式化します。
集合
- (結合法則)
,a ,b に対してc \in G が成り立つ。f(f(a,b),c)=f(a,f(b,c)) - (単位元の存在)ある
が存在し、任意のe \in G に対してa が成り立つ。f(a,e)=f(e,a)=a - (逆元の存在)任意の
に対して、あるa \in G が存在し、r \in G が成り立つ。このf(a,r)=f(r,a)=e をr の逆元といい、a と書く。a^{-1}
(ab)c = a(bc). ae = ea = a. ar=ra=e.
となります。
集合や演算の中身を気にせず、上記性質を満たすものがあればそれを全て同じ群という言葉で扱おうという意図です。
なお、単位元はある特定の要素が全ての要素に対して成り立つ性質、逆元は、要素それぞれに対して決まり、全ての要素に対して逆元の存在を要請することに注意してください。
群の例
0以外の分数の集合
実数値の2x2行列で逆行列が存在するもの全体の集合
演算を行列の掛け算、単位元は単位行列、逆元は逆行列とすると群となります(ここで詳細は確認しません)。この場合、行列の積
整数の集合 ℤ
整数の集合に演算を普通の掛け算、1を単位元とすると結合法則と単位元の性質は満たします。しかし、
代わりに演算を掛け算ではなく足し算(
f(f(a,b),c)=f(a+b,c)=(a+b)+c=a+(b+c)=f(a, b+c)=f(a,f(b,c)). f(a,0)=a+0=0+a=f(0,a). a+(-a)=(-a)+a=0.
このように群は集合と演算のセットで決まります。同じ集合であっても演算の決め方で群になったり、ならなかったりします。
なお、
可換群
普段扱う掛け算は順序を入れ換えても同じです。
しかし、前節の行列の群の例のように、群の定義に演算の順序を入れ換えても同じという性質(これを可換という)は入っていません。
群の全ての要素について
楕円曲線の点の集合
楕円曲線上の点の集合
なお、先程の整数の加法群と逆に、楕円曲線の点
楕円曲線の点の集合を群として扱うとき、加法表記と乗法表記のどちらを採用するかは論文や本によって異なるので混乱しないようにしてください。
ただ、その違いは単なる言葉や表記の問題です。本質は演算が群の定義を満たすかどうかです。
べき乗と離散対数問題
群の結合法則により、
加法群としての楕円曲線の点
一般に(可換群とは限らない)群
逆に「群
群
しかし、楕円曲線のパラメータを適切に選んだとき、現在のコンピュータではDLPを解くのは不可能です(と信じられています)。
DH鍵共有
離散対数問題が困難な群
-
の要素G でg のDLPが困難なものを選び固定して公開する。g^n - アリスは秘密の整数
を選び、a を計算してボブに渡す。g^a - ボブは秘密の整数
を選び、b を計算してアリスに渡す。g^b - アリスはボブがからもらった
をg^b 乗してa を計算する。({g^b})^a=g^{ab} - ボブはアリスがからもらった
をg^a 乗してb を計算する。({g^a})^b=g^{ab}
暗号で使われるDH鍵共有
新しいDLP困難な群を構成できれば新しいDH鍵共有ができます。
昔は大きな素数
量子コンピュータが実用化されても破れないとされている鍵共有方式の一つにCSIDHという方式があります。これはDLPが困難な群を用いているのではないのですが、楕円曲線に対する作用と呼ばれるある種の計算が似た性質を持つことを利用しています。
まとめ
掛け算を抽象化した群や群に対する離散対数問題DLPという概念を紹介しました。
DLPが困難な群を用いるとDH鍵共有を構成できます。楕円曲線暗号の点集合に対するECDH鍵共有が主流ですが、より安全な群の構成も研究されています。
Discussion