0.学习密码学的目的与方法
作为一个工程师,你不需要像科学家一样掌握密码学的整个开发过程。
为了保障安全性,密码学发展出不同的模块,解决了不同的问题,数据的安全性也在这个过程中不断提升。而加密只是其中众多模块之一。其他的模块还有完整性检查、元认证等。
学习密码学,你只需要对密码学的框架有一个宏观性的了解,以期最后达成应用于VPN的目的。
1.数据泄露
试想一下,A付款100万给B,不加密,邪恶黑客C只要抓包就能知道交易内容。显然,这样的安全性是不行的。
为了解决这个问题,我们引入了加密。
1.1加密
一般而言,规则如下:
明文文件+加密算法+加密密钥=密文文件
密文文件+加密算法的逆运算+加密密钥=明文文件
1.2密钥的分类
根据密钥的使用方法,可以将密码分为两种:
①对称密码:相同的密钥加解密。别称“共享密钥密码”
②公钥密码:不同的密钥加解密。别称“非对称密码”
这两种算法都有各自的优缺点。混合密码系统取两者之优,形成新的密码算法。
2.信息篡改
现在,A付款100W给B,发送信息“已到账100W”。虽然加密了,但邪恶黑客C用手段改了信息内容,B收到的消息实际上是“已到账10块”。显然,这样的安全性也是不行的。
为了解决这个问题,我们引入了完整性的概念。
2.1完整性
为了确保数据包在传输过程中没有被恶意修改,可通过单向散列函数机制来实现完整性检查。
2.2现实示例
百度搜索“思科中国”,进入官网。
点击“支持”-“产品和下载”-“安全”。
以ASAv示例。下拉找到Secure Firewall ASA Virtual。
点击“下载”,找到Software下的“下载选项”点击。
鼠标移到绿字,可以看到下面有两行乱码。
这个就是单向散列函数计算下载文件,得出的文件的“指纹”。
你下载后,也可以用相同的算法(单向散列函数),计算一下是不是和官网的一样。一样则说明没有被篡改,完整性得到了保证。
3.冒充
现在,A和B上QQ,A找B借100W,B给了。完事后B打电话问A为啥,A说“啊?我没找你啊!”好的,又出问题了。A被冒充了。
为了解决这种冒充的问题,我们引入了认证的概念。
3.1认证
基于消息认证码,能够实现认证,确认数据包为真实的对等体设备所发送的数据包。
认证了,确认是A发的。但还是有问题。
4.抵赖
现在A和B不用QQ了,用手机。A找B借100W,B给了,完事后B打电话问什么时候还,A说“啊?不是我借的啊!”然而,经过认证,确认不是有人冒充A。也就是说,A抵赖了。
为了解决,引入了数字签名。
4.1数字签名
防止抵赖,通过签名证实确实是该设备发送的数据包。
4.2现实示例
搜索“华为”进入官网。
点击“商用产品及方案”,点击左下角“企业业务网站”进入。
点击“学习与技术支持”,找到“产品支持”下的“软件下载”。
滑到下面,找到“数据存储”中的“分布式存储”,点击进入。
滑到下面,找到“虚拟化”下的“FusionCompute”。
英语不好的小伙伴还可以按键盘上的Ctrl+F,打开搜索栏,输入“compute”找到标黄的。
点击进入。
点击FusionCompute后面跟版本号的字段,进入下载界面。
再点击一个蓝字进入。
可以看到,这里是有数字签名的。
华为用的就是数字签名。而思科用的是单向散列函数。
5.总结
总结一下就是这样:
这个图还说明了,消息认证码可以同时实现完整性和认证,数字签名则可以同时实现完整性、认证和不可否认性。