6.1 密码学的历史里程碑
手动时期:阿特巴希(Atbash)、凯撒密码、密码棒
机械时期:enigma(恩格尼码)
现代时期:香农提出了信息熵(entropy)概念
新兴技术:量子密码
6.1.1凯撒密码
(ROT3或Rotate 3, 轮转3)密码,最早密码系统。
采用单一字母替换法的替换密码,加密一条消息时,你只需要将字母表上的每个字母向右移三位就可以。
对“频率分析”的攻击类型非常脆弱。
维吉尼亚多字母表密码算法,基于凯撒密码。
6.1.2 美国南北战争
6.1.3 Ultra 与Enigma
6.2 密码学基本知识
6.2.1 密码学的目标
密码系统的基本目标:保密性,完整性,身份验证,不可否认。
(1) 保密性(Confidentiality)
确保数据在静止、传输和使用等三种不同状态下始终保持私密。
专用于实现保密性的两大类密码系统:
•对称密码系统,使用一个共享秘密密钥,提供给密码系统的所有用户。
•非对称密码系统,使用为系统每个用户单独组合的公钥和私钥。
三种类型数据:
•静止数据,或被存储数据,是指驻留在一个永久位置上等待访问的数据。
(保存在硬盘、USB和其他存储介质中的数据)
•运动中的数据,或线路上的数据,是指正在两个系统之间通过网络传送的数据。
(通过网络、无线网络或公共互联网传送)
•使用中的数据,是指保存在计算机系统的活跃内存中,可供在系统上运行的流程访问的数据。
使用中的数据通常,存储在寄存器
动态数据通常,正在网络上传输
静态数据通常,存储在外部存储设备
(2) 完整性(Integrity)
确保数据没有被人未经授权更改。如果有完整性机制正常运行,消息的接收者可确定,他收到的消息与发出的消息相同。
数字签名:消息完整性通过使用加密的消息摘要实现,即“数字签名“。
消息接收者只需要验证消息的数字签名有效就能确保消息在传输过程中未被改动。
(3) 身份验证(Authentication)
用于验证系统用户所声称的身份(挑战-应答身份验证技术)。
身份验证:非对称密码
(4) 不可否认性(No-repudiation)
向接收者保证消息发自发送者,而且没有人冒充发送者。
不可否认性还防止发送者声称自己绝对没有发送过消息(也叫否认消息)。
不可否认:非对称密码
6.2.2 密码学的概念
一条消息进入编码形式之前,叫作明文消息,描述加密功能时用字母P 表示。
一条消息的发送者用一种密码算法给明文消息加密,生成一条密文消息,用字母C 表示。
这条消息以某种物理或电子方式传送给接收者。接收者随后用一种预定算法来解密密文消息并恢复明文版本。
每种算法都有一个特定密钥空间。
密钥空间,是一个特定的数值范围,而某一特定算法的密钥在这个范围内才有效。
算法,其实就是一套规则,通常是数学规则,规定了加密和解密过程应该怎样进行。
科克霍夫原则:算法完全公开,允许研究和测试。
在私钥(或秘密密钥)密码系统下,所有参与者都使用一个共享密钥。
在公钥密码系统中,每个参与者都各有一个密钥对。
密码密钥有时是指密码变量(crypto variable) 。
创建和执行秘密代码和密码的技艺叫密码术(也叫加密法)。
而与这套实践规范并行的还有一项技艺叫密码分析,研究的是打败代码和密码的方法。
密码术和密码分析合在一起,就是我们通常说的密码学。
6.2.3 密码数学
1.布尔数学,
定义了用于构成任何计算机神经系统的位和字节的规则。
2.逻辑运算
“AND,与” 运算(用符号“^”表示)检查两个值是否
“OR,或” 运算(用符号“V” 表示)检查输入值中是否至少一个为真。
“NOT,非” 运算(用符号”~”或“!”表示)只是颠倒一个输入变量的值。
”Exclusive OR,异或“ XOR 函数,通常用符号”⊕” 表示。
只有当一个值为真的时候, XOR 函数才返回一个真值。
如果两个值都为假或两个值都为真,则XOR 函数的输出为假。
3.模函数
一次除法运算之后留下的余数,通常用它的缩写“mod” 表示,不过有时也用运算符"%”表示。
4.单向函数(One-Way Function)
是便于为输入的每种可能组合生成输出值的一种数学运算,但这一运算会导致无法恢复输入值。
5.Nonce随机数
可在数学函数中充当占位符变量,当函数执行时, Nonce 都会被一个在开始处理的那一刻生成的一次性随机数替换。
6.零知识证明
你向某个第三方证明,你确实知道一个事实,但同时不把这个事实本身披露给该第三方,这样的机制借助密码学形成,通常通过口令和其他秘密鉴别符实现。
7.分割知识
当执行某项操作所要求的信息或权限被分散到多名用户手中时,任何一个人都不会具有足够的权限来破坏环境的安全。
这种把职责分离和双人控制融于一个解决方案的做法。(”密钥托管”概念是体现分割知识的最佳例子)
8.代价函数
可用代价函数或代价因子从耗费成本和/或时间的角度测量破解一个密码系统需要付出的努力,以此来衡量密码系统的强度。
代价函数的大小应该与受保护资产的价值匹配。
问题:算法的加密因素定义了什么?
A.加密和解密相同的明文所花费的时间
B.破解加密所需要的时间
C.实现16轮计算所花费的时间
D.申请置换功能所花费的时间
解析:加密算法的工作因素定义了破解加密所需要的时间,通常和秘钥长度、算法复杂度相关。
正确答案:B
6.2.4 密码
1.代码和密码
代码是简化,密码是隐藏信息。
二者在概念上有重要区别:
代码,是由代表单词和短语的符号构成的密码系统;代码尽管有时是保密的,但它们并不一定提供保密性保护。
密码,始终要隐藏消息的真实含义。密码通过各种技术手段更改和/或重新排列消息的字符或位,以达到实现保密性的目的。
2.移位密码
通过一种加密算法重新安排明文消息的字母,形成密文消息。
解密算法只需要逆向执行加密转换便可恢复原始消息。
3. 替换密码(substitution cipher)
ROT3通过加密算法用一个不同的字符替换明文消息的每个字符或位。
多表替换密码,在同一条消息中使用多个字母表,以此给破解制造障碍。
(最著名例子之一是Vigenere密码系统)。
多表替换虽然可以抵御直接频率分析,但是遇到叫作周期分析的二阶式频率分析时就显得无能为力了(周期分析根据密钥的重复使用情况进行频率分析)。
4. 单次密本(one-time pad,也称一次性填充、一次性随机密钥)
otp是极其强力的一种替换密码。单次密本为明文消息中的每个字母使用一个不同的替换字母表(单次密码也叫Vernam密码)。
one-time pad使用和消息一样长的密钥,被认为是不可破解的!
otp须满足有几点要求才能保证算法的完整性:
• 单次密本必须随机生成。若是使用从一本书中摘取的短语或段落,将使密码分析者有机会破解代码。
• 单次密本必须处于物理保护之下,以防泄露。敌人如果拿到密本拷贝,将能轻松解密经过加密的消息。
• 每个单次密本必须只使用一次。
如果密本重复使用,密码分析者将能在用同一密本加密的多条消息之间比较相同点,进而有可能确定所使用的密钥值。
• 密钥必须至少与将被加密的消息一样长。这是因为,密钥的每个字符只用于给消息中的一个字符编码。
5. 运动密钥密码(running key cipher,也称书密码)
在这套密码中,加密密钥与消息本身一样长,而且往往选自一本普通书籍。
6. 块密码(block cipher)
在消息“块“上运算,在同一时间对整个消息执行加密算法。
移位密码(transposition cipher)是块密码的例子。
7. 流密码(stream cipher)
一次在消息(或消息流)的一个字符或一个位上运行。
凯撒密码和单次密本是流密码的一个例子。
流密码生成密钥流。
流密码更适合硬件实现。
Rc4是流密码。
8. 混淆(confusion)和扩散(diffusion)
密码算法依靠两种基本运算来隐藏明文消息,混淆和扩散。
混淆:迫使攻击者放弃只靠改动明文和分析结果密文来确定密钥。
扩散:明文中发生的一点变化,会导致多个变化在整个密文中传播。
6.3 现代密码学
凯撒密码、Vigenere 密码和单次密本彼此很像,唯一区别是密钥长度。
凯撒移位密码:所用密钥的长度为1。
Vigenere 密码:使用的密钥要长一些,通常是一个词或一句话。
单次密本:使用的密钥与消息本身一样长。
问题:什么加密模式使用和消息一样长的密钥?
A. Cipher block chaining 密码块链接
B. Steganography 隐写术
C. One-time pad 一次性填充
D. Running key cipher 滚动密码
正确答案:C
密码学提供以下保护:
1.检测欺骗性插入
2.检测欺骗性篡改
3.检测欺骗性删除
6.4 对称密码
6.4.1 数据加密标准
※ 对称密码算法:多人时的数量:n(n-1)/2
※ 非对称密码算法,数量:2n
问题:Bob 正在设计一个在他的公司内使用的密码系统。该公司有 1000 名员工,他们计划使用非对称加密系统。他们希望设置系统,以便任意两个用户都可以私下通信。他们总共需要多少把钥匙?
A. 500
B. 1,000
C. 2,000
D. 4,99500
正确答案:C
解析:
非对称密码系统为每个用户使用一对密钥。
在这种情况下,如果有 1,000 个用户,系统将需要 2,000 个密钥。
对称密钥算法依靠一个分发给所有通信参与方的“共享秘密“加密密钥。
非对称密钥算法也叫公钥算法,可提供解决方案消减对称密钥加密的弱点。
对称密钥算法依靠一个分发给所有通信参与方的“共享秘密“加密密钥。
非对称密钥算法也叫公钥算法,可提供解决方案消减对称密钥加密的弱点。
对称密码学最适合提供(机密性)
对称密码弱点:
1.密钥分发
2.不提供不可否认性
3.缺乏可伸缩性
4.密钥必须经常重新生成(一旦有参与者离开群体)
5.安全服务有限
6.密钥数量更多
对称密码模式:
1.电子密码本模式(ECB,Electronic Code Book)
问题:遇到同一个块,会生产相同的加密块。
2.密码块连接模式(CBC,Cipher Block Chaining)
借助前一个生产的密文块做异或运算。
问题:错误传播,如果一个块毁坏,这个块及后面的块将无法解密。
3.密码反馈模式(CFB)
使用实时数据做异或运算。
4.输出反馈模式(OFB,Output Feedback)
使用一个初始化向量来创建种子值,优势:不存在链接函数,传输错误不会传播。
5.计算器模式(CTR)
流密码,采用计数器为每次运算增量,不会传播错误。
非对称密钥加密法优点:
• 添加新用户时只需要生成一个公钥-私钥对。
• 便于从非对称系统移除用户。
• 只需要在用户私钥失信的情况下重新生成密钥。
• 非对称密钥加密可提供完整性身份验证和不可否认性。
• 密钥分发简便易行。
• 不需要预先建立通信关联。
6.4.2 三重DES
三重DES,64位块大小,112或168位。
3DES 共有4 个版本:
• 第一个版本(DES-EEE3)
主要用3个不同的密钥(K1、K2和K3)给明文加密三遍。
这叫DES-EEE3 模式(其中E 表示有三次加密运算,而3表示使用了3个不同的密钥)。
DES-EEE3可用下面这个符号表达,其中E(K,P)表示用密钥K给明文P加密。
E (K1, E (K2, E (K3, P)))
DES-EEE3 的有效密钥长度为168 位。
• 第二个变体(DES-EDE3)
也使用3 个密钥,但是用一次解密运算替换了第二次加密运算:
E (K1, D (K2, E (K3, P)))
• 第三个版本(DES-EEE2)
只使用两个密钥K1和K2:
E (K1, E (K2, E (K1, P)))
• 第四个变体(DES-EDE2)
也使用两个密钥,但中间使用了一个解密运算:
E (K1, D (K2, E (K1, P)))
第三和第四个变体的有效密钥长度都为112 位。
6.4.3 国际数据加密算法
数据加密标准DES:
64位块大小,56位密钥。
IDEA国际数据加密算法:
IDEA在64位明文/密文块上运行。IDEA 是用一个128 位密钥开始运算。
Blowfish:
在64 位文本块上运行,允许密钥长度可变,
其中最短为相对不太安全的32 位,最长为极强的448 位,从而进一步拓展了IDEA 的密钥强度。
Skipjack:
在64 位文本块上运行,使用80 位密钥。
Rivest Cipher 5(RC5):
是一种块大小可变(32 、64 或128 位)的块密码,所用密钥大小在0 到2040 位之间。
DES的模式:输出反馈(Output Feedback,FB)、电子密码本(Electronic code Book,ECB)、密码分组链接(Cipher Block Chaining,CBC)
6.4.6高级加密标准AES
128位块,128、192、256位密钥。
Twofish:
是一种块密码。在128 位数据块上运行,能够使用最长达256 位的密码密钥。
Twofish使用的两种算法,预白化处理、白化后处理。
Rijndael:
是被NIST选中的AES加密算法。
问题:以下哪一项是被NIST选中的AES加密算法?
A.RC6
B.Twofish
C.Rijndael
D.Blowfish
正确答案:C
用于安全交换秘密密钥的方法主要有三种:
•线下分发;
•公钥加密;
•Diffie-Hellman 密钥交换算法。
密钥托管的两种方法:
•公平密码系统
•受托加密标准
问题:以下哪项是关于在用于保护数据时的数据加密是真实的?
A.验证数据完整性和准确性
B.需要谨慎的秘钥管理
C.他不需要太多系统资源开销
D.它需要秘钥托管
解析:秘钥托管技术是能够在紧急情况下获取解密信息的技术。
它用于保存用户私钥备份,既可在必要时帮助国家司法或安全等部门获取原始明文信息,也可在用户丢失、损坏自己的秘闻的情况下回复明文。
因此他不同于一般的加密和解密操作。
正确答案:B
6.5 密码生命周期
问题:哪一项加密协议和基础设施是开发用来在互联网上发送加密的信用卡信息的?
A.secure shell(SSH-2)
B.secure hypertext transfer protocol(S-HTTP)
C.secure Electronic transaction(SET)
D.pretty good privacy(PGP)
正确答案:C
对称加密算法:DES、Blowfish、RC5
哪个方法能最佳保护email消息的真实性和机密性?
用发送者的私钥签名消息,再用接收者的公钥加密消息。
(RC4算法) 是流密码。
问题:单向哈希函数提供那种安全性?
A.完整性
B.验证
C.机密性
D.可用性
正确答案:A
问题:密码学不解决以下哪个安全需求?
A.验证
B.机密性
C.完整性
D.可用性
正确答案:D