传统加密技术


前言

传统的加密技术主要分为代换密码与置换密码,前者变换字母,后者打乱顺序,具体如下


代换密码

将明文中的每个字符代换成密文中的另一个字符


一、单字母单表密码

每个明文字母都对应着固定的密文字母,即明文与密文为一一映射关系
一个消息中不同位置的相同明文字母在密文消息中始终为相同的密文字母:

  • 明文的频率结构特征信息在密文中得到保留
  • 极易遭受统计分析攻击-----------需要减少代换密码中明文结构在密文中的残留度:1.单字母多表代换密码;2.多字母加密

1.凯撒密码

密码为将字母表进行轮转,使得明文字母对应轮转后的字母表密文
凯撒密码实例
数学解释如下:

  1. 代换前将明文字符表{a,b,……,z}映射为数字集合{0,1, … , 25}
  2. 将待加密的明文字符映射到该数字集合中,记为m
  3. 将映射后的数字m通过密钥k按照如下方式加密,得到密文C:
    C= 𝐸𝑛𝑐(m,k) = (m + k) mod 26
  4. 将密文C按照如下方式解密,得到明文数字m
    m = 𝐷𝑒𝑐 (C, k)= (C − k) mod 26
  5. 将明文数字m根据映射规则,映射回明文字符表中的字符

凯撒密码密钥空间为【1,25】(对于0,密文与明文相同,无意义),|K| = 25

2.仿射密码

与凯撒密码类似,为两字母表间的映射,但除加数外,另外设置了乘数
数学解释如下:
设定两个密钥a和b:a为乘性密钥(multiplicative key),b为加性密钥
(additive key)。
• 加密规则: M = 𝐸𝑛𝑐 (m, a, b) = (𝑎𝑚 + b) mod 26
• 解密规则: C = 𝐷𝑒𝑐 (c, a, b) = a^-1 * ( c - b)mod 26

注意: 0 ≤ a, b ≤ 25,且𝑔𝑐𝑑(a, 26) = 1,即a和26是互素的,a^-1 表示a的逆元(只是代指,并非指倒数),即a a ^-1 ≡ 1 mod 26

密钥空间: a有12种选择,b有26种选择,有12*26=312种
组合。除去a = 1, b = 0,则有311种,即|K| = 311

3.混合字母表密码

基于随机置乱的混合字母表密码

  • 密钥:字母表的随机置乱a
  • 加密:明文里面的每个字母X用a(X)代替
  • 解密:密文里面的每个字母Y用a^-1(Y)代替

即通过对字母表进行随机置乱产生一个随机的对应关系,然后按照这个对应关系去产生密文。

混合字母表密码实例

密钥空间:26! ≈ 4 × 10 ^26 ≈ 2 ^88

缺点
密钥存储分发不方便:由于明文字母-密文字母的对应是随机的,导致传递密钥必须传递整个字母表对应关系,使得密钥的分发不方便

改进
基于关键词的混合字母表密码:

  1. 选取某个关键词作为密钥的一部分
  2. 对于选定的关键词,去掉除第一次出现之外的所有相同字母,写在字母表最前面,将其他字母按顺序填写余下的空间,以此产生完整的字母表映射关系。
  3. 接收方只需要知道所选取的关键词即可恢复对应关系
    基于关键词生成密钥的实例

二.单字母多表密码

明文字符到密文字符不是一一映射

1.周期多表代换

选定一个关键词作为密钥,为密钥里面的每一个字母准备一张凯撒平移表
以K=cafe为例,加密时,第1个明文字母基于第1个密钥字母的表(即c的表)进行加密,第2个明文字母基于第2个密钥字母的表(即 a 的表)进行加密,…,第n个明文字母基于第(n mod 4)个密钥字母的表进行加密,即周期为4(取决于密钥的字母长度),如下图所示
周期多表代换密码示例

  • 典型的周期多表代换密码:维吉尼亚密码(Vigenère Cipher)
  • 共有26张代换表,每个代换表是对明文字母表移位0-25次后所得到,即每个密钥字母对应着一张凯撒平移表,移位次数和该字母对应的数字相同(即密钥字母a对应的平移表移位为0;密钥字母b对应的平移表移位为1; …… ;密钥字母z对应的平移表移位为25)
  • 加密时每个明文字母用对应的密钥字母的凯撒平移表进行加密,根据密钥选择使用字母代换表(密钥字母行坐标,明文字母列坐标)
    维吉尼亚密码数学解析

2.非周期多表代换

  1. 一次一密
  2. 密钥和明文一样长
  3. 产生的密文不含明文任何信息
    非周期多表代换实例

密钥不可重复使用
若密钥重复使用,则( 此处“+” 表示异或) c1 = m1 + k; c2 = m2 + k 故 c1+c2 = m1+m2,因此:如果攻击者能发动选择明文攻击,则可以获得密钥然后对其他密文进行解密,由于能获得明文消息直接的异或结果,攻击者可以利用这个信息进行攻击

虽然一次一密能提供perfect security,但是实际使用起来困难:

  • 产生大规模的随机密钥是困难的。
  • 对于每一条发送的消息,需要提供发送方和接收方等长度的密钥,导致庞大的密钥分发(key distribution)问题

三、多字母密码

以普莱菲尔密码、希尔密码两实例进行分析:

明文字符到密文字符不是一一映射

1.普莱菲尔密码(Playfair cipher):2字母代换密码

  • 密钥由5x5矩阵给定,将英文字母随机填入矩阵中,把i和j当作一个字母(因为矩阵只能装25个字母)

使用关键词生成密钥:可选定一个关键词作为密钥,除去重复字母后依次按行填入阵中,而后将字母表中还没用上的各字母继续按行填入阵中,得到密钥矩阵K。例:关键词monarchy
普莱菲尔密码密钥生成实例

  • 加密:先将明文分成两个字符一组(但若一组字母相同则中间插入一个“x”),规则如下:(1)若两字符在同一行,则各以右边字符取代 (2)若两字符在同一列,则各以下方字符取代 (3)其他情況,则换成此二字符对角的两字符
  • 解密:先将密文分成两个字符一组,解密规则:(1) 若两字符在同一行,则各以左边字符取代 (2) 若两字符在同一列,则各以上方字符取代 (3) 其他情況,则换成此二字符对角的两字符 (需注意清除额外添加的x)

普莱菲尔密码加密解密的结果并非完全确定的(多个可能),需根据单词、语意进行选择

使用该密码加密解密实例如下(密钥为上图以monarchy生成的密钥):
加密解密

2.希尔密码(Hill cipher):3字母代码密码

  • 将明文字符表{a, b,…, z}映射为数字集合{0,1,…,25}
  • 密钥K为一个由整数构成的3 × 3矩阵 {0,1, … , 25}
  • 明文m为一个3 × 1矩阵(每次选取3个字符为一组)
  • 加密解密过程如下图:

希尔密码数学解析


置换密码

将明文中的各字符位置次序重新排列,但不改变字符本身

打乱明文字母的顺序

一、无密钥置换

栅栏密码进行分析:

  • 按照对角线的顺序写出明文,按照行的顺序读出作为密文。
    栅栏密码实例

二、有密钥置换

列移位密码分析:

  • 加密时,将明文按行填写到一个列宽固定(设为m)的表格或矩阵中,然后按 (1,2,…,m)的一个置换m交换列的位置次序,再按列读出即得密文
  • 解密时,将密文按列填写到一个列数固定(也为 m) 的表格或矩阵中,按置换π的逆置换交换列的位置次序,然后按行读出即得到明文—置换π可看成是算法的密钥;行数通过(密文)字母总数除以预先知道的列数 m 即可得到
    列移位密码实例

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值