公钥体系(PKI)等密码学技术基础
公钥体系(Public Key Infrastructure, PKI)的一些概念
对称密码算法, 典型算法:DES, AES
加解密方共用一个密钥
加/解密速度快,但密钥在网络上分发比较困难,因为密钥在分发过程中可能被别人获取
哈希或散列函数(Hash), 典型算法 SHA, MD5
如果两个散列值是不相同的,那么这两个散列值的原始输入也是不相同的
用于信息压缩,并发现信息是否发生变化
计算速度快,特定算法其结果长度统一
目前至少使用SHA256
非对称密码算法(公钥体系),典型算法:RSA, ECC
加解密时,通讯一方有一对密钥(公钥和私钥)
公钥可以公开,分发给任何人
私钥不可以公开,严格持有
公钥加密,只能用私钥解密,私钥加密, 只能用公钥解密
加/解密速度较慢,但无密钥分发问题
公钥体系与对称密钥相结合的加密方式
公钥体系通常运算性能低,做大量数据加解密力不从心
通常利用公钥体系实现对称密钥的安全交换
下面看一下利用公钥体系实现对称密钥的安全交换,如下图:
A 要把原文传给 B
A 把原文用密钥加密(对称加密)
A 用 B 的公钥把密钥加密。最后得到了密文(加密后的原文, 加密后的密钥)
密文传到 B, B 用 B 的私钥解密传过来的加密密钥,得到密钥
B 用密钥解密加密的原文,得到原文
通过利用公钥体系实现对称密钥的安全交换,既避免了用非对称加密原文的性能低下缺点,又避免了对称加密不能在网络上安全分发的缺点,简而言之,充分利用了对称加密和非对称加密的优点,避免了它们的缺点。
基于公钥体系的签名和验签机制
数字签名的目的:检测数据未经授权的修改,签名者的身份识别和抗抵赖。
我们通过下图解释这个过程:
A 把原文用散列算法进行 Hash 运算,得到的结果称为摘要
A 用 A 的私钥加密摘要信息,得到的结果称为数字签名
A 把原文并附带 A 的数字签名一起发送给 B
B 用 A 的公钥对发送过来的数字签名解密得到原文摘要
B 对发送过来的原文用同样的散列算法进行 Hash 运算,得到新摘要
B 比对原文摘要与这个新摘要
如果相同则证明(1)原文没有被篡改; (2)信息是 A 发送的
通过以上的步骤就完成了签名与验签的过程。后面的数字证书体系也是以此为核心。
一些问题
为什么要用 Hash 对原文进行运算生成摘要呢?
1. 缩小存储或传输的数据量 2. 减轻公钥体系加解密性能低下的问题
第 7 步的解释
1. 如果发送的信息没有篡改,那么 也只有使用A的公钥才可以通过 相应的验签 2. 此验签过程,若通过,则表示信息一定是“公钥 A”的持有者制作
数字证书(Certificate) 和 CA(认证中心,数字证书发证系统)
前面我们了解了基于公钥体系的签名和验签机制,但还有一个问题,A 与 B 发送信息前是要把 A 的公钥发送给 B 的,想像一下,如果 A 与 B 的通信过程中被攻击者 C 截取了,然后 C 用自己的公钥冒充 A 的公钥发送给 B。并且在后续通信中 C 修改了原文,然后用自己的私钥生成自己的签名,冒充 A 的身份给 B 发送信息,而 A, B 对此全然不知,这是非常危险的。那么如何解决这个问题呢?这就用到数字证书和 CA。什么是数字证书与 CA ?想想现实世界中我们向别人证明自己的身份是用身份证,而这个身份证是政府机关颁发的,网络世界也类似,数字证书就相当于身份证,CA 相当于权威的政府机关。
数字证书(Digital Certificate),又叫“数字身份证”、“网络身份证”,是由认证中心发放并经认证中心数字签名的,包含公开密钥拥有者以及公开密钥相关信息的一种电子文件,可以用来证明数字证书持有者的真实身份。
数字证书采用公钥体制:
数字证书是”公钥+证书名称信息+签发机构对证书的数字签名”、匹配的私钥
数字证书遵从X.509国际标准
如果“ A 有数字身份”,则:
A 有自己的一对公钥和私钥;
数字身份的发证机关(CA),证明了这个公钥对应的持有人是 A。
我们来看个例子:
假设服务器 需要数字证书
服务器 example.com 将从 CA(例如 Digicert) 请求证书;
Digicert 将为 example.com 创建数字证书,数字证书将包含必要的数据,例如服务器名称,服务器的公钥等;
Digicert 将创建数据(数字证书)的哈希值,并使用自己的私钥对其进行加密(即生成了 Digicert(CA) 的数字签名);
浏览器和操作系统自带 Digicert 等权威机构的公钥;
当浏览器收到数字签名和数字证书证书时,它将使用公钥从数字签名解密生成哈希值,它还将使用数字证书中指定的散列算法生成数据(数字证书)的哈希值,如果两个哈希值匹配,则签名验证成功并且证书是可信的。
本文地址:[https://www.chuanchengzhongyi.com/kepu/d3e771c10a3a037b.html]