290 likes | 871 Views
RSA 暗号の多変数化と 連立代数方程式. NTT : コミュニケーション科学基礎研究所 國廣 昇. 1. 概略. 暗号の例 RSA 暗号 Koyama 暗号 RSA 暗号の多変数化 多変数公開鍵暗号の定義 暗号の特徴付け 数論の問題の難しさ 提案されている多変数公開鍵暗号の紹介 多変数 RSA 暗号(その1,その2) Schwenk-Eisfields 暗号 良い暗号とは?. 2. RSA 暗号. 公開鍵: 合成数 n (= pq ), 自然数 e , ただし gcd( e , φ( n ))=1
E N D
RSA暗号の多変数化と連立代数方程式 NTT: コミュニケーション科学基礎研究所 國廣 昇 1
概略 • 暗号の例 • RSA暗号 • Koyama暗号 • RSA暗号の多変数化 • 多変数公開鍵暗号の定義 • 暗号の特徴付け • 数論の問題の難しさ • 提案されている多変数公開鍵暗号の紹介 • 多変数RSA暗号(その1,その2) • Schwenk-Eisfields暗号 • 良い暗号とは? 2
RSA暗号 公開鍵: 合成数 n (=pq), 自然数 e, ただし gcd(e, φ(n))=1 秘密鍵: 素数 p, q, 自然数 d, ed≡1 mod φ(n) 平文: 自然数 M (1< M< n) 暗号化: C=Me mod n 暗号文: C 復号: M=Cd mod n Eulerの定理: Med ≡M (mod n)に注意 3
RSA暗号(つづき:攻撃法と別の復号法) 攻撃法1: n を素因数分解する. 攻撃法2: 方程式 xe ≡ C (mod n)を解く. Cの e 乗根を求めることは,n を素因数分解することと同程度難しいと強く予想されている. 別の復号法: 次の方程式を解く.簡単に可能. 4
Koyama暗号 公開鍵: n (=pq), 自然数 e, gcd(e,φ(n))=1 秘密鍵:素数 p,q,自然数 d, ed ≡1 (mod φ(n)) 平文: (M1, M2) , 1 < M1, M2< n 暗号化: 暗号文: (C, a) 復号: 5
Koyama暗号(つづき) 攻撃法1: n を素因数分解する. 攻撃法2: 連立代数方程式を解く. 攻撃法 3: Cのmod n における e 乗根を求める. 攻撃法2 と 3は同じ難しさであることが証明されている. 6
別の復号法 連立代数方程式を解く. どうやって解くか? Step1: edp ≡1 (mod p-1), edq≡1 (mod q-1) Step2: Cdp mod p, Cdq mod qを計算. Step3: (M1, M2) mod (p, q)を求める. Step4: 中国人剰余定理により (M1, M2)を求める 7
多変数公開鍵暗号の定義 公開鍵: 合成数 n, t 個の t 変数有理関数 f1(x1, ..., xt), f2(x1, ..., xt), ..., ft(x1, ..., xt) (f1, f2, ..., ft): S1 ⊆ (Z/nZ)t → S2 ⊆ (Z/nZ)t 秘密鍵: p, q 平文 (M1, M2, ..., Mt) ∈ S1 暗号化: 暗号文: (C1, ..., Ct) + 平文の識別子 8
多変数公開鍵暗号の定義(つづき) 復号:連立代数方程式を解く. mod p, mod qでの解を mod n の解にまとめる. 解が複数ある場合は,「識別子」を頼りに, 平文を求める. 9
暗号を特徴づけるのは? • 有理関数群 f1, f2, ..., ft をどのように設定するか? • 復号において,どのように連立代数方程式を解くか? • f1, f2, ..., ft は1対1の写像か?(識別子がいるか?) 例えば,Koyama暗号の場合, 10
攻撃法1: n を素因数分解する. 攻撃法2: 連立方程式をなんとかして解く. 暗号として意味を持つためには, 連立方程式が, • mod p, mod q で解けるが, • mod n では解けない. 11
数論の問題を解く計算量 • 大きい素数の積の素因数分解は難しい. • xe≡C (mod p)を解くことは,やさしい. • t 次の方程式を mod p 上で解くことは,t がlog pの多項式ならやさしい. • 2次以上の方程式を mod n で解くことは,n を素因数分解することと同じ位難しい. • 連立方程式 f(x)≡0, g(x)≡0 (mod n) が共通解をただ一つ持つならば,その共通解を求めることはやさしい. 12
数論の問題を解く計算量(つづき) • f(x)≡0 (mod n)を p,q を用いて解くには,一般に次の手順に従う. Step1: f(x)≡0 (mod p), f(x)≡0 (mod q) をそれぞれ解く. Step2: 中国人剰余定理により, mod nでの解を求める. • 一般に,連立代数方程式を解くには,Groebner基底や,終結式を使う.実時間で可能かどうかは,問題に依存する. 13
多変数RSA暗号その1 公開鍵: n, t 個のt 変数有理関数,ただし, f1(x1,..., xt)=(g(x1, ... ,xt))e, gcd(e,φ(n))=1 条件:与えれたu1, u2, ..., ut に対して,連立方程式 が解を持つならば, • 解は一意に定まる • 解は簡単に求めることができる. 14
多変数RSA暗号その1(つづき) 暗号化: Ci=fi (M1, M2, ..., Mt) mod n ( 1≦i≦t) 特に,C1=g(M1, ..., Mt)e mod n 復号:連立方程式 を解く. 15
多変数RSA暗号その1(つづき) 具体的には, Step1: ed≡1 (mod φ(n)) となる d を求める. Step2: C1d を求める. Step3: 連立方程式を解く. これは条件により,簡単に一意に解ける. 16
M1, M2, M3, ..., Mt-1, Mt 簡単に計算可能 g, f2, f3, ..., ft u, C2, C3, ..., Ct-1, Ct できる/できない u を e 乗 C1 (=ue), C2, C3, ..., Ct-1, Ct 直感的に言うと... 17
多変数RSA暗号その1(つづき) 攻撃法1: 連立方程式 攻撃法2: 方程式 xe≡C1 (mod n) を解く. 攻撃法3: n を素因数分解する. 攻撃法1と2は同じ難しさである. 18
多変数RSA暗号その2 連立方程式 の解は一意に定まり,なおかつ (x1, ..., xt) = (h1(u1, ..., ut), ... , ht(u1,..., ut)) で表される.h1, ..., ht は有理関数で値の 評価が簡単にできる. 19
多変数RSA暗号その2 (つづき) 暗号化: Ci=fi (M1, M2, ..., Mt) mod n (1≦i≦t) 特に,C1=g(M1, ..., Mt)e mod n 復号: Step1: ed≡1 (mod φ(n)) となる d を求める. Step2: C1d mod n を計算. Step3: Mi=hi(C1d, C2, ..., Ct) mod n (1≦i≦t) 20
Koyama暗号の場合は 21
Schwenk-Eisfields暗号 暗号化関数 fi を次のように定義 fi(x1, ..., xt)=(異なる i 個のxj の積の和) たとえば,t=3 の時, f1(x1, x2, x3)=x1+x2+x3 f2(x1, x2, x3)=x2x3+x3x1+x1x2 f3(x1, x2, x3)=x1x2x3 22
Schwenk-Eisfields暗号(つづき) 暗号化: C1= f1 (M1, M2, M3) = M1+M2+M3 mod n C2= f2 (M1, M2, M3) = M2M3+M3M1+M1M2 mod n C3= f3 (M1, M2, M3) = M1M2M3 mod n 暗号文: (C1, C2, C3) + 平文の識別子 復号: x2, x3を消去して x13-C1x12+C2x1-C3≡0 (mod p,q)を解く. 解は複数個あるので,識別子を用いて解を特定. 23
良い暗号とは? これまで提案されている全ての暗号は, 一変数の方程式を解く困難さに安全性の根拠を置いている. 暗号を2つに大別する. • RSA, Koyama, 多変数RSA暗号 • Schwenk-Eisfields暗号, (Rabin暗号) これは, • 識別子がいらないか/いるか? • 解く方程式がxe≡Cであるか/ないか? • 解が一意に決定するか/しないか? 24
識別子が無い方が良い. • どのように識別子を設定したらよいのか. • 識別子を送ることにより,解読されやすくなるかもしれない. • 解がたくさんあると解読されやすくなる. • 解を求めるのが面倒. 25
いろいろな攻撃(その1) 部分情報に関する安全性 多変数 RSA暗号その2を例に 定理1: 平文の一部分(例えば,M1)が攻撃者に知られた時,平文は全て解読される. 証明のスケッチ: を解く.これは,簡単に解ける. • 多変数RSA暗号その1, Schwenk-Eisfields暗号の場合には,同様の攻撃はできないようである. 26
いろいろな攻撃(その2) 定理2: 一回目に(M1, ..., Mt), 二回目に(M1’, ..., Mt’)を送ったとする.ただし,Mi=Mj’とする.攻撃者がこの事実を知っている時, 攻撃者は,全ての平文(M1, ..., Mt), (M1’, ... , Mt’) を求めることができる. 証明のスケッチ: 解くべき連立方程式は, 27
速度評価 多変数RSA暗号その2の場合 g(M1, ..., Mt), f2(M1, ..., Mt), ..., ft(M1, ..., Mt) の総計算時間を T1 e 乗演算に要する計算時間を T2 とする. 暗号化に要する計算時間は,T1+T2 RSA暗号を t 回実行する計算時間は, tT2 T1+T2 ≦t T2ならば,高速化が実現できる. 28
まとめ f1, f2, ..., ft を決定する⇒ (形式的に) 暗号を一つ提案 最低条件: • 公開鍵から,秘密鍵は知られない. • 公開鍵と暗号文から平文が知られない. みたしてほしい条件 • 暗号化,復号が(少なくともRSAより)高速. • 色々な攻撃に対して強い. 29