一个陷门置换族是一个PPT算法元组 ( G e n , S a m p l e , E v a l , I n v e r t ) (Gen,Sample,Eval,Invert) (Gen,Sample,Eval,Invert):
RSA加密算法就是一个典型的陷门置换:
6. G e n ( k ) Gen(\mathcal{k}) Gen(k):随机选取两个 K \mathcal{K} K比特素数 p p p和 q q q。计算 N = p q N=pq N=pq, φ ( N ) = ( p − 1 ) ( q − 1 ) \varphi(N)=(p-1)(q-1) φ(N)=(p−1)(q−1)。选取与 φ ( N ) \varphi(N) φ(N)互素的 e e e,计算 e d = 1 m o d φ ( N ) ed=1 mod \ \varphi(N) ed=1mod φ(N),输出为 ( ( N , e ) , ( N , d ) ) ((N,e),(N,d)) ((N,e),(N,d))。分别对应 i i i和 t d td td。定义域 D N , e D_{N,e} DN,e就是 Z N Z_{N} ZN。
7. S a m p l e ( K , ( N , e ) ) Sample(\mathcal{K},(N,e)) Sample(K,(N,e)):从 Z N Z_N ZN中选取一个随机元素 x x x。
8. E v a l ( K , ( N , e ) , x ) Eval(\mathcal{K},(N,e),x) Eval(K,(N,e),x): y = x e m o d N y=x^e mod \ N y=xemod N。
9. I n v e r t ( K , ( N , d ) , y ) Invert(\mathcal{K},(N,d),y) Invert(K,(N,d),y),输出为 x = y d m o d N x=y^dmod \ N x=ydmod N 。
在陷门置换中没有考虑任何“困难性”和安全性的概念(可以为线性置换以及求逆),这在密码学上是没有意义的。所以一般认为密码学中的陷门置换是单陷门置换。单陷门置换是指当陷门信息 t d td td未知时,一个随机陷门置换的求逆是困难的。具体定义如下:
一个陷门置换簇 ( G e n , S a m p l e , E v a l , I n v e r t ) (Gen,Sample,Eval,Invert) (Gen,Sample,Eval,Invert)是单向的,如果对于任意的PPT敌手 A \mathcal{A} A,存在一个可忽略的函数 ϵ ( K ) \epsilon{(\mathcal{K})} ϵ(K),使得 A \mathcal{A} A在下面的对抗中,其优势 A d v A ( K ) ≤ ϵ ( K ) {Adv}_{\mathcal{A}}(\mathcal{K}) \leq \epsilon{(\mathcal{K})} AdvA(K)≤ϵ(K):
F u n c t i o n A ( K ) : {Function}_{\mathcal{A}}(\mathcal{K}): FunctionA(K):
( i , t d ) ← G e n ( K ) (i,td)\leftarrow Gen(\mathcal{K}) (i,td)←Gen(K);
y ← S a m p l e ( K , i ) y \leftarrow Sample(\mathcal{K},i) y←Sample(K,i);
x ← A ( K , i , y ) x \leftarrow \mathcal{A}(\mathcal{K},i,y) x←A(K,i,y)
如果 E v a l ( K , i , x ) = y Eval(\mathcal{K},i,x)=y Eval(K,i,x)=y,返回1;否则返回0。
A \mathcal{A} A的优势 A d v A ( K ) {Adv}_{\mathcal{A}}(\mathcal{K}) AdvA(K)定义为 A d v A ( K ) = P r [ F u n c t i o n A ( K ) = 1 ] {Adv}_{\mathcal{A}}(\mathcal{K})=Pr[{Function}_{\mathcal{A}}(\mathcal{K})=1] AdvA(K)=Pr[FunctionA(K)=1],其中 P r Pr Pr表示概率。
为了方便理解可以将 i i i表示为置换 f f f, t d td td表示为逆置换 f − 1 f^{-1} f−1。