传统密码技术
置换密码¶
又被称为换位密码,它根据一定规则中心排列明文
- 特点:保持明文的所有字符不变,只是利用置换打乱了明文字符的位置和次序
- 常见置换密码
- 列置换密码
- 周期置换密码:将明文P按照固定的长度m分组,然后对每组按1,2,……,m的某个置换重排位置从而得到密文C
列置换密码¶
加密过程
将明文P以设定的固定分组宽度n按行写出,即每行有n个字符。若明文长度不是n的整数倍,则不足部分用双方约定的方式填充,如双方约定用空格代替空缺处字符,不妨设最后得字符矩阵为\([M]_{m\times n}\)
按某一置换\(\sigma\)交换列的位置次序得到字符矩阵\([M_P]_{m\times n}\)
将矩阵\([M_P]_{m\times n}\)按照列1,2,……,n的顺序读出得到密文序列C
若要解密,则使用加密所用置换的逆置换\(\sigma^{-1}\)交换列次序,再按行的顺序依次读出矩阵\([M]\)
周期置换密码¶
将明文串P按固定长度n分组,然后对每组中的子串按1,2,……,n的某个置换重排位置从而得到密文C。其中密钥\(\sigma\)设定了每个分组中子串位置置换的方法。解密时同样对密文C按长度n分组,并 按\(\sigma\)的逆置换\(\sigma^{-1}\)把每组子串重新排列位置从而得到明文P。
比如有字符串S=hello world!
,按照固定长度3分组,得到S'=(hel)(lo )(wor)(ld!)"
,按照\(\sigma=(132)\)进行置换,得到S"=lhe lorwo!ld
代换密码¶
按照一个明文字母是否总是被一个固定的字符代换进行划分:
- 单表代换密码
- 对明文消息中出现的同一个字母,在加密时都使用同一固定的字母来代换,不管它出现在什么地方。
- 多表代换密码
- 明文消息中出现的同一个字母,在加密时不是完全被同一固定的字母代换,而是根据其出现的位置次序,用不同的字母代换。
单表密码-仿射密码¶
- 明文P=密文C=\(Z_{26}\)
- 加密:\(E_k(m)\equiv am+b \mod n=c\)
- 解密:\(D_k(c)=a^{-1}(c-b)\mod n = m\)
- 密钥\(K=\{(a,b):a,b\in Z_{26}并且\text{gcd}(a,n)=1,n=26\}\)
多表密码-维吉尼亚¶
多表代换密码指的是利用多个单表代替密码构成的密码体制,载明文进行加密的过程中依照密钥轮流使用多个单表代替密码
- \(M=(m_1,m_2,\dots,m_n)\quad K=(k_1,k_2,\dots,k_d)\quad C=(c_1,c_2,\dots ,c_n)\)
- 加密变换:\(E_{ki}(m_{i+td})=m_{i+td}+k_i\mod n\)
多表密码-希尔密码¶
加密函数定义为
其中密钥矩阵需要保证为一非奇异矩阵,且满足(det(k),26)=1
Enigma¶
从19世纪20年代,人们开始发明各种机械加密设备用来处理数据的加解密。起初普遍使用的是转轮机和转轮加密算法。
转轮密码机是由一个用于输入的键盘和一组转轮组成,每个轮转上有26个字母的任意组合。转轮之间由齿轮进行连接,当一个轮转转动时,可以将一个字母转化成为另一个字母。
- 组成结构:
- 键盘:输入明文
- 接线板:单表代换
- 转轮:多表代换
- 反射器:它的静态性使得加密机也可以作为解密机
- 每日密码:密钥加密密钥
- 通信密码:类似会话密钥
传统密码的分析与破译¶
单表代换密码分析(频率)¶
- E,有概率大约0.120。
- T,A,O,I,N,S,H,- R,每个有概率在0.06~0.09间。
- D,L,每个有概率大约0.04。
- C,U,M,W,F,G,Y,P,B,每个有概率在0.015~0.023之间。
- V,K,J,X,Q,Z,每个概率少于0.01。
当考虑位置特性时,字母A,I和H一般不作为单词的结尾,而E,N和R出现在起始位置比出现在结束位置的概率更小,字母T,O和S出现在单词前后位置的概率基本相同。
频率分析法
- 首先统计密文中每个字母出现的频率,确定其对应的范围(一般而言,出现频率最高的字母对应的应该是e)
- 再辅以字母组合、位置特殊性以及连续的同一字母等特性,容易确定明文字母与密文字母的对应关系。
- 密文越长越容易破解
多表代换密码分析(重合指数)¶
Hill密码分析(明文-密文对)¶
所谓明文-密文对分析法是指攻击者不仅获得若干密文,而且还得到这些密文对应的明文,通过若干明文-密文对以分析出密钥的方法。
假设攻击者已经知道正在使用的希尔密码的密钥长度为n,并且知道至少n个不同的明文-密文对,则可以通过构建方程求解密钥矩阵
单表替换密码快速破解(原理未知):https://quipqiup.com/