非对称加密
非对称加密
非对称加密有两个密钥:公钥和私钥。
特点:如果用公钥进行加密,只有用对应的私钥才能解密;如果用私钥进行加密,只有用对应的公钥才能解密。
最有名的非对称加密算法:RSA 算法
主要的应用场景:
加密数据
数字签名
身份认证
加密
通信双方把自己的公钥发送给对方,发送方发送消息时使用自己的私钥加密,接收方使用对应的公钥解密。
真实的应用场景
服务端把公钥发送给用户,用户使用公钥加密,发送密文给服务端,服务端通过私钥解密。
HTTPS 中,只在建立安全连接阶段使用非对称 RSA 加密,用于安全的协商一个对称加密密钥,之后全程使用对称加密通信,这是由于非对称加密效率低。
数字签名
用于校验身份。
由于每个人的私钥是保密且独一无二的,这就非常适合用来作为自己的身份ID。自己使用自己的私钥,别人通过公钥验签。
签名:正文 —-> hash值 —-> 使用私钥加密hash值 —-> 生成签名
验签:
签名 —-> 使用公钥解密签名 —-> hash值
正文 —-> hash值
判断两个 hash 值是否一致,一致就表示正文没有被修改,且是公钥对应的人发送的。
数字证书
数字证书用来保证公钥是可信的,防止公钥被冒充。公钥是公开的,很容易被冒充,不能随便使用别人提供的公钥,此时,需要引入第三方作为担保 CA。最终,形成了一整套数字证书体系。
公钥提供者(一般是网站)把自己的公钥提交到 CA 机构,机构把它封装成数字证书,交给网站,网站把自己的证书发送给用户,用户校验提取里面的公钥使用。
CA 使用自己的私钥对网站的公钥进行签名,防止篡改。
CA 是分级的,上级对下级签名,根证书机构是自签名的。只要根证书是可信的,后续就都可信。根证书由操作系统和浏览器预装。
想让网站使用 HTTPS 协议,需要申请数字证书。

