百科问答小站 logo
百科问答小站 font logo



Diffie-Hellman密码交换是如何运作的? 第1页

  

user avatar   guo-wu-xin 网友的相关建议: 
      

使用对称加密算法时,密钥交换是个大难题,所以Diffie和Hellman提出了著名的Diffie-Hellman密钥交换算法。

Diffie-Hellman密钥交换算法原理:


上图很经典

它的数学基础就是离散对数这个数学难题。用它进行密钥交换的过程简述如下:

选取两个大数p和g并公开,其中p是一个素数,g是p的一个模p本原单位根(primitive root module p),所谓本原单位根就是指在模p乘法运算下,g的1次方,2次方……(p-1)次方这p-1个数互不相同,并且取遍1到p-1;

对于Alice(其中的一个通信者),随机产生一个整数a,a对外保密,计算Ka = g^a mod p,将Ka发送给Bob;

对于Bob(另一个通信者),随机产生一个整数b,b对外保密,计算Kb = g^b mod p,将Kb发送给Alice;

在Alice方面,收到Bob送来的Kb后,计算出密钥为:key = Kb^a mod p = g^(b*a) mod p mod p;

对于Bob,收到Alice送来的Ka后,计算出密钥为:key = Ka ^ b mod p = g^(a*b) mod p mod p。

攻击者知道p和g,并且截获了Ka和Kb,但是当它们都是非常大的数的时候,依靠这四个数来计算a和b非常困难,这就是离散对数数学难题。

       (1)Alice与Bob确定两个大素数n和g,这两个数不用保密  (2)Alice选择另一个大随机数x,并计算A如下:A=gxmod n  (3)Alice将A发给Bob  (4)Bob  选择另一个大随机数y,并计算B如下:B=gymod n  (5)Bob将B发给Alice  (6)计算秘密密钥K1如下:K1=Bxmod n  (7)计算秘密密钥K2如下:K2=Aymod n   K1=K2,因此Alice和Bob可以用其进行加解密     



  

相关话题

  知乎现在都有哪些值得关注的严肃输出? 
  中国古代数学有什么成就? 
  为什么很多领域的理论发展到后来,简洁有力的部分都逐渐消失了?这些领域还可能出现所谓的「终极规律」么? 
  数学中,f'(x) 和 (f(x))' 到底有什么区别? 
  Java如何打好牢固的基础? 
  微软当年的 J++ 究竟是什么?为什么 Sun 要告它? 
  数学或者自然科学中有哪些理论技巧一经提出就大大化简了过去某些问题很困难繁琐的解答? 
  谁对于enigma加密机有比较好的解密算法? 
  一个浮点数到底是怎么被转换为字符串输出?一个浮点数不精确,那么其输出的值是怎么被确定的呢? 
  轮子为什么不设计成莱洛三角形? 

前一个讨论
有没有那种感觉,自从俄乌冲突以后,对欧美来源的信息和新闻都无法直视,无法相信了?
下一个讨论
上海母女隐瞒行程获取绿码来杭州,不规范戴口罩,坐地铁逛商场长达 7 小时,现在确诊,你怎么看?





© 2024-05-17 - tinynew.org. All Rights Reserved.
© 2024-05-17 - tinynew.org. 保留所有权利