zoukankan      html  css  js  c++  java
  • Cryptography I 学习笔记 --- 基于Diffie-Hellman的公钥加密

    1. Diffie-Hellman协议:

      假定g是集合G的生成元,G有n个元素。

      Alice随机选取1-n中的一个数a,并公布ga为公钥

      Bob随机选取1-n中的一个数b,并公布gb为公钥

      那么gab就是Alice与Bob之间的私钥

      从公钥中提取私钥,是一个离散对数问题,难以解决。

      裸的Diffie-Hellman协议有中间人攻击的风险

    2. Elgamal系统

      n阶有限循环群G,哈希函数H,对称加密算法Es与Ds

      Alice随机选取G的一个生成元g,从1到n-1间随机选取一个数a

      Alice将a作为私钥,将(g,ga)作为公钥

      现在Bob想要将消息m发送给Alice

      加密:Bob从1到n-1间随机选取一个数b,计算u=gb,计算v=gab

      计算k = H(u,v),再计算c = Es(k,m)

      然后将(u,c)作为密文发送出去

      解密:Alice接收到密文(u,c)

      由于u=gb,Alice可以计算ua=gab=v

      同样的,可以到k = H(u,v),然后就可以得到明文m = Ds(k,c)

    3. Elgamal系统是选择密文安全的

    4. twin Elgamal

      Alice随机选取G的一个生成元g,从1到n-1间随机选取两个数a1与a2

      Alice将(a1,a2)作为私钥,将(g,ga1,ga2)作为公钥

      加密:Bob从1到n-1间随机选取一个数b

      计算k = H(gb,ga1*b,ga2*b),再计算c = Es(k,m),输出(gb,c)

      解密:Alice计算k = H(gb,ga1*b,ga2*b),得到明文m = Ds(k,c)

    5. 单向函数

      有函数f将集合X映射到集合Y,如果计算f是容易的,计算f-1是困难的,那么f就是单向函数

    6. 离散对数单向函数

      n阶有限循环群G,其生成元为g,定义函数f(x) = gx ∈ G。那么f是单向的。

      离散对数单向函数有一些有趣的性质:f(x+y) = f(x) * f(y)也就是我们只需要知道f(x)与f(y)的值,不需要知道x与y的具体值,就能计算出f(x+y)

    7. RSA单向函数

      随机选择两个质数p,q,计算n = p * q,构造整数e与d,并且e*d = 1 mod φ(n)

      定义函数f(x) = xe mod n,那么f是单向的

      RSA单向函数的特殊性质在于 f(x*y) = f(x) * f(y),

  • 相关阅读:
    python 写入txt的新方法
    python 对excel进行截图
    python 关于excel弹窗——请注意,您的文档的部分内容可能包含了文档检查器无法删除的个人信息解决方法
    python win32com 读取带密码的excel
    移动硬盘——显示盘符但打不开
    python datetime和time的一些疑惑解答 及 获取上年同期、上月等日期
    pyinstaller 打包exe程序读不到配置文件No such file
    Python之——爱心代码参与情人节
    《易学设计模式》-笔记
    "高级"数据库小结
  • 原文地址:https://www.cnblogs.com/stevenczp/p/6607964.html
Copyright © 2011-2022 走看看