区块链中的密码学之对称密码概述(四)

1. 前言

对称密码概述:

image-20190327181957874

**P 明文空间 **

**C 密文空间 **

K 密钥空间

E 加密算法

D 解密算法

(P, C, K, E, D)为密码体制

分为置换密码和替换密码。

二者的区别。

替换密码:其他字符替代明文字符。

置换密码:重新排列元素,不改变元素本身。

2. 置换密码

2.1 栅栏技术

加密方法:按照对角线顺序写出明文,并以行的顺序读出作为密文。

举例:

明文:meet after the toga party

栅栏数:2

image-20190327111625302

密文:MEATRHTGPRYETFETEOAAT

解密方法: 将密文先分行,再按上下上下的顺序组成明文。

密文:MEATRHTGPRYETFETEOAAT

分行:MEATRHTGPRY

ETFETEOAAT

明文:meet after the toga party

2.2 周期置换

加密方法: 将明文串P按固定长度m分组,然后对每组中的 子串按1,2,....m的某个置换重新排列得到密文。

加密密钥(置换)image-20190327112008009

举例:

加密明文串:shesellsseashellsbytheseashore

分块:shesel lsseas hellsb ythese ashore

根据函数f重新排列
EESLSH SALSES LSHBLE HSYEET HRAEOS

生成密文:EESLSH|SALSES|LSHBLE|HSYEET|HRAEOS

解密方法:

image-20190327112136763

2.3 列置换

加密方法:

明文按行填写在一个矩形中,密文 则是以预定的顺序按列读取生成

明文:shesellsseashellsbytheseashore

密钥:351642

密文:ESLHH LSBEE SLHYA EASSR HSETS SELEO。

image-20190327112450996

解密方法:

将密文分组后按列的顺序排列,并根据密钥重新排列列的顺序。
密文:ESLHH LSBEE SLHYAEASSR HSETS SELEO
密钥:351642
明文:shesellsseashellsbytheseashore

image-20190327172250266

2.4 多次列置换

单次列置换:难以抗击字母频度分析

多次列置换:用列置换法对明文进行加密,再对加密过的密文加密。

明文:meetafterthetogaparty

密钥:3412567

密文:PATTRTEERTGFHATAAOMEY

字母顺序更乱,增加破解难度、复杂度。

image-20190327173412934

3. 替换密码

替换密码是将明文字符替换成其他字母、数字或者符号。

3.1 凯撒密码

数学表示:

Ci =(Pi +3)mod26
Pi
=(Ci –3)mod26

注意,不一定是3,可以是其他整数。

注意,可以通过统计规律进行破解,即每个字母出现的频率。

3.2 维吉尼亚密码

如何抵抗频度分析?

明文密文的一一对应 -》明文密文的多个对应

image-20190327180218654

它是基于串的替换密码,密钥是由多于一个的字符所组成的串。

数学表示:

Ci=(Pi +ki )mod26
P
i =(Ci –ki )mod26

m的含义是:m为密钥的长度,在下面的例子中m=3。

image-20190327175545345

密钥空间是多大呢? 26^m

被破译的原因?

移位代换为基础的周期代换:密钥取自英文单词句子、统计特性与明文相同。

我们注意到密文第二次出现UPK和第一次出现UPK,中间差了21个字符,所以密钥的长度为21的因子,即3或者7。

3.3 弗纳姆密码

事实上是一次一密的思想。

原理:假定消息是长为 n的比特串,那么密钥也是长为 n 的比特串;

image-20190327181201401

image-20190327181314133

image-20190327181350149

4. 乘积密码

如何设计安全强度更高的密码体制才能抵御住分析?

香农(Claude Shannon)提出的。

原理:依次使用两个或两个以上基本密码系统。所得结果的密码强度高于所有单个基本密码系统的强度。

乘积密码的加密:

明文空间P和密文空间C相同的密码体制。

R1=(P1,C1,K1,E1,D1)

R2=(P2,C2,K2,E2,D2)

乘积密码定义: R1×R2=(P,C,K1×K2,E,D)

对于任意明文x∈P和密钥K=(K1,K2),加密 变换为 EK(x)=EK2(EK1(x))

乘积密码的解密:

对于任意密文y∈C和密钥 K=(K1,K2),解密变换为 Dk (y)=Dk1(Dk2(y))

乘积密码的代表:ADFGVX密码

同时采用了替换和置换的方法,随机在6*6的表格中填入26个英文字母和0-9共10个数字。

首先进行替换,比如明文password中的p对应的行和列分别为FG。。。

明文:password

密钥:computer

中间结果:FG GV XG XG AF VD AG VF

image-20190327214034510

然后把中间结果按照行的形式进行排列,最后对中间结果进行置换,密钥为computer,即密钥的顺序为14358726,则密文为:FA XV GV GF VD GF GG XA。

image-20190327225929523

4.1 迭代密码体制

密码体制的乘积运算满足结合律,明密文 空间相同的密码体制R1,R2,R3都有: (R1×R2)×R3=R1×(R2×R3**)*

如果密码体制和自己乘积R×R,记为R^2,如果 做n重乘积,得到的密码体制记为Rn;

如果R^2=R,那么R就是幂等的密码体制,不能 提高更多的安全性 。很显然,在幂等体制下,还是其本身,自然没有效果。比如置换。

若R是一个明文空间和密文空间相同的非幂等密码体制,多次迭代Rn的安全性可能会比R强。

如何构造非幂等的密码体制?

使用两个不同的密码体制做乘积,比如替换和置换。

4.2 混淆和扩散

扩散的概念:

明文每一位影响密文中的许多位,或者说让密文中的每一位受明文中的许多位的影响,将明文冗余度分散到密文中。进行扩散最简单的方法是置换(Permutation),即重新排列字符。

影响:

明文的统计特征消散在密文中,隐蔽明文字符出现次数的统计概率。

混淆

概念:让密文与密钥之间的统计关系变得尽可能复杂,使用复杂的非线性代替变换可以达到比较好的混淆效果。让明文和密文之间的关系复杂化,这样做是为了防止通过统计分析进而破译密码学。常用的方法是替换换(Substitution)。

意义:挫败推测出密钥的企图。

混淆和扩散的实现:

抵抗对手从密文的统计特性推测明文或密钥,现代分组密码的设计基础。

5. 分组密码

分组密码

6. DES

DES算法

7. AES

AES算法

8. 流密码

流密码

posted @ 2019-03-28 11:04  俊语  阅读(945)  评论(0编辑  收藏  举报