密码学归约证明——一次性签名方案

文章探讨了单向函数的性质,包括其不可逆性和在密码学中的应用。重点介绍了Lamport的一次性签名方案,阐述了该方案的生成、签名和验证过程,并证明了当单向函数为前提时,该方案作为一次性签名的安全性。此外,通过算法和概率分析,展示了签名方案与单向函数求逆问题之间的联系,进一步强化了方案的安全性论点。
摘要由CSDN通过智能技术生成

1. 单向函数求逆实验 I n v e r t A , f ( n ) Invert_{A,f} (n) InvertA,f(n)

\qquad 算法 A A A、安全数值 n n n

  • 选择输入 x ← { 0 , 1 } n x\leftarrow \{0,1\}^n x{0,1}n,计算 y = f ( x ) y=f(x) y=f(x)
  • 1 n 1^n 1n y y y值作为 A A A的输入,输出为 x ′ x' x
  • f ( x ′ ) = y f(x' )=y f(x)=y,则输出 1 1 1,否则 0 0 0

\qquad 注意:敌手没有选择 y y y的权力。

2. 单向函数

\qquad 单向函数 f : { 0 , 1 } ∗ → { 0 , 1 } ∗ f:\{0,1\}^*\rightarrow \{0,1\}^* f:{0,1}{0,1}满足:

  • ∀ x \forall x x ∃ \exists 多项式时间算法 M f M_f Mf,使 M f ( x ) = f ( x ) M_f (x)=f(x) Mf(x)=f(x)
  • ∀ \forall 多项式时间算法 A A A ∃ n e g l \exists negl negl,满足 P r [ I n v e r t A , f ( n ) = 1 ] ≤ n e g l ( n ) Pr[Invert_{A,f} (n)=1]\leq negl(n) Pr[InvertA,f(n)=1]negl(n)

3. 一次签名实验 S i g n f o r g e A , Π 1 − t i m e ( n ) Signforge_{A,\Pi}^{1-time} (n) SignforgeA,Π1time(n)

  • ( p k , s k ) ← G e n ( 1 n ) (pk,sk)\leftarrow Gen(1^n ) (pk,sk)Gen(1n)
  • A A A输入 1 n 1^n 1n和对 S i g n s k ( ⋅ ) Sign_{sk} (\cdot) Signsk()的一次查询 m ′ m' m,输出 ( m , σ ) (m,\sigma) (m,σ)
  • 当且仅当 V r f y p k ( m , σ ) = 1 Vrfy_{pk} (m,\sigma)=1 Vrfypk(m,σ)=1实验输出 1 1 1

\qquad 一次性签名方案满足:对任意的多项式时间敌手 A A A ∃ n e g l \exists negl negl,满足 P r [ S i g n f o r g e A , Π 1 − t i m e ( n ) = 1 ] ≤ n e g l ( n ) Pr[Signforge_{A,\Pi}^{1-time} (n)=1]\leq negl(n) Pr[SignforgeA,Π1time(n)=1]negl(n)

4. Lamport的一次签名

\qquad f f f是单向函数。

  • G e n Gen Gen ∀ i ∈ { 1 , ⋯   , l } \forall i\in \{1,\cdots ,l\} i{1,,l},选择随机的两个函数输入 x i , 0 , x i , 1 ← { 0 , 1 } n x_{i,0},x_{i,1}\leftarrow \{0,1\}^n xi,0,xi,1{0,1}n;计算 y i , 0 = f ( x i , 0 ) y_{i,0}=f(x_{i,0} ) yi,0=f(xi,0) y i , 1 = f ( x i , 1 ) y_{i,1}=f(x_{i,1} ) yi,1=f(xi,1);构成 2 2 2 2 × l 2\times l 2×l的矩阵, x i , j x_{i,j} xi,j构成私钥, y i , j y_{i,j} yi,j构成公钥。
  • S i g n Sign Sign m = m 1 ⋯ m l m=m_1\cdots m_l m=m1ml,输出 σ = ( x 1 , m 1 , ⋯   , x l , m l ) \sigma=(x_{1,m_1 },\cdots,x_{l,m_l } ) σ=(x1,m1,,xl,ml)
  • V r f y Vrfy Vrfy ∀ i ∈ { 1 , ⋯   , l } \forall i\in \{1,\cdots ,l\} i{1,,l},若有 f ( x i ) = y i , m i f(x_i )=y_{i,m_i } f(xi)=yi,mi,输出 1 1 1

5. 一次性签名方案的安全性

\qquad l l l为任意多项式。若 f f f为单向函数,则上述构造方案 Π \Pi Π是一次性签名方案。

\qquad 考虑算法 I I I,目的是对单向函数 f f f求逆:输入 y y y 1 n 1^n 1n

  • 随机选择 i ∗ ← { 1 , ⋯   , l } i^*\leftarrow \{1,\cdots,l\} i{1,,l} b ∗ ← { 0 , 1 } b^*\leftarrow \{0,1\} b{0,1}。设 y i ∗ , b ∗ = y y_{i^*,b^* }=y yi,b=y
  • 对任意的 i ← { 1 , ⋯   , l } i\leftarrow \{1,\cdots ,l\} i{1,,l} b ← { 0 , 1 } b\leftarrow \{0,1 \} b{0,1},且 ( i , b ) ≠ ( i ∗ , b ∗ ) (i,b)\neq (i^*,b^* ) (i,b)=(i,b),选择 x i , b ← { 0 , 1 } n x_{i,b}\leftarrow \{0,1\}^n xi,b{0,1}n并设 y i , b = f ( x i , b ) y_{i,b}=f(x_{i,b} ) yi,b=f(xi,b)
  • 输入 p k = ( y 1 , 0 , y 2 , 0 , ⋯   , y l , 0 y 1 , 1 , y 2 , 1 , ⋯   , y l , 1 ) pk=\begin{pmatrix}y_{1,0},y_{2,0},\cdots,y_{l,0}\\y_{1,1},y_{2,1},\cdots,y_{l,1}\end{pmatrix} pk=(y1,0,y2,0,,yl,0y1,1,y2,1,,yl,1),运行 A A A
  • A A A请求消息 m ′ m' m的签名时,如果 m i ∗ ′ = b ∗ m_{i^*}'=b^* mi=b,停止(实验失败);否则返回正确的签名 σ = ( x 1 , m 1 ′ , ⋯   , x l , m l ′ ) \sigma=(x_{1,m_1' },\cdots,x_{l,m_l' } ) σ=(x1,m1,,xl,ml)
  • A A A输出 ( m , σ ) (m,\sigma) (m,σ) σ = ( x 1 , ⋯   , x l ) \sigma=(x_1,\cdots,x_l ) σ=(x1,,xl),若 A A A输出一个在 ( i ∗ , b ∗ ) (i^*,b^* ) (i,b)上的伪造,则输出 x i ∗ x_i^* xi

\qquad A A A输出一个在 ( i ∗ , b ∗ ) (i^*,b^* ) (i,b)上的伪造时,算法 I I I对输入 y y y成功求逆。考虑“理想情况”:在开始时,将 x x x I I I,设 x i ∗ , b ∗ = x x_{i^*,b^* }=x xi,b=x,此时在第四步步骤中将总是返回签名 σ \sigma σ。此时 A A A作为子程序所见情形,与实验 S i g n f o r g e A , Π 1 − t i m e ( n ) Signforge_{A,\Pi}^{1-time} (n) SignforgeA,Π1time(n)中相同。由于在实验开始时,随机选择 ( i ∗ , b ∗ ) (i^*,b^* ) (i,b),可以理解为 A A A独立于此选择,则 A A A ( i ∗ , b ∗ ) (i^*,b^* ) (i,b)处输出伪造的概率为 1 2 l ( n ) \frac{1}{2l(n)} 2l(n)1 。因为一次签名伪造意味着至少存在一个点 ( i , b ) (i,b) (i,b)的伪造,而一共有 2 l ( n ) 2l(n) 2l(n)个点。因此, A A A ( i ∗ , b ∗ ) (i^*,b^* ) (i,b)处输出伪造的概率至少为 P r [ S i g n f o r g e A , Π 1 − t i m e ( n ) = 1 ] 2 l ( n ) \frac{Pr[Signforge_{A,\Pi}^{1-time} (n)=1]}{2l(n)} 2l(n)Pr[SignforgeA,Π1time(n)=1]
\qquad 考虑“现实情况”:如果 A A A输出在 ( i ∗ , b ∗ ) (i^*,b^* ) (i,b)处的伪造,“理想情况”和“现实情况”一致。即如果 A A A请求消息 m ′ m' m的签名且 m i ∗ ′ = b ∗ m_{i^*}'=b^* mi=b A A A不可能输出在 ( i ∗ , b ∗ ) (i^*,b^* ) (i,b)处的伪造。因此, A A A ( i ∗ , b ∗ ) (i^*,b^* ) (i,b)处输出伪造的概率仍然至少为 P r [ S i g n f o r g e A , Π 1 − t i m e ( n ) = 1 ] 2 l ( n ) \frac{Pr[Signforge_{A,\Pi}^{1-time} (n)=1]}{2l(n)} 2l(n)Pr[SignforgeA,Π1time(n)=1]
于是 P r [ I n v e r t I , f ( n ) = 1 ] ≥ P r [ S i g n f o r g e A , Π 1 − t i m e ( n ) = 1 ] 2 l ( n ) Pr[Invert_{I,f} (n)=1]\geq \frac{Pr[Signforge_{A,\Pi}^{1-time} (n)=1]}{2l(n)} Pr[InvertI,f(n)=1]2l(n)Pr[SignforgeA,Π1time(n)=1],所以

P r [ S i g n f o r g e A , Π 1 − t i m e ( n ) = 1 ] ≤ 2 l ( n ) ⋅ n e g l ( n ) Pr[Signforge_{A,\Pi}^{1-time} (n)=1]\leq 2l(n)\cdot negl(n) Pr[SignforgeA,Π1time(n)=1]2l(n)negl(n)

6. 参考文献

乔纳森.卡茨,耶胡达.林德尔著,任伟译,现代密码学——原理与协议,国防工业出版社,2017年第一版第4次印刷.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值