「笔记」加密算法

2019年4月6日补充:注册登录时序图
在这里插入图片描述

加密算法的种类

  • 哈希算法、对称加密算法、非对称加密算法
  1. 哈希算法
    • 严格意义上,哈希算法不属于加密算法,但它在信息安全领域起到了很重要的作用
      • 用于生成信息摘要,用以验证原信息的完整性和来源的可靠性
      • 生成信息摘要的过程叫做签名,验证信息摘要的过程叫做验签
    • 常用的哈希算法:MD5(128位)、SHA系列(更安全)
  2. 对称加密算法
    • 流程:明文通过密钥进行加密生成密文,同时密文通过秘钥进行解密还原成明文
    • 优缺点
      • 优点:加密解密的效率较高(相较于非对称加密
      • 缺点:不够安全
        • 双方秘钥相同,任意一方秘钥泄露出去,密文就会被破解
        • 在双方建立之初,传递秘钥时存在被拦截的危险
    • 常用对称加密算法:DES、3DES、AES(最流行
  3. 非对称加密算法
    • 流程:存在一对秘钥(公钥+私钥),可以通过公钥加密明文,使用私钥进行解密密文(反之
    • 安全,但性能较差,无法应用于长期的通信
    • 常用非对称加密算法:RSA

MD5

  1. 常用的明文交互很容易遭受中间人攻击(DNS欺骗、ARP欺骗等
  2. 摘要信息生成的步骤
    • 收集相关业务参数(例如支付宝账号、金额等
    • 按照规则,将业务参数名与值拼接成一个字符串,同时把给定的密钥也拼接起来
    • 根据MD5算法,从原文生成哈希值
  3. 验签:接收方根据传递的参数进行同样的拼接哈希操作,生成的哈希值(sign)与发送方的哈希值(sign)做对比
  4. MD5算法底层原理
    • 处理原文
    • 设置初始值
    • 循环加工
    • 拼接结果
  5. 实例
    • MD5 生成摘要信息 + 非对称加密算法
      • 发送方使用私钥对生成的摘要信息进行加密,接收方使用公钥验证签名(它们是一对密钥
      • 即保证信息的完整性以及验证发送方的身份
  6. 破解MD5算法
    • 常用破解方法
      • 暴力破解(时间巨大
      • 字典表(空间巨大
      • 彩虹表(空间与时间的平衡
        • 哈希链
          • 哈希函数 + 单个衰减函数
          • 当某个节点发生碰撞后,后面的所有节点值都会相同
        • 彩虹表
          • 哈希函数 + 多级衰减函数
          • 减少碰撞概率,即碰撞只会发生在同一级运算
    • 分布式计算和分布式存储中,暴力破解和字典表仍然可以有效破解 MD5 算法

AES

  • AES算法是DES算法的替代者,也是当今最流行的对称加密算法之一
  • 摘要算法与对称/非对称加密算法之间的区别
    • 摘要算法是不可逆的,它的主要作用是对信息一致性和完整性校验
    • 对称/非对称加密算法是可逆的,它的主要作用是保证私密信息不被泄露
  1. 密钥

    • 密钥是AES算法实现加密和解密的根本

      • 对称:明文的加密和解密使用的是同一个密钥
    • AES支持三种长度的密钥:128位,192位,256位

      • 对应着 AES128,AES192,AES256,实际上就是指的AES算法对不同长度密钥的使用
      • AES256 安全性最高,AES128性能最高
        • 本质上是它们的加密处理轮数不同
  2. 填充

    • 分组加密
      • 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}
  3. 模式

    • AES的工作模式,体现在把明文块加密成密文块的处理过程中
    • 模式类型
      • ECB模式(默认)(电码本模式
        • 最简单的工作模式,每个明文块的加密都是完全独立,互不干涉
        • 优点:简单、有利于并行处理
        • 缺点:相同的明文块经过加密会变成相同的密文块,安全性较差
      • CBC模式(密码分组链接模式
        • 引入初始向量(Initialization Vector),作用类似于 MD5 算法的"加盐"操作,防止同样的明文块始终加密成同样的密文块(异或操作
        • 优点:安全性更高
        • 缺点:无法并行计算,性能上不如ECB,同时因为引入初始化向量,增加了复杂度
      • CTR模式(计算器模式
      • CFB模式(密码反馈模式
      • OFB模式:输出反馈模式
  4. 整体流程

    • 把明文按照128bit拆分成若干个明文块
    • 按照选择的填充方式来填充最后一个明文块
    • 每一个明文块利用AES加密器和密钥,加密成密文块
    • 拼接所有的密文块,成为最终的密文结果
发布了98 篇原创文章 · 获赞 197 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/YangDongChuan1995/article/details/88933225