第5章 安全算法

5-1 安全和算法

  • 传输数据时的四个问题:
    1. 窃听:A向B发送的消息可能会在传输途中被X偷看;
    2. 假冒:A以为向B发送了消息,然而B有可能是X冒充的;
    3. 篡改:B确实收到了A发送的消息,该消息的内容在途中就被X更改了;
    4. 事后否认:B从A那里收到了消息,但作为消息发送者的A可能对B抱有恶意,并在事后声称“这不是我发送的消息”;
  • 解决这些问题的安全技术
    1. “窃听”,我们会使用 加密”技术。
    2. 假冒”,我们会使用消息认证码数字签名技术。
    3. 篡改”,我们同样会使用消息认证码数字签名技术。
    4. “事后否认”,我们同样会数字签名技术。
      在这里插入图片描述

5-2 加密的基础知识

首先,计算机会用由0和1这两个数字表示的二进制来管理所有数据。
对计算机来说,数据就是一串有意义的数字罗列。
密文也是数字罗列,只不过它是计算机无法理解的无规律的数字罗列。
加密 : 就是数据经过某种运算后,变成计算机无法理解的数的过程(请参考下图)
在这里插入图片描述
在加密运算上会用到“密钥”。所以加密就是用密钥对数据进行数值运算,把数据变成第三者无法理解的形式的过程(请参考下图)。
在这里插入图片描述
反过来,解密就是像下图这样,通过密钥进行数值计算,把密文恢复成原本数据的过程。
在这里插入图片描述
像这样,将数据变成第三者的计算机无法理解的形式,然后再将其恢复成原本数据 的一系列操作就是加密技术

5-3 哈希函数

哈希函数 可以把给定的数据转换成固定长度的无规律数值。转换后的无规律数值可以作为数据摘要应用于各种各样的场景。
在这里插入图片描述
输出的无规律数值就是“哈希值”。哈希值虽然是数字,但多用十六进制来表示。

  • 哈希函数的特征
  1. 输出的哈希值数据长度不变。不管输入的数据多小/大,哈希值的长度仍然相同。
  2. 如果输入的数据相同,那么输出的哈希值也必定相同。
  3. 即使输入的数据相似,输出的哈希值也会有很大的差异。输入相似的数据并不会导致输出的哈希值也相似。
  4. 即使输入的两个数据完全不同,输出的哈希值也有可能是相同的,虽然出现这种情况的概率比较低。这种情况叫作“哈希冲突”。
  5. 不可能从哈希值反向推算出原本的数据。输入和输出不可逆这一点和加密有很大不同。
  6. 求哈希值的计算相对容易。
  • 说明
    哈希函数的算法中具有代表性的是MD5、SHA-1和SHA-2等。
    其中SHA-2是现在应用较为广泛的一个,
    而MD5和SHA-1存在安全隐患,不推荐使用。

将用户输入的密码保存到服务器时也需要用到哈希函数。

5-4 共享密钥加密

加密数据的方法可以分为两种:

  1. 加密和解密都使用相同密钥的“共享密钥加密”;
  2. 分别使用不同密钥的“公开密钥加密”。

共享密钥加密是加密和解密都使用相同密钥的一种加密方式。由于使用的密钥相同,所以这种算法也被称为对称加密
在这里插入图片描述
共享密钥有被第三者窃听的风险,可以使用“密钥交换协议”和“公开密钥加密”两种方法。

5-5 公开密钥加密

公开密钥加密是加密和解密使用不同密钥的一种加密方法。由于使用的密钥不同,所以这种算法也被称为“非对称加密”。

  • 加密用的密钥叫作“公开密钥”,
  • 解密用的叫作“私有密钥”。

实现公开密钥加密的算法有RAS算法、椭圆曲线加密算法等,其中使用最为广泛的是RSA算法。
RSA算法由其开发者Rivest、Shamir、Adleman的首字母命名而来,三人在2002年获得了图灵奖。

  • 公开密钥加密的问题:
  1. 公开密钥加密容易被窃听。可用数字证书解决。
  2. 加密和解密都比较耗时,所以这种方法不适用于持续发送零碎数据的情况。用到“混合加密”解决。

考虑到加密所需的计算流程,算法必须满足如下条件。
① 可以使用某个数值对数据进行加密(计算)。
② 使用另一个数值对加密数据进行计算就可以让数据恢复原样。
③ 无法从一种密钥推算出另一种密钥。

稍微思考一下便知道,想要找到满足以上条件的算法难度有多大。所以,RSA等可以实现公开密钥加密的算法的提出,对当今互联网社会的安全有着重要的意义。

5-6 混合加密

共享密钥加密存在无法安全传输密钥的密钥分配问题,公开密钥加密又存在加密解密速度较慢的问题。结合这两种方法以实现互补的一种加密方法就是混合加密。
在这里插入图片描述
接下来,A只要将使用这个密钥加密好的数据发送给B即可。加密数据时使用的是处理速度较快的共享密钥加密。

像这样,混合加密在安全性和处理速度上都有优势。能够为网络提供通信安全的SSL协议也应用了混合加密方法。
SSL是Secure Sockets Layer(安全套接层)的简写,该协议经过版本升级后,现在已正式命名为TLS(TransportLayer Security,传输层安全)。但是,SSL这个名字在人们心中已经根深蒂固,因此该协议现在也常被称为SSL协议或者SSL / TLS协议。

5-7 迪菲-赫尔曼密钥交换

迪菲-赫尔曼(Diffie-Hellman)密钥交换是一种可以在通信双方之间安全交换密钥的方法。
这种方法通过将双方共有的秘密数值隐藏在公开数值相关的运算中,来实现双方之间密钥的安全交换。

  • 算法概念
    假设有一种方法可以合成两个密钥。使用这种方法来合成密钥P和密钥S,就会得到由这两个密钥的成分所构成的密钥P-S。
  • 合成方法有三个特征:
    + 第一,即使持有密钥P和合成的密钥P-S,也无法把密钥S单独取出来。
    + 第二,不管是怎样合成而来的密钥,都可以把它作为新的元素,继续与别的密钥进行合成。
    + 第三,密钥的合成结果与合成顺序无关,只与用了哪些密钥有关。
    在这里插入图片描述
    在这里插入图片描述
  • 说明
    使用迪菲-赫尔曼密钥交换,通信双方仅通过交换一些公开信息就可以实现密钥交换。但实际上,双方并没有交换密钥,而是生成了密钥。因此,该方法又被叫作“迪菲-赫尔曼密钥协议”。

参考链接:Diffie-Hellman(迪菲-赫尔曼)秘钥交换

5-8 消息认证码

消息认证码可以实现“认证”和“检测篡改”这两个功能。

  • 消息认证码就是可以预防 密文的内容在传输过程中可能会被篡改,这会导致解密后的内容发生变化,从而产生误会。
  • 消息认证码,简称为MAC(Message Authentication Code)由密钥和密文生成的。
  • 我们可以把MAC想象成是由密钥和密文组成的字符串的“哈希值”。计算MAC的算法有HMAC、OMAC、CMAC等。目前,HMAC的应用最为广泛。
  • 使用MAC时,生成的一方和检测的一方持有同样的密钥,所以不能确定MAC由哪方生成。这个问题可以用下一节将会讲到的“数字签名”来解决。

参考链接:消息认证码

5-9 数字签名

数字签名不仅可以实现消息认证码的认证和检测篡改功能,还可以预防事后否认问题的发生。

  • 数字签名和消息认证码区别:
    由于在消息认证码中使用的是共享密钥加密,所以持有密钥的收信人也有可能是消息的发送者,这样是无法预防事后否认行为的。
    而数字签名是只有发信人才能生成的,因此使用它就可以确定谁是消息的发送者了。
  • 数字签名三个功能:认证,检测篡改,预防事后否认。
  • 数字签名缺陷:冒充风险。=>“数字证书”就能解决

参考链接:通俗理解数字签名,数字证书和https

5-10 数字证书

“公开密钥加密”和“数字签名”无法保证公开密钥确实来自信息的发送者。
在这里插入图片描述
在这里插入图片描述

  • 数字证书 能保证公开密钥的正确性
  • 通过数字证书,信息的接收者可以确认公开密钥的制作者。
  • 认证中心是管理数字证书的组织机构。原则上谁都可以成为认证中心,所以认证中心的数量也比较多,但建议在经过政府审查的大型企业机构进行申请,这些机构更令人放心。
  • 数字证书通过认证中心来担保公开密钥的制作者。这一系列技术规范被统称为“公钥基础设施”(Public Key Infrastructure, PKI)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值