【小木箱成长营】密码学系列教程:
Web3.0 · 基础层技术 ·密码学在移动端应用与实践
一、序言
Hello,我是小木箱,欢迎来到小木箱成长营密码学系列教程,今天将分享 Web3.0 · 基础层技术 · SCQA 模型趣谈密码学。
SCQA 模型趣谈密码学主要分为四部分,第一部分是加解密算法,第二部分是 Hash 算法,第三部分是数据编解码,最后一部分是总结与展望。
其中,加解密算法主要是分为四部分,第一部分是对称加密,第二部分是 DH 交换算法,第三部分是非对称加密,第四部分是混合加密。
如果学完小木箱密码学系列教程,那么任何人完成高性能日志组件、网络接口组件和网络优化工作,甚至迎接 Web3.0 都会有巨大帮助。
二、加解密算法
SCQA 模型是麦肯锡芭芭拉·明托在《金字塔原理》中提出的“结构化表达”模板工具,常用于方案、文案、广告、演讲、讲故事、写作等。SCQA 是 Situation、Complication、Question 和 Answer4 个英文单词简称,分别是
- S—业务背景
- C—困境冲突
- Q—分析问题
- A—解决问题
如果你想把难以理解的密码学知识表达清楚,那么建议采用万能表达模板—SCQA。
加密技术⽆处不在但是容易忽略。更多的了解加密技术能做什么,不能做什么,对我们建⽴更加完善的信息安全意识是⾮常重要的。
加密技术的演进其实是⼀场没有硝烟的战争,在加密⽅和破解⽅惊⼼动魄的攻守战中不断完善。
接下来,我们⾸先利用⼀个⼩故事,然后通过业务背景、困境冲突、分析问题和解决问题的 SCQA 模型⽅式学习加密技术演进,最后达到活学活用的目的。
S: 业务背景
故事的主⼈公是小木箱和粉丝。他们通过微信公众平台进行传话,小木箱给粉丝发了⼀个消息:微信公众号小木箱成长营。
但是,消息被潜在黑粉窃听了!
于是黑粉⽴刻拦截了他们的信息,并把小木箱和粉丝交流关系链中断了。
C: 困境冲突
当下面临的问题有三个。第一个窃听问题,小木箱和粉丝交流过程中,内容是明文传输的,内容被黑粉窃听,导致信息泄露风险。
第二个是密钥配送问题,通过对称加密算法,小木箱和粉丝好像解决了信息传递的问题,但是,实际操作过程中,发现了⼀个⼤问题:如何共享密钥?这就是密钥配送问题。
第三个问题是中间⼈攻击问题,小木箱和粉丝即使解决了密钥配送问题,不一定能确保密钥通信安全。
黑粉通过⾃⼰的聪明才智,想到了⼀个劫持+篡改的⽅案,再次攻破了 DH 密钥交换和⾮对称加密,即中间⼈攻击。
Q:分析问题
如何解决窃听问题呢?
针对窃听问题,为了避免被黑粉窃听,小木箱和粉丝想到了⼀个好办法:首先小木箱和粉丝共享了⼀个密钥,然后小木箱先把消息加密成密⽂,最后再发送给粉丝,粉丝拿到密⽂之后⽤密钥解密成明⽂。这就是对称加密。
如何解决密钥配送问题呢?
针对密钥配送问题,密钥配送问题的解决⽅案有很多,有两种解决密钥配送问题⽅案:DH 交换算法和⾮对称加密算法。
如何解决中间人攻击问题呢?
中间人攻击本质即篡改和伪装,解决方案有单向散列、消息验证码、数字签名和数字证书四种方式。
A: 解决问题
针对窃听问题,首先我们来说说对称加密,加密方式主要讲解四种加解密方式: 第一种是 DES 加密,第二种是 3DES 加密,第三种是 AES 加密,第四种是 ChaCha 加密。
下面小木箱将从简介、历史、现状、明文块长和密钥长和加解密流程等多方面维度讲解四种加解密算法。
2.1 对称加密
2.1.1 对称加密简介
加密处理方式有对称加密和非对称加密两种。
其中,对称加密指的是通信双⽅同时掌握⼀个密钥,加密解密都是由⼀个密钥完成的(即加密密钥等于解密密钥,加解密密钥可以相互推倒出来)。
对称加密双⽅通信前共同拟定⼀个密钥,不对第三⽅公开,解密时使用加密过程的完全逆过程配合密钥来进行解密。
2.1.2 对称加密手段
2.1.2.1 DES
其中,对称加密指的是加密和解密的密钥不同的加密算法。首先我们讲解一下第一种对称加密算法 DES 加密。
2.1.2.1.1 DES 简介
关于 DES 加密,DES,全称Data Encryption Standard,数据加密标准。
2.1.2.1.2 DES 历史
DES 是 1975 年 IBM 推出,并随后在国际上⼴泛使⽤开来。
2.1.2.1.3 DES 现状
随着计算机技术的发展,在 20 世纪末的时候,DES 算法已经可以被暴⼒破解。在 1999 年的 DES III ⽐赛中,只⽤了 22 ⼩时多就完成了破解。所以现在不要再使⽤ DES 算法。
2.1.2.1.4 DES 明文块长和密钥长
DES 算法的明⽂块⻓度是 64 位。密钥总⻓度是 64 位,其中每隔 7 位会有⼀个⽐特的错误校验,所以有效密钥⻓度为 56 位。
2.1.2.1.5 DES 加解密流程
DES 的加解密流程如下:
- 第一步:DES 算法的基本结构被称为 Feistel ⽹络。Feistel ⽹络中,⼀个基本单位叫做轮,整个加密过程就是由 16 个轮循环组成。
- 第二步:明⽂被平分成左右两部分 L0 和 R0。L0 经过加密得到加密后的 L0,作为下⼀轮的右半部分 R1。R0 不做处理,直接作为下⼀轮的左半部分 L1。
2.1.2.1.6 DES 加密结构
DES 解密和加密的结构是⼀样的(利⽤传统的换位、异或、置换等加密⽅法),具体可以参考下面的图解。
2.1.2.1.7 DES 代码实现
https://github.com/strich1991...
2.1.2.2 3DES
然后,我们讲解一下第二种对称加密算法 3DES 加密。
2.1.2.2.1 3DES 简介
3DES 算法是将 DES 算法重复 3 次的⼀种算法。
2.1.2.2.2 3DES 历史
3DES 是 DES 算法被攻破之后,被开发出来临时替代 DES 算法的。1999 年,NIST(National Institute of Standards and Technology,美国国家标准技术研究所)将 3DES 指定为过渡加密标准。
2.1.2.2.3 3DES 现状
3DES 算法由于其处理效率不⾼,并且作为过渡标准,所以除了⼀些要向下兼容原有的 DES 算法的场景,现在很少被使⽤。
2.1.2.2.4 3DES 明文块长和密钥长
3DES 算法的明⽂块⻓度为 64 位,有效密钥⻓度为 56*3 位。
2.1.2.2.5 3DES 加解密过程
- 3DES 的加密为依次进⾏密钥 1 的 DES 加密、密钥 2 的 DES 解密、密钥 3 的 DES 加密。
- 3DES 的解密为依次进⾏密钥 3 的 DES 解密、密钥 2 的 DES 加密、密钥 1 的 DES
解密。
- 3DES 的加密的结构是加解密交替进⾏⽽不是进⾏ 3 次加密(思考⼀下这是为什么?)
由于 DES 密码长度容易被暴力破解,增加 DES 的密钥长度可反破解,因此针对每个数据块进行三次 DES 加密,即 3DES。
组合分组方法设计的分组 3DES 加密算法,3DES 密钥相比 DES 长度更长,安全性更高。
2.1.2.2.6 3DES 代码实现
https://github.com/songxiaoli...
2.1.2.3 AES
接着,我们讲解一下第三种对称加密算法 AES 加密。
2.1.2.3.1 AES 简介
AES 算法,Advanced Encryption Standard,⾼级加密标准,是取代 DES 算法的⼀种新的对称加密标准。
2.1.2.3.2 AES 历史
AES 是 NIST 公开竞选得到的⼀种加密标准。可以说是先有了 AES 的名字,然后竞选之后才确定的算法。最终被选中的算法叫做 Rijndael 算法。不过严格来讲,AES 是 Rijndael 的⼀种特殊情况。
本文由mdnice多平台发布