目录
[数字签名 签名验签](#数字签名 签名验签)
[数字证书的应用 https协议](#数字证书的应用 https协议)
数据在网络中传输过程中,怎么做到
- 数据没有被篡改?hash算法
- 信息发送者的身份认证?用发送者的私钥对数据进行加密,接收者只能用发送者的公钥进行解密。发送者的公钥怎么给到接收者?如果还是用网络进行传输,无法保证公钥本身的传输安全啊?比如,A用RSA算法生成了自己的一对公钥、私钥,A把信件的内容用hash算法生成摘要,用私钥加密摘要信息形成数字签名,在网络上发送信件的时候,A的公钥,信件本身,数字签名三者会在网络上进行传输,黑客可以截获到这些信息,黑客用新生成的一对公钥,私钥,重新生成数字签名,给到接收者,接收者收到的就是黑客篡改过的内容了
- 怎么确保信息发送者的身份没有被截获篡改?用数字证书证明发送者的身份。数字证书由发送者向权威机构申请,包含了身份信息(发送者的公钥)。
- 怎么保证数字证书的安全?数字证书是经过ca机构数字签名的,ca机构也生成一对公钥、私钥,用私钥对发送者的公钥及一些信息进行数字签名,放入数字证书当中,此时数字证书就相当于发送者的身份信息、公钥和数字签名的组合,在个人的电脑或手机里安装根证书,根证书中记录了可以信赖的ca机构和其对应的公钥,就可以用公钥去验证数字证书的内容,从而确认发送者的公钥是自己的。
机密性-加密
对称加密
AES加密算法,密钥长度128、192或256,安全强度很高,性能很好
加密分组模式:将明文分组加密,微信支付中使用 AEAD_AES_256_GCM
非对称加密
使用公钥加密后只能用私钥解密,反过来,私钥加密后也只能用公钥解密
RSA加密算法:最著名的非对称加密算法
身份认证
公钥加密私钥解密,可以确保数据的机密性
私钥加密公钥解密,可以进行身份的认证
摘要算法和数据完整性
hash值一直表示文件内容没有被篡改过
常见的摘要算法:md5、sha1、sha2(sha224、sha256、sha384)
数字签名 签名验签
- A要发邮件给B,A把自己的信件内容用摘要算法,生成摘要
- A用自己的私钥加密摘要,形成一份签名,追加到信件中
- B收到信件,先把信件的内容用相同的hash算法,生成摘要1
- B把信件中的签名,用A的公钥加密,生成摘要2
- 比对两份摘要,如果一致,可以说明信件没有被篡改过,并且是A发的信件
B怎么拿到的A的公钥?如果也是通过网络进行传输,又可能被黑客截取篡改,怎么办?
数字证书
公钥信任问题,黑客可能伪造公钥,这个怎么办呢?把公钥放到数字证书中,数字证书需要向有社会公信力的CA机构进行申请,申请时需要提供身份信息
申请数字证书所需信息
数字证书的生成
- A向ca机构申请数字证书,填入相关的身份信息和A的公钥
- ca机构把A的公钥和身份信息hash运算后,用自己生成的私钥加密形成数字签名
- 把生成的数字签名追加到数字证书中颁布给A
- bob发送的信件,包含数字证书、数字签名和内容
- pat拿到信件,用自己本地安装的ca机构的公钥解密数字证书,获取bob用自己的公钥和身份信息生成的hash值,用相同的hash算法也生成hash值,比对,如果一致证明公钥是bob的
- 用拿到的bob的公钥再去解密信件内容,剩下的步骤就和上面的一样了
数字证书的应用 https协议
网站想要使用https
数字证书的申请
免费的数字证书申请可访问Let's Encrypt