2019年4月6日补充:注册登录时序图
加密算法的种类
- 哈希算法、对称加密算法、非对称加密算法
- 哈希算法
- 严格意义上,哈希算法不属于加密算法,但它在信息安全领域起到了很重要的作用
- 用于生成信息摘要,用以验证原信息的完整性和来源的可靠性
- 生成信息摘要的过程叫做签名,验证信息摘要的过程叫做验签
- 常用的哈希算法:MD5(128位)、SHA系列(更安全)
- 严格意义上,哈希算法不属于加密算法,但它在信息安全领域起到了很重要的作用
- 对称加密算法
- 流程:明文通过密钥进行加密生成密文,同时密文通过秘钥进行解密还原成明文
- 优缺点
- 优点:加密解密的效率较高(相较于非对称加密
- 缺点:不够安全
- 双方秘钥相同,任意一方秘钥泄露出去,密文就会被破解
- 在双方建立之初,传递秘钥时存在被拦截的危险
- 常用对称加密算法:DES、3DES、AES(最流行
- 非对称加密算法
- 流程:存在一对秘钥(公钥+私钥),可以通过公钥加密明文,使用私钥进行解密密文(反之
- 安全,但性能较差,无法应用于长期的通信
- 常用非对称加密算法:RSA
MD5
- 常用的明文交互很容易遭受中间人攻击(DNS欺骗、ARP欺骗等
- 摘要信息生成的步骤
- 收集相关业务参数(例如支付宝账号、金额等
- 按照规则,将业务参数名与值拼接成一个字符串,同时把给定的密钥也拼接起来
- 根据MD5算法,从原文生成哈希值
- 验签:接收方根据传递的参数进行同样的拼接哈希操作,生成的哈希值(sign)与发送方的哈希值(sign)做对比
- MD5算法底层原理
- 处理原文
- 设置初始值
- 循环加工
- 拼接结果
- 实例
- MD5 生成摘要信息 + 非对称加密算法
- 发送方使用私钥对生成的摘要信息进行加密,接收方使用公钥验证签名(它们是一对密钥
- 即保证信息的完整性以及验证发送方的身份
- MD5 生成摘要信息 + 非对称加密算法
- 破解MD5算法
- 常用破解方法
- 暴力破解(时间巨大
- 字典表(空间巨大
- 彩虹表(空间与时间的平衡
- 哈希链
- 哈希函数 + 单个衰减函数
- 当某个节点发生碰撞后,后面的所有节点值都会相同
- 彩虹表
- 哈希函数 + 多级衰减函数
- 减少碰撞概率,即碰撞只会发生在同一级运算
- 哈希链
- 分布式计算和分布式存储中,暴力破解和字典表仍然可以有效破解 MD5 算法
- 常用破解方法
AES
- AES算法是DES算法的替代者,也是当今最流行的对称加密算法之一
- 摘要算法与对称/非对称加密算法之间的区别
- 摘要算法是不可逆的,它的主要作用是对信息一致性和完整性校验
- 对称/非对称加密算法是可逆的,它的主要作用是保证私密信息不被泄露
-
密钥
-
密钥是AES算法实现加密和解密的根本
- 对称:明文的加密和解密使用的是同一个密钥
-
AES支持三种长度的密钥:128位,192位,256位
- 对应着 AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用
- AES256 安全性最高,AES128性能最高
- 本质上是它们的加密处理轮数不同
-
-
填充
- 分组加密
- AES算法在对明文加密的时,将明文拆分成多个独立的明文块(128bit
- 每个明文块经过AES加密器的复杂处理,生成一个个独立的密文块
- 最后将密文块拼接在一起,得到加密结果
- 末尾密文块长度不足时,需要进行填充
- NoPadding
- 不做任何填充,但是要求明文必须是16字节的整数倍
- PKCS5Padding(默认)
- 如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字符,且每个字节的值等于缺少的字符数
- 比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则补全为{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}
- ISO10126Padding
- 如果明文块少于16个字节(128bit),在明文块末尾补足相应数量的字节,最后一个字符值等于缺少的字符数,其他字符填充随机数
- 比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6个字节,则可能补全为{1,2,3,4,5,a,b,c,d,e,5,c,3,G,$,6}
- NoPadding
- 分组加密
-
模式
- AES的工作模式,体现在把明文块加密成密文块的处理过程中
- 模式类型
- ECB模式(默认)(电码本模式
- 最简单的工作模式,每个明文块的加密都是完全独立,互不干涉
- 优点:简单、有利于并行处理
- 缺点:相同的明文块经过加密会变成相同的密文块,安全性较差
- CBC模式(密码分组链接模式
- 引入初始向量(Initialization Vector),作用类似于 MD5 算法的"加盐"操作,防止同样的明文块始终加密成同样的密文块(异或操作
- 优点:安全性更高
- 缺点:无法并行计算,性能上不如ECB,同时因为引入初始化向量,增加了复杂度
- CTR模式(计算器模式
- CFB模式(密码反馈模式
- OFB模式:输出反馈模式
- ECB模式(默认)(电码本模式
-
整体流程
- 把明文按照128bit拆分成若干个明文块
- 按照选择的填充方式来填充最后一个明文块
- 每一个明文块利用AES加密器和密钥,加密成密文块
- 拼接所有的密文块,成为最终的密文结果