基于陷门置换的语义安全的公钥加密方案构造

这篇具有很好参考价值的文章主要介绍了基于陷门置换的语义安全的公钥加密方案构造。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

语义安全

  后续补充。

陷门置换

  参考博客单陷门置换。

方案构造

  直接采用单陷门定义构造如下:

  • 密钥生成:运行 G e n Gen Gen,得到 ( f , f − 1 ) (f,f^{-1}) (f,f1)。令 p k = f , s k = f − 1 pk=f,sk=f^{-1} pk=f,sk=f1
  • 加密算法: E ( ⋅ ) = f ( ⋅ ) E(\cdot)=f(\cdot) E()=f()
  • 解密算法: D f − 1 ( ⋅ ) = f − 1 ( ⋅ ) D_{f^-1}(\cdot)=f^{-1}(\cdot) Df1()=f1()
      由于 f ( ⋅ ) f(\cdot) f()是确定性的,例如RSA算法对于输入 x x x得到的 E ( x ) E(x) E(x)是确定的,因此其不能用于构造出语义安全的公钥加密方案。我们需要对其进行“随机化”,引入随机比特。
      令 H = { h K : { 0 , 1 } K → { 0 , 1 } } K ≥ 1 H=\{h_{\mathcal{K}}:\{ 0,1 \}^{\mathcal{K}} \rightarrow \{ 0,1 \}\}_{\mathcal{K} \geq 1} H={hK:{0,1}K{0,1}}K1 F F F是一个陷门置换。 H H H F F F的一个随机比特,如果对于所有的PPT敌手 A \mathcal{A} A,存在一个可忽略的函数 ε ( K ) \varepsilon(\mathcal{K}) ε(K),使得 A \mathcal{A} A在下面的对抗中,优势 A d v A ( K ) ≤ ε ( K ) {Adv}_{\mathcal{A}}(\mathcal{K}) \leq \varepsilon(\mathcal{K}) AdvA(K)ε(K)
       F u n c t i o n A ( K ) : {Function}_{\mathcal{A}}(\mathcal{K}): FunctionA(K):
       ( f , f − 1 ) ← G e n ( K ) (f,f^{-1}) \leftarrow Gen(\mathcal{K}) (f,f1)Gen(K)
       x ← R { 0 , 1 } K x \leftarrow _{R}\{ 0,1 \}^{\mathcal{K}} xR{0,1}K
       y = f ( x ) y=f(x) y=f(x)
      返回 A ( f , y ) A(f,y) A(f,y)
       A \mathcal{A} A的优势定义为: A d v A ( K ) = ∣ P r [ F u n c t i o n A ( K ) = h K ( x ) ] − 1 2 ∣ {Adv}_{\mathcal{A}}(\mathcal{K})=\lvert Pr[{Function}_{\mathcal{A}}(\mathcal{K})=h_{\mathcal{K}}(x)] - \frac{1}{2} \rvert AdvA(K)=Pr[FunctionA(K)=hK(x)]21。因为猜对随机比特的概率为 1 2 \frac{1}{2} 21,所以在这里可以减去 1 2 \frac{1}{2} 21当做 A \mathcal{A} A的优势。
      下面构造随机比特:
      设 h K ′ ( x ∣ r ) = x ⋅ r h_{\mathcal{K}}^{\prime}(x|r)=x \cdot r hK(xr)=xr f : { 0 , 1 } K → { 0 , 1 } K f:\{ 0,1 \}^{\mathcal{K}} \rightarrow \{ 0,1 \}^{\mathcal{K}} f:{0,1}K{0,1}K。定义一个新的置换 f ′ f^{\prime} f, f ′ : { 0 , 1 } K → { 0 , 1 } K f^{\prime} : \{ 0,1 \}^{\mathcal{K}} \rightarrow \{ 0,1 \}^{\mathcal{K}} f:{0,1}K{0,1}K定义为 f ′ ( x ∣ r ) = f ( x ) ⊕ h ′ f^{\prime}(x|r)=f(x)\oplus h^{\prime} f(xr)=f(x)h,其中 h ′ h^{\prime} h为随机比特。
    其中运算“ ⋅ \cdot ”表示二元点乘。若 x = x 1 x 2 ⋯ x K ∈ { 0 , 1 } K , r = r 1 r 2 ⋯ r K ∈ { 0 , 1 } K x=x_1x_2 \cdots x_{\mathcal{K}} \in \{ 0,1 \}^{\mathcal{K}},r=r_1r_2 \cdots r_{\mathcal{K}} \in \{ 0,1 \}^{\mathcal{K}} x=x1x2xK{0,1}K,r=r1r2rK{0,1}K,则 x ⋅ r = x 1 r 1 ⊕ x 2 r 2 ⊕ ⋯ ⊕ r K x K x \cdot r=x_1r_1 \oplus x_2r_2 \oplus \cdots \oplus r_{\mathcal{K}}x_{\mathcal{K}} xr=x1r1x2r2rKxK
    引入随机比特后的方案:
    密钥产生过程:
    G e n K e y ( K ) : GenKey(\mathcal{K}): GenKey(K):
       ( f , f − 1 ) ← G e n ( K ) (f,f^{-1})\leftarrow Gen(\mathcal{K}) (f,f1)Gen(K)
       r ← R { 0 , 1 } K r \leftarrow _{R}\{ 0,1 \}^{\mathcal{K}} rR{0,1}K
       p k = ( f , r ) , s k = f − 1 pk=(f,r),sk=f^{-1} pk=(f,r),sk=f1
    加密过程( M M M为待加密消息, M ∈ { 0 , 1 } M \in \{ 0,1 \} M{0,1}):
    E p k ( M ) : E_{pk}(M): Epk(M):
       x ← R { 0 , 1 } K x \leftarrow _{R}\{ 0,1 \}^{\mathcal{K}} xR{0,1}K
       y = f ( x ) y=f(x) y=f(x)
       h ′ = x ⋅ r h^{\prime}=x \cdot r h=xr
      输出 ( y , h ′ ⊕ M ) (y,h^{\prime}\oplus M) (y,hM)
    解密过程( b b b h ′ ⊕ M h^{\prime}\oplus M hM):
    D s k ( y , b ) D_{sk}(y,b) Dsk(y,b)
      输出 b ⊕ ( f − 1 ( y ) ⋅ r ) b \oplus (f^{-1}(y) \cdot r) b(f1(y)r)
    b ⊕ ( f − 1 ( y ) ⋅ r ) = ( h ′ ⊕ M ) ⊕ ( x ⋅ r ) = ( ( x ⋅ r ) ⊕ M ) ⊕ ( x ⋅ r ) = ( x ⋅ r ) ⊕ M ⊕ ( x ⋅ r ) = M b \oplus (f^{-1}(y) \cdot r)=(h^{\prime}\oplus M) \oplus (x \cdot r)=((x \cdot r)\oplus M) \oplus (x \cdot r)=(x \cdot r) \oplus M \oplus (x \cdot r)=M b(f1(y)r)=(hM)(xr)=((xr)M)(xr)=(xr)M(xr)=M

案例

   r = 011 , f ( 111 ) = 100 , f − 1 ( 100 ) = 111 , x = 111 , M = 1 r=011,f(111)=100,f^{-1}(100)=111,x=111,M=1 r=011,f(111)=100,f1(100)=111,x=111,M=1,则有 y = f ( x ) = 100 , h ′ = ( 0 ∗ 1 ) ⊕ ( 1 ∗ 1 ) ⊕ ( 1 ∗ 1 ) = 0 , b = 0 ⊕ 1 = 1 y=f(x)=100,h^{\prime}=(0*1) \oplus (1*1) \oplus (1*1)=0,b=0 \oplus 1 = 1 y=f(x)=100,h=(01)(11)(11)=0,b=01=1。综上 M = 1 ⊕ ( 111 ⋅ 011 ) = 1 ⊕ ( 0 ⊕ 1 ⊕ 1 ) = 1 M=1 \oplus (111 \cdot 011) = 1 \oplus (0 \oplus 1 \oplus 1)=1 M=1(111011)=1(011)=1文章来源地址https://www.toymoban.com/news/detail-430646.html

到了这里,关于基于陷门置换的语义安全的公钥加密方案构造的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RSA双向加解密(公钥加密-私钥解密;私钥加密-公钥解密)

            非对称加密算法中,提供一个公钥一个私钥。一般情况下,采用公钥加密、私钥解密的方式。         假设有这样一个场景:服务A与服务B需要通信,通信内容为了安全需要进行加密传输,并且服务A与服务B不能互相持有对方的钥匙。         我首先想到的是

    2024年02月11日
    浏览(62)
  • 基于共享矩阵的线性秘密共享方案原理、构造与代码实现

      线性秘密共享方案是一种加密技术,用于将一个秘密信息分割成多个片段,并将这些片段分发给多个参与者,只有当足够数量的参与者合作时,才能还原出完整的秘密信息。   线性秘密共享方案的基本原理是使用多项式插值。假设我们有一个 (t-1) 阶的多项式,其中

    2024年04月27日
    浏览(43)
  • RSA公钥加密体制

    1.RSA密钥生成算法 密钥生成算法为用户生成加解密算法中使用的公私密钥对,分为以下几个步骤:         (1)选取两个安全大素数p和q(“大”指其长度要足够,目前推荐长度至少1024比特长);         (2)计算乘积n=p*q,(n)=(p-1)(q-1),其中(n)为n的欧拉函数;         (

    2024年02月05日
    浏览(57)
  • 固件签名的安全解决方案 安当加密

    在汽车行业中,加密机常用于对固件进行签名,以增加固件的安全性和完整性。以下是几个可能的使用场景: 固件验证 :当汽车制造商或供应商需要对固件进行验证时,可以使用加密机来验证固件的来源和完整性。通过使用公钥和私钥,加密机会对固件进行签名,并在设备

    2024年02月08日
    浏览(37)
  • 区块链基础知识(上):区块链基本原理、加密哈希、公钥加密

    目录 基本原理 加密哈希: 公钥加密: 希望有人向你发送只有你才能打开的加密文档/消息时使用 PKC 希望向其他人发送加密文档/消息并证明它确实由你发送时使用 PKC 使用 PKC 和加密哈希对文档/消息进行数字签名 交易哈希链使用数字签名转让数字资产所有权;每个交易记录

    2024年03月12日
    浏览(47)
  • RSA加密,公钥、私钥的生成,前端使用公钥加密,JSEncrypt返回值为false的原因以及解决方法,XML转换Pkcs1、8

    非对称加密算法,两个且不同的Key,一个公开,一个私密,公开加密,私密解密。 特点: 原文短,加密后密文长 生成相对较慢 安全性超强 我们使用.net进行生成公钥、私钥。 使用RSA.ToXmlString(Boolean) 方法生成公钥以及私钥,方法中接收一个参数, true  表示同时包含 RSA 公钥

    2024年01月21日
    浏览(61)
  • 源码加密与SDC沙盒:专业安全解决方案的卓越对比

    在信息安全领域,源码加密和SDC沙盒是两种重要的安全技术,为企业提供全面的保护措施。让我们来看看它们与其他产品的对比分析。 1. 对比传统加密技术:  相比于传统的加密技术,源码加密采用先进的算法和访问控制策略,将源代码转化为不可读的形式,有效避免了源码

    2024年02月11日
    浏览(60)
  • 【密码学复习】第七章 公钥加密体制(二)

    RSA单向陷门函数及其应用 ElGamal单向陷门函数 1)密钥生成 ① 选择一大素数 p ,选取Z p * 的生成元 g ; ② 任选 小于 p 的随机数 x ,计算 y ≡ g x mod p ; ③ ( y , g , p )为公开密钥, ( x , g , p )为秘密密钥. 2)加密: 设待加密明文为 M . ① 随机选一整数 k ,0 k = p -1; ② 计算密文对

    2024年02月05日
    浏览(54)
  • 读改变未来的九大算法笔记04_公钥加密

    8.8.1.1. 8.8.1.2. 你和阿诺德各自单独选择一个私人数字 8.8.1.2.1. 你选择8作为私人数字,而阿诺德选择9 8.8.1.3. 你和阿诺德公开就两个公开数字达成一致——钟大小(11)和另一个被称为基数的数字(选2为基数) 8.8.1.4. 通过使用幂符号和钟算,你和阿诺德各自将自己的私人数

    2024年02月07日
    浏览(34)
  • 使用 OpenSSL 扩展来实现公钥和私钥加密

    首先,你需要生成一对公钥和私钥。可以使用 OpenSSL 工具来生成: 1、生成私钥 2、从私钥生成公钥: 现在你有了一个私钥( private_key.pem )和一个对应的公钥( public_key.pem )。下面是如何在 PHP 中使用它们进行加密和解密: 3、检测是否支付OPENSSL,或用phpinfo(); 上述代码中,

    2024年02月03日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包