数据加密:用公钥加密,只有用私钥解开,因为私钥只有你自己有,所以他保证了数据不能被别人看到
签名:用私钥加密,只能用公钥解密,任何人都可以用公钥验证。因为私钥只有你自己有,所以它可以保证数据只能是你发出的,不可能有别人发出,除非你得私钥丢失或被第三方破解出来
数字签名起不到加密作用,但可以确定是谁发出的信息
使用公钥加密算法,可以对明文进行加密,但不能确定是谁发出该消息
用自己的私钥随便加密一些数据,这就叫签名,如果对方能够用公钥解开,就足以证明发送者是你,之所以产生摘要,目的是确保数据不被中途篡改
公钥加密,私钥解密。
私钥数字签名,公钥验证。
下面我们简单描述下HTTPS的工作原理,大家就能对应的看到上面3条作用的身影了:
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。握手过程的简单描述如下:
- 浏览器将自己支持的一套加密算法、HASH算法发送给网站。
- 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
- 浏览器获得网站证书之后,开始验证证书的合法性,如果证书信任,则生成一串随机数字作为通讯过程中对称加密的秘钥。然后取出证书中的公钥,将这串数字以及HASH的结果进行加密,然后发给网站。
- 网站接收浏览器发来的数据之后,通过私钥进行解密,然后HASH校验,如果一致,则使用浏览器发来的数字串使加密一段握手消息发给浏览器。
- 浏览器解密,并HASH校验,没有问题,则握手结束。接下来的传输过程将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输。
数字证书认证机构(CA)
- 它的出现就是为了防止中间人攻击的。
- 防止中间人攻击,说白了就是要确保B收到的A的公钥(证书)真实有效,这样数字证书认证机构应运而生。
-
数字证书认证机构说白了就相当于一个受信任的中间人。CA有一对根密钥,其公钥称为根证书。
A向CA申请一个证书,则CA利用其私钥签名A的公钥,其结果就是“服务器A,通过CA验证的证书”。而在用户的操作系统(或者浏览器)中,会集成世界范围内所有被信任的CA的根证书(公钥)。这样,用户B在收到A发送给他的证书后,需要利用CA的根证书(公钥)解密后才能得到正确的公钥,如此一来,就完成了对A发送过来的信息的验证。