8.1 什么是网络安全
8.2 密码学的原则
安全通信的特性:
机密性
报文完整性
端点鉴别
运行安全性
8.2.1对称密钥
凯撒密码
单码替代密码
多码替代密码
流密码
块密码:
DES:
AES:Advanced Encryption Stanard 使用128比特块
密码块链接
8.2.2公开密钥加密
数字签名
RSA算法
模N运算
指数运算
素数
P452 数论中的一个结论,这是RSA的理论基础
RSA的安全性:依赖于这样的事实:目前没有已知的算法可以快速进行一个数的因数分解
RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
通信双方,如果传输大量数据,全部使用RSA来加密的话,运算量是很大的。
可以使用对称性加密和非对称性加密结合分的方法
使用对称性加密AES加密所有的数据,而AES的密钥,则使用RSA加密。
这样接收方只要RSA解密AES密钥,就可以相对轻松的解密对方发来的数据了
中间人攻击
如何判断
8.3.3 数字签名
如何确认数据源正确,数据完整未被篡改?
明文数据m和KB-(Hash(m)) 发送给对方
接收方比较明文数据Hash(m) 和 KB+(KB-(Hash(m)))是否一致即可确认
公钥认证
将公钥和特定实体绑定通常是由认证中心完成的,其主要职责是是识别和发行证书合法化
解决的问题:将公钥和某个喜爱现实中的人绑定
8.6 使用TCP连接安全
安全套接字层
Secure Socket Layer SSL
HTTPS关注的重点:中间人攻击
http://www.jianshu.com/p/b894a7e1c779 HTTPS 是如何保证安全的?
https安全在哪里,原理是什么?
这时候我们会引入一个第三方叫做 CA
CA 是一些非常权威的专门用于认证一个网站合法性的组织。服务商可以向他们申请一个证书,使得他们建立安全连接时可以带上 CA 的签名。而 CA 的安全性由操作系统或浏览器来认证。你的 Windows、Mac、Linux、Chrome、Safari 等会在安装时带上一个他们认为安全的 CA 证书列表。如果和你建立安全连接的人带着这些人的签名,那么认为这个安全连接是安全的,没有遭到中间人攻击。
所以通过 对称加密 + 非对称加密 + CA认证 这三个技术混合在一起,才使得 HTTP 的后面加上了一个 S —— Security。实际上 HTTPS 的协议比我这里描述的更复杂一些,我这里说的主要是基本的实现原理。因为其中任何一环稍有闪失,就会使得整个加密都将变得不安全。
这也是为什么 HTTPS 的加密协议从SSL 1.0 升级到 SSL 3.0 再被 TLS 1.0 现在被 TLS 1.2 取代,其背后都是一环环细节上的修改,以防任何地方的闪失。
但即使如此,你的 HTTPS 尽可能的保证了你传输的安全,但这种安全也不是绝对的。比如 CA 证书出了问题被用于了中间人攻击,在短期内,你的安全将会陷入直接的麻烦直到浏览器或操作系统重新更新了你的 CA 列表或者你手动调整了这个列表。但大多情况下不必杞人忧天,它基本上是安全的。