一些密码学应用

1. Key Escrow秘钥托管

涉及的参与方有:

  • T方:可信第三方。公私钥对 ( P K t , S K t ) (PK_t,SK_t) (PKt,SKt)
  • A方:将自身的私钥 S K a SK_a SKa通过非对称加密算法用可信第三方T的公钥 P K t PK_t PKt进行加密,输出密文 ψ = E n c p k t ( S K a ) \psi=Enc_{pk_t}(SK_a) ψ=Encpkt(SKa)和proof证明 ψ \psi ψ确实是 S K a SK_a SKa的加密密文。此时可使用verfiable encryption protocol来生成相应的proof。
    同时,A可以在密文 ψ \psi ψ中添加一些label来指明只有满足特定要求的情况下, ψ \psi ψ才可以被解密。添加的label信息科为A的身份或者是过期日期。若使用不符合生成密文时预添加的label信息,则解密结果将reveal no information about the original encrypted message,从而实现chosen ciphertext security。
  • B方:根据verfiable encryption proof验证密文加密正确,同时调用verifiable decryption protocol验证T解密正确。

整个流程无法阻止可信第三方T将私钥泄露给非授权方。

2. ptimistic fair exchange乐观公平交互

A、B对一些有价值的数字资料(如合约签名、e-cash)以公平的方式进行交换:要么A获得了B的数据且B也获得了A的数据,要么A/B双方均未能拥有对方的数据。【感觉适合用于跨链数据交互?】

实现方式之一是:引入可信第三方T,为了保证效率,T仅参与关键的环节,A/B双方均以verifiable encryption方式对己方所拥有数据采用T的公钥进行加密,A验证B的数据通过后,A将数据reveal给B,B将数据reveal给A。若有任意一方反悔,则另一方可直接通过T获取到相应的数据。

以公平交互Schnorr签名为例:【实际交换的即为 s s s值】

  • T:公钥私钥对 ( P K t , S K t ) (PK_t,SK_t) (PKt,SKt)

  • A:私钥 x x x,公钥 α = γ x \alpha=\gamma^x α=γx
    1)A对消息 m m m进行Schnorr签名,流程为:
    – (1)取随机数 r r r,计算 β = γ r \beta=\gamma^r β=γr
    – (2)计算challenge值 c = H ( β , m ) c=H(\beta,m) c=H(β,m)
    – (3)计算response值 s = r + x c m o d    ρ s=r+xc\mod\rho s=r+xcmodρ,其中 ρ \rho ρ为group size。
    – (4)发送给B的Schnorr签名信息一般为 ( β , s ) (\beta,s) (β,s),此处为 ( β , c , δ ) (\beta,c,\delta) (β,c,δ),其中 δ = γ s \delta=\gamma^s δ=γs。【不直接发送 s s s值( s s s值即为对消息 m m m的签名。),而改为发送 γ s \gamma^s γs。而且 c c c值可不发送,对应B其已知 β , m \beta,m β,m,可自行计算相应的 c = H ( β , m ) c=H(\beta,m) c=H(β,m)值。】
    2)A对response值 s s s用T的公钥加密 ψ = E n c p k t ( s ) \psi=Enc_{pk_t}(s) ψ=Encpkt(s)。A发送 ψ \psi ψ给B。
    3)A生成proof用于证明 ψ \psi ψ is an encryption of log ⁡ γ δ \log_{\gamma}{\delta} logγδ,将该proof发送给B。

  • B:收到 ( β , c , δ ) , ψ , p r o o f (\beta,c,\delta),\psi,proof (β,c,δ),ψ,proof,同时具有common input γ , \gamma, γ,,B需做以下验证工作:
    1)check the proof that ψ \psi ψ is a correct encryption of log ⁡ γ δ \log_{\gamma}{\delta} logγδ
    2)check δ = β γ c \delta=\beta\gamma^c δ=βγc成立。
    若以上两项验证通过,若A反悔不发送 s s s值给B,B可以根据之前收到的 ψ \psi ψ值发送给T,T可以用私钥 S K t SK_t SKt成功解密出A的签名信息 s s s
    而verifiable decryption protocol可以保证T做出正确的解密。

3. publicly verifiable secret and signature sharing可公开验证的密码和签名共享

主要参与方有:(采用Shamir秘密共享机制)

  • dealer:秘密 s s s拥有方。
  • proxies:秘密共享分。每个proxy P i P_i Pi 拥有秘密的一部分 s i s_i si。每个 P i P_i Pi使用其公钥对 s i s_i si进行加密, E i = E n c p i p k ( s i ) E_i=Enc_{{p_i}_{pk}}(s_i) Ei=Encpipk(si),同时计算commitment C i = C o m ( s i ; r i ) C_i=Com(s_i;r_i) Ci=Com(si;ri)。将 E i , C i E_i,C_i EiCi以及commitments to the coefficients of the blinding polynomial 和 proof for E i E_i Ei encrypt opening of the commitment to s i s_i si 发送给第三方。
  • 第三方:除了dealer和proxies之外的第三方。

4. universally composable commitments通用组合承诺

universally composable commitment的概念,由 Canetti and Fischlin 在2001年论文《Universally composable commitments》中首次提出。

参与方:

  • T:理想化的可信第三方,在现实世界中并不存在。
  • A:拥有 x x x,将 x x x发送给T,计算commitment c = C o m ( x ; r ) c=Com(x;r) c=Com(x;r)发送给B,计算密文 ψ = E n c ( x , r ) \psi=Enc(x,r) ψ=Enc(x,r),以及生成proof证明 ψ \psi ψ indeed decrypts to a representation of c c c,将 c , ψ , p r o o f c,\psi,proof c,ψ,proof均发送给B。为了避免中间人攻击man in the middle attacks,需要在密文 ψ \psi ψ中附加A的identity label信息。
  • B:当A open commitment时,T将 x x x 发送给B。在理想情况下,no information about x x x is revealed to B prior to opening,且A is forced to fix the value committed to when the commitment protocol runs。

以上协议仅在具有common reference string的情况下存在。

5. Confirmer Signatures确认人签名

参与方:

  • A:对消息 m m m创建opaque signature透明签名 ψ \psi ψ。该透明签名仅可由指定的可信第三方才可verify。可生成proof证明 ψ \psi ψ的有效性,并将 ( ψ , p r o o f ) (\psi,proof) (ψproof)发送给B。
  • T:可信第三方。可将透明签名 ψ \psi ψ转换为普通签名,该普通签名可be verified by anybody。
  • B:验证 ( ψ , p r o o f ) (\psi,proof) (ψproof)

confirmer signature的可实现方式之一有:

  • A:对消息 m m m构建普通签名 σ \sigma σ,用T的公钥加密 ψ = E n c p k t ( σ ) \psi=Enc_{pk_t}(\sigma) ψ=Encpkt(σ)。采用verifiable encryption机制,A可生成proof证明 ψ \psi ψ indeed encrypts a valid signature on m m m
  • T:采用verifiable decryption机制,T可confirm or deny ψ \psi ψ的validity,或者decrypt ψ \psi ψ 将其转换为普通签名 σ \sigma σ
  • B:验证 ( ψ , p r o o f ) (\psi,proof) (ψproof)

6. Group Signatures and Anonymous Credentials

Group Signatures群签名参与方:

  • group manager:管理group membership。
  • user:group成员。可以以group成员角色对消息签名,而不会reveal his individual identity。而在特别情况下,对特定消息的实际签名人身份信息是可被reveal的。可用anonymity revocation manager的公钥对签名进行加密,当需要公开实际签名人身份时,直接对该加密信息进行解密。(To prove that this information correctly identifies the signer, he makes a Pedersen commitment to this information, proves that the committed value identifies the user, encrypts the opening of the commitment, and proves that the ciphertext decrypts to an opening of the commitment.)
  • anonymity revocation manager:可reveal特定消息的实际签名人身份信息。

Credential systems are a generalization of group signatures that allow users to show credentials to various organizations, and obtain new credentials, without revealing their identity, execept through the use of an anonymity revocation manager.

参考资料

[1] 2003年论文《Practical Verifiable Encryption and Decryption of Discrete Logarithms》

你可能感兴趣的:(零知识证明)