密码术
7.1 密码学的历史
加密方法从原来的主要为显示信息发展成为隐藏信息。
替代密码substitution cipher:每个字母被替换成另一个字母
单字母替代密码monoalphabetic substitution cipher:只是用一个字母表
多字母替代密码polyalphabetic substitution cipher:使用多个字母表
atbash:将字母表调换顺序,是替代密码的一个实例
密码棒密码scytale cipher
凯撒密码:每个字母右移三位,是单字母替代密码的一个实例
7.2 密码学定义与概念
提供加解密的系统或产品称为密码系统(cryptosystem)
7.2.1 Kerckhoffs原则
密码系统唯一需要保密的部分应当是密钥,算法应该被公开
7.2.2 密码系统的强度
加密方法的强度源自算法的复杂程度、密钥的机密度、密钥的长度、初始化向量以及它们如何在密码系统内协同工作。
7.2.3 密码系统的服务
密码系统可以提供机密性、完整性、身份验证、授权和不可否认性。
7.2.4 一次性密码本one-time pad
一次性密码本由随机位组成,加密过程采用异或的函数,必须被安全分发至目的地,和明文消息一样长。
7.2.5 滚动密码与隐藏密码
滚动密码running key cipher:可以是一本书的页码组成的消息
隐藏密码concealment cipher:是消息中的消息,比如以每隔3个单词为密钥值
7.2.6 隐写术steganography
隐写术是一种将数据隐藏在另一种介质中以藏匿数据的方法,是通过隐匿实现安全。
隐写术涉及的组件:
载体:内部具有隐藏信息的信号、数据流或文件
隐写介质:将信息隐藏在内的介质
有效载荷:要隐藏和传输的信息
最低有效位(Least Significant Bit,LSB)是一种在某些类型的介质中嵌入消息的方法。最适合在内部隐藏数据的是具有高分辨率的图片或不同类型声音的音频文件。
数字水印(digital watermark)也是一种隐写术,目的是限制使用某家或个人所拥有的素材,称为数字权利管理(Digital Rights Management,DRM)
7.3 密码的类型
对称加密密码具有两种基本类型:替代和换位(置换)
简单的替代和换位密码容易遭受频率分析(frequency analysis)攻击
7.3.1 替代密码
使用密钥来规定应当如何实现替代,实例:凯撒密码
7.3.2 换位密码transposition ciper
采用不同的顺序移动字符的位置
密钥衍生函数(Key Derivation Function,KDF)用于从初始值(主密钥)生成由随机值构成的子密钥。
算法是静态的,密码学提供的随机性主要依靠构建密钥的素材。
7.4 加密的方法
7.4.1 对称算法和非对称算法
对称算法—对称密钥(秘密密钥)
非对称算法—非对称密钥(公钥和私钥)
7.4.2 对称密码学
发送方和接收方使用相同的密钥来加解密,加解密的速度很快,可以提供机密性,但不能提供身份验证和不可否认性,使用非常大的密钥时破解也很困难。
DES,3DES,Blowfish,IDEA,AES,RC4,RC5,RC6
7.4.3 非对称密码学
使用发送方的私钥加密数据称为公开消息格式(open message format),确保身份验证
使用接收方的公钥来加密数据称为安全消息格式(secure message format),保证机密性
公钥和私钥都可以用于加解密,能提供身份验证和不可否认性,具有更好的密钥分发功能,易于扩展。
RSA,ECC,数字签名算法DSA,Diffie-Hellman,Merkle-Hellman背包算法,El Gamal
7.4.4 分组密码与流密码
对称算法的两种主要类型:分组密码和流密码
- 分组密码block cipher
消息被划分成若干分组,再通过扰乱(confusion)和扩散(diffusion)方法加密
扰乱:通过替代实现
扩散:通过换位实现,一个明文位的改变会更改许多密文位
- 流密码stream cipher
将消息作为位流对待,通过密码流生成器(keystream generator)生成的位流与明文位进行异或运算从而产生密文,类似一次性密码本
- 初始化向量Initialzation Vector
IV是算法中为了确保加密过程不会产生某种模式的随机值,确保使用相同密钥加密相同的明文不会产生相同的密文。
强大的流密码算法应具备的额特征:
密钥流值具有长周期无重复的模式,不可预知,与密钥线性无关,统计平衡(0和1数量差不多)
流密码加解密速度快,能够迎合增加带宽的要求。
流密码适合硬件使用,因为需要强大的处理能力,分组密码适合软件使用。
- 密码转换技术
扰乱、扩散、雪崩、IV、随机密码生成器
压缩、扩张、填充、密钥混合
7.4.5 混合加密方法
- 对称与非对称算法混合使用
公钥密码学(public key cryptography):非对称算法为保护加密密钥和密钥分发而生成的公钥和私钥,对称算法为加解密数据生成的保密密钥
保密密钥/秘密密钥用于加密消息,非对称密钥用于加密要传输的秘密密钥
- 会话密钥session key
只使用一次的对称密钥,用于对通信会话期间的两个用户间的消息进行加密
WEP就没有使用会话密钥进行数据加密,802.11i进行了优化,确保每个数据包都使用唯一的会话密钥进行加密。
7.5 对称系统的类型
7.5.1 数据加密标准DES
DES使用64位密钥(其中8位用于奇偶校验,56位是实际密钥)
AES的Rijndael算法后来替代了DES,用于加密敏感但未分类的信息。
- DES的工作方式