您现在的位置是:首页 > 正文

密钥协商机制

2024-02-01 05:11:11阅读 2

https://www.cnblogs.com/-9-8/p/7985989.html

转自cnblogs, 作者: _9_8


密钥协商机制

https://www.cnblogs.com/-9-8/p/7985989.html

密钥协商机制,主要来得到通信双方的临时会话密钥。主要的方式有:

一、依靠非对称加密(公钥)算法;   RSA,ECC等。
    防偷窥,防篡改。
  拿到对方公钥的一方随机产生会话密钥,利用公钥加密,通信使用加密后的信息,通信另一方用私钥进行解密,
    这样通信双方都拿到会话密钥。

二、专用的密钥交换算法;     DH,ECDH等。
             DHE,ECDHE等。
    防偷窥,不防篡改。
  只交换产生密钥的部分数据,各自保证可以产生相同的数据。

三、依靠共享的secret;  PSK,SRP等。
   双方依靠共享的信息,直接通过相同的kdf function来产生同一密钥。

术语:篡改,中间人攻击,---Man In The middle attack,MIMT。

一、依靠RSA或ECC公钥算法

1.1 基于RSA的密钥协商的过程:

  1)客户端连上服务器;
  2)服务器发送CA证书给客户端;
  3)客户端验证该证书的可靠性;
  4)客户端从CA证书中拿到公钥;
  5)客户端生成一个随机密钥K,用公钥加密得到K'
  6)客户端将K'发送给服务器;
  7)服务器得到K'之后,用自己的私钥解密得到K;

(基于RSA的密钥协商的过程是早期的SSLv2使用的一种密钥协商机制;)

1.2 基于ECC的密钥协商过程:

整体流程相同,但是ECC并不是直接对msg进行加解密,而是将公钥经过hash算法,之后与msg做异或运算。

二、基于DH/ECDH/DHE/ECDHE算法的密钥协商:

2.1 DH

DH本身是基于离散对数分解问题的,算法过程与进行两次的RSA类似,

1458798-c60eb2a0d3c19c80.png

最原始的DH算法并不能对抗MIMT(中间人攻击),所以一般需要配合签名技术:

  • 不配合签名技术的DH称为DH-ANON
  • 配合RSA签名的称为DH-RSA
  • 配合DSA签名的称为DH-DSA
  • 配合ECDSA签名的称为DH-ECDSA

DH协商流程:

  1. 客户端连接上服务器;
  2. 服务器端生成一个随机数S作为自己的私钥,做模幂运算之后,得到公钥;
  3. 服务器,选择RSA,ECDSA,DSA的一种,对模幂运算的参数,以及公钥进行签名,并发送给客户端; 防止服务器被篡改
  4. 客户端验证签名是否有效; 客户端并不会对签名进行解密,DH的特性,双方只交换公钥,只做加密操作;
  5. 客户端也产生一个随机数C,加密之后,将公钥传给服务器;
  6. 客户和服务器,根据得到的公钥产生同一个会话密钥;

2.2 ECDH

DH算法的变种==>ECDH算法,数学原理,变为椭圆曲线上的离散对数的分解问题;

ECDH算法与DH算法类似,但是基础运算由模幂运算,变为点乘运算,同样不能防止MIMT(中间人攻击);

需要和其他的签名算法RSA,DSA,ECDSA配合;

2.3 DHE和ECDH

前向保密,forward security,最初用来定义会话密钥交换协议的一种安全性:即使长期密钥已经泄露,也不会影响之前的会话密钥的泄露;也就不会暴露之前的会话内容

  DH和ECDH算法为了实现前向安全,变种加入了另一个随机变量,ephemeral key,得到新的算法,DHE,ECDHE,

RSA和DH,DSA都是基于整数有限域离散对数来实现;

ECC和ECDH,都是基于椭圆曲线的离散对数难题来实现的;

DSA相比较与RSA,DSA只能用作签名,并且p,q公开,签名输出r和s,两个字符串。

三、给予PSK预共享密钥协商通讯密钥

  • PSK
  • PSK-RSA
  • PSK-ECDSA?

3.2 PSK相关的RFC文档

  • RFC 4279: "Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)".
  • RFC 4785: "Pre-Shared Key (PSK) Ciphersuites with NULL Encryption for Transport Layer Security (TLS)".
  • RFC 5487: "Pre-Shared Key Cipher Suites for TLS with SHA-256/384 and AES Galois Counter Mode".
  • RFC 5489: "ECDHE_PSK Cipher Suites for Transport Layer Security (TLS)".

四、附录: SSL/TLS对各个算法的支持;

1458798-cd7971c0b5586c6c.png
SSL/TLS对各个算法的支持

网站文章

  • java编程题:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现 热门推荐

    /** * 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现 * */ public class Test { public static void main(String[] args) { System.out.println("结果是:"+Test.foo(30)); } /** * 递归算法实现 */

    2024-02-01 05:10:38
  • 记录一个比较好的学习数据结构的网站

    有各种动画演示: http://student.zjzk.cn/course_ware/data_structure/web/main.htm

    2024-02-01 05:10:23
  • Mybatis实训内容

    Mybatis西南石油大学20级实训内容

    2024-02-01 05:09:55
  • 基于PyQt5实现文本框导入数据并显示

    基于PyQt5实现文本框导入数据并显示

    基于Python实现文本框导入数据并显示 通过在lineEdit文本框中输入数据后,点击按钮pushButton提交数据至表格tableWidget显示; 示例效果 文本框导入数据并显示示例程序 # ...

    2024-02-01 05:09:50
  • Selenium框架详解一

    Selenium框架详解一

    Selenium框架详解

    2024-02-01 05:09:42
  • 轴变换permute()和transpose()

    轴变换permute()和transpose()

    permute()和transpose()都是对轴进行操作\import torchfrom PIL import Imageimport numpy as npimg=Image.open(r'C:\Users\Administrator\Pictures\QQ浏览器截图\QQ浏览器截图20190301211443.png')a=np.array(img)b=torch.Tensor...

    2024-02-01 05:09:37
  • Dart学习笔记 List Set Map详解

    List Set Map详解List中常用的属性和方法常用属性:length 长度reversed 翻转 (注意这是个属性,属性值为字符串)isEmpty 是否为空isNotEmpty 是否为不空常用...

    2024-02-01 05:09:06
  • Chaos Mesh 在每刻科技实际场景的使用

    Chaos Mesh 在每刻科技实际场景的使用

    首先,在平台上去注入对应的方法异常故障,这个时候逻辑走到了异常处理的代码块,再注入故障,进入回滚,继续对回滚逻辑注入故障,到此就完成了这个异常场景的可测性。简单来说,首先获取到该函数的返回值(一个列表...

    2024-02-01 05:08:59
  • 正在从以下位置加载符号 VS 调试非常慢

    正在从以下位置加载符号 VS 调试非常慢

    前两天突然出现了一个.net未知异常的调试询问? 是否启动VS实例进行调试, 我选择了调试. 然后我自己的项目调试一下就变得非常慢了. 一直出现 ”正在从以下位置加载xxxxxx符号” 一个个加载, 非常慢. 往常启动调试 几秒钟就把这些加载好了. 但是现在几分钟都加载不完. 网上查了一下, 禁用 Microsoft 符号服务器, 清空符号缓存 即可

    2024-02-01 05:08:53
  • MySQL常见错误及处理方法

    1205 - Lock wait timeout exceeded; try restarting transaction出现此错误是因为语句被锁住了,所以释放这个锁,首先查询被锁的语句select * from information_schema.innodb_trx;执行kill命令kill 141865400;

    2024-02-01 05:08:25