8回目

情報セキュリティ
第8回
RSA暗号
脅威と暗号技術
セキュリティに対する脅威
盗聴
(秘密が漏れる)
脅かされる特性
暗号技術
共通鍵暗号
機密性
公開鍵暗号
改竄
(情報が書き換えられる)
正真性
一方向ハッシュ関数
なりすまし
(正しい送信者のふりをする)
認証
メッセージ認証コード
否認
(後から私じゃないと言う)
否認不可能性
デジタル署名
ユークリッドの互除法

ユークリッドの互除法とは


整数a,bの最大公約数gcd(a,b)
を求めるアルゴリズム
ユークリッドの互除法



互除法の例(gcd(10,7))
3=(10 mod 7)
0になるまで続ける
入力: 整数a, b (a≧b >0)
出力: 最大公約数gcd(a,b)
アルゴリズム:
0=(3 mod 1)

x←a, y←b
z=0
no
x←y, y←z
gcd(210,77)を互除法で解く
56=(210 mod 77)
21=(77 mod 56)
14=(56 mod 21)
7=(21 mod 14)
0=(14 mod 7)
以上から、gcd(210,77)=7
z = x mod y
yes
1=(7 mod 3)
割った数が
最大公約数
gcd(a,b) = y

約数を列挙して解く
210の約数: 1,2,3,5,6,7,10,14,15,21,
30,35,42,70,105,210
77の約数:1,7,11,77
以上から、gcd(210,77)=7
互除法の正しさ
aはbの倍数だから

以下を証明するすれば、互除法が正しいことが証明出来る:

0 = a mod b ⇒ gcd(a,b) = b

c = a mod b ⇒ gcd(a,b) = gcd(b,c)
互除法とgcdの関係
3=(10 mod 7)
gcd(10,7)
1=(7 mod 3)
=gcd(7,3)
0=(3 mod 1)
=gcd(3,1)
割った数が
最大公約数
c = a mod b ⇒ gcd(a,b)=gcd(b,c)
gcd(a,b)≧gcd(b,c)
c = a mod bより、a = qb + c と表すことが出来る
m=gcd(b,c) で割切れる
つまり、mはaとbの公約数(≦gcd(a,b))
gcd(a,b)≦gcd(b,c)
c = a mod bより、c = a - qb と表すことが出来る
m’=gcd(a,b) で割切れる
つまり、 m’はbとcの公約数(≦gcd(b,c))
拡張ユークリッドの互除法
入力
拡張ユークリッドの互除法
出力
整数a, b
但し、
a≧b >0
i←1
(a0,x0,y0) ← (a,1,0)
(a1,x1,y1) ← (b,0,1)
(d,x,y)
但し、
d = gcd(a,b)
d = ax+by
qi+1 = ai-1/ai
(ai+1,xi+1,yi+1)=(ai-1,xi-1,yi-1)-qi+1×(ai,xi,yi)
ai+1 = ai-1 mod ai
ai+1 = 0
no
yes
i ← i+1
(d,x,y)=(ai,xi,yi)
最大公約数dの
他にxとyを求める
拡張ユークリッドの互除法(例)
例: a=10, b=7の場合、d=10x+7yを満たす(d,x,y) を求める。
(ai, xi, yi) を ai = 10xi + 7yiと書くと等号が常に成立つ。
拡張ユークリッドの互除法の出力は、(d,x,y)=(1,-2,3)
i
0
1
2
3
4
qi
3=(10 mod 7)
1 (=10/7)
2 (=7/3)
3 (=3/1)
ai = 10xi + 7yi
10 = 10×1+7×0
7 = 10×0+7×1
3 = 10×1+7×(-1)
1 = 10×(-2)+7×3
0=0
a4 = a3 - 3×a4
= 0より、
アルゴリズム終了
10 = 10×1+7×0
- 7×1 = (10×0+7×1)×1
初期設定
3 = 10×1+7×(-1)
初期設定
7 = 10×0+7×1
- 3×2 = (10×1+7×(-1))×2
1 = 10×(-2)+7×3
x
d
y
1 = 10×(-2)+7×3
出力(d,x,y)=(1,-2,3)
拡張ユークリッドの互除法の正しさ
最大公約数の性質
d=gcd(a,b) ⇒ d=ax+byを満たす整数xとyが存在する
証明
拡張ユークリッドの互除法の中のaiの計算は、
ユークリッドの互除法と同じであるから、最終的
にai=d (=gcd(a,b))になる。
途中結果(ai = axi + byi )の等号は、以下の理由
から常に成立つ。
1. 等式の両辺に同じ数(qi+1)を掛けている。
2. 等式の両辺から同じ数を引いている。
有限体GF(p)
 乗法逆元


 有限体GF(p)
ay≡1 (mod N)を満たすyをaの乗
法逆元と呼ぶ。
1/a mod N、又は a-1 mod Nと書く。


 定理A: ay≡1 (mod N)となるyが
存在する ⇔ gcd(N,a)=1

 pが素数 ⇒ GF(p)は除算が可能
証明:最大公約数の性質から、
gcd(N,a)=1 ⇔ Nx+ay=1
⇔ ay≡1 (mod N)

 例 (1/7 mod 10) = 3
拡張ユークリッド
互除法
gcd(10,7)=1
⇔ 10×(-2)+7×3=1
⇔ 7×3≡1 (mod 10)
 例 2/7 mod 10
(2/7 mod 10)
= (2×1/7 mod 10)
= (2×3 mod 10)
=6
0で割ることを除いて四則演算が自由に
できる系を「体」と呼ぶ。
pが素数ならばGF(p)={0,1,..,p-1}は要
素数がp個の体である。
Z*p定義 

証明: pが素数ならば、0を除く全ての
GF(p)の要素がZ*pの要素である。
任意のa∈Z*pに対してgcd(a,p)=1である
から、定理Aより、全てのa∈Z*pに対して
(1/a mod p)が存在する。
Z*p={a|1≦a≦p-1, gcd(a,p)=1}
pが素数⇒Z*p={1,2,..,p-1}
2×y≡1 (mod 6)
 例 Z*5={1,2,3,4}とZ*6={1,5}
2×3≡1 (mod 5) 
から(1/2 mod 5)=3



1/1 mod 5 = 1
1/2 mod 5 = 3
1/3 mod 5 = 2
1/4 mod 5 = 4
を満たすyが存在
しない。
1/1 mod 6 = 1
1/2 mod 6 =存在しない
1/3 mod 6 =存在しない
1/4 mod 6 =存在しない
1/5 mod 6 = 5
素因数分解
 素因数分解とは


与えられた整数Nに対して、
N=p1×p2×…×pn
を満たす素数p1,p2,…,pnを求め
ること。
RSAの場合、
N=p×q
を満たす二つの素数pとqを求め
ることができるかが問題である。
 素因数分解仮説

定理B: 任意の整数aに対し、
ax≡a (mod p)が成立つ。但し、xは
x≡1 (mod (p-1))を満たし、pは素
数である。
(証明)

与えられた整数Nに対して、素
因数分解を求める効率的なア
ルゴリズムは見つけらないとす
る仮説。
つまり、a’∈Z*p
x≡1 (mod (p-1))より、x-1=q(p-1)と書
ける。
 フェルマーの定理より、任意のy∈Z*pに
対し、yp-1≡1 (mod p)。 a’∈Z ={0,1,..,p-1}
p
任意の整数aに対し、a’=(a mod p)と置く。
a’≠0ならば、
ax≡(a’)x≡(a’)q(p-1)+1≡a’≡a (mod p)となる。
一方、 a’=0ならば、
フェルマーの定理
(a)x≡a≡0 (mod p)。
以上から、 ax≡a (mod p)となる。

RSA暗号

鍵生成



敵が素因数分解
(N=p×q)出来る
と秘密鍵dを簡単
に計算出来る。


受信者
二つの素数pとqを生成する。
gcd((p-1)(q-1),e)≡1を満たすeを選ぶ。
拡張ユークリッドの互除法から、
ed≡1(mod (p-1)(q-1))を満たすdを求める。
(定理Aより、必ず求まる。)
公開鍵Pk=(N,e)を公開し、秘密鍵Sk=dと
する。但し、N=pqである。
暗号化: C=me mod N
復号: m=Cd mod N
べき乗は計算量が多い。
高速なべき乗計算方法
は前授業参照。
(復号出来る理由)
ed≡1 (mod (p-1)(q-1)) から、ed-1はp-1で割切
れる。
定理Bより、Cd≡(me)d≡m (mod p)。
同様に、Cd≡m (mod q)。
つまり、Cd-mはpの倍数であり、かつqの倍数で
もあるから、N=p×qの倍数である。
従って、Cd-m≡0 (mod N)となる。
素数pとqを選択し、
ed≡1を満たすdを求める
鍵生成アルゴリズムG
PKを公開
Pk=(N,e)
Sk=d
送信者
平文
m
暗号化ア
ルゴリズ
ムE
Pk=(N,e)
暗号文
C
C=me mod N
受信者
暗号文
C
復元ア
ルゴリ
ズムD
Sk=d
平文
m
m=Cd mod N
RSA暗号の安全性
 安全性
RSA暗号は素因数分解の困難さに基づく
 素因数分解からpとqが分かると、秘密鍵dを計算出来る
 RSA問題
e
 与えられた(N,e,C)から、C=m mod Nを満たすmを求める問題
 RSA問題は素因数分解よりも易しいかもしれない。
 RSA仮説
 RSA問題を「効率的」に解くアルゴリズムは存在しない
 素数の選び方
 pとqはともに512ビット以上であることが望ましい
 pとqの条件
 p-1は大きな素因数rを有する
 p+1も大きな素因数を有する
 r-1も大きな素因数を有する
