55
’08年度特別講義X 暗号技術の発展 古典暗号からIDベース暗号まで ‘08.09.01 有田 正剛 1

暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

’08年度特別講義X

暗号技術の発展

古典暗号からIDベース暗号まで

‘08.09.01有田正剛

1

Page 2: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

暗号k k :鍵k1,k2 : 鍵E : 暗号化アルゴリズムD : 復号アルゴリズム

k1 m k2

送信者 c 受信者

c ← Ek1(m) m ← Dk2(c)

m

Eve

? 2

Page 3: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

目次目次

1. 古典暗号ブ ク暗号2. ブロック暗号

3. 公開鍵暗号4. IDベース暗号

3

Page 4: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

1 古典暗号1. 古典暗号

– コンピュータのない時代の暗号

4

Page 5: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

換字暗号方式

鍵• 鍵π : アルファベット{A, B, C, ・・・, Z}の並べ替え

例えば π(A) = V, π(B) = S, π(C) = G, ・・・, π(Z)=U例えば π(A)   V, π(B)   S, π(C)   G,  , π(Z) U

• 暗号化 // x ∈ {A, B, C, ・・・, Z}Eπ(x) = π(x)   

• 復号 // y∈ {A B C ・・・ Z}• 復号 // y ∈ {A, B, C, ・・・, Z}Dπ(y) = π‐1(y)

5

Page 6: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

シフト暗号

鍵• 鍵K ∈ {0, 1, 2, ・・・, 25}

• 暗号化 // x ∈ {0,1, ・・・25}EK(x) = (x + K) mod 26 “cryptography”

• 復号 // y ∈ {0,1, ・・・25}D (y) (y K) mod 26

yp g p y

DK(y) = (y ‐ K) mod 26 K=3

“FUBWRJUDSKB”

6

Page 7: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

転置暗号方式

• 鍵m : 正の整数

{1 2 }の並べ替え(転置)π : {1, 2, ・・・,m}の並べ替え(転置)

• 暗号化暗号化Eπ(x1, ・・・, xm) =  (xπ(1), ・・・, xπ(m))

• 復号Dπ(y1, ・・・, ym) = (yπ^{‐1}(1), ・・・, yπ^{‐1}(m))

7

Page 8: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

転置暗号の例鍵

“cryptography”

C R Y P

O GT O G R

A P H Y

“CTAROPYGHPRY”

8

Page 9: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

2 ブロ ク暗号2. ブロック暗号

–コンピュータを駆使して換字に転置

9

Page 10: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

ブロック暗号

• ブロック暗号 =  効率的に計算可能なE : {0 1}l x {0 1}n → {0 1}nE : {0,1}l x {0,1}n → {0,1}n

ただし、各第一引数kについて Ek(・)は置換(全単射)

• 鍵:  k ←$ {0,1}l

暗号化: c ← Ek(m)       (m ∈ {0,1}n)復号: m← E ‐1(c) (c∈ {0 1}n)復号: m ← Ek 1(c)         (c ∈ {0,1}n)

•理想は各Ek(・)がランダム置換入力が1ビットでも変化するとその影響は全ての出力ビットに理想は各 k( )がランダム置換 その影響は全ての出力ビットに及ぶ。

ランダム置換と区別がつかないような、ランダム置換と区別がつかないような、効率的な疑似ランダム置換をどのように作ればよいか?

換字と転置を繰り返す10

Page 11: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

DES

• E: {0, 1}56  x  {0,1}64 → {0,1}64

• Ek(m): // m ∈ {0,1}64

(k1 ・・・ k16)← KeySchedule(k) // ki ∈ {0 1}48(k1, ,k16) ← KeySchedule(k)       // ki ∈ {0,1}m ← IP(m)L0∥R0 ← m // |L0|=|R0|=320 0 0 0for r = 1 to 16 do

Lr ← Rr‐1; Rr ← f(kr , Rr‐1) + Lr‐1← IP 1(L ∥R )c ← IP‐1(L16∥R16)

return c

※ fがどんな関数であっても E (・)は必ず置換となる※ f がどんな関数であっても Ek( ) は必ず置換となる

11

Page 12: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

k1L0 R0

f

k2L1 R1

f

L1 R1

k33

f

L2 R2

12

L3 R3

Page 13: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

攪拌関数 ff(J, R): // |J| = 48, |R| = 32

R ← E(R); R ← R + JR ∥R ∥・・・∥R ← R R JR1∥R2∥・・・∥R8 ← Rfor r = 1 to 8 do

Ri ← Si(Ri)∥ ∥ ∥

32ビット入力 48ビット部分鍵

R J

R ← R1∥R2∥・・・∥R8R ← P(R)return R

E

48ビット

48ビット中間データ

S1 S2 S3 S4 S5 S6 S7 S8

P

32ビット

32ビット出力13

Page 14: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

SBoxSi : {0,1}6 → {0,1}4 ;  一種の換字暗号 (i=1,・・・6)

b1b6 b2b3b4b5

i { , } { , } ; 種 換 暗 ( , )

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

00 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7

0 0 2 3 0 6 2 9 3 8

S1

01 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8

10 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0

11 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 1311 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

1. 各Sボックスは4対1関数2. 各行は0から15を1回ずつとる

入力 ビ トを変えると出力 少なくとも ビ トが変わる3. 入力の1ビットを変えると出力の少なくとも2ビットが変わる。

ビ ビR0の1ビットが変化→ R1の2ビットが変化→ R2の4ビットが変化→・・・ “アバランシュ効果”

14

Page 15: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

S1

EP[Vaudenay05]Figure2.4 より

S2

S3

S4

f(J R)

S5R

f(J,R)

S6

S7

S8 15

Page 16: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

DESの問題点

ぎ• 鍵長 l = 56 は小さすぎる。

ブ も ぎ• ブロック長 n = 64 も短すぎる。

ボ 実装 向き• Sボックスの実装はソフトウェアに不向き

16

Page 17: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

AES• E: {0, 1}128  x  {0,1}128 → {0,1}128

• Ek(m):         // m ∈ {0,1}128

(k0,・・・,k10) ← expand(k)       // ki ∈ {0,1}128

← + ks ←m + k0for r = 1 to 10 do

s← S(s)s ← S(s)s ← shift‐rows(s)if r ≦ 9 then s ← mix‐cols(s)s ← s + kr

return ss: 128ビット = 16バイト

• ソフトウェアでも高速処理可能 s0 s4 s8 s12s1 s5 s9 s13s2 s6 s10 s14s3 s7 s11 s15

17

Page 18: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

GF(28)バイトは加減乗除が

有限体 GF(28)• 集合として G(28) = {0,1}8

• (a7 a6 a5 a4 a3 a2 a1 a0) + (b7 b6 b5 b4 b3 b2 b1 b0)

バイトは加減乗除ができる

(a7,a6,a5,a4,a3,a2,a1,a0) + (b7,b6,b5,b4,b3,b2,b1,b0)= (a7+b7,a6+b6,a5+b5,a4+b4,a3+b3,a2+b2,a1+b1,a0+b0)    ( + は XOR )

• (a7,a6,a5,a4,a3,a2,a1,a0) ・ (b7,b6,b5,b4,b3,b2,b1,b0)= (c c c c c c c c )= (c7,c6,c5,c4,c3,c2,c1,c0)

ここで7 6 5 4 3 2c7x7+c6x6+c5x5+c4x4+c3x3+c2x2+c1x+c0 

= (a7x7+a6x6+a5x5+a4x4+a3x3+a2x2+a1x+a0 ) ・ (b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0 )mod (x8=x4+x3+x+1)

例えば

x7 ・(x2 + 1) = x9 + x7 = x・(x4+x3+x+1) + x7

= x7 + x5 + x4 + x2 + x

例えば (10000000)+(00000101) = (100000101)

 x + x + x + x + x

∴ (10000000)・(00000101) = (101110110)18

Page 19: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

S1. 各siの、GF(28)の要素としての、逆数 si‐1 をとる。(ただし、0‐1=0とおく。)2. 各si‐1 に(ある)アファイン変換を施す。

s0 s4 s8 s12 s0‐1 s4‐1 s8‐1 s12‐1

1 1 1 1s1 s5 s9 s13

s2 s6 s10 s14

s1‐1 s5‐1 s9‐1 s13‐1

s2‐1 s6‐1 s10‐1 s14‐1逆数

s3 s7 s11 s15 s3‐1 s7‐1 s11‐1 s15‐1

s0’ s4 ’ s8 ’ s12 ’アファイン変換

s1 ’ s5 ’ s9 ’ s13 ’

s2 ’ s6 ’ s10 ’ s14 ’

19

s3 ’ s7 ’ s11 ’ s15 ’

Page 20: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

shift‐rows とmix‐colshift 横方向に転置

s0 s4 s8 s12s0 s4 s8 s12

shift‐rows :  横方向に転置

0

s1 s5 s9 s13

s2 s6 s10 s14

s5 s9 s13 s1

s10 s14 s2 s6

1

2

s3 s7 s11 s15s15 s3 s7 s113

mix‐cols: 縦方向に(換字しながら)転置

s0 s4 s8 s12

s1 s5 s9 s13

s0’ s4’ s8’ s12’

s1’ s5’ s9’ s13’

02 03 01 01

01 02 03 01x

s2 s6 s10 s14

s3 s7 s11 s15

s2’ s6’ s10’ s14’

s3’ s7’ s11’ s15’

01 02 02 03

03 01 01 02

x

20

Page 21: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

擬似ランダム置換の安全性定義

E = {Ek}k∈K : 置換族Ek: {0,1}n → {0,1}n;効率的に計算可能

オラクル

System 0 (理想) : [初期化] H ← 真のランダム置換[uに対して] v← H(u)[u に対して]  v ← H(u)

System 1 (現実) : 初期化

u v [初期化] k ← K[u に対して]  v ← Ek(u)

識別者

定義Eが安全な擬似ランダム置換(族)⇔

0 or 1

⇔どのような現実的な識別者Dに対しても

| Pr[D=1 | System0] – Pr[D=1 | System1] | が無視できるほど小さい

21

0 or  1 が無視できるほど小さい。

Page 22: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

DESやAESは疑似ランダム置換か?DESやAESは疑似ランダム置換か?

• AESも擬似ランダム置換であると証明されているわけではないい。

• 識別者のクラスを限定すると:識別者のクラスを限定すると:

– DESには線形解読が(理論的には)有効。差 解読 線 解読 能 安全– AESは差分解読や線形解読に対して(証明可能)安全。

22

Page 23: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

差分解読オラクル

識別者 ク を差分識別者 限定オラクル

System 0:  H(・) System 1:  Ek (・)

u

識別者のクラスを差分識別者に限定

差分識別者a,b

パラメータ: a,b∈ {0,1}n v, { , }

以下を(ある回数)繰り返す:u ←$ {0,1}n

オラクルに u を尋ねて v1 を得る。オラクルに u+aを尋ねて v2 を得る。if v2 = v1 + b

よいa,bをみつけることが暗号解析者の腕の見せどころ

output 1 and haltelse

continueブロック暗号E = {Ek}が差分解読に対して安全

output 0

ブ ック暗号E   {Ek} が差分解読に対して安全⇔

どのようなa,bに対する差分識別者a,bに対しても| Pr[差分識別者a b =1 | System0] –

23

| [ a,b | y ]Pr[差分識別者a,b =1 | System1] | 

が無視できるほど小さい。0 or  1

Page 24: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

線形解読オラクル

識別者 ク を線 識別者 限定オラクル

u

識別者のクラスを線形識別者に限定System 0:  H(・) System 1:  Ek (・)

線形識別者a,b,A

パラメータ: a,b∈ {0,1}n v, { , }A ⊆ {0, 1, 2, …}

c ← 0以下を(ある回数)繰り返す:

u ←$ {0,1}n

オラクルに u を尋ねて v を得る。

よいa,b,Aをみつけることが暗号解析者の腕の見せどころ

if u ・ a  =  v ・ bc ← c + 1

if A 1 l 0 ブロック暗号E = {E }が線形解読に対して安全if c ∈ A, output 1 else output 0 ブロック暗号E = {Ek} が線形解読に対して安全⇔

どのようなa,b,Aに対する線形識別者a,b,Aに対しても| Pr[線形識別者 b A =1 | System0] –

240 or  1

| Pr[線形識別者a,b,A 1 | System0] Pr[線形識別者a,b,A =1 | System1] | 

が無視できるほど小さい。

Page 25: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

識別利得 ⇒ 鍵の情報

E = {Ek}k∈{0,1}^l : ラウンド数 rのブロック暗号E‐ = {E‐k}k∈{0,1}^l : Eから 終ラウンドを除いたブロック暗号、ラウンド数 r‐1

ある a,bがあって、 E‐に対する識別者a,bの識別利得が大きいとする。次のようにして、 終ラウンド鍵krを求めることができる。r

1. Ekの(平文、暗号文)対を集める:(Xi (Yi L Yi R))(Xi, (Yi,L, Yi,R))

2. K ← krのランダムな推測値Zi L = f(K, Yi L) + Yi Ri,L f(K, Yi,L) Yi,RZi,R = Yi,L /*  Kが正しければ、 (Xi, Zi)はE‐の(平文、暗号文)対 */

Zi = (Zi L, Zi R) を Xiに対する応答として、識別者a b を実行し、i ( i,L, i,R) i a,bその識別利得K を求める。

3. 識別利得Kの大きな K を kr の推測値として出力。

25

Page 26: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

k

XL XR

k1fEE‐‐

k2L1 R1

f

L1 R1

f

L2 R2

K

26

YL YR

Page 27: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

3 公開鍵暗号3. 公開鍵暗号

–計算の非対称性の発見

27

Page 28: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

公開鍵暗号

• 鍵生成アルゴリズムG: (pk sk) ← G(k)

アルゴリズムの3つ組(G,E,D)

• 鍵生成アルゴリズムG:   (pk, sk)  ←  G(k)• 暗号化アルゴリズムE: c ← Epk(m)• 復号アルゴリズムD:m ← Dsk(c)

m

ただしm = Dsk(Epk(m))).pk, c からmを求めることは困難(一方向性)

pk 

S

m sk 

p

c

Rc ← Epk(m)

m ← Dsk(c)

m  28

Page 29: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

たとえば・・・

N = pq : 大きな2つの素数の積pqe: φ(N)=(p‐1)(q‐1)と互いに素な整数

( ) ( { })y = RSAe,N(x) = xe mod N          (x ∈ {0,1,・・・,N‐1})

は一方向関数と信じられている(RSA仮定)は 方向関数と信じられている(RSA仮定)。

すなわち、y,e,Nを与えられても y = RSAe,N(x) となる x は求められない。

d N 整数 を整数Nでわ た余り

29

a mod N: 整数aを整数Nでわった余り。

Page 30: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

RSA 関数とRSA仮定N=0

1N‐1

N1

• xから

• N = pqy = RSAe,N(x) = xe mod N

• x からy = xe mod N となるyを

求めるのは容易

• y からy = xe mod N となる x を求めるのは困難

xy

求めるのは困難

y(=xe mod N)

x から出発して何周して にな たのか?

30

何周してy になったのか?偶数回それとも奇数回?

Page 31: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

Nが素数のときは・・・( ) d

• Nが素数pのときは、yから y = RSA (x)となる xを求

y = RSAe,N(x) = xe mod N

Nが素数pのときは、y から y   RSAe,p(x) となる x を求めるのは容易。

φ(p) = p – 1, d = e‐1 mod (p‐1)RSAd p = RSAe p

‐1RSAd,p  RSAe,p

• N = pqのときもRSAd N = RSAe N‐1  ( d = e‐1 mod φ(N) )。N   pqのときもRSAd,N  RSAe,N ( d   e mod φ(N) )。

ところが、φ(N) = ?φ(N)   ?

が分からない。(p, qを知っていれば分かる。)が分からない。(p, qを知っていれば分かる。)31

Page 32: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

RSA暗号

•鍵生成アルゴリズム G:

多項式時間アルゴリズムの3つ組(G,E,D)

•鍵生成アルゴリズム G:   p, q ←  異なるランダムな素数;N = p q;e: φ(N) (p 1)(q 1)と互いに素な整数;e: φ(N)=(p‐1)(q‐1)と互いに素な整数;d ← e‐1 mod φ(N)pk = {N,e},  sk = {N,d}

•暗号化アルゴリズム E:Epk(m) = me mod N           // = RSAe,N(m)p ,

•復号アルゴリズム D:Dsk(c) = cd mod N             // = RSAd N(c)sk( ) // d,N( )

• RSAd N = RSAe N‐1 [ オイラーの定理 ]d,N e,N [オイラ の定理 ]

• RSA仮定: RSAe,N は一方向関数32

Page 33: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

素数を法としたべき乗数

p: 素数q: p‐1 を割る素数q pg : mod p で位数がqの整数

全て異なる巨大な数の(算法つき)集合

{1, g mod p, g2 mod p, …., gq‐1 mod p}<p, q, g> 指定

全て異なる巨大な数の(算法つき)集合(gq mod p = 1)

43 7 4

例例

<p=43, q=7, g=4>g0 mod p = 1,  g mod p = 4g2 mod p = 16,  g3 mod p = 21g4 mod p = 41,  g5 mod p = 35        g6 mod p = 11

33<p=43, q=7, g=4> {1,4,16,21,41,35,11}

Page 34: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

CDH仮定p: 素数q: p‐1 を割る素数g : mod pで位数がqg : mod p で位数がq

<p, q, g>に対してp, q, g に対して

CDH仮定

a, b  ←$ {1,2,・・・,q}どんな効率的なアルゴリズムも、ga mod p と gb mod p を与えられて、gab mod p を求めることはできない。与えられて、g mod pを求める とはできない。

• <p=43, q=7, g=4>g3 mod p 21 g5 mod p 35 g15 mod p 4

??

34

g3 mod p = 21,  g5 mod p = 35  g15 mod p = 4

Page 35: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

DDH仮定<p, q, g>に対して

b $ { }

DDH仮定

a, b, c  ←$ {1,2,・・・,q}どんな効率的なアルゴリズムも、ga mod p と gb mod p を与えられても、gab mod p と gc mod p を区別できない。

すなわち

ga mod p と gb mod p を教わっても gab mod p はまったく分からない。(情けない話ではある)

すなわち、

(情けな 話ではある)

• <p=43, q=7, g=4>

35

<p 43, q 7, g 4>(21, 35, 4)  OR (21, 35, 11)  どちらが正しい?

Page 36: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

エルガマル暗号

•鍵生成アルゴリズム G:

多項式時間アルゴリズムの3つ組(G,E,D)

•鍵生成アルゴリズム G:   p, q, g ← 素数p,qと整数g、ただし q | p‐1, gq = 1 mod px ←$ {1, ・・・,q‐1}, y ← gx mod ppk {p g q y} sk {p g q x}pk = {p,g,q,y},  sk = {p,g,q,x}

•暗号化アルゴリズム Epk(m):$ { }r ←$ {1, ・・・,q‐1}

c = (gr mod p, myr mod p)  

•復号アルゴリズム Dsk(c1,c2):c2 / c1x mod p

• DDH仮定のもとでIND‐CPA安全

36

Page 37: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

エルガマル暗号のからくり( r r)

yr = gxry = gxc = (gr, myr)  

y g

EDec

r

Enc

rgx

gr

xCDH仮定

gr

gx

37

Page 38: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

RSA暗号に対する攻撃

“賛成” pk={n,e} 

m ∈ {“賛成”,“反対”}

S

sk={n,d} 

RRc = “賛成”e mod n

c

“賛成”← cd mod npk={n e}

A

pk={n,e} 

“賛成”

c1 = “賛成”e mod nc2 = “反対”e mod n c = c ならば“賛成”

RSA暗号はな

賛成

c = c1 ならば 賛成

else “反対”IND‐CPAでない。

“賛成” 38

Page 39: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

識別不可能性 (IND‐CPA)(G, E, D): 公開鍵暗号

オラクル

System 0 : [初期化]  (pk,sk) ← G[(m0,m1)に対して] c*← Epk(m0)[(m0,m1)に対して]  c  ← Epk(m0)

System 1 : 初期化[初期化]  (pk,sk) ← G

[(m0,m1)に対して]  c* ← Epk(m1)pk m0,m1 c*

識別者定義

EがIND‐CPA安全

0 or 1

が C 安全⇔どのような現実的な識別者Dに対しても

| Pr[D=1 | System0] – Pr[D=1 | System1] | 

39

0 or  1 | [ | y ] [ | y ] |が無視できるほど小さい。

Page 40: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

エルガマル暗号に対する攻撃

m=10  pk={p,g,q,y} 

m ∈ {(ある商品に対する)注文個数}

S

sk={p,g,q,x} 

( )

Rc = (gr, 10yr)

c=(c1,c2)

pk={p g q y}1000 ← c2 /c1x mod n

A

pk={p,g,q,y} 

「本当に1000個も注文するの?」

c2’ = c2 x 100「本当に1000個も注文するの?」

c’=(c1,c2’)エルガマル暗号は

m = 1000/100 = 10エルガマル暗号はIND‐CCAでない。(DDH仮定のもとでIND‐CPA)40

Page 41: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

識別不可能性 (IND‐CCA)(G, E, D): 公開鍵暗号

オラクル

System 0 : [初期化]  (pk,sk) ← G[(m0,m1)に対して]  c* ← Epk(m0)に対して[c に対して] m ← Dsk(c)    (c ≠ c*)

System 1 : [初期化] (pk sk)← G

pk m0,m1

c*c m c m

[初期化]  (pk,sk) ← G[(m0,m1)に対して]  c* ← Epk(m1)[c に対して] m ← Dsk(c)    (c ≠ c*)

識別者

定義EがIND‐CCA安全

(*) (*)

識別者

0 or 1

が CC 安全⇔どのような現実的な識別者Dに対しても

| Pr[D=1 | System0] – Pr[D=1 | System1] | 

41

0 or  1 | [ | y ] [ | y ] |が無視できるほど小さい。

Page 42: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

ハッシュ関数

効率的な(圧縮)関数H: {0 1}*→ {0 1}hH: {0,1}* → {0,1}h

Hが衝突困難:Hが衝突困難:どのような現実的なアルゴリズムもH(x)=H(y)となるx, y (x≠y) を見つけることはできない。

ランダムオラクルモデル:プログラム中のすべてのz ← H(x) を

ダムオ ク 問 合わせに置き換えるランダムオラクルへの問い合わせに置き換える。

H←$ { H: {0 1}*→ {0 1}h }プログラム

.....z ← H(x)

H ← { H: {0,1}  → {0,1} }

z = H(x)x

プログラム

.....( )

z

42

Page 43: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

OAEP+f : {0,1}k → {0,1}k : 置換, g = f ‐1

k0+k1<k, 2‐k0,2‐k1: negligible, n = k‐k0‐k1G : {0 1}k0 → {0 1}n H’ : {0 1}n+k0 → {0 1}k1 H : {0 1} n+k1 → {0 1}k0G : {0,1}k0 → {0,1}n, H  : {0,1}n k0 → {0,1}k1, H : {0,1} n k1 → {0,1}k0

x∈ {0 1}ny g

EE

x ∈ {0,1} f

w = g(y)DecDec

r ←$ {0,1}k0

s = (G(r) + x) ∥ H’(r∥ x)H( )

EncEnc s ∥ t = w

r = H(s) + tt = H(s) + rw = s ∥ ty = f(w)

x = G(r) + s[0..(n‐1)]c = s[n..(n+k1‐1)]

∥?

c = H’(r∥ x):x

elsej t

reject

f がone‐wayならばOAEP+(f)はランダムオラクルモデルのもとでIND‐CCA 43

Page 44: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

OAEP+の暗号文

x rx r暗号文の正当性をチェックするための冗長な情報

x + G(r) H’(r∥x) H(s) + r( ) ( ∥ ) ( )

s

f

r やsを知らずにな をy 正当な暗号文を

作ることはできない。

44

Page 45: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

FO変換π = (K, E, D), H = {Hn}nπ’ = (K’, E’, D’) = FOH(π):

K’(1k) :(pk, sk) ← K(1k), H ←$ Hk

pk’ = (pk, H), sk’ = skp (p , ),

E’(pk’,m):r←$ R

ランダムオラクルモデルのもとでπ: IND‐CPA ∧ γ‐uniformr ← R

m~ = m∥rc = Epk(m~; H(m~))

∧ γ⇒ π’ : IND‐CCA

D’(sk’,c):m~ = Dsk(c)∥ ~

γ(x,y) =def Pr[ γ←$ R : y = Epk(x;r)]

m∥r  = m~

c =? Epk(m~; H(m~)) :m

π is γ‐uniform if∀x,y, γ(x,y) ≦ γ

else⊥ 45

Page 46: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

4 IDベ ス暗号4. IDベース暗号

46

Page 47: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

IDベース暗号

• (params, master‐key)  ←  Setup(k)

E = (Setup, Extract, Enc, Dec)

(params master key) ← Setup(k)

鍵配布センター

• dID ← Extractparams(master‐key, ID)• c← Encparams (ID, m)• m ← Decparams (dID, c)

(params, master‐key)  ←  Setup(k)

IDdID ← Extractparams (master‐key, ID)params ( ID, )

params ID  m 

ID params

送信者

paramsdIDparams

送信者

受信者 (ID)c ← Encparams(ID, m)c

m ← Decparams(dID, c)

m  47

Page 48: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

識別不可能性 (IND‐ID‐CPA)

S 0

(Setup, Extract, Enc, Dec):  IDベース暗号

System 0 : [初期化]  (params,master‐key) ← Setup[(m0,m1, ID*):]  c* ← Encparams(ID*, m0)[ID ] d← E t t ( t k ID) (ID ≠ ID*)

オラクル

[ID:]   d ← Extractparams(master‐key, ID)    (ID ≠ ID*)

System 1 : [初期化] ( t k )← S tparams

m0,m1,ID*

c*ID d ID d

[初期化]  (params,master‐key) ← Setup[(m0,m1, ID*):]  c* ← Encparams(ID*, m1)[ID:]   d ← Extractparams(master‐key, ID)    (ID ≠ ID*)

識別者

定義EがIND‐ID‐CPA安全

(*) (*)

識別者

0 or 1

が C 安全⇔どのような現実的な識別者Dに対しても

| Pr[D=1 | System0] – Pr[D=1 | System1] | 

48

0 or  1 | [ | y ] [ | y ] |が無視できるほど小さい。

Page 49: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

Bilinear maps

G1, G2: 素数位数q の群

e : G1 x G1 → G2 が bilinear mapとは1 (Bilinear) e(aP bQ) = e(PQ)ab (∀PQ∈G ∀a b∈ Z)1. (Bilinear)    e(aP, bQ) = e(P,Q) (∀P,Q∈G1,∀a,b∈ Z)2. (非退化)     e(P,P) ≠ 1                         (∀P(≠0)∈G1)3. (計算可能)   e(P,Q)は効率的に計算可能。(∀P,Q∈G)

楕円曲線上のWeil paringを用いて実現。楕円曲線上のWeil paring を用いて実現。

49

Page 50: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

BF暗号 [BF01]bili 版のエルガマル暗号

BF = (Setup, Extract, Encrypt, Decrypt):

bilinear map版のエルガマル暗号

Encrypt(params, ID, m):QID = H1(ID)

Setup(k):<q, G1, G2, e> ← G(k) QID  H1(ID)

r ←$ Zq*gID = e(QID, Ppub)c = < rP, m + H2(gIDr)>

q, 1, 2, G( )P ←$ G1, s ←$ Zq*, Ppub = s PChoose

H1 : {0 1}*→ G1* c rP, m H2(gID )

Decrypt(params, c=<U,V>, dID):m = V + H2(e(dID, U))

H1 : {0,1}  → G1H2 : G2 → {0,1}n

params = <q,G1,G2,e,n,P,Ppub,H1,H2>master key = s 2( ( ID ))master‐key = s

Extract(ID, params, s):Q H (ID) ( G *)QID = H1(ID) (∈G1*)dID = s QID ランダムオラクルモデルにおいて

BF暗号はGに対するBDH仮定のもとでGIND‐ID‐CPA安全。

50

Page 51: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

BDH仮定

G1, G2: 素数位数q e : G1 x G1 → G2; bilinear map P∈ G1*P ∈ G1

<e, q, P>に対して, q, に対して

BDH仮定

a, b, c  ←$ {1,2,・・・,q}どんな効率的なアルゴリズムも、aP, bP, cPを与えられて、e(P,P)abc を求めることはできない。与えられて、e(P,P) を求める とはできない。

51

Page 52: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

BF暗号のからくりc = < U, m + H2(gIDr)>

gIDr = e(P,P)ksrPpub = sPU = rP

c U, 2(gID )

gID e( , )

EDec

U = rPQID = kP

k P ( d )

Enc

rkP

ksP (=dID)rPBDH仮定

sP

rPkP

自由度 ザ

52sP 自由度k ↔ ユーザID

Page 53: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

今後の暗号について

• ランダムオラクルモデルからの脱却b l の意味• bilinear map の意味

• 各種多機能暗号• 各種多機能暗号– 閾値復号、放送暗号、属性ベース暗号など– 暗号プロトコルの構成部品としての機能

• より高度または繊細な安全性フ ワ ドセキ リテ アダプテ ブセキ リテ–フォワードセキュリティ、アダプティブセキュリティ

–量子計算機への対応

53

Page 54: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

記号

• {0,1}n : nビットの文字列全体{0,1}* : 全ての有限長の文字列全体

• k ←$ {0,1} n: nビットの文字列kをランダムに選択

• z = x + y : z は x と y との桁ごとの排他的論理和0 + 0 = 1 + 1 = 0, 0 + 1 = 1 + 0 = 10   0   1   1   0, 0   1   1   0   1

• y ← A(x) : 入力xでアルゴリズムAを実行し、出力y を得た。

• Pr[E] : Eがおきる確率Pr[E | C] :条件Cのもとで Eがおきる確率Pr[E | C] : 条件Cのもとで、Eがおきる確率

• a mod N: 整数aを整数Nでわった余り。

54

a mod N:整数aを整数Nでわった余り。

Page 55: 暗号技術の発展 - lab.iisec.ac.jplab.iisec.ac.jp/~arita/pdf/x08.pdf · SBox S i: {0,1}6 → {0,1}4; 一種の換字暗号 (i=1,・・・6) b 1 b 6 b 2 b 3 b 4 b 5 {,} {,} 換暗(,

参考文献

A t S l “P bli K C t h ” S d Editi S i 1996

主なもの

• Arto Salomma, “Public‐Key Cryptography”, Second Edition, Springer,  1996

• [Vaudenay05] Serge Vaudenay,  “A Classical Introduction to Cryptography: Applications for Communications Security” Springer 2005Applications for Communications Security ,  Springer, 2005

• J Katz Y Lindell "Introduction to Modern Cryptography:• J. Katz, Y. Lindell,  Introduction to Modern Cryptography: Principles And Protocols", Chapman & Hall/Crc, 2007. 

• [BF01] D Boneh M Franklin “Identity‐Based Encryption from the Weil Pairing”[BF01] D.Boneh, M.Franklin,  Identity Based Encryption from the Weil Pairing ,CRYPTO 01, LNCS 2139, pp. 213‐229.

55