凯撒密码,
凯撒密码还被叫作ROT3 (或Rotate 3, 轮转3)密码。
最早密码系统,采用单一字母替换法的替换密码,加密一条消息时,你只需要将字母表上的每个字母向右移三位就可以。
对“频率分析”的攻击类型非常脆弱。
密码系统的基本目标:保密性,完整性,身份验证,不可否认。
(1)保密性(Confidentiality),确保数据在静止、传输和使用等三种不同状态下始终保待私密。
专用于实现保密性的两大类密码系统:
•对称密码系统,使用一个共享秘密密钥,提供给密码系统的所有用户。
•非对称密码系统,使用为系统每个用户单独组合的公钥和私钥。
三种类型数据:
•静止数据,或被存储数据,是指驻留在一个永久位置上等待访问的数据。(保存在硬盘、USB和其他存储介质中的数据)
•运动中的数据,或线路上的数据,是指正在两个系统之间通过网络传送的数据。(通过网络、无线网络或公共互联网传送)
•使用中的数据,是指保存在计算机系统的活跃内存中,可供在系统上运行的流程访问的数据。
(2)完整性(Integrity),确保数据没有被人未经授权更改。如果有完整性机制正常运行,消息的接收者可确定,他收到的消息与发出的消息相同。
数字签名,消息完整性通过使用加密的消息摘要实现,即“数字签名“。消息接收者只需要验证消息的数字签名有效就能确保消息在传输过程中未被改动。
(3)身份验证(Authentication),用于验证系统用户所声称的身份(挑战-应答身份验证技术)。
身份验证:非对称密码
(4)不可否认性(Nomepudiation),向接收者保证消息发自发送者,而且没有人冒充发送者。不可否认性还防止发送者声称自己绝对没有发送过消息(也叫否认消息)。
不可否认:非对称密码
一条消息进入编码形式之前,叫作明文消息,描述加密功能时用字母P 表示。
一条消息的发送者用一种密码算法给明文消息加密,生成一条密文消息,用字母C 表示。
这条消息以某种物理或电子方式传送给接收者。接收者随后用一种预定算法来解密密文消息并恢复明文版本。
每种算法都有一个特定密钥空间。密钥空间是一个特定的数值范围,而某一特定算法的密钥在这个范围内才有效。
算法,其实就是一套规则,通常是数学规则,规定了加密和解密过程应该怎样进行。
科克霍夫原则:算法完全公开,允许研究和测试。
在私钥(或秘密密钥)密码系统下,所有参与者都使用一个共享密钥。
在公钥密码系统中,每个参与者都各有一个密钥对。
密码密钥有时是指密码变量(cryptovariable) 。
创建和执行秘密代码和密码的技艺叫密码术(也叫加密法)。
而与这套实践规范并行的还有一项技艺叫密码分析,研究的是打败代码和密码的方法。
密码术和密码分析合在一起,就是我们通常说的密码学。
密码数学:
1.布尔数学,定义了用于构成任何计算机神经系统的位和字节的规则。
2.逻辑运算
“AND,与” 运算(用符号“^”表示)检查两个值是否
“OR,或” 运算(用符号“V” 表示)检查输入值中是否至少一个为真。
“NOT,非” 运算(用符号”~”或“!”表示)只是颠倒一个输入变量的值。
”Exclusive OR,异或“ XOR 函数,通常用符号”⊕” 表示。只有当一个值为真的时候, XOR 函数才返回一个真值。如果两个值都为假或两个值都为真,则XOR 函数的输出为假。
3.模函数,一次除法运算之后留下的余数,通常用它的缩写“mod” 表示,不过有时也用运算符"%”表示。
4.单向函数(One-Way Function),是便于为输入的每种可能组合生成输出值的一种数学运算,但这一运算会导致无法恢复输入值。
5.Nonce随机数,可在数学函数中充当占位符变量,当函数执行时, Nonce 都会被一个在开始处理的那一刻生成的一次性随机数替换。
6.零知识证明,你向某个第三方证明,你确实知道一个事实,但同时不把这个事实本身披露给该第三方,这样的机制借助密码学形成,通常通过口令和其他秘密鉴别符实现。
7.分割知识,当执行某项操作所要求的信息或权限被分散到多名用户手中时,任何一个人都不会具有足够的权限来破坏环境的安全。这种把职责分离和双人控制融于一个解决方案的做法。(”密钥托管”概念是体现分割知识的最佳例子)
8.代价函数,可用代价函数或代价因子从耗费成本和/或时间的角度测量破解一个密码系统需要付出的努力,以此来衡量密码系统的强度。代价函数的大小应该与受保护资产的价值匹配。
密码:
1.代码和密码;代码是简化,密码是隐藏信息。
二者在概念上有重要区别:
代码,是由代表单词和短语的符号构成的密码系统;代码尽管有时是保密的,但它们并不一定提供保密性保护。
密码,始终要隐藏消息的真实含义。密码通过各种技术手段更改和/或重新排列消息的字符或位,以达到实现保密性的目的。
2.移位密码,通过一种加密算法重新安排明文消息的字母,形成密文消息。解密算法只需要逆向执行加密转换便可恢复原始消息。
3. 替换密码(substitution cipher),ROT3通过加密算法用一个不同的字符替换明文消息的每个字符或位。
多表替换密码,在同一条消息中使用多个字母表,以此给破解制造障碍。(最著名例子之一是Vigenere密码系统)。
多表替换虽然可以抵御直接频率分析,但是遇到叫作周期分析的二阶式频率分析时就显得无能为力了(周期分析根据密钥的重复使用情况进行频率分析)。
4. 单次密本(one-time pad)是极其强力的一种替换密码。单次密本为明文消息中的每个字母使用一个不同的替换字母表(单次密码也叫Vernam密码)。
单次密本的优势在于,如果使用得当,它能够不可破解。字母表替换中不存在任何重复模式,这使密码分析的努力只能归于徒劳。
但必须满足有几点要求才能保证算法的完整性:
• 单次密本必须随机生成。若是使用从一本书中摘取的短语或段落,将使密码分析者有机会破解代码。
• 单次密本必须处于物理保护之下,以防泄露。敌人如果拿到密本拷贝,将能轻松解密经过加密的消息。
• 每个单次密本必须只使用一次。如果密本重复使用,密码分析者将能在用同一密本加密的多条消息之间比较相同点,进而有可能确定所使用的密钥值。
• 密钥必须至少与将被加密的消息一样长。这是因为,密钥的每个字符只用于给消息中的一个字符编码。
5. 运动密钥密码(running key cipher),也可将这种密码称为书密码。
在这套密码中,加密密钥与消息本身一样长,而且往往选自一本普通书籍。
6. 块密码(block cipher),在消息“块“上运算,在同一时间对整个消息执行加密算法。移位密码(transposition cipher)是块密码的例子。
7. 流密码(stream cipher),一次在消息(或消息流)的一个字符或一个位上运行。凯撒密码是流密码的一个例子。单次密本也是流密码。
8. 混淆(confusion)和扩散(diffusion)
密码算法依靠两种基本运算来隐藏明文消息,混淆和扩散。
迫使攻击者放弃只靠改动明文和分析结果密文来确定密钥一一这就是混淆。
明文中发生的一点变化,会导致多个变化在整个密文中传播——这就是扩散。
凯撒密码、Vigenere 密码和单次密本彼此很像。它们之间的唯一区别是密钥长度。
凯撒移位密码,所用密钥的长度为1。
Vigenere 密码,使用的密钥要长一些(通常是一个词或一句话)。
单次密本,使用的密钥与消息本身一样长。
对称密码算法:多人时的数量:n(n-1)/2。
非对称密码算法,数量:2n
对称密钥算法依靠一个分发给所有通信参与方的“共享秘密“加密密钥。
非对称密钥算法也叫公钥算法,可提供解决方案消挕对称密钥加密的弱点。
对称密码弱点:
1.密钥分发
2.不提供不可否认性
3.缺乏可伸缩性
4.密钥必须经常重新生成(一旦有参与者离开群体)
对称密码模式:
1.电子密码本模式(ECB),问题:遇到同一个块,会生产相同的加密块。
2.密码块连接模式(CBC),借助前一个生产的密文块做异或运算。问题:错误传播,如果一个块毁坏,这个块及后面的块将无法解密。
3.密码反馈模式(CFB),使用实时数据做异或运算。
4.输出反馈模式(OFB),使用一个初始化向量来创建种子值,优势:不存在链接函数,传输错误不会传播。
5.计算器模式(CTR),流密码,采用计数器为每次运算增量,不会传播错误。
非对称密钥加密法优点:
•添加新用户时只需要生成一个公钥-私钥对。
•便于从非对称系统移除用户。
•只需要在用户私钥失信的情况下重新生成密钥。
•非对称密钥加密可提供完整性身份验证和不可否认性。
•密钥分发简便易行。
•不需要预先建立通信关联。
3重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 (Ki, P)))
第三和第四个变体的有效密钥长度都为112 位。
数据加密标准DES,64位块大小,56位密钥。
IDEA国际数据加密算法: IDEA 在64 位明文/密文块上运行。IDEA 是用一个128 位密钥开始运算。
Blowfish:在64 位文本块上运行。不过, Blowfish 允许密钥长度可变,其中最短为相对不太安全的32 位,最长为极强的448 位,从而进一步拓展了IDEA 的密钥强度。
Skipjack,在64 位文本块上运行。它使用80 位密钥。
Rivest Cipher 5(RC5), 是一种块大小可变(32 、64 或128 位)的块密码,所用密钥大小在0 到2040 位之间
高级加密标准AES:128位块,128、192、256位密钥
Twofish:Twofish 是一种块密码。在128 位数据块上运行,能够使用最长达256 位的密码密钥。
使用的两种算法,预白化处理、白化后处理。
用于安全交换秘密密钥的方法主要有三种:线下分发、公钥加密和Diffie-Hellman 密钥交换算法。
密钥托管的两种方法:
•公平密码系统
•受托加密标准