x

2013/06/04
強一方向性関数
•  計算が容易:
–  多項式時間アルゴリズム が存在して,任意の
A
f ( x)
入力 に対して は を出力する.
A
x
暗号基盤特論
ハードコア関数
(M43160)
•  逆計算が困難:
B
–  どんな確率的多項式時間アルゴリズム を考え
ても,以下の値は無視できる.
Pr[ B( f (U n ),1n ) ∈ f −1 ( f (U n ))]
5 June, 2013
小柴健史
1
2
一方向性,再考
一方向性関数とハードコアビット
f
•  を一方向性関数とする
•  以下で構成される関数を考える
• 
• 
• 
簡単 !
(多項式時間計算可能)
入力
x
f !(xb) def
= f (x)b
は依然として一方向性関数
f ʹ′
f ʹ′
の逆像の最下位ビットは100%分かる
出力
f (x )
難しい !
(多項式時間では計算できない)
とはいえ,すべてが分かるわけでは無い
どこかに計算が難しい部分がある!
3
Goldreich-Levin の定理
ハードコア述語
•  計算が容易:
f
•  を一方向性関数とする
•  以下で構成される関数を考える
–  多項式時間アルゴリズム が存在して,任意の
A
入力 に対して は を出力する.
A b( x )
x
f !(x, r) def
= ( f (x), r)
x = x1 x2 xn , r = r1r2 rn
•  予測が困難:
–  どんな確率的多項式時間アルゴリズム を考え
B
ても、以下の値は無視できる.
Pr[ B( f (U n ),1n ) = b(U n )] −
4
1
2
f
b
は のハードコア述語という!
5
f ʹ′
•  は依然として一方向性関数
このとき,
n
def
b(x, r) = x, r = ∑ xi ri mod 2
i=1
は のハードコア述語である
f ʹ′
6
1
2013/06/04
証明の方針
証明の方針
–  対偶を示す.つまり, がハードコア述語でない
b
とすると, は一方向性関数でない,ことを示す
f ʹ′
A
•  厳密に言うと,以下を示す.
–  ある確率的多項式時間アルゴリズム とある多
B
項式 が存在し,無限に多くの で
p
n
f (x), r
1
1
Pr[B( f !(U n ,U n! )) = b(U n ,U n! )] > +
2 p(n)
x, r
B
x!, r!
f ( x!), r!
–  このとき,ある確率的多項式時間アルゴリズム A
q
n
とある多項式 が存在し,無限に多くの で
Pr[A( f !(U n ,U n! )) ∈ f "−1 ( f "(U n ,U n! ))] >
1
q(n)
7
8
完全予測可能な場合
証明の方針
Pr[B( f !(U n ,U n! )) = b(U n ,U n! )]
= Pr[B( f (U n ),U n! ) = b(U n ,U n! )] = 1
A
f ( x)
•  から を求めたい!
x
–  について
i = 1,..., n
–  B( f (x),00100) = b(x,00100) = xi
i 番目
i 番目
ei
f (x), r
x, r
Bx
x, r
f (x), r
–  は所望の の逆像
f ( x)
x x x
1 2
n
9
問題設定の微修正
自己訂正
•  予測サブルーチンBx :{0,1} → {0,1}
1 ε
Pr[ Bx (r ) = x, r : r ← {0,1}n ] = +
2 2
x
•  目的は を用いて を求めること
Bx
•  B の答えは常に同じかもしれない
x ( z)
n
–  x, z = x, z ⊕ r ⊕ x, r
# n
& # n
&
x, z ⊕ r ⊕ x,r = %% ∑ xi (zi ⊕ ri ) mod 2 (( ⊕ %% ∑ xi ri mod 2 ((
$ i=1
' $ i=1
'
G = {s ∈{0,1} : Bx ( s) = x, s
n
B = {s ∈{0,1} : Bx ( s) ≠
n
–  1+ ε
G =
2
n
⋅2 ,
10
}
x, s }
n
= ∑ xi zi ⊕ xi ri ⊕ xi ri mod 2
i=1
n
1− ε n
B=
⋅2
2
= ∑ xi zi mod 2 = x, z
11
i=1
Bx (r )
Bx ( z )
B x ( z ⊕ r ) と の答えが共に正しければ の代替
12
2
2013/06/04
自己訂正
自己訂正
•  アルゴリズムSCx ( z )
SCx ( z )
•  アルゴリズム の評価
n
r ← {0,1}
b1 ← Bx ( z ⊕ r )
Pr #$b1 ⊕ b2 ≠ x, z %& ≤ Pr #$ Bx (z ⊕ r) ≠ x, z ⊕ r ∨ Bx (z) ≠ x, z %&
= Pr #$ z ⊕ r ∈ B∨ r ∈ B%&
≤ Pr #$ z ⊕ r ∈ B%& + Pr #$r ∈ B%&
,1 ε /
= 2⋅. − 1
-2 20
=
1−
ε δ
b2 ← Bx (r )
output b1 ⊕ b2
の失敗確率
SC
x ( z)
13
14
自己訂正アルゴリズムの適用
更なる改善
SCx (ei )
= 1,..., n
•  i について の適用
•  SC
の正解は xi
x (ei )
•  すべて正解となる確率は少なくとも1 − nδ
•  δ ≤ 1 2n ならば正解確率は少なくとも 1/2
• 
• 
• 
• 
• 
• 
• 
[k ] = {1,..., k}
パラメータm = c log(n)
R = (r1 , r2 ,..., rm ), ri ∈{0,1}n
R[S] = ⊕ rj
S ⊆ [ m]
に対して j∈S
: のすべての部分集合
S1 ,..., S 2m [m]
かもしれない値
b1 , b2 ,..., bm : b j = x, rj
S ⊆ [ m]
に対して
b[S] = ⊕ b j
j∈S
15
更なる改善
自己訂正(強力版)
x, z = x, z ⊕ R[Si ] ⊕ x, ⊕
x, z = x, z ⊕ R[Si ] ⊕ ⊕
16
j∈Si
j∈Si
•  アルゴリズムSSCx ( z; r1 ,..., rm ; b1 ,..., bm )
rj
s←0
For i ← 1,..., 2m
x,rj
b[ Si ] ← ∑ j∈S b j mod 2
b1 , b2 ,..., bm がすべて合っていれば
i
ci ← Bx ( z ⊕ R[ Si ]) ⊕ b[ Si ]
x, z = x, z ⊕ R[Si ] ⊕ b[Si ]
s ← s + ci
この部分はアルゴリ
ズムに問い合わせ
x, z = Bx ( z ⊕ R[Si ]) ⊕ b[Si ]
17
If s ≥ 2m 2 then b ← 1 else b ← 0
output
b
18
3
2013/06/04
自己訂正(強力版)の評価
自己訂正(強力版)の評価
•  が正しいときの失敗確率
b1 , b2 ,..., bm
M  2m
! SSC z;r ,...,r ; x,r ,..., x,r
x
1
m
1
m
Pr #
#r ,...,r ←{0,1}n
"1
m
(
)≠
⎧⎪1 if Bx ( z ⊕ R[ Si ]) ⊕ ⊕ j∈S x, rj = x, z
i
X i ( R) = ⎨
0
otherwise
⎪⎩
x, z :$
&≤ 1
& Mε2
%
x, z ⊕ R[Si ] = x, z ⊕ ⊕ j∈S x, rj
i
Bx ( z ⊕ R[Si ]) = x, z ⊕ R[Si ]
これを示そう!
z ⊕ R[ Si ] ∈G
19
自己訂正(強力版)の評価
自己訂正(強力版)の評価
•  期待値
z ⊕ R[ S j ] ∈G
z ⊕ R[ Si ] ∈G
E[ X i ] = Pr[ X i = 1] =
Pairwiseに独立
(任意の2つを考
えたら独立)
r1
r2
r3
r4
Var[ X i ] = E[ X i2 ]− E[ X i ]2
= E[ X i ]− E[ X i ]2
Sj
= E[ X i ](1− E[ X i ])
rk
=
21
For j ← 1,...,m do rj ←{0,1}n
多数決で失敗
!
Mε $
Pr[ X < M 2] ≤ Pr # X − µ M >
&
2 %
"
チェビシェフの
不等式
Pairwise独立
でも共分散は
ゼロ
Var[ X 1 ]++Var[ X M ]
(M ε 2) 2
=
M (1− ε 2 ) / 4
(M ε 2) 2
≤
1
Mε2
22
Input: f (x)
•  b が正しいときの の失敗確率
SSCx
1 , b2 ,..., bm
≤
1+ ε 1− ε 1− ε 2
⋅
=
2
2
4
逆計算アルゴリズム Inv
自己訂正(強力版)の評価
1+ ε
µ
2
•  分散
rk
一方だけに所属している が存在するため
Si
20
For i ← 0,...,2m −1
b1 bm ← binary representation of i
For k ← 1,...,n
可能性をすべて
試している!
yk ← SSC x (ek ;r1 ,...,rm ;b1 ,...,bm )
y ← y1  yn
23
If f (x) = f ( y) then x! ← y
output x!
24
4
2013/06/04
逆計算アルゴリズム Inv の評価
x
•  よい を仮定していた,
1 ε 1
1
Pr[ Bx (r ) = x, r : r ← {0,1}n ] ≥ + = +
2 2 2 2 p ( n)
を思い出そう!
•  そもそもの仮定は,
1
1
Pr[ Bx (r ) = x, r : x ← {0,1}n , r ← {0,1}n ] ≥ +
2 p(n)
M  2m
Pr "# Inv x (1n ) ≠ x$% ≤
• 
• 
• 
• 
n
Mε2
Invx
SSCx
n
は を 回呼び出し
SSCx
1 Mε 2
の一回の失敗確率は高々
n Mε 2
どこかの で失敗する確率は高々
SSCx
とすると
M = 2nε −2 , m = log( M )
–  の計算時間:
Invx
O(n3ε −4 )
Invx
–  の成功確率:1/2
最後の詰め①
Pr[ B( f ʹ′(U n ,U nʹ′ )) = b(U n ,U nʹ′ )] >
25
x
•  よい はどれくらいある?
最後の詰め②
1 ε
+
2 2
r
A
Invx
•  は をn回繰り返すアルゴリズム
n以下
–  いい に対して失敗確率は1/2
x
r
Pr[ A( f (U n )) ∈ f −1 ( f (U n ))]
1 ε
+
2 2
1
+ε
2
26
最後の詰め③
x
の割合を超える はどれくらいあるか?
Bx (r ) = x, r
1
1
+
2 p ( n)
≥ Pr[ A( f (U n )) ∈ f −1 ( f (U n )) ∧ U n ∈ GoodX]
1
+ε
2
x
= Pr[U n ∈ GoodX]Pr[ AU n (1n ) ∈ f −1 ( f (U n )) | U n ∈ GoodX]
x
≥
1
1
(1 − 2− n ) >
2 p ( n)
4 p ( n)
この幅はどれくらいか?
ε 2
⇒ 以上
27
今日のまとめ
• 
• 
• 
• 
• 
28
レポート課題
ハードコア述語
Goldreich-Levinの定理
チェビシェフの不等式(Pairwise独立な場合)
自己訂正アルゴリズム
数え上げの議論
f を一方向性関数とする.
•  以下で構成される関数を考える
f ʹ′( x, r ) def
= ( f ( x), r )
x = x1 x2 xn , r = r1r2 rn
f ʹ′ は依然として一方向性関数である.これを示せ.
•  Good Set と Bad Set を導入するということは,Bxが
決定性アルゴリズムであることを実は仮定していた.
Bxが確率的アルゴリズムの場合,どのように扱えばよ
いか検討せよ.
29
30
5