公钥密码体制
产生原因
在对称密钥密码体制中,加解密双方要共享同一个密钥。如何才能做到这一点呢?
容易想到的两种方法:
(1)双方事先约定同一密钥,这将给密钥的管理和更换带来极大的不便
(2)使用信使来传送密钥,对于高度自动化的大型计算机网络,使用信使来传送密钥显然是不合适的。尽管使用复杂但高度安全的密钥分配中心KDC可以解决该问题,但是采用公钥密码体制可以比较容易地解决该问题。
公钥密码体制
使用不同的加密密钥和解密密钥,其概念是由Stanford大学的研究人员Diffie和Hellman于1976年提出的。
- 公钥:公开给任何人,用于加密数据或验证签名,称为公钥PK
- 私钥:严格保密,用于解密数据或创建签名,称为私钥SK
- 加密算法𝑬和解密算法𝑫都是公开的。
公钥密码体制的加密/解密过程的一般表示式 DSK(EPK(X))
加密和解密运算可以对调 EPK(DSK(X))
𝑷𝑲只能用来加密,而不能用来解密—-DPK(EPK(X)) ≠ X
由于从公钥𝑷𝑲不能推导出私钥𝑺𝑲,并且𝑷𝑲不能用来解密,因此𝑷𝑲可以是公开的。
显然,采用公钥密码体制更易解决密钥分发的问题。
公钥密码算法
公钥密码体制提出不久,研究人员就找到了三种公钥密码算法。1976年由美国三位科学家Rivest、Shamir和Adleman提出,并在1978年正式发表的RSA(Rivest、Shamir and Adleman)算法,就是目前最著名的公钥密码算法,它是基于数论中大数分解问题的算法。其他的还有Diffie-Hellman、ECC (椭圆曲线加密算法)
RSA算法
- RSA算法是最广泛使用的非对称加密算法之一。基于大数分解问题(将大数分解为质因数):两个大素数的乘积很容易计算,但是分解这个乘积却非常困难。因此,可以将这个乘积作为公钥公开,而将两个大素数作为私钥保密。
- RSA算法的安全性依赖于大数分解的难度,它在数字证书和SSL/TLS协议中得到了广泛应用
ECC算法
- 椭圆曲线加密算法(ECC)是另一种非对称加密算法,基于椭圆曲线离散对数问题,提供与RSA相当的安全性但密钥更短(如256位ECC ≈ 3072位RSA)。
- ECC的主要优势是它可以使用更短的密钥长度提供与RSA相同或更高的安全级别,这使得加密过程更加高效。
- ECC适用于资源受限环境,如在移动设备和物联网场景中特别有用
Diffie-Hellman
- 用于安全密钥交换,允许双方在不安全的信道上协商共享密钥。
应用场景
公钥密码体制不仅用于加密,还可以很方便地用于鉴别和数字签名。
加密通信
- 发送方用接收方的公钥加密数据,只有接收方的私钥可解密。
- 示例:HTTPS中通过RSA或ECC交换对称会话密钥。
身份认证
- 公钥可作为身份标识,结合证书颁发机构(CA)验证实体真实性(如SSL/TLS证书)。
数字签名
- 发送方用私钥对消息生成签名,接收方用公钥验证签名。
- 确保消息来源可信且未被篡改(如软件更新、区块链交易)。
数字证书
CA 用自己的私钥对信息原文所有者发布的公钥和相关信息进行加密,得出的内容就是数字证书。
信息原文的所有者以后发布信息时,除了带上自己的签名,还带上数字证书,就可以保证信息不被篡改了。信息的接收者先用 CA给的公钥解出信息所有者的公钥,这样可以保证信息所有者的公钥是真正的公钥,然后就能通过该公钥证明数字签名是否真实了。
优缺点
优点
- 解决密钥分发问题(无需共享私钥)。
- 支持数字签名和不可否认性。
缺点
- 计算复杂,速度慢(通常仅用于加密小数据或交换对称密钥)。
- 密钥长度较长(尤其是RSA)。
公钥密码算法与对称密钥密码算法的结合
目前的公钥密码算法比对称密钥密码算法慢好几个数量级。因此
公钥密码体制通常用于会话密钥的建立
对称密钥密码体制被用于其他大多数情况下的加密
示例场景
- HTTPS:
客户端用服务器公钥加密对称密钥,服务器用私钥解密后建立安全通道。 - PGP/GPG:
加密电子邮件时使用接收方公钥,接收方用私钥解密。 - 比特币:
用私钥对交易签名,公钥验证交易合法性。