对称加密和非对称加密
对称加密
加密和解密的密钥是一样的 缺点就是容易被中间人破解
非对称加密
公钥是所有人都可以认领 私钥是保密的 只有一个人知道 例如A给B发送邮件 A用的B的公钥 只有B的私钥可以解密A的公钥的内容 B的私钥的唯一性 保证了信件不会被泄露
但是如果黑客冒充A给B发送邮件 B是不知道是A或者黑客给他发的邮件
这该怎么办 A可以用自己的私钥把需要发的内容加密 如果B收到的邮件可以用A的公钥进行解密 那么就可以证明是A发的
公钥的作用就是简单的加密
私钥的作用就是证明内容的来源
公钥和私钥是成对出现的 作用也是相辅相成的 缺一不可
数字签名
比如A对B发送Email
1 A先对这封Email进行哈希算法获得摘要 简称h1
2 然后对摘要进行加密 生成的东西叫做 数字签名
3 把数字签名加在Email后面一起发送给B
4 B收到邮件后 用A的公钥进行解密 成功则这是A发送的 否则就是有人冒充A发送的
5 B对邮件进行hash算法 得到h2
6 B会对比自己hash运算的h2和第四步解密的h1进行比较 如果h1=h2 就说明了文件没有篡改
图示
简单来说数字签名就是对数据的hash值加密后的一段数据
用来验证数据的来源和数据的完整性
疑问
1 如果中间人同时篡改了Emai和数字签名那就很难发现
答:数字签名的生成需要对方的私钥 所以很难伪造 所以私钥决不能泄露
2 公钥是公开且可以导入到电脑 比如C可以在B的电脑上替换A的公钥 然后用自己的私钥给B发送Email 这时候B收到的
邮件实际上C冒充的
答:这种情况是存在的 针对公钥容易被替换 于是数字证书就应运而生
数字证书
首先A去找证书中心为公钥认证 证书中心用自己的私钥 对A的公钥和相关信息进行加密 形成数字证书
A的电子邮件除了正文 后面还有 数字签名 数字证书
B收到Email后用CA的公钥解密数字证书 拿到A的公钥 之后和上面的一致 去验证数字签名
疑问
1 数字证书被伪造
答:数字证书是可以被伪造的 所以数字证书也是需要数字签名的
2 要是有很多人给B发送邮件 那么B需要保存很多份CA公钥么
答:不需要 因为CA认证中心可以给B一份根证书 里面存储的CA公钥来验证所有CA分中心颁发的证书 类似于国家公安局管省级 省级管市级 只要有根证书 就可以验证下级证书的可靠性
3 如何验证根证书的可靠性
答:无法验证 根证书是自验证证书 是社会绝对认可的绝对权威的第三方机构 保证根证书的可靠性 否则整个加密体系就没有意义了
例子
很多正规企业会给正规软件签署数字签名和证书 而mac已经预设了很多CA证书
查看对应app的数字签名
codesign -dvvv XX.app
我看网上有windows操作系统 修改app的数字签名 可以用CA的证书来验证数字签名无效 还不知道mac的app如何修改
从这可以引申https
上面是百度的证书和https的安全连接
https用数字签名解决了服务器的身份验证和数据的完整性 还有数据不被窃听 需要用上SSL
对传输通道加密