《算法图解》读书笔记-07

第五章:安全算法

这一章节主要讨论的是计算机在网络通信中的安全问题,为了保障你的信息不被各种各样居心叵测的人获取,计算机领域的科学家们提出了很多富有创意并且强大稳定的算法;


1.安全和算法

首先让我们明确四个概念:

  • 窃听:A向B传输数据时被C意外获取
  • 假冒:A向B传输数据时C谎称自己是A向B发送信息
  • 篡改:A向B发送了一条消息,但这条消息被C拦截并修改后重新发给B(人为攻击和设备故障都可能引起篡改)
  • 事后否认:A向B发送了消息,但B收到消息后A不承认消息是自己发给B的

这是不同问题的解决方案:

问题解决方案
窃听加密
假冒消息认证码或数字签名
篡改消息认证码或数字签名
事后否认数字签名

2.关于加密

加密需要密钥,也就是说密钥是加密的指导者,根据密钥加密后的数据可以用密钥解密,但没有密钥时几乎不可能成功解密;数据在加密后会变得面目全非,解密后又可以恢复到原来的样子;


3.哈希函数

你可以将哈希函数视为一种精密的搅拌机,输入一些数据后它会生成一个固定长度的无规律数值,这个数值被我们称作哈希值;我们一般用十六进制表示哈希值;

哈希函数有四个特点:

  • 无论输入的数据量有多少,输出的哈希值长度恒定
  • 同样的数据有唯一且确定的哈希值
  • 相似的数据哈希值可能相去甚远,不同的数据也可能有相同的哈希值
  • 根据数据求哈希值很容易,但根据哈希值反推原数据则几乎不可能

举个例子,比如服务器可以使用哈希值来存储用户的密码,这样就算服务器被完全控制,黑客拿到哈希值也无法得知用户的密码是什么;

4.共享密钥加密

共享密钥加密在加密和解密过程中都使用相同的密钥,这种加密方式也被称为对称加密;具体的过程是:

A B A使用密钥对文件进行加密 加密过的文件 加密用的密钥 B使用密钥解密文件 A B

当第三方没有加密解密用的密钥时无法获得文件中的信息;不过这也带来了新的问题:密钥不也是通过网络传递的吗?这个问题需要使用“密钥交换协议”和“公开密钥加密”来解决,我们后面会提到;

5.公开密钥加密

公开密钥加密在加密和解密时使用的密钥是不同的,加密时使用的叫公开密钥,解密时使用的叫私有密钥;这种加密方式也被称为非对称加密;

具体的执行逻辑是:

  • 由接收数据的一方生成公开密钥和私有密钥,顾名思义前者是公开挂在网上的后者是自己保存的
  • 发送数据的人使用公开密钥加密,但是要用私钥才能解密;

由于私钥一直没有在互联网上传递,这种加密方式相对更安全;不过也有这样的问题:**窃听者自己生成了公钥和私钥,并且将自己生成的公钥挂在互联网上,当发送信息的一方错误的采取了窃听者的公钥时,信息就会被窃取;**当窃听完成后,攻击者再将信息重新使用接收方提供的公开密钥加密,发送给接收方;整个过程甚至不会有人意识到攻击已经发生了;

对于这种中途替换公开密钥而窃听数据的攻击,我们称它为中间人攻击
要提高安全性,必须配合使用数字证书;另外整个加密和解密的工作都比较消耗时间,所以这种方法不适合持续发送零碎的数据;当然这两种情况我们在下文都会尝试解决;

真是道高一尺魔高一丈啊!

6.混合加密

我们在上文提到了这样一件事:共享密钥的运行速度快,但是不安全;公开密钥的安全性相对较高,但是速度慢;有没有什么好的方法呢?

相信你也想到了这个好办法:使用共享密钥加密数据,但是使用公开密钥的加密方式来传递共享密钥要用到的密钥

这是具体过程:

A B 生成共享加密用的密钥K 生成公开加密用的公钥P和私钥S 将公开加密用的公钥P发送给A 使用公钥P加密密钥K 将加密过的K发送给B 使用私钥S解码加密过的K 发送加密文件 发送加密文件 loop [正常收发文件] A B
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值