密码学
1. 用途:加密存储,加密传输(https),身份验证(非对称加密, 公钥加密+hash),数字签名,防篡改(hash)等
2. 对称加解密的时候,我们会使用异或。
1. 计算机里只有0,1。相同值 返回0, 不同值返回1.
1. 0101, 1010, 1111
3. 加密算法
1. 对称加密算法 - 发送者(加密)和接收者(解密)需要有相同的密钥。
1. 对称加密算法特点:
1. 发送者和接收者使用同一个密钥,此密钥不能被第三个人获得
2. 密钥管理难,分发困难:
1. 我跟N个人通讯,需要N个不同的密钥。
2. N个人之间相互都需要通讯,需要管理N*(N-1)/2个密钥
3. 密钥数随着人数的增加呈指数级增长
3. 如何生成真随机密钥
4. 如何安全的,发送密钥到对方
1. 密钥的安全分发很困难
5. 使用替换和置换。 -> 抵御频率分析。
1. 置换: abcde -> 21534 -> baecd
2. 替换: abcde -> a -> c, b -> e, c -> f, d -> g, e -> h ->cefgh
6. 有可能使用主密钥-子密钥方式进行长期使用主密钥 - 密钥导出函数
1. 主密钥需要保密
2. 生成函数越强、其它密钥材料越随机,子密钥越好
3. 避免长期使用一个主密钥带来的安全风险
7. 不能提供真实性和不可否认性
8. 运算速度快 - 与非对称算法相比
9. 强度高,使用大密钥空间不易被破解
2. 对称加密算法类型:
1. 一次性密码本 -> 本身就是密钥
1. 只是用一次。
2. 密码本与明文消息长度一样。
2. 运动密钥密码
1. 密文例子:14916C7. 299L3C7 . 911L5C8 表示:
第一个字符是第1本书、第49页、第16行、第7列;
第二个字符是第2本书、第99页、第3行、第7列;
第三个字符是第9本书、第11页、第5行、第8列;
2. 密钥:双方共同拥有的书
1. 需要提前协商好使用什么书。
3. 隐藏密码
1. 密钥相当于:双方约定取消息中每第3个单词作为秘密消息 ;
2. 密文: The time is right’ is not cow language, so is now a dead subject
3. 铭文: The right cow is dead
4. 隐写术
1. 密钥: 隐藏方法 -> 每个字RGB颜色的最后一位
2. 密文: 颜色有微弱不同的字
5. DES
1. 旧的DES
1. 来自IBM的Lucifer算法,Lucifer算法本身是128位密钥+128位分组。
2. DES,变成56位密钥 + 64位分组。
3. 相对来说容易被破解。
4. 不安全的算法。不提倡/不建议使用。
2. 3DES
1. 3个DES串联使用,总共48轮运算,具有很高的抗差分攻击
2. 3DES模式:
DES-EEE3:使用3个不同的密钥,串联使用3次加密,总密钥空间168位, 解密方式: DES-DDD3
DES-EDE3:使用3个不同的密钥,串联使用加密、解密和加密,总密钥空间168位, 解密方式: DES-DED3
DES-EEE2:使用2个不同的密钥,串联使用3次加密,第一次、第三次加密使用同一个密钥,总密钥空间112位, 解密方式: DES-DDD2
DES-EDE2:使用2个不同的密钥,串联使用加密、解密和加密,但第一次、第三次加密使用同一个密钥,总密钥空间112位, 解密方式: DES-DED3
6. AES
1. 定义:
1. 它支持128、192、256位密钥长度
2. 分组: 128位
3. 抵抗所有已知的攻击。
4. 在多个平台上速度快,编码紧凑。
5. 设计简单。
2. 候选:
MARS:IBM设计
RC6:RSA设计
Serpent:Ross Anderson等设计
Twofish: Bruce Schneier 灯设计
Rijindael:Joan Daemen和Vincent Rijmen设计 - 当选
3. 加密方式:
128位密钥长度,10轮运算
192位密钥长度,12轮运算
256位密钥长度,14轮运算
7. IDEA
64位分组算法, 128位密钥, 64位分组分为16个小块,每小块进行8轮运算,比DES快且安全
8. 其他
1. Blowfish
64位分组算法,密钥可选32-448位内的任意长度,16轮运算
2. Twofish
3. RC4, RC5, RC6
RC4:流密码,密钥长度可变,应用SSL和802.11 WEP协议
RC5:32、64、或128位分组算法,密钥长度最高2048位,最大加密轮数255
算法表示为rc5-w/r/b,其中
w:字长度,16、32、或64位
r:轮数,0~255
b:密钥字节数
rc5-32/12/16表示 64位分组、12轮运算、128位密钥
RC6:专门在RC5基础上修改后竞标AES
4. SAFER(secure and fast encryption routine)
3. 对称加密算法分类:
1. 分组密码
1. 特点
1. 分组密码使用混淆(confusion)和扩散(diffusion)技术
2. 替换达到混淆:明文和密钥充分混合,使得密文极度随机
3. 置换达到扩散:明文的一位变化导致密文每位产生变化的概率是50%
2. 分组方式:
1. 使用固定大小, 32位,64位,128位
2. 每次对每个分组块进行加解密。
3. 初始化向量
1. IV是随机值
2. IV与分组长度一致
3. IV保证同样的明文和密钥被加密成不同的密文
4. IV隐藏了明文的模式
2. 流密码
1. 特点
1. 需要一个密钥流生成器,产生随机密钥位与明文进行异或
2. 发送者和接收者必须有相同的密钥流生成器
2. 非对称加密算法(公钥加密算法)
1. 非对称加密算法特点:
1. 每个实体有两个不同的密钥:公钥和私钥
1. 我只需要管理好我的公钥跟私钥就可以。
2. 我需要获取其他人公钥,直接去获取就可以。
3. 我只需要保证我的私钥不被泄露就可以了。
4. N个人相互通讯,只需要2N个密钥(其中只有N个私钥,需要保护)
5. 公钥(public key)是公开的,为其他实体所知
6. 私钥(private key)是保密的,只有所属实体自己知道
7. 密钥分发更容易
2. 公钥/私钥关系
1. 数学上两者紧密关联,互相唯一确定
2. 知道公钥不能推导出私钥
3. 知道公钥和密文不能推导出私钥
4. 使用公钥加密的信息,只能使用私钥进行解密。
5. 使用私钥进行加密的信息,只能使用公钥进行解密。
6. 加解密时: 使用接收者的公钥进行加密,接收者使用自己的私钥进行解密。
1. Alice 发送信息给Bob:
1. Alice和其他所有人能够简单获取到Bob的公钥
2. 除了Bob以外,所有其他人没有Bob的私钥。
3. Alice使用Bob的公钥对明文进行加密。
2. Bob对信息进行解密
1. Bob获取使用自己的公钥进行加密的信息后,可以使用自己的私钥进行解密。
3. Bob对所有人发布信息。
1. Bob使用自身的私钥对信息进行加密(签名)
4. 所有人使用Bob的公钥对信息进行解密(签名验证)
结论:能提供认证和不可否认性
3. 运算速度慢 - 大量复杂的数学函数
2. 非对称加密算法:
1. RSA
2. ECC
3. DH(Diffie-Hellman)
第一个非对称密钥协商算法,重点解决密钥分发问题
基于“有限域上的离散对数计算困难”的难题
Alice和Bob可以各自选择一个私有随机数,以离散指数的形式发给对方,然后双方能运算出一个相同的对称密钥
原始Diffie-Hellman算法存在中间人攻击
4. EL Gamal
5. DSA(digital signature algorithm)
4. 加密算法应用
1. 混合使用对称加密算法与非对称加密算法。
1. 对称加密算法速度快,保密性好。
2. 非对称加密算法,密钥管理相对简单。
3. 混合方式(数字信封):
1. 对称加密算法,很难安全的把密钥发送给对方。
2. 非对称加密算法发送对称加密算法的密钥给对方。
例子:Alice要发送大量的信息给Bob
1. Alice使用key(1) + 对称加密算法,对真正的铭文(P)进行加密,获得了密文(C)
2. Alice发送密文(C)给Bob。
3. Alice如何安全的发送key(1)给Bob? -> Alice使用Bob的公钥对key(1)进行加密 -> key(c(1)), 发送给Bob。
4. Bob使用自己的私钥,对key(c(1))进行解密,获取key(1).
5. Bob使用key(1)对密文(C)进行解密,获取内容。
4. 使用对称加密算法的时候,很多时候会使用回话密钥
1. 会话密钥是对称加密算法所使用的密钥。
2. 单次会话使用后会废弃。 -> 增强了安全性。
2. 对称加密模式:
1. Electronic Code Book (ECB),电子密码本
原始明文被分割成数据块(分组),使用同一个密钥加密 -> 简单易行
攻击者可以通过收集明文、密文对构造部分ECB
不能掩盖固定的文本模式(同样的明文总是加密成同样的密文),抗攻击弱
适合于加密小文本,例如PIN,挑战响应值
不会使用初始化向量(IV)
2. Cipher Block Chaining (CBC),密文分组链接
1. 第一个分组块: 明文 异或 IV -> 获取异或值 -> 加密算法(加上key) -> 密文。
2. 第二个分组块开始: 明文 异或 上一个明文的加密值(密文) -> 获取异或值 -> 加密算法(加上key) -> 密文。
3. 隐藏了每个数据块独立加密可能暴露的模式;
3. Cipher Feedback (CFB),密文反馈
1. 第一个分组块: IV -> 加密算法(加上key) -> IV的密文 异或 明文 -> 密文
2. 第二个分组块开始:上一个明文的加密值(密文) -> 加密算法(加上key) -> 上一个明文的加密值(密文)的密文 异或 明文 -> 密文
4. Output Feedback (OFB),输出反馈
5. Counter Mode (CTR),计数模式
1. 有Counter(相当于IV)
2. 每个IV有顺序变化。(IV-1, IV-2, ... IV-n)
3. 第N个分组快: IV-n 加密算法(加上key) -> IV-n的密文 异或 明文 -> 密文 |