Cryptographic Failures 加密失效
根据 OWASP 的说法,加密失效之前的版本称为敏感资料泄露.
主要是信息传输过程中,由于加密失效或者是直接明文传输,因而导致敏感资料的泄露.
密码学发展到现在,在我们身边随处可见,小到我们手里的账户密码,大到军事信号加密.
我们常见的加密算法有主要有对称加密,非对称加密,还有不需要密钥的散列算法.
对称算法主要有:
- DES
- 3DES
- AES
- …
非对称算法有:
- RSA
- DSA
- ECC
- …
散列算法有:
- SHA-1
- MD5
- …
在互联网中常见的明文传输有 HTTP , SMTP , FTP 等协议,在绝对内网里面,如果人员可靠的话,并没有太大的影响;如果说是在外网的话,是很难保证传输的数据不会被修改.
HTTP 在 web 中是很常见的传输,但是它是一种明文传输,所以很难保证其安全性,所以在传输的路径上,增加了一层 SSL 加密,就变成现
在主流的 HTTPS 传输.
HTTP + SSL = HTTPS
既然要讲加密就讲讲这个 SSL 吧
SSL 是个非常典型的非对称加密技术
你想想,如果 SSL 是个对称加密技术,那么这个密钥如何保证传输的过程是安全的?
要我说,最安全的办法就是你把你的密钥放到 U 盘里,然后跑到你要传输数据人的家里,确认电脑安全性,然后再把密钥交给他.
虽然安全了,但是费力的很.
有没有简单的办法呢?
我相信大家应该学过乘法吧
c=a * b
c=d * e
如果说我给的公钥是 c ,内容为 a ,私钥为 b .
这个公钥是大家都知道的,如果黑客知道了公钥和加密内容
那么它很难推算出原文的内容和私钥的内容
这个可能是 d * e=c , 也可能是 x * y=c.
我们这么想一下 HTTPS 的过程
计算机A : 向服务器B发送请求,请求公钥
服务器B : 向计算机A发送了公钥XXXX.
计算机A : 利用公钥进行了加密,发送了加密数据YYYY.
服务器B : 利用私钥解密了加密内容,是 震山真帅.
上面就是很典型的非对称加密的流程,看起来似乎很安全
但是我们我们思路打开,我们加个黑客 C 从中间监听又会发送什么呢?
计算机A : 向服务器B发送请求,请求公钥
黑客C : 截获计算机A请求,发送伪公钥,同时向服务器B发送请求公钥.
服务器B : 向黑客C发送了公钥XXXX.
计算机A : 利用伪公钥进行了加密,向黑客C发送了加密数据YYYY.
黑客C : 利用伪私钥解密服务器A的东西是 震山真帅 ,觉得信息没用,就利用服务器B的公钥进行了加密发送给服务器B.
服务器B : 利用私钥解密了加密内容,是 震山真帅.于是返回了请求:我也这么觉得
黑客C : 利用公钥进行了解密,发现是 : 我也这么觉得 气的吐血身亡
我们在这里可以发现这个过程并非是安全的.你传输的数据仍然是有可能是被看见的
所以数字证书出现了,由 ca 机构发给客户端和服务端,除非你自己安装证书,中间将不会有第三人插足.
其中数字证书包括以下内容
- 签发证书的机构
- 加密算法
- Hash 算法
- 公钥
- 证书到期时间
那么有小伙伴可能会问,那能保证证书在下发的过程中保持安全吗?
所以又出现了数字签名这个概念,由发证机构向服务器B 发送数字证书
这个证书会经过私钥进行解密获取 hash1
公钥解密数字证书获取的 hash2
对比 hash 值是否相同,相同则为发的证书
这时候过程大致如下
- 第一步 客户端A给出 支持的SSL版本+一个随机数+自己支持的加密方式
- 第二步 服务端B接收到这些信息后确认加密方式+自己的安全证书+一个随机数发给A
- 第三步 客户端A确认数字证书有效性(验证方法上面已经说明),然后生成一个随机数,并将这个随机数用B的数字证书公钥加密后发送给A。
- 第四步 服务端B使用自己的私钥解密这个随机数
- 第五步 A和B通过第二步确定的加密方法将前三个随机数生成一个对话密钥 用来接下来的通信
过程是安全了,那么后果是什么呢?
很显然,传输效率低了,因为要进行传输数据的加解密.
所以我们要根据合适的情况进行合理加密算法选择,保证数据传输的安全性.
本人也不是搞密码学的,本文只是个人之见,如有不足之处还望包涵.