古典加密算法介绍(一)
后一篇:【古典加密算法介绍(二)】
前言
最近学网络安全学到对称加密系统这个部分,感觉看书大段文字效率很低,所以很自然的想做一下可视化,既方便自己复习,也方便他人参考。
本文也可以看作教材的学习笔记,我个人看的是《Cryptography and Network Security: Principles and Practice, Global Edition 7th edition Edition》,这篇文章涉及的内容在原书第三章。
对称加密
所谓对称加密,粗略来说是指的是两方通信时(如Alice和Bob两人),预先持有相同的密钥(secret key)并希望其在公开渠道通信期间的消息他人无法知晓内容。相关的术语见下图:
特别需要指出的是,加密的算法是公开的,其通信的保密性基于密钥的保密性。
我们希望我们的算法可以:
- 可以抵挡暴力攻击(即枚举密钥尝试解谜而得到有意义的信息)
- 可以抵挡密码分析,比如当一定数量以下的【密文-明文】的配对被截获时不易被分析出密钥或大幅度减少可能密钥的空间(当然还有其他的场景,如攻击者允许任意指定明文的情况等等)。
对于加密方案(encryption scheme)是否安全,我们有两个名词:
- 无条件安全(unconditionally secure):
- 指无论攻击者花多少时间都无法破译其加密内容的加密方案。
- 对于完整系统,真实情况较少见
,当然如果密钥信息量大于要传递的信息量就另当别论。
- 计算安全(computationally secure)
- 两种条件下,都可称为加密方案满足计算安全:破解成本大于信息价值,或破解时间大于加密生存周期。
- 实际评估时很难计算破解成本和破解时间
,故大概也只是个应用概念。
相关算法
恺撒密码(Caesar Cipher)
- 基于置换
- 密钥为 [0,26) 的整数
,密钥为零时明文密文相同 - 加密过程:对于每个单字母进行移位(过z回a)
- 解密过程:反向移位
- 破解方式:暴力枚举即可
单表置换密码(Monoalphabetic Substitution Cipher)
- 基于置换
- 密钥为26个字母的全排列之一
- 加密过程:对于每个单字母查表,改为对应字母
- 解密过程:反向查表
- 破解方式:字母频率统计(英文中e\t\a\o\i等字母出现频率较高)
- 恺撒密码可以看作单表置换的一类特殊情况
波雷费密码(Playfair Cipher)
- 基于置换
- 密钥为短语或给定的5*5字母(排列)矩阵,其中I/J占据同一格位置
- 通过短语生成密钥时,将字母表短语外的剩余字母依次一行一行填写在表格内
- 加密过程:将明文两两分组。若分组过程中出现连续的字母,则用’x’隔开。对于分组后的每两个字母
- 若其在5*5矩阵中同一行,则分别替换为其右侧的字母,定义最右侧的右侧为最左侧
- 若其在5*5矩阵中同一列,则分别替换为其下侧的字母,定义最下侧的下侧为最上侧
- 若其在5*5矩阵中不同行列,则分别替换为同一行而交换列的字母
- 解密过程:与加密相同(方向相反)
- 破解方式:依然容易受到字母频率或二连字(digram)频率分析的攻击
希尔密码(Hill Cipher)
- 基于置换
- 密钥为一个矩阵m*m的矩阵,其中m为明文的分块大小,元素为整数(mod 26意义下的)且要求该矩阵有逆矩阵
- 加密过程:明文按m分块,单个字母视为 [0,26) 的整数,乘密钥矩阵对26取模得到密文
- 解密过程:密文按m分块,单个字母视为 [0,26) 的证书,乘密钥逆矩阵对26取膜得到明文
- 破解方式:在得到特定【密文-明文】的配对时,可直接反解密钥
未完待续
这篇就先到这里了,做图有点花时间…。接下来准备介绍:
-
多字母表密码(Polyalphabetic Cipher)
- 维吉尼亚密码(Vigenère Cipher)
- 维尔南密码(Vernam Cipher)
- 一次性密码本(One-time Pad or OTP)
-
基于换位(Transposition)的其他加密技术