文章目录
- Pre
- 对称密钥的死穴 - 经典的密钥配送问题
- 什么是非对称密钥
- 非对称密钥解决密钥配送问题的四个方案
- 共享密钥
- 密钥分配中心(KDC)
- Diffie-Hellman 密钥交换体系
- 公钥密码体系
- RSA算法
Pre
对称密钥的死穴 - 经典的密钥配送问题
假设 Alice 和 Bob 两个人需要相互发送消息,这封邮件里面的信息比较私密,因此不想让第三人知道.
Alice 思来想去,觉得有必要对内容做个加密. 这样即便被 Eve 窃取了,他也无法知道内容.
是不是 Alice 使用对称密钥将加密数据通过邮件传输给 Bob 就可以高枕无忧了? Alice 加密的数据,Bob 需要解开才行.
那问题就来了:如果 Alice 可以通过安全通道将密钥传递给 Bob,那么还有啥必要搞加密呢? 如果没有这样的安全通道,那么 Bob 又如何接受密钥呢?
这就是密钥配送问题的由来 .
现实世界中,这个问题如何解决呢? 通常需要下发密钥的时候,会同时通过两个渠道发送两个信封。 这两个信封是由两组人走不同的路线到达同一个地点。 只有将两个信封内的数据放到一起才是完整的密钥。否则单纯拿到其中一封并不能解决任何问题。
什么是非对称密钥
非对称密钥就是为了解决密钥配送问题,通常采用的方案有四个
- 共享密钥
- 密钥分配中心
- Diffie-Hellman 密钥交换
- 公钥密码
接下来我们:
- 介绍共享密钥的定义、工作原理、优缺点及应用场景。
- 讲解密钥分配中心的定义、工作原理、优缺点及应用场景。
- 详细说明Diffie-Hellman密钥交换体系的定义、工作原理、优缺点及应用场景。
- 介绍公钥密码体系的定义、工作原理、优缺点及应用场景,并详细说明RSA算法
非对称密钥解决密钥配送问题的四个方案
共享密钥
定义:共享密钥是一种简单的密钥配送方案,通过安全通道事先将密钥传递给通信双方。
工作原理:
- Alice和Bob通过某种安全通道(如面对面交换、使用安全信道)共享一个密钥。
- 使用共享密钥进行加解密。
优点:
- 实现简单,适用于小范围内的通信。
缺点:
- 随着参与者数量的增加,管理和分发密钥的成本和复杂性急剧上升。
- 安全性依赖于共享密钥的保密性和安全通道的安全性。
应用场景:
- 小型闭合网络或组织内部的通信,如银行内部系统。
密钥分配中心(KDC)
定义:密钥分配中心(Key Distribution Center, KDC)是一个集中管理密钥的实体,负责生成和分发临时密钥。
工作原理:
- KDC为每个用户生成一个密钥,并存储在数据库中。
- 当Alice需要和Bob通信时,向KDC申请临时密钥。
- KDC生成临时密钥,并使用Alice和Bob的密钥分别加密临时密钥。
- KDC将加密后的临时密钥分别发送给Alice和Bob。
- Alice和Bob解密得到临时密钥,使用临时密钥进行加密通信。
- 通信结束后,销毁临时密钥。
优点:
- 扩展性较好,适用于中等规模的用户群体。
- 减少了每对通信双方需要直接共享密钥的需求。
缺点:
- 密钥分配中心是一个单点故障,如果KDC失效,所有通信都会中断。
- 需要高度信任KDC的安全性和可靠性。
应用场景:
- 中等规模的网络环境,如公司内部网络或组织内的通信。
Diffie-Hellman 密钥交换体系
定义:Diffie-Hellman密钥交换是一种基于数学问题的密钥交换协议,允许通信双方在不安全的信道上协商共享密钥。
工作原理:
- Alice和Bob各自选择一个私有密钥,并计算各自的公开值。
- Alice和Bob交换公开值。
- Alice使用Bob的公开值和自己的私有密钥计算共享密钥。
- Bob使用Alice的公开值和自己的私有密钥计算共享密钥。
即使Eve截获了公开值,也无法推导出共享密钥。
优点:
- 无需事先共享密钥,适用于不安全信道。
- 提供了良好的安全性。
缺点:
- 需要适当的数学基础和计算能力。
- 不提供身份验证,需结合其他机制防止中间人攻击。
应用场景:
- 安全电子邮件、VPN等需要安全密钥交换的场景。
公钥密码体系
密钥配送问题痛点在于加解密使用的是相同的密钥,所以才需要交换。 如果 Alice 和 Bob 使用的不同的密钥呢? 那是不是就不需要交换了呢? 这正是公钥体系的核心: 双方使用不同的密钥进行加解密。
定义:公钥密码体系使用一对密钥进行加解密:公钥用于加密,私钥用于解密。
工作原理:
- Alice和Bob各自生成一对公钥和私钥。
- Alice和Bob交换公钥。
- Alice使用Bob的公钥加密消息,发送给Bob。
- Bob使用自己的私钥解密消息。
在这个过程中,公钥可以任意传递,而私钥决定不能外泄
优点:
- 无需安全通道传递公钥,私钥无需共享。
- 提供了身份验证和数字签名功能。
缺点:
- 加解密速度较慢,不适合大数据量的加密。
应用场景:
- 安全电子邮件、数字签名、SSL/TLS等需要高安全性的场景。
RSA算法
定义:RSA是一种常见的公钥加密算法,基于大素数分解的难题。
加密公式:
[ y = x^e \mod N ]
其中,( x )为明文,( y )为密文,( e )和( N )为公钥。
解密公式:
[ x = y^d \mod N ]
其中,( d )和( N )为私钥。
RSA的安全性依赖于大素数分解的计算难度,公钥和私钥是一对不可逆的数学关系。
应用场景:
- 安全数据传输、数字签名和身份验证等。