Web3.0 · 基础层技术 · SCQA模型趣谈密码学

【小木箱成长营】密码学系列教程:

Web3.0 · 基础层技术 ·密码学在移动端应用与实践

一、序言

Hello,我是小木箱,欢迎来到小木箱成长营密码学系列教程,今天将分享 Web3.0 · 基础层技术 · SCQA 模型趣谈密码学。

SCQA 模型趣谈密码学主要分为四部分,第一部分是加解密算法,第二部分是 Hash 算法,第三部分是数据编解码,最后一部分是总结与展望。

其中,加解密算法主要是分为四部分,第一部分是对称加密,第二部分是 DH 交换算法,第三部分是非对称加密,第四部分是混合加密。

如果学完小木箱密码学系列教程,那么任何人完成高性能日志组件、网络接口组件和网络优化工作,甚至迎接 Web3.0 都会有巨大帮助。

二、加解密算法

SCQA 模型是麦肯锡芭芭拉·明托在《金字塔原理》中提出的“结构化表达”模板工具,常用于方案、文案、广告、演讲、讲故事、写作等。SCQA 是 Situation、Complication、Question 和 Answer4 个英文单词简称,分别是

  • S—业务背景
  • C—困境冲突
  • Q—分析问题
  • A—解决问题

如果你想把难以理解的密码学知识表达清楚,那么建议采用万能表达模板—SCQA。

加密技术⽆处不在但是容易忽略。更多的了解加密技术能做什么,不能做什么,对我们建⽴更加完善的信息安全意识是⾮常重要的。

加密技术的演进其实是⼀场没有硝烟的战争,在加密⽅和破解⽅惊⼼动魄的攻守战中不断完善。

接下来,我们⾸先利用⼀个⼩故事,然后通过业务背景、困境冲突、分析问题和解决问题的 SCQA 模型⽅式学习加密技术演进,最后达到活学活用的目的。

S: 业务背景

故事的主⼈公是小木箱和粉丝。他们通过微信公众平台进行传话,小木箱给粉丝发了⼀个消息:微信公众号小木箱成长营。

image.png

但是,消息被潜在黑粉窃听了!

image.png

于是黑粉⽴刻拦截了他们的信息,并把小木箱和粉丝交流关系链中断了。

C: 困境冲突

当下面临的问题有三个。第一个窃听问题,小木箱和粉丝交流过程中,内容是明文传输的,内容被黑粉窃听,导致信息泄露风险。

第二个是密钥配送问题,通过对称加密算法,小木箱和粉丝好像解决了信息传递的问题,但是,实际操作过程中,发现了⼀个⼤问题:如何共享密钥?这就是密钥配送问题。

第三个问题是中间⼈攻击问题,小木箱和粉丝即使解决了密钥配送问题,不一定能确保密钥通信安全。

黑粉通过⾃⼰的聪明才智,想到了⼀个劫持+篡改的⽅案,再次攻破了 DH 密钥交换和⾮对称加密,即中间⼈攻击。

Q:分析问题
如何解决窃听问题呢?

针对窃听问题,为了避免被黑粉窃听,小木箱和粉丝想到了⼀个好办法:首先小木箱和粉丝共享了⼀个密钥,然后小木箱先把消息加密成密⽂,最后再发送给粉丝,粉丝拿到密⽂之后⽤密钥解密成明⽂。这就是对称加密。

image.png

如何解决密钥配送问题呢?

针对密钥配送问题,密钥配送问题的解决⽅案有很多,有两种解决密钥配送问题⽅案:DH 交换算法和⾮对称加密算法。

如何解决中间人攻击问题呢?

中间人攻击本质即篡改和伪装,解决方案有单向散列、消息验证码、数字签名和数字证书四种方式。

A: 解决问题

针对窃听问题,首先我们来说说对称加密,加密方式主要讲解四种加解密方式: 第一种是 DES 加密,第二种是 3DES 加密,第三种是 AES 加密,第四种是 ChaCha 加密。

下面小木箱将从简介、历史、现状、明文块长和密钥长和加解密流程等多方面维度讲解四种加解密算法。

2.1 对称加密

2.1.1 对称加密简介

加密处理方式有对称加密和非对称加密两种。

其中,对称加密指的是通信双⽅同时掌握⼀个密钥,加密解密都是由⼀个密钥完成的(即加密密钥等于解密密钥,加解密密钥可以相互推倒出来)。

image.png

对称加密双⽅通信前共同拟定⼀个密钥,不对第三⽅公开,解密时使用加密过程的完全逆过程配合密钥来进行解密。

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 的加解密流程如下:

  1. 第一步:DES 算法的基本结构被称为 Feistel ⽹络。Feistel ⽹络中,⼀个基本单位叫做轮,整个加密过程就是由 16 个轮循环组成。
  2. 第二步:明⽂被平分成左右两部分 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 加解密过程
  1. 3DES 的加密为依次进⾏密钥 1 的 DES 加密、密钥 2 的 DES 解密、密钥 3 的 DES 加密。
  2. 3DES 的解密为依次进⾏密钥 3 的 DES 解密、密钥 2 的 DES 加密、密钥 1 的 DES

解密。

  1. 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多平台发布

你可能感兴趣的:(后端)