1.HTTP协议的安全问题
HTTP 协议默认是采取明文传输的,因此会有很大的安全隐患。
常见的提高安全性的方法是:对通信内容进行加密后,再进行传输。
常见的加密方式有:
- 不可逆
- 可逆
- 对称加密:DES、3DES、AES等
- 非对称加密:RSA等
- 其它
2.单向散列函数(One-way hash function)
单向散列函数,可以根据消息内容计算出散列值。
散列值的长度和消息的长度无关,无论消息是1bit、10M、100G,单向散列函数都会计算出固定长度的散列值。
单向散列函数,也被称为消息摘要函数(message digest function)、哈希函数(hash function)。
输出的散列值,也被称为消息摘要(message digest)、指纹(fingerprint)。
2.1 单向散列函数的特点
(1) 根据任意长度的消息,计算出固定长度的散列值。
(2) 计算速度快,能快速计算出散列值。
(3) 消息不同,散列值也不同。
(4) 具备单向性。
2.2 常见的几种单向散列函数
MD4、MD5:产生 128bit 的散列值,MD 就是 Message Digest 的缩写
SHA-1:产生 160bit 的散列值
SHA-2:SHA-256、SHA-384、SHA-512,散列值长度分别是 256bit、384bit、512bit
SHA-3:全新标准
2.3 防止数据被篡改
2.4 几个网站
MD5加密
https://www.cmd5.com/hash.aspx
MD5解密
https://www.cmd5.com/
其它加密
https://www.sojson.com/encrypt_des.html
https://tool.chinaz.com/tools/md5.aspx
3.对称加密(Symmetric Cryptography)
对称加密,也叫对称密码,在对称加密中,加密、解密时使用的是同一个密钥。
常见的对称加密算法有:
3.1 DES(Data Encryption Standard)
DES 是一种将 64bit 明文加密成 64bit 密文的对称加密算法,密钥长度是 56bit。
规格上来说,密钥长度是 64bit,但每隔 7bit 会设置一个用于错误检查的 bit,因此密钥长度实质上是56bit。
由于 DES 每次只能加密 64bit 的数据,遇到比较大的数据,需要对 DES 加密进行迭代(反复)。
目前已经可以在短时间内被破解,所以不建议使用。
3.2 3DES(Triple Data Encryption Algorithm)
3DES,将 DES 重复 3 次所得到的一种密码算法,也叫做3重DES
三重DES并不是进行三次DES加密(加密→加密→加密),而是加密(Encryption)→解密(Decryption)→加密(Encryption)的过程。
目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题。
3个密钥都是不同的,也称为DES-EDE3。
如果所有密钥都使用同一个,则结果与普通的DES是等价的。
如果 密钥1、密钥3 相同,密钥2 不同,称为DES-EDE2。
3.3 AES(Advanced Encryption Standard)
取代 DES 成为新标准的一种对称加密算法,又称Rijndael加密法。
AES的密钥长度有 128、192、256bit 三种。
目前 AES,已经逐步取代 DES、3DES,成为首选的对称加密算法。
一般来说,我们也不应该去使用任何自制的密码算法,而是应该使用 AES,它经过了全世界密码学家所进行的高品质验证工作。
3.4 如何解决密钥配送问题
在使用对称加密时,一定会遇到密钥配送问题。
如果 Alice 将使用对称加密过的消息发给了 Bob,只有将密钥发送给 Bob,Bob 才能完成解密。
在发送密钥过程中,可能会被 Eve 窃取密钥,最后 Eve 也能完成解密。
有以下几种解决密钥配送的方法:
- 事先共享密钥(比如私下共享)
- 密钥分配中心(Key Distribution Center,简称KDC)
- Diffie-Hellman密钥交换
- 非对称加密
4.非对称加密(Asymmetric Cryptography)
在非对称加密中,密钥分为加密密钥、解密密钥两种,它们并不是同一个密钥。
加密密钥:—般是公开的,因此该密钥称为公钥(public key),因此,非对称加密也被称为公钥密码(Public-key Cryptography)。
解密密钥:由消息接收者自己保管的,不能公开,因此也称为私钥(private key)。
4.1 公钥和私钥
公钥和私钥是一一对应的,不能单独生成,一对公钥和私钥统称为密钥对(key pair)。
由公钥加密的密文,必须使用与该公钥对应的私钥才能解密。
由私钥加密的密文,必须使用与该私钥对应的公钥才能解密。
4.2 解决密钥配送问题
由消息的接收者,生成一对公钥、私钥,将公钥发给消息的发送者,消息的发送者使用公钥加密消息。
非对称加密的加密解密速度比对称加密要慢。
目前使用最广泛的非对称加密算法是 RSA。
RSA 的名字,由它的 3 位开发者,即 Ron Rivest、Adi Shamir、Leonard Adleman 的姓氏首字母组成。
5.混合密码系统(Hybrid Cryptosystem)
对称加密的缺点:不能很好地解决密钥配送问题(密钥会被窃听)。
非对称加密的缺点:加密解密速度比较慢。
混合密码系统:是将对称加密和非对称加密的优势相结合的方法,解决了非对称加密速度慢的问题,并通过非对称加密解决了对称加密的密钥配送问题。
网络上的密码通信所用的 SSL/TLS 都运用了混合密码系统。
5.1 加密
会话密钥(session key):为本次通信随机生成的临时密钥,作为对称加密的密钥,用于加密消息,提高速度。
加密步骤(发送消息):
- 首先,消息发送者要拥有消息接收者的公钥
- 生成会话密钥,作为对称加密的密钥,加密消息
- 用消息接收者的公钥,加密会话密钥
- 将前两步生成的加密结果,一并发给消息接收者
发送出去的内容包括:
- 用会话密钥加密的消息(加密方法:对称加密)
- 用公钥加密的会话密钥(加密方法:非对称加密)
5.2 解密
解密步骤(收到消息):
- 消息接收者用自己的私钥解密出会话密钥
- 再用第 1 步解密出来的会话密钥,解密消息
5.3 Alice --> Bob 加密解密流程
发送过程(加密过程)
- Bob先生成一对公钥、私钥
- Bob把公钥共享给Alice
- Alice随机生成一个会话密钥(临时密钥)
- Alice用会话密钥加密需要发送的消息(使用的是对称加密)
- Alice用Bob的公钥加密会话密钥(使用的是非对称加密)
- Alice把第 4、5 步的加密结果,一并发送给Bob
接收过程(解密过程)
- Bob利用自己的私钥解密会话密钥(使用的是非对称加密算法进行解密)
- Bob利用会话密钥解密发送过来的消息(使用的是对称加密算法进行解密)
6.数字签名
在数字签名技术中,有以下 2 种行为:
- 生成签名:由消息的发送者完成,通过“签名密钥”生成
- 验证签名:由消息的接收者完成,通过“验证密钥”验证
如何能保证这个签名是消息发送者自己签的?
用消息发送者的私钥进行签名。
6.1 数字签名过程
6.2 数字签名过程改进
6.3 小结
如果有人篡改了消息内容或签名内容,会是什么结果?
签名验证失败,证明内容被篡改了。
数字签名不能保证机密性?
数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改。
数字签名的作用:
- 确认消息的完整性
- 识别消息是否被篡改
- 防止消息发送人否认
7.公钥、私钥总结(非对称加密 vs 数字签名)
在非对称加密中,任何人都可以使用公钥进行加密。
在数字签名中,任何人都可以使用公钥验证签名。
数字签名,其实就是将非对称加密反过来使用。
既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,即公钥负责加密,私钥负责解密。
既然是签名,那肯定是不希望有人冒充我发消息,所以只有我才能签名,即私钥负责签名,公钥负责验签。
8.证书(Certificate)
8.1 公钥的合法性
如果遭遇了中间人攻击,那么公钥将可能是伪造的。
如何验证公钥的合法性?证书。
8.2 使用
密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似,里面有姓名、邮箱等个人信息,以及此人的公钥,并由认证机构(Certificate Authority,CA)施加数字签名。
CA 就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织。
- 有国际性组织、政府设立的组织
- 有通过提供认证服务来盈利的企业
- 个人也可以成立认证机构
各大 CA 的公钥,默认已经内置在浏览器和操作系统中。
8.3 注册和下载
8.4 查看 Windows 已经信任的证书
Windows键+R ----> 输入 mmc
文件 ----> 添加/删除管理单元
证书 ----> 添加 ----> 我的用户账户 ----> 完成 ----> 确定