第二章 加密介绍
一、加密目标和术语
1.1 目标
针对计算机安全中的保密性(Confidentiality)原则,防御拦截(interception)的攻击内容,发送的信息通过钥匙(key)加密使得字面无法解读。
1.2 术语
明文(plaintext)
密文(ciphertext)
加密过程(cipher)
钥(key)
加密(encrypt/encipher)
解密(decrypt/decipher)
加密学(cryptography)
密码破解(cryptanalysis)
密码学(cryptology)
二、加密的特征要求
- 确保加密前后的信息无损
- 扰乱明文中的频率等统计学特征
- 雪崩特征,一个微小的密钥或者明文信息的变化,就会引起大范围的密文变化。
- 混乱(confusion),通过替换实现统计学特征的扰乱。
- 扩散(diffusion),通过移位实现最大化雪崩特征。
- 从信息安全的角度需要实现无条件安全。
- 从计算能力的角度需要实现时间安全和代价安全,即破解花费的时间和代价远远超过了收获。
三、传统密钥加密
3.1 替换加密(substitution)
凯撒加密(Ceaser Cipher)
C = E(k,P) = (P+k) mod 26
P = D(k,C) = (C-k) mod 26
单字母映射加密
内容:一一映射,需要通信双方预先沟通好映射表。
破解:总共有26!≈4*10^26中可能,除此之外,不同字符出现的频率是不同的,通过频率攻击(单个字符、两个字符、三个字符等)可以增加破解的概率。
双字母映射加密 Playfair
内容:使用5*5的表格进行双字母映射。
- 如果两个字母是一样的,那么在中间填充一个不一样的字母。
- 如果两个字母是同一行的,那么依次变为右一个。
- 如果两个字母是同一列的,那么依次变为下一个。
- 其他情况,第一个字母转换到(行1,列2),第二个字母转换为(行2,列1)。
破解:如果给定几百个文件,依然无法抵挡频率攻击。
多字母映射加密
Vegenere加密
内容:使用一个单词,并循环重复使用这个单词,一直到延长至和明文一样的长度,然后作为密钥和明文进行凯撒式映射。
破解:可以根据重复出现的block(由Kasiski发现)判断单词的长度。然后对于单词的每个位置分别进行频率攻击。
Vegenere改进
内容:使用一个单词,延长方式为直接将明文贴在单词后面,一直延长至和明文一样的长度,然后作为密钥和明文进行凯撒式映射。
破解:通过破解一开始的字母可以获取所有的明文内容。
One-Time Pad
内容:使用完全随机的方式生成和明文一样长度的密钥,然后与明文进行凯撒是映射。
破解:每次加密都需要生成一次不一样的随机密钥。虽然香农整明了能够实现完美的保密,但需要真实随机的生成数。
3.2 移位加密(transmission/permutation)
内容:通过给字符重新排序进行字符扰乱。
破解:字符频率特征依然保留在文本当中。
Rail Fence 加密
内容:将字符顺次循环拆分成不同的行,最后一次排列行。
行移位加密
内容:将字符顺次循环拆分成不同的行,密钥此时作为不同的列的排序,根据密钥顺序进行列排列。
3.3 多重加密(product)
单独的传统替换加密或者传统移位加密都无法确保足够的保密性。
现代加密是这两者的结合。
四、加密分析(攻击)
假设在了解加密算法的情况下,通过攻击手段得出密钥。
4.1 暴力破解
尝试所有有可能的密钥。
平均每个算法需要尝试所有密钥可能的50%才能得出正确的密钥。
4.2 破解分析
根据算法的特性进行破解。
破解分析有五种方式,难度依次递减:
- 只有密文攻击(only-cipher)
- 密文明文对攻击(known-plaintext)
- 选择明文攻击(chosen-plaintext)
- 选择密文攻击(chosen-ciphertext)
- 选择文本攻击(chosen-text)