A cryptosystem should be secure even if everything about the system,
except the key, is public knowledge. – Auguste Kerckhoffs, 1883.
一个密码系统应该是安全的,即使系统的所有内容,除了密钥,是公共知识。(Auguste Kerckhoffs, 1883)
密码系统的设计原则:
替代密码:凯撒加密,Vigenere表,德国英格玛谜机
换位密码:斯巴达的Scytale,栅栏密码
(这篇介绍得很详细:三种古典密码的认识(置换密码,代换密码和轮换密码))
•明文中的每个字母被替换为不同的字母。
•为了加密,凯撒把信息中的每个字母在字母表里往下挪了3位
•方法-将字母按下,键= 3
•用字母表中字符的序数表示每个字母表。
恺撒密码:如果p是明文字符的序号,加密密钥为k,则密文字符的序号为:c = p + k (mod 26)
•解密,明文的序号为(c−k) = p (mod 26)
•例:P =“撤退”的密文是什么?
•这个密码的密钥空间是什么?
•破解此密码最多需要多少次尝试?
•方法:用不同的字母代替每个字母
根据表(键),例如:
A→k, B→d, C→w,···,Z→x
P = " ABBA "加密为kddk。
•键(表)应该是完全随机的,但通信两端都知道它。
问题:一个明文字符被编码为同一个密文字符:一个主要的弱点是什么?为什么?
首先,获取一些密文Cx和相关的明文Px。 生成所有可能的密钥。
对于每个密钥,解密密文并检查是否获得plantext,如果没有尝试另一个密钥直到成功。
为每一个Ki直到成功 无需思考,只要做得尽可能快,100%成功率。 也被称为穷举关键字搜索攻击 •问题:如何防范这种攻击?
如果明文是用英语、法语、德语等语言写的,某些字符和字符组合以已知的语言频率分布出现。
频率分析:如果明文字符总是被编码到相同的对应密文字符,那么密文字符的频率保持明文语言的频率分布。 密文字符的频率可以用来映射为明文字符
单字母替代密码容易受到这种攻击
•使用替换密码从英语明文的密文
C = HSPAA SLRUV DSLKN LPZHK HUNLY VBZAO PUN
•找出最常见的字母
4次:L
3次:A H N P S U
•猜测:将L解密为E
•尝试 Key = L-E = 7
解密(HSPAA SLRUV DSLKN LPZHK HUNLY VBZAO PUN, 7) = ALITT LEKNO WLEDG EISAD OUSTH ING
•问题:加密2次或更多次能击败这种攻击吗?
多表代换密码在通过明文时使用不同的单字母替代。
•Alice将一条消息加密给Bob。它们共享一个密钥Ks,一个由m个字符组成的字符串。
•Alice消息被分成n个大小为m的块,即P1,P2,···,Pn •对于每个块,通过添加密钥(mod 26), i,e加密它。 Ci≡+
Ks mod 26 •Bob解密每个密文块: Ci−Ks mod 26≡Bi
Vignere密码的例子
•明文P = ATTACKATDAWN,可以写成(0 19 19 0 2 10 0 19 3 14 22 13)。 •Key, Ks =
CIPHER,写为(2 8 15 7 4 17),m = 6 (Ks的长度),。 •将明文分成6个字符的块,然后用键做加法(mod 26)
•对应的密文即为 C = CBIHGBCBSVAEC
•解密:用Ks取模26减
维格涅尔密码问题
问题:以上密码的密钥空间是什么?
•问题:(1)如果密钥和信息一样长,这能抵抗频率分析攻击吗?(2)如果密钥较短且重复使用,这能抵抗频率分析攻击吗?
问题:如果消息长度不是密钥长度的倍数呢?
密码保留原字符在P中,但根据密钥Ks进行转置或置换以产生C
•密文为C = FKTATNLNESATCADWAATKA
•解密?
换位使用关键字
•以关键字(key)的长度为单位的行写入消息
•根据关键字的顺序写出列。
•例子:
明文P =WE ARE DISCOVERED FLEE AT ONCE, 关键字ZEBRA的顺序是"5,3,2,4,1"
密文C =EODAEASRENEIELORCEECWDVFT
强密码学的两个基本运算(Claude Shannon):
•混淆-模糊密钥和密文之间的关系,例如使用替换。
•扩散-隐藏明文的统计属性,例如使用排列
•现代密码通过连接几个混淆和扩散操作。
Reference: Understanding Cryptography by Christof Paar