文章目录
前言
- 网络中发送的数据是明文,路径中的任何人都可以查看你的数据,篡改你的数据,伪造你的数据,带来一定的风险。
- HTTP 协议由于上述原因,导致需要一个安全的协议方案。整体都属于应用层,先去找 SSL(提供安全加密服务的公司)做数据加密,然后再去找 TCP (提供数据可靠性发送的公司)做数据发送。(应用层的 tomcat 还是发送的 HTTP 协议)。
- 安全又可以细分为:传输安全(HTTPS) 和 数据安全(把密码做 BCrypt,属于数据安全,对敏感数据做脱敏操作)。
一、加密的背景介绍
1、加密 encrption/解密 decrption
- 加密之前的数据被称为明文;加密之后的数据被称为密文。
- 加密和解密过程是需要秘钥(key)的。
- 加/解密、压缩/解压、哈希的区别:
- 哈希:SHA-512、SHA-256、MD5、BCrypt、CRC;把数据进过哈希之后变成哈希值,是单向的。
- 加/解密:明文加密变成密文,密文解密可以回成一个明文,中间不会有信息损失。
- 压缩/解压:虽然可以回来,但是中间可能会有信息损失。
- 对于现代密码学来说:加密算法是完全可以公开的,只是秘钥不公开就可以;任然可以保证数据安全。
2、对称加密vs非对称加密
- 对称加密:加密和解密使用的是同一个密钥
- En(key1, P) = C ; De(key2, C) = P ; key1 == key2 对称加密
- En(key1, P) = C ; De(key2, C) = P ; key1 != key2 非对称加密
2.1 对称加密 AES 算法比较常见
- RSA 和 DSA:依赖于大数的因数;
- ECDSA:椭圆曲线签名算法;
- 对称加密:速度更快,缺点:需要提前交换密钥。
- 非对称加密:一个密钥专门用于加密,往往是可以公开的,称为公钥;一个密钥专门用于解密,不公开,称为私钥。
实践中两个配合使用:使用非对称加密来交换对称加密中使用的密钥;以后使用非对称加密来传递信息。
上述流程可以避免窃听和篡改问题,但伪造问题没有办法解决,引出中间人攻击。客户端发送数据由恶意中间人传给服务器,服务器的公钥记为pubk1,恶意中间人把自己的公钥传给客户端记为 pubk2;然后客户端用 pubk2 生成对称密钥记为k1;中间人解密窃听k1,再次使用 pubk1加密传到服务器;以后再通过k1进行加密数据传输就不是安全的了。(中间人伪造服务器)
二、如何解决中间人攻击(证书机制)
- 全球有一组权威证书颁发机构(Certificate Authority),各个OS,会在出厂期间信任这些机构。
- 信任链:允许权威 CA 发展下线;比如:OS 信息 甲 CA,出现 乙 CA 声明自己是由 甲CA 做担保的,OS 也会信任乙 CA。
- 各大网站如果要开设 HTTPS 网站,就需要找这些CA进行证书的颁发。证书主要携带信息(网站所有者信息、CA 自己的公钥)
- HTTPS:CA + 证书/非对称加密/对称加密;实际中:通过 CA 购买了证书(只颁给域名) + SSL(TLS)库即可。
三、NAT Network Address Translation
- 解决 ip 地址不够用的问题,通过 内网 ip 转换 外网 ip;
- NAT 内部维护一组隐射关系
版权声明:本文为ccyzq原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。