littleRound 小园香径 - lxy的个人博客

古典加密算法介绍(一)

2019-03-05
littleRound

古典加密算法介绍(一)

后一篇:【古典加密算法介绍(二)】

前言

最近学网络安全学到对称加密系统这个部分,感觉看书大段文字效率很低,所以很自然的想做一下可视化,既方便自己复习,也方便他人参考。

本文也可以看作教材的学习笔记,我个人看的是《Cryptography and Network Security: Principles and Practice, Global Edition 7th edition Edition》,这篇文章涉及的内容在原书第三章。

对称加密

所谓对称加密,粗略来说是指的是两方通信时(如Alice和Bob两人),预先持有相同的密钥(secret key)并希望其在公开渠道通信期间的消息他人无法知晓内容。相关的术语见下图:

1

2

特别需要指出的是,加密的算法是公开的,其通信的保密性基于密钥的保密性。

我们希望我们的算法可以:

  • 可以抵挡暴力攻击(即枚举密钥尝试解谜而得到有意义的信息)
  • 可以抵挡密码分析,比如当一定数量以下的【密文-明文】的配对被截获时不易被分析出密钥大幅度减少可能密钥的空间(当然还有其他的场景,如攻击者允许任意指定明文的情况等等)。

对于加密方案(encryption scheme)是否安全,我们有两个名词:

  • 无条件安全(unconditionally secure):
    • 无论攻击者花多少时间都无法破译其加密内容的加密方案。
    • 对于完整系统,真实情况较少见,当然如果密钥信息量大于要传递的信息量就另当别论
  • 计算安全(computationally secure)
    • 两种条件下,可称为加密方案满足计算安全:破解成本大于信息价值,破解时间大于加密生存周期。
    • 实际评估时很难计算破解成本和破解时间,故大概也只是个应用概念

相关算法

恺撒密码(Caesar Cipher)

  • 基于置换
  • 密钥为 [0,26) 的整数,密钥为零时明文密文相同
  • 加密过程:对于每个单字母进行移位(过z回a)
  • 解密过程:反向移位
  • 破解方式:暴力枚举即可

Caesar

单表置换密码(Monoalphabetic Substitution Cipher)

  • 基于置换
  • 密钥为26个字母的全排列之一
  • 加密过程:对于每个单字母查表,改为对应字母
  • 解密过程:反向查表
  • 破解方式:字母频率统计(英文中e\t\a\o\i等字母出现频率较高)
  • 恺撒密码可以看作单表置换的一类特殊情况

Monoalphabetic

波雷费密码(Playfair Cipher)

  • 基于置换
  • 密钥为短语给定的5*5字母(排列)矩阵,其中I/J占据同一格位置
  • 通过短语生成密钥时,将字母表短语外的剩余字母依次一行一行填写在表格内
  • 加密过程:将明文两两分组。若分组过程中出现连续的字母,则用’x’隔开。对于分组后的每两个字母
    • 若其在5*5矩阵中同一行,则分别替换为其右侧的字母,定义最右侧的右侧为最左侧
    • 若其在5*5矩阵中同一列,则分别替换为其下侧的字母,定义最下侧的下侧为最上侧
    • 若其在5*5矩阵中不同行列,则分别替换为同一行而交换列的字母
  • 解密过程:与加密相同(方向相反)
  • 破解方式:依然容易受到字母频率或二连字(digram)频率分析的攻击

Playfair

希尔密码(Hill Cipher)

  • 基于置换
  • 密钥为一个矩阵m*m的矩阵,其中m为明文的分块大小,元素为整数(mod 26意义下的)且要求该矩阵有逆矩阵
  • 加密过程:明文按m分块,单个字母视为 [0,26) 的整数,乘密钥矩阵对26取模得到密文
  • 解密过程:密文按m分块,单个字母视为 [0,26) 的证书,乘密钥逆矩阵对26取膜得到明文
  • 破解方式:在得到特定【密文-明文】的配对时,可直接反解密钥

Hill

未完待续

这篇就先到这里了,做图有点花时间…。接下来准备介绍:

  • 多字母表密码(Polyalphabetic Cipher)

    • 维吉尼亚密码(Vigenère Cipher)
    • 维尔南密码(Vernam Cipher)
    • 一次性密码本(One-time Pad or OTP)
  • 基于换位(Transposition)的其他加密技术


相关文章

评论区(DISQUS)