明文
未加密的原始数据。
密文
经过加密后的原文。
公钥 Public Key
- 在非对称加密中,是公开提供使用的密钥,任何人都可以获得
- 用于加密数据,将明文通过加密算法与公钥一起进行加密操作,生成密文
- 公钥本身不能用于解密,只能用于加密
私钥 Private Key
- 在非对称加密中,是仅持有者自己知道的密钥
- 与公钥成对,但内容与公钥不同。用于解密数据,将密文通过解密算法与私钥一起进行解密操作,恢复原文
- 私钥不能公开提供或共享,它的安全直接影响系统的安全
公钥和私钥的比较
加密解密效率:对称加密算法更高
安全性:非对称加密算法更好
密钥
用于加密和解密的数据,一个密钥可以对应多个加密算法。
对称加密 Symmetric Encryption
对称加密指的是加密和解密使用同一个密钥,所以叫做对称加密。对称加密只有一个密钥,作为私钥。
常见的对称加密算法:DES,AES,3DES等等。
非对称加密 Asymmetric Encryption
非对称加密指的是:加密和解密使用不同的密钥,一把作为公开的公钥,另一把作为私钥。公钥加密和私钥解密,或私钥加密和公钥解密。
常见的非对称加密算法:RSA,ECC等等。
哈希算法/散列算法 Hash function
是一种不可逆单向函数,计算消息摘要的算法。广泛用于信息完整性的验证,是数据签名的核心技术。
散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。
散列函数的常用算法有MD(消息摘要算法)、SHA(安全散列算法)、以及Mac(消息认证码算法)
散列函数主要作用不是完成数据的加密和解密的,只用来验证数据的完整性,
数字签名 digital signature
使用私钥对信息进行签名,通过公钥验证签名的方法,实现数据的完整性和作者身份认证。
签名流程:
- 先用Hash函数处理信息,生成摘要 digest
- 然后使用私钥对摘要加密,生成数字签名 digital signature
- 服务端将数字签名和信息一起发给客户端
- 客户端拿到数字签名后,用服务端公钥解密,得到摘要。证明确实是这个服务端发出的,完成身份认证
- 客户端对信息进行Hash处理,将结果和解密得到的摘要进行比较,如果一致则证明 信息未被篡改
数字证书 digital certificate
包含公钥和其他用户标识信息的电子文件,用于非对称加密中的公钥管理和身份验证。
数字证书是网络用户身份的标识,包括ID、公钥和颁发机构的数字签名等内容。
其形式主要有X.509公钥证书、SPKI(Simple Public Key Infrastructure,简单PKI)证书、PGP(Pretty Good Privacy)证书和属性(Attribute)证书。
其中X.509证书最为常见,通常所说的数字证书就是指X.509公钥证书。
解决问题:
在使用数字签名的场景中,如果服务端B替换客户端中服务端A的公钥,那他就可以伪装成A一直向客户端发消息。而客户端无法确定消息来源A还是B。
此时需要一个第三方机构,CA(certificate authority)为客户端中保存的公钥做认证,确认这个公钥到底是A的还是B的。
具体做法就是CA用自己的私钥加密服务端的公钥及相关信息,生成数字证书 Digital Certificate。