• 密码学基础(九)


    陷门置换构造加密方案

    通过提取基于RSA困难问题假设的加密方案中使用的RSA属性,并定义封装这些属性的抽象概念,可以获得了一个通用模板,用于基于任何满足相同属性集的原语构建安全加密方案。
    而陷门置换就是一种抽象概念
    在一些结构中,参数生成算法Gen输出一些附加信息和I,从而实现(f_I)的有效反演。称这些附加信息为陷门,并将单向置换的族称为陷门置换的附加属性族。
    陷门的形式化定义为:
    一组多项式时间算法(Gen,Samp,f,Inv)如果满足以下条件则称其为陷门:

    • 概率性的参数生成算法Gen:输入(1^n),输出(I,td)其中|I| (le) n,I的每一个值定义了一个置换的定义域和值域(D_I)(f_I:D_I o D_I)
    • (Gen_1)表示由Gen算法生成的结果,并且只输出I。则((Gen_1),Samp,f)是一族单向置换
    • 用(I,td)表示Gen((1^n))的输出,则确定性的反向算法Inv,将td以及y (in D_I)作为输入,然后输出x (in D_I),表示成x := (Inv_{td}(y))。则需要保证所有由Gen((1^n))生成的(I,td),有一个概率均匀的选择x (in D_I),有(Inv_{td}(f_I(x))=x)

    如果没有td,则很难求(f_I)的逆;如果有了td,则能够高效率的求(f_I)的逆

    陷门置换构造的公钥加密方案:设(Pi)=(Gen,f,Inv)是一族陷门置换,令hc为一个确定性的多项式时间算法,这个算法接收I以及x(in D_I)作为输入,然后输出一个比特(hc_I(x)),称hc为(Pi)的硬核谓词,如果对于所有PPT上的算法A,存在一个可忽略函数negl满足(Pr[A(I,f_I(x))=hc_I(x)] le frac{1}{2}+negl(n))

    陷门置换的不对称性意味着任何一个知道与I相关的陷门td的人而可以从(f_I(x))中恢复出x,并由此从(f_I(x))计算出(hc_I(x))
    但是如果只给了一个I,对于一个概率均匀选择的x,很难从(f_I(x))计算出(hc_I(x))

    从任何一组陷门置换构造公钥加密方案:设(Pi')=(Gen',f,Inv)是一族陷门置换,其硬核谓词为hc,则可以构造一个公钥加密方案如下:

    • Gen:输入安全参数(1^n),运行Gen'((1^n))获得(I,td),输出公钥I,私钥td
    • Enc:输入一个公钥I以及一条明文m (in) {0,1},概率均匀的选择一个r (in D_I),r满足(hc_I(r)=m),输出密文c := (f_I(r))
    • Dec:输入一个私钥td以及一条密文c,计算r:=(Inv_I(c)),然后输出明文m := (hc_I(r))

    定理:如果(Pi')是一族硬核谓词为hc的陷门置换,那么上面所构造的加密方案是CPA安全的
    加密更长的明文:在前面的RSA-lsb中已经介绍过如何利用加密单比特明文的加密方案加密更长的明文

    秘密共享以及门限加密

    安全(交互)协议可能比基本的密码原语(例如,加密和签名方案)复杂得多。一方面是因为它们可能涉及多方交换几轮消息,另一方面是因为它们旨在实现更复杂的安全需求。

    秘密共享

    应用情景:一个发牌员持有一个秘密(比如核弹的发射密码),希望通过给与每个用于一点份额在用户集合(P_1,...,P_N)之间共享这个秘密
    任意t个用户都能通过将他们的份额组装起来从而恢复这个秘密,但是用户数量小于t则无法知道任何关于这个秘密的信息
    上述的应用情景称为(t,N)门限秘密共享,而(t,N)门限秘密共享有有两种情况:t=N,以及t<N

    • t=N
      假设s (inlbrace 0,1 brace^l)

      1. 发牌员概率均匀的选择(s_1,...,s_{N-1}inlbrace 0,1 brace^l),然后计算(s_N:=sigoplus(igoplus^{N-1}_{i=1}s_i)),则每个用户的份额就是(s_i)
      2. 因为((igoplus^N_{i=1}s_i)=s),所以只有每个用户都交出自己的份额才能够恢复出这个秘密
      3. 并且,当用户数量少于N的时候,无法获得任何关于秘密s的信息
    • t<N,与上面那种情况不同的是,在选择(s_1,...,s_N)的时候需要满足一定的约束,并且显然效率是很低的

    Shamir秘密共享方案:这个方案是基于一个有限多项式域F设计的,其中F满足s (in) F并且|F| > N,其原理主要是一个t阶的多项式p(x),而p(x)=0最多有t个根
    此外还有一个重要的引理:F中任意t对((x_1,y_1),...,(x_t,y_t)),都有一个唯一的t-1阶多项式p满足(p(x_i)=y_i)
    该方案的工作原理如下,设(x_1,...,x_N in F),没有重复并且不含零元素,这组元素是公开可知的:

    • 共享:给定一个秘密s (in) F,发牌员概率均匀的选择(a_1,...,a_{t-1} in F),然后定义一个多项式p(X)=s+(Sigma^{t-1}_{i=1}a_iX^i),每个用户的份额为(s_i=p(x_i) in F)
    • 恢复:t个用户(P_1,...,P_t)交出他们的份额(s_1,...,s_t)然后利用(p(x_i)=s_i)计算出多项式多项式p,则秘密为s=p(0)。而且显然,对于任何用户数量小于t的用户都无法计算出p,也就无法获取任何关于秘密s的信息

    可验证秘密共享

    在秘密共享方案中存在着两种恶意行为,而可验证秘密共享(Verifiable Secret Sharing,VSS)用于抵抗这两种恶意行为

    1. 腐败的发牌员:给用户发放不一致的份额,这样会导致不同的用户组会恢复出不同的秘密
    2. 在恢复阶段中一个恶意的用户可能会提交一个假的份额,从而影响恢复过程

    更加形式化的定义是,可验证秘密共享方案需要满足以下两个条件:如果用户集合中有t-1个腐败的用户,并且相互串通,甚至其中可能包括发牌员,则:

    1. 在共享阶段结束的时候,需要保证任何t个份额都能够会付出秘密s
    2. 如果发牌员是诚实的,那么秘密就是发牌员的密钥

    当然上面的第一个条件是假设用户集合中的大多数((le) t个)用户是不腐败的,那么N应该满足N (le) t+t-1 > 2(t-1)

    可验证秘密共享方案:设H是一个由随机预言机构造的函数,假设由G((1^n))生成的可信任参数(G,q,g)是提前发表了的,其中q是一个素数,所以(Z_q)是一个域,并且所有用户都可以访问广播频道

    • 共享阶段:
      1. 设将要分享的秘密为s,则发牌员概率均匀的选择一个(a_0 in Z_q),然后利用Shamir秘密共享方案共享(a_0),将(s_i=p(i)=Sigma^{t-1}_{j=0}a_ii^j)发送给用户(P_i),此外,发牌员利用广播频道广播(A_0=g^{a_0},...,A_{t-1}=g^{a_{t-1}}),以及“被掩盖的秘密”c := H((a_0)) (igoplus) s
      2. 每个用户(P_i)在收到了自己的份额后需要验证(g^{s_i}=?prod^{t-1}_{j=0}(A_j)^{i^j}),如果不满足,则在广播频道上报错
        (prod^{t-1}_{j=0}(A_j)^{i^j}=prod^{t-1}_{j=0}(g^{a_i})^{i^j}=g^{Sigma^{t-1}_{j=0}a_j·i^j}=g^{p(i)}=g^{s_i})
      3. 如果有超过t-1个用户报错,则发牌员不合格,协议终止;否则,发牌员广播(s_i)作为回应;如果广播出去的份额仍然无法通过验证,则这个发牌员是不合格的,协议终止;否则,用户(P_i)将广播的(s_i)作为自己的份额
    • 恢复阶段:在恢复之前需要先进行验证,如果用户组中的用户(P_i)不能通过验证,那么这个用户将被丢弃,而在这剩下的t个通过验证的用户中,可以恢复出(a_0),然后计算s:=c(igoplus)H((a_0))

    门限与电子选举

    El-Gamal加密方案的一种变体的同态加密方案:给定公钥pk=(G,q,g,h),如果要加密明文m(in Z_q),则计算M=(g^m),概率均匀的选择一个y(in Z_q),然后发送密文c=((g^y,h^y·M));如果要解密,想用标准的El-Gamal加密方案计算出M,然后计算m=(log_gM)

    • 缺点:如果明文空间比较大,那么效率将会非常低;如果明文空间比较小,那么接收方可以使用穷举搜索高效的解密
    • 优点:对于(Z_q)中的加法同态:((g^{y_1},h^{y_1}·g^{m_1})·(g^{y_2},h^{y_2}·g^{m_2})=(g^{y_1+y_2},h^{y_1+y_2}·g^{m_1+m_2}))

    使用同态加密进行电子选举的基本方法是让每个投票者对其投票(v_i)∈{0,1}进行加密,从而获得一个密文(c_i)。一旦所有人都已经投了票,则将所有的密文相乘,从而获得投票的总和的密文,称为最终密文,然后将私钥委托权威机构进行解密,从而获取投票的总和

    然而存在着一个缺陷:该机构是可信的,既可以(正确地)解密最终的密文,也可以不解密任何个别选民的密文。

    解决的方法是同时委托多个机构,然后利用秘密共享将私钥分享给这些机构
    不过仍然存在着一个缺陷:如果权威机构为了解密某个密文而恢复这个私钥,那么所有的机构都会知道这个私钥,那么他们可以按照自己选择解密任何密文

  • 相关阅读:
    poj 2485 Highways 最小生成树
    hdu 3415 Max Sum of MaxKsubsequence
    poj 3026 Borg Maze
    poj 2823 Sliding Window 单调队列
    poj 1258 AgriNet
    hdu 1045 Fire Net (二分图匹配)
    poj 1789 Truck History MST(最小生成树)
    fafu 1181 割点
    减肥瘦身健康秘方
    人生的问题
  • 原文地址:https://www.cnblogs.com/TheFutureIsNow/p/12159298.html
Copyright © 2020-2023  润新知