密码学算法——精选推荐
- 格式:pdf
- 大小:177.00 KB
- 文档页数:7
密码学算法
1. 密码学概述
基本认知1. 科学
密码学是科学、有严格的规范,设计密码学算法需要具备深厚的数学知识2. 公开
密码学算法的实现原理是公开的,经过长时间的考验3. 相对安全
计算机处理速度越来越快,某个密码学算法的数学基础可能受到挑战,现阶段安全密码算法,未来可能就不安全了4. 攻击⽅法多样
⼤部分密码学算法需要秘钥,最简单的破解⽅法就是获取秘钥(暴⼒破解、彩虹表等)5. 应⽤标准
未来正确使⽤密码学算法,并依据标椎使⽤(⽐如:PKCS),可以不了解密码学算法原理,但必须掌握应⽤标准6. 不⽐具备很强数学知识
很多密码学算法并⾮计算机专家创建,⽽是数学家.(不妨碍我们使⽤密码学算法)7. 解决特定问题
每种算法都有应⽤场景,解决特定的问题
⽬标1. 机密性
信息在存储,运输、处理过程中的安全保密,要求信息不会泄露给未经授权的⼈.对称加密算法和公开秘钥算法都能保护机密性2. 完整性
接受⽅接受到的信息就是发送⽅发送的原始信息,如数据被篡改,接受⽅有策略数据被篡改,那传输的数据就具备完整性.在密码学中,主要使⽤消息验证码(MAC)算法保证完整性3. 不可抵赖性
在密码学中,使⽤数字签名技术避免抵赖4. ⾝份验证
通信双⽅(发送⽅、接收⽅)必须确保对端就是通信对象.在密码学中,⼀般使⽤数字签名确认⾝份
常⽤密码库1. MIRACL
由Shamus软件公司开发,包括了:RSA、AES、DSA、ECC和Diffie-Hellman秘钥交换算法2. CryptoAPI
微软在Windows中的⼀个安全加密应⽤框架
密码应⽤程序接⼝,密码服务提供者模块3. OpenSSL
开放源代码的软件库包,三个只要的功能部分:SSL协议库、应⽤程序以及密码算法库2. 密码学算法分类类型
哈希算法(Hash)1. 国内:SM3
2. 国际:MD5、SHA-1、SHA-2、SHA-3
3. 说明:SM3的256位保密强度⾼于MD5
对称加密算法1. 国内:SM1、SM4、ZUC
2. 国际:DES、3DES、AES
3. 说明:SM1的128位保密强度和性能与AES相当,SM4的128位已升级为国际标准
公开秘钥算法1. 国内:SM2
2. 国际:RSA、ECC
3. 说明:SM2的256位基于ECC算法,安全性⽐RSA1024有明显优势随机数
类型1. 真正的随机数⽣成器硬件⽣成效率⾼、随机性、不可预测性、不可重现性
需要物理设备获取2. 伪随机数⽣成器软件⽣成效率⾼、随机性
通过算法获取3. 密码学伪随机数⽣成器软件⽣成效率⾼、随机性、不可预测性⽤于密码学
⼯作原理1. ⽣成器内部维护⼀个状态(internal state),其数值来源于外部,成为熵:动态时间、温度、声⾳变化等
2. 伪随机数内部状态来源模拟的数值,称为种⼦(seed)
可⽣成密码学随机数的算法1. 块密码算法CTR模式:对称加密算法
2. 摘要函数:单向性
3. 流密码算法:对称加密算法
⽤途1. 密钥
对称加密算法、公开密钥算法、MAC算法都会⽤到密钥,密钥本质上是⼀个随机数2. 初始化向量(IV)
块密码算法中很多迭代模式会使⽤(IV)3. nonce
块密码算法中的CTR模式、AEAD加密模式也会⽤到nonce4. salt
基于⼝令的加密算法会⽤到,通过salt⽣成⼀个密钥Hash函数
加密基元1. 基于密码学Hash算法产⽣的其他密码算法:MAC消息验证码、伪随机数⽣成器、基于⼝令的加密算法、数字签名等等
Hash特性
1. 摘要/散列/指纹=hash(消息)
2. 相同的消息获得相同摘要值、速度快、单向性(不可逆)、原始消息变化摘要值也会变化、不同摘要值不同
Hash算法⽤途
1. ⽂件⽐较
2. ⾝份校验
Hash算法分类
1. MD5
算法:MD5、输出值长度:128⽐特、输⼊值最⼤长度:⽆限制、说明:实践中已经产⽣碰撞,理论上不具备弱抗碰撞性2. SHA-1
算法:SHA-1、输出值长度:160⽐特、输⼊值最⼤长度:2的64次⽅减⼀⽐特、说明:实践中已经产⽣碰撞3. SHA-2
算法:SHA-256、输出值长度:256⽐特、输⼊值最⼤长度:2的64次⽅减⼀⽐特、说明:安全使⽤
算法:SHA-512、输出值长度:512⽐特、输⼊值最⼤长度:2的128次⽅减⼀⽐特、说明:安全使⽤
算法:SHA-224、输出值长度:224⽐特、输⼊值最⼤长度:2的64次⽅减⼀⽐特、说明:安全使⽤
算法:SHA-384、输出值长度:384⽐特、输⼊值最⼤长度:2的128次⽅减⼀⽐特、说明:安全使⽤4. SHA-3
算法:SHA3-256、输出值长度:256⽐特、输⼊值最⼤长度:2的64次⽅减⼀⽐特、说明:安全使⽤
算法:SHA3-512、输出值长度:512⽐特、输⼊值最⼤长度:2的128次⽅减⼀⽐特、说明:安全使⽤
算法:SHA3-224、输出值长度:224⽐特、输⼊值最⼤长度:2的64次⽅减⼀⽐特、说明:安全使⽤
算法:SHA3-384、输出值长度:384⽐特、输⼊值最⼤长度:2的128次⽅减⼀⽐特、说明:安全使⽤对称加密算法
原理1. 密⽂=E(明⽂、算法、秘钥)
2. 明⽂=D(密⽂、算法、秘钥)3.
分类1. 块密码算法:DES、3DES、AES
2. 流密码算法:RC4
模式1. ECB(Electronic Codebook)、特点:运算快速,⽀持并⾏处理,需要填充、说明:不推荐使⽤
2. CBC(Cipher Block Chaining)、特点:⽀持并⾏处理,需要填充、说明:推荐使⽤
3. CFB(Cipher Feedback)、特点:⽀持并⾏处理,不需要填充、说明:不推荐使⽤4. OFB(Output Feedback)、特点:迭代运算使⽤流密码模式,不需要填充、说明:不推荐使⽤
5. CTR(Counter)、特点:迭代运算使⽤流密码模式,⽀持并⾏处理,不需要填充、说明:推荐使⽤
6. XTS(XEX-based tweaked-codebook)、特点:不需要填充、说明:⽤于本地硬盘存储解决⽅案中
标准1. 填充标准:明⽂长度必须是分组长度的倍数,如不是倍数,则必须有填充机制
2. PKCS#7填充:可处理的分组长度是1到255个字节
3. AES算法使⽤标准,⽐如:AES-128-CBC-PKCS#7,其中秘钥长度128,分组模式CBC,填充标准PKCS#7,AES算法默认分组128bit消息验证码Hash算法能够完成密码学⽬标之⼀的完整性校验,但却不能避免消息被篡改,为避免消息被篡改,需要⽤到消息验证码.消息验证码⾮常重要,⼀般结合加密算法⼀起使⽤
消息验证码的模型:MAC值 = mac(消息、密钥)MAC⼀般和原始消息⼀起传输,原始消息可以选择加密,也可以选择不加密,通信双⽅会以相同的⽅式⽣成MAC值,然后进⾏⽐较
MAC算法种类:CBC-MAC算法和HMAC算法,http中使⽤最多的为HMAC算法.
1. CBC-MAC算法:CBC-MAC算法从块密码算法的CBC分组模式演变⽽来,简单的说就是最后⼀个密钥分组的值就是MAC值
2. HMAC算法:使⽤Hash算法作为加密基元,结合Hash算法有多种变种(HMAC-SHA-1、HMAC-SHA256、HMAC-SHA512)
对称算法和MAC算法结合
加密算法不能提供完整性,加密的同时必须引⼊MAC算法避免消息被篡改
结合对称加密算法和MAC算法提供机密性额完整性的模式叫Authenticated Encryption(AE)加密模式,有三种:1. E&M模式:消息分别进⾏加密运算和MAC运算,然后将两个运算结果结合起来发送
2. MtE模式:先对消息进⾏MAC计算,然后将消息和MAC值组合,再进⾏加密,最终加密值发送出去(http使⽤)
3. EtM模式:先对消息进⾏加密得到密⽂,然后对密⽂再计算MAC值,最终将密⽂和MAC值组合在⼀起发送
保证数据加密和完整性的三种模式:1. AEAD模式:在底层组合了加密算法和MAC算法,同事保证数据加密和完整性.
2. CCM模式:使⽤CBC-MAC算法保证完整性,使⽤AES算法CTR模式保证加密
3. GCM模式:GHASH进⾏MAC运算,AES算法CTR模式进⾏加密运算,拥有⼗分不错的效率和性能公开密钥算法
特点:1. 功能不⼀样:对称算法主要⽤于加密和解密,⽽公开秘钥算法可以⽤于加密解密、秘钥协商、数字签名
2. 运算速度很慢:相⽐对称加密算法来说,公开秘钥算法尤其是RSA算法运算⾮常慢
3. 秘钥是⼀对:对称加密算法中,密钥是⼀串数字,加密者和解密者使⽤同样的密钥.公开密钥算法是⼀对,分别为公钥和私钥
标准:1. RSA算法主要使⽤PKCS#I定义了两种机制处理填充问题,从⽽保证同样的明⽂、同样的密钥经过RSA加密,每次的密⽂都是不⼀样的2. 两种填充机制分别是RSAES-PKCSI-VI_5和RSAES-OAEP,⽬前推荐使⽤的填充标准是RSAES-OAEP,OpenSSL命令⾏默认使⽤的标准是RSAES-PKCSI-VI_5
秘钥(安全性)是什么?1. 对称加密算法、MAC算法使⽤的密钥就是⼀串数字
2. 公开密钥算法中的密钥四⼀对,由多个部分组成,但是本质上也可以认为由多个数字组成
作⽤1. 名称:对称加密算法秘钥、作⽤:加密解密、说明:秘钥不能泄露
2. 名称:⾮对称加密算法秘钥、作⽤:加密解密、说明:公钥可以公开,秘钥不能泄露
3. 名称:MAC算法加密、作⽤:消息验证、说明:秘钥不能泄露
4. 名称:数字签名算法秘钥、作⽤:⾝份验证、说明:公钥可以公开,秘钥不能泄露
5. 名称:会话秘钥、作⽤:加密解密、说明:密钥不能泄密,该密钥⼀般配合对称加密算法进⾏加密解密
6. 名称:基于⼝令的密钥、作⽤:进⾏权限校验,加密解密等、说明:⼝令不能泄密
⽣命周期1. ⽣成(伪随机数⽣成器⼝令加密[PBE]算法、伪随机数⽣成器)
2. 存储(静态秘钥[长期秘钥]、动态秘钥[会话秘钥])
3. 解密
4. 传输(硬编码在代码中⼝头、邮件)(秘钥协商算法[不⽤存储])秘钥协商算法
密钥协商算法就是为解决密钥分配、存储、传输等问题,其也是公开秘钥算法的⼀种
秘钥协商算法种类1. RSA秘钥协商算法:
⾸先使⽤客户端⽣成⼀个会话秘钥,然后使⽤公钥加密发哥服务器,服务器解密会话秘钥.接下来服务端和客户端使⽤对称加密算法和会话秘钥加解密数据.2. DH秘钥协商算法:
DH算法在进⾏密钥协商的时候,通信双⽅的任何⼀⽅⽆法独⾃计算出会话密钥,通信双⽅各⾃保留⼀部分关键信息,再将另外⼀部分信息告诉对⽅,双⽅有了全部信息告诉对⽅,双⽅有了全部信息才能共同计算出相同的会话密钥.ECC
1. 为了保证DH的密钥对不被破解,提升安全性的主要⼿段就是增加密钥对的长度,但是长度越长,性能越低.为了解决性能问题,就有了椭圆曲线密码学(Elliptic Curv e Cryptography),简称ECC.2. ECC是新⼀代公开秘钥算法,主要优点就是安全性,极短的密钥能够提供很⼤的安全性,同时性能也很⾼.⽐如224⽐特的ECC密钥和2048⽐特的RSA密钥可以达到同样的安全⽔平,由于ECC密钥具有很短的长度,运算速度⾮常快.3. 在具体应⽤的时候,ECC可以结合其他公开密钥算法形成更快、更安全的公开密钥算法,⽐如结合DH密钥协商算法组成ECDH密钥协商算法,结合数学签名DSA算法组成ECDSA数字签名算法.