加密-对称技术

引言

保密是密码学的核心,加密是获得信息保密的实用工具。

把有意义区域中的消息和加密算法中的输入称为原文,而把加密算法不可理解的输出称为密文。为了恢复信息,加密变换必须是可逆的,逆变换称为解密。加密算法和解密算法再加上消息和密钥的形式描述就构成了密码体制。

密码体制

密码体制构成如下:

  • 明文消息空间M:某个字母表上的串集
  • 密文消息空间C:可能的密文消息集
  • 加密密钥空间K:可能的加密密钥集;解密密钥空间K`:可能的解密密钥集
  • 有效的密钥生成算法g:NKKN\rarr K * K^\prime
  • 有效的加密算法:MKCM*K\rarr C
  • 有效的解密算法:CKMC*K^\prime \rarr M

对于整数1l1^lg(1l)g(1^l)输出长为 ll 的密钥对(ke,kd)。

加密变换:c=εke(m)c=\varepsilon _{ke}(m) ,解密变换:M=Dkd(c)M=D_{kd}(c)

由此可以得到: Dkd(εke(m))=mD_{kd}(\varepsilon_{ke}(m))=m

image-20230718110309626

kd=kekd=ke 的情况:对称密码体制

Kerchoffs原理 :知道算法和密钥的长度还可以获得已知的明文是现代密码分析的标准假设,既然敌手最终可以获得这些信息,那么评估密码强度时最好不要依赖于这些信息的保密性。

代换密码

代换密码 中,加密算法是一个代换函数,它将每一个 mMm \in M代换为相应的 cCc \in C,代换函数的参数时密钥k。解密算法只是一个逆代换。

简单的代换密码

M=C=Z26M=C=Z_{26},加密算法定义为下面的一个置换:

image-20230718113141493

相应的解密算法为:

image-20230718113206096

历史上出现过几种特殊的简单代换密码,最简单且最著名的密码称为移位密码。在移位密码中,K=M=CK=M=C,加密和解密映射定义为:

εk(m)m+k(modN)\varepsilon_k(m)\larr m+k (modN)

Dk(c)ck(modN)D_k(c)\larr c-k (modN)

M=Z26M=Z_{26}时,移位密码也称为凯撒密码。

同理也可以定义一种称为仿射密码的简单代换

εk(m)k1m+k2(modN)\varepsilon_k(m)\larr k_1m+k_2 (modN)

Dk(c)k11(ck2)(modN)D_k(c)\larr k_1^{-1}(c-k_2) (modN)

单表密码不能抵抗频度分析攻击

多表密码

如果明文信息元可以代换为许多可能是任意多的密文信息元,这种代换密码称为多表密码

维吉尼亚密码:密钥是由多于一个的字符所组成的串,令m为密钥长度,那么明文串被分为m个字符的小段。加密算法的运算同于密钥串和明文串之间的移位密码。

例如:

image-20230718161206021

弗纳姆密码和一次一密

弗纳姆密码 我们假设消息是比特串:m=b1b2...bn0,1nm=b_1b_2...b_n \in 0,1^n

那么密钥也是长为n的比特串: k=k1k2...kn0,1nk=k_1k_2...k_n \in 0,1^n

一次加密一比特,通过将每个消息比特和相应的密钥比特进行比特异或得到密文串 c=c1c2...cnc=c_1c_2...c_n,其中ci=bikic_i=b_i \bigoplus k_i

古典密码

首先我们要指出古典密码的两个基本工作原理:代换和换位。

古典密码安全使用的条件: #K#M,kK\#K \ge \#M,k \in K,每次加密只使用一次。