一、密码学的发展历史(有空再看)
二、密码体制
伪装前的数据:明文
伪装后的数据:密文
伪装的过程:加密
去掉伪装的过程:解密
加密方案:密码体制/密码
研究加密方案的学科:密码编码学
研究破译密码的学科:密码分析学
密码编码学 + 密码分析学 = 密码学
明文空间(全体明文的集合):M
密文空间(全体密文的集合):C
密钥空间(全体密钥的集合):K
加密算法(M → C):E
解密算法(C → M): D
加密过程: C= E(M,Ke)
解密过程: M=D(C,Ke)
三、算法设计的公开原则
数据安全基于密钥的保密而不是算法的保密
对于一个密码体制,算法是公开的(算法中参数具体取值不公开),对于某次加密过程中所使用的密钥,则是保密的。
安全:基于对手对密码学算法有充分研究且拥有足够的计算资源的情况下仍然安全。
四、密码系统的分类
1.根据密钥的使用方式分类:
对称密码体制:
加密解密的密钥相同
加密:E~k~(M) = c
解密:D~k~(C) = M
非对称密码体制(公钥算法):
*加密的密钥无法推导出解密的密钥
*公钥KP:公之于众,是加密密钥
*私钥PK:自己私有,是解密密钥
加密:E~kp~(M)= c
解密:D~pk~(C) = M
//当用私钥加密公钥解密时可用来数字签证
2.根据明文和密文的处理方式分类:
分组密码:
将明文分组,并使用相同的密钥对每一组进行加密
常用分组长度:64位 —— 大到足以防止分析破译,小到足以方便使用
序列密码:将明文和密钥都划分为位(b)或字符的序列,并且对
明文序列中的每一位或字符都用密钥序列中对应的分量来加密。(即使明文中的每一位或字符变换为另一种字符)。
两者的区别:分组密码每次加密一个明文块(分组),序列密码每次加密一个位或一个字符。
3.根据加密算法是否变化分类
固定算法密码体制:把明文加密成密文的过程中加密算法固定不变
变化算法密码体制:把明文加密成密文的过程中加密算法不断变化。
五、密码分析
如果能够根据对密文的分析确定明文或密文,或能通过明文——密文确定密钥,则说明该密码是可破译的。破译过程称为密码分析。
攻击密码体制的方法:密码分析和穷举攻击。
密码分析学:
对密码进行分析的尝试称为攻击。
常见攻击形式:
唯密文攻击:仅根据截获的密文破译密码
已知明文攻击:根据已知的明文—密文对来破译
选择明文攻击:知道选择的明文和对应的密文
选择密文攻击:知道选择的密文和对应的明文
经典密码学:
不要求计算机实现的所有加密算法(可通过计算机破解)
任何重要的应用程序,都不推荐使用这些经典加密算法。
采用的技术:代换技术、置换技术
代换技术:将明文字母替换为其他字母、数字或符号的方法。
简单代换密码(单字母密码):一个字符-->另一个字符
多名码代换密码:代换时可有多个选择,例A可能对应5、13、25、56等。
字母代换密码:字符块被成组加密,例ABC -->RTQ
多表代换密码:由多个简单的代换密码构成,如可能有5个被使用的不同的简单代码替换,单独的一个字符用来改变明文的每个字符的位置。
置换技术:只是打乱明文的顺序,不使用新的字符等。
常见代换密码:
1.凯撒密码:明文中的每个字母都用它之后的第三个字母代换,字母表可循环使用。如:A–>D,Z–>C。
有25种可能的密钥,易破译
2.单表代换密码:26个字母随意代换,例A–>C,B可在剩下的25个子母中随意选择一个进行代换,C可在剩下的24个中随意选择一个进行代换。
容易被统计学的方法破译
3.多表代换密码:在明文中采用不同的单表代换。每个字母都有多个可能的密文字母来代换它。
例:Playfair密码
例如 使用的密钥是monarchy,则进行填充矩阵,(I和J在同一个格子里)