百科问答小站 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可以用其进行加解密     



  

相关话题

  你能写出你认为既简洁又很酷的公式么? 
  女生难道就不能学物理或数学专业吗? 
  已知一个圆,一个点和一条直线,如何找到一个与圆相切过点且圆心在直线上的圆? 
  有哪些让人眼前一亮的函数? 
  怎么证明算术平均数大于等于几何平均数? 
  谈一谈你读过的印象最深的几篇论文,里面有哪些原创性的启发性的思想? 
  计算机专业的学生怎样练习编程才能把编程学精通啊? 
  家境普通的姑娘想学物理或数学,怎么看? 
  加法交换律 a+b=b+a 是怎么证明的? 
  怎么建立复数与实数的一一对应? 

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





© 2024-09-19 - tinynew.org. All Rights Reserved.
© 2024-09-19 - tinynew.org. 保留所有权利