5回目

情報セキュリティ
第5回
ElGamal暗号
脅威と暗号技術
セキュリティに対する脅威
盗聴
(秘密が漏れる)
脅かされる特性
暗号技術
共通鍵暗号
機密性
公開鍵暗号
改竄
(情報が書き換えられる)
正真性
一方向ハッシュ関数
なりすまし
(正しい送信者のふりをする)
認証
メッセージ認証コード
否認
(後から私じゃないと言う)
否認不可能性
デジタル署名
公開鍵暗号系

公開鍵暗号系
受信者
送信者
非対称暗号系とも呼ぶ。
平

公開鍵と秘密鍵がある。

鍵配送問題を解決する。
文
入力サイズ(ビット数)が大きいと解く
m
のが困難な問題を利用する

離散対数問題(ElGamal暗号)

素因数分解問題(RSA暗号)
公開する

ナップサック問題



暗
号
化
復
号
暗号文c
敵
秘密鍵SK
公開鍵PK
3っのアルゴリズム



鍵生成アルゴリズムG

公開鍵PKと秘密鍵SKを生
成する。
暗号化アルゴリズムE

暗号文cを生成する。

c=EPk(m)
復元アルゴリズムD

暗号文cを復号する。

m=DSk(c)
平
文
m
鍵生成アルゴリズムG
平文
m
暗号化アルゴリズムE
公開鍵PK
秘密鍵SK
暗号文
c
公開鍵PK
暗号文
c
復元アルゴリズムD
秘密鍵SK
平文
m
合同式
 合同式: a≡b (mod N)




整数aとbの差(a-b)が正整数N
の倍数であるとき、a≡b (mod N)
と書く。
(a mod N)=(b mod N)
⇔ a≡b (mod N)
a=qN+r ⇔ a≡r (mod N)
例: 5≡2 (mod 3)
 例:9x13≡2x6 (mod 7)
確認1(差が7の倍数か?)
 9x13-2x6=117-12=105
(a-b) mod N = 0  105÷7=15余り0
 確認2(それぞれ7で割った余りが
一致するか?)
 9x13÷7=16余り5。従って、
(a mod N)
9x13≡5 (mod 7)
= (b mod N)
 2x6÷7=1余り5。従って、
2x6≡5 (mod 7)

 同一の法を有する合同式
は、+、-、×に限り、等
式(=)と同様に計算出来
る。
a≡a’ (mod N)かつb≡b’ (mod N)
⇒ (a±b)≡(a’±b’) (mod N)、
(ab)≡(a’b’) (mod N)
 例1:
9≡2 (mod 7), 13≡6 (mod 7)
⇒ 9+13≡2+6 (mod7)
9x13≡2x6 (mod7)
 例2: 2250 (mod7) を求め
よ。
2250≡(9+13)50≡(2+6)50≡150 ≡1
2250を計算しない!!
(2+6) mod 7 = 1
mod Nの集合(ZN)
 mod Nの集合(Nで割った余りの
集合)


xとNは互いに素
 Z*N={x|1≦x≦N-1, gcd(x,N)=1}

ZN={0,..,N-1}
 例: Z6={0,1,2,3,4,5}
a≡b (mod N)かつa∈ZN


⇒ a=(b mod N)

例: 2=(8 mod 6)
 -xとはx+(-x)≡0 (mod N) を満
たす数。


1+6≡0 (mod 7)より
6≡-1 (mod 7)
1≡-6 (mod 7)
N-x≡-x (mod N)
減算a-bは、
a+(-b)と考える
gcd(1,6)=1
gcd(2,6)=2
gcd(3,6)=3
gcd(4,6)=2
gcd(5,6)=1

ZNはZ*Nを含む
Z*N⊂ZN
gcdとは、最大公約数
例1: gcd(8,12)=4
8の約数: 8,4,2,1
12の約数:12,6,4,3,2,1
8と12の公約数:4,2,1
8と12の最大公約数 gcd(8,12)=4
例2
Z*6 ={1,5}
Z*7 ={1,2,3,4,5,6}
gcd(1,7)=1, gcd(2,7)=1
gcd(3,7)=1, gcd(4,7)=1
gcd(5,7)=1, gcd(6,7)=1
素数
 素数pとは:
 原始元(生成元)
 1とp以外に約数を持たない2
 素数pに対し、ordp(g)=p-1となる
以上の整数pを素数と呼ぶ。
gをZ*pの原始元という。
 例: 2,3,5,7,11,13,..
 定理5.3
 pが素数 ⇒ Z*p={1,2,..,p-1}
 pは素数、 gはZ*pの原始元とする。
 フェルマーの定理
ai=(gi mod p)、 i=0,..,p-2と置くと、
{a0,a1,..,ap-2}={1,2,..,p-1}
 pが素数の時、任意のa∈Z*p
p-1
に対してa ≡1 (mod p)が成
立つ。
mod 5の場合
 素数p=5の場合の確認
Z5={0,1,2,3,4}, Z*5={1,2,3,4}
24≡16≡1 (mod 5)
位数ord5(4)=2
定理5.3
4
3 ≡81≡1 (mod 5)
20≡1 (mod 5), 30≡1 (mod 5), 40≡1 (mod 5)
44≡256≡1 (mod 5)
21≡2 (mod 5), 31≡3 (mod 5), 41≡4 (mod 5)
 位数ordp(a)
22≡4 (mod 5), 32≡4 (mod 5), 42≡1 (mod 5)
 素数p、a∈Z*pに対し、ax≡1
(mod p)となる最小の正整数x
23≡3 (mod 5), 33≡2 (mod 5), 43≡4 (mod 5)
を位数ordp(a)と言う。
24≡1 (mod 5), 34≡1 (mod 5), 44≡1 (mod 5)
 フェルマーの定理より、
1≦ordp(a)≦p-1
3はZ*5の原始元
2はZ*5の原始元
 例: ord5(4)=2
フェルマーの定理
離散対数問題
 離散対数問題とは:

定理5.3

素数pが大きいと解くの
に膨大な時間がかかる
素数p、 Z*pの原始元g、 a∈Z*pに対し、
a=(gx mod p)
を満たすx∈{0,1,..,p-2}を求めよ。
離散対数xは必ず存在する。
 離散対数仮説とは:


p,g,a
x
整数だけを考えるから離散
次の式を満たす離散対数x∈{0,1,2,3}
を求めよ。
離散対数問題を多項式時間で解ける
アルゴリズムはない。
多項式の例:5x20+13x3
素数pが大きいと解けない。 指数関数の例:20x
 解の候補数(pは1024ビット)
離散対数問題を解く
アルゴリズム
原始元g=2の場合
答 x=0
答 x=1
答 x=3
答 x=2
1=(2x mod 5)
2=(2x mod 5)
3=(2x mod 5)
4=(2x mod 5)
|Zp-1|≒21024≒(103)102=10306
原始元でない4の場合
1GHzマシンが1クロックで集合Zp-1内の1つ候補
が解かどうかチェック出来るとする。全部チェック
する時間は10306/109x60x60x24x365=10290年。
1=(4x mod 5)
2=(4x mod 5)
3=(4x mod 5)
4=(4x mod 5)
答 x=0,2
答 存在しない
答 存在しない
答 x=1,3
答えが複数ある
ElGamal暗号
 鍵生成
 素数p、Z*pの原始元gを選ぶ。
 秘密鍵x∈Zp-1をランダムに選び、
y=(gx mod p)を計算する。
 Pk=(p,g,y)を公開鍵する。
 暗号化
 公開鍵Pk=(p,g,y)と平文m∈Zpから
次のように暗号文C=(c1,c2)を求め
る:
r∈Zp-1をランダムに選び、
c1=(gr mod p), c2=(myr mod p)
 復号
 秘密鍵Sk=xと暗号文C=(c1,c2)か
ら次のように平文mを復号する:
m=(c2c1p-1-x mod p)
復号の証明
c2c1p-1-x≡myrgr(p-1-x) ≡mgrxgr(p-1-x)
≡mgr(p-1) (mod p)
フェルマーの定理より、gp-1≡1(mod p)
従って、 c2c1p-1-x≡m (mod p)
受信者
素数p、原始元g、離散対数x
からy=gx mod pを計算
鍵生成アルゴリズムG
PKを公開
Pk=(p,g,y)
Sk=x
送信者
平文m
暗号化アル
ゴリズムE
暗号文
C=(c1,c2)
Pk=(p,g,y)
受信者
暗号文
C=(c1,c2)
復元アル
ゴリズムD
Sk=x
平文m
パラメータ選択
 素数pの選択
 pが大きい程、離散対数問題は難しくなる。
 p≧1024ビットであることが望ましい。
 p-1は大きな素数を少なくとも一つ持つようにする。
p-1が小さな素数の積の場合、離散対数問題が
解けてしまう。
 乱数rの選択
 rはメッセージ毎に変える。
 rを同じにすると、二つの平文m1とm2に対する暗号文
C1=(gr,m1yr)とC2=(gr,m2yr)から、m1yr/m2yr≡m1/m2
(mod p)が得られる。

m1が解るとm2が解る
1回目小テスト(理解度確認試験)
について
 実施日:第6回講義の日
 成績評価に関係する。
 持ち込み可
 教科書、パワーポイント参照可。
 試験内容
 条件付確率と順列の基礎
 第1回~5回講義内容
 共通鍵、公開鍵暗号系
 ブロック暗号の利用モード、排他的論理和
 ランダム置換族、ランダム関数族、擬似ランダム置換族
 合同式、位数、離散対数