【寒江雪】数据加密标准(DES)

来源:互联网 发布:ipad pro 生产力 知乎 编辑:程序博客网 时间:2024/06/05 01:54

数据加密标准

  乘积密码
  Feistel密码
  分组加密设计原则

DES:概述

  • 世界上使用最广泛的分组加密算法
  • 1977年被美国国家标准与技术研究院通过
  • 属于Feistel密码结构
    • 使用56位密钥加密64位分组
    • 进行16轮加密
  • 有很广泛的商业用途
  • 关于其安全性的争论已经很久了

DES加密过程

  • 加密处理由两个置换组成,分别是初始置换和逆初始置换
    • 初始置换:IP
    • 逆初始置换:IP-1
    • 初始置换和逆初始置换是straight P-boxes,因此彼此是互逆的。
  • 两次置换之间有16轮处理过程
  • 他们对加密没有多大的意义

DES加密轮加密过程

  • DES进行16轮加密。每一轮的DES加密都是Feistel密码

DES加密的轮函数

  • DES的核心就是DES函数
  • DES函数使用48位轮密钥给分组最右边32位加密,产生32位输出
  • 由于输入是32位的,密钥是48位的,因此需要对32位的输入进行扩充,这就是扩充置换。(使用E-Pbox)
  • 置换过程如图
    图片描述
  • 将扩充后的48位分组输入与密钥进行异或操作,再将48位输出通过8个S-Boxs,得到32位输出。
  • S-Box
    • S-boxes实现混淆。
    • DES使用8个S-Boxes,每一个都有6位的输入和4位的输出。
  • 最后一项操作就是将S-boxes的32位输出作为Straight置换的输入。
    图片描述

DES解密标准

  • 与加密使用相同的算法
  • 加密过程使用的密钥是K1->K16
  • 解密过程使用的密钥是K16->K1

密钥产生和扩展

  • 随机产生的64比特的数字
  • 删掉8位并且置换成56位的密钥
    • 将64位的密钥排成8行,删掉每行的第八位
  • 从56位中产生48位的子密钥
  • 子密钥产生算法
    • 将56位分解成左右两半,每一半28位
    • 分别移动这两部分
    • 将他们结合起来,进行选择置换。得到48位的子密钥
    • 位移后的左右两部分结果作为下一轮56位的密钥输入

DES的安全性

  • 容易引发雪崩效应

DES的弱点

  在过去几年中,评论家已经发现了DES的一些弱点。
* S-Boxes比较弱
* P-Boxes比较弱
* 密钥比较短

密钥长度

  • 56位密钥有256=7.2×1016种可能的取值。
  • 暴力搜索看起来似乎很艰难
  • 目前研究发现搜索似乎是可行的
    • 1997年,穷尽所有密钥需要几个月
    • 1998年,只需要几天
    • 1999年,只需要22小时
  • 仍然必须能够认出明文
  • 必须寻找DES的替代品

在DES上做的密码分析

  • 在DES上进行统计性质的攻击。包括以下几点
    • 微分密码分析
    • 线性密码分析
    • 相关密钥攻击

为什么要进行多重加密

  • 替代DES
  • 扩展密钥长度

2-DES

  • C=EK2(EK1(P))
  • P=DK1(DK2(C))
  • 受到中间相遇搜索攻击

3-DES

  • 使用两个密钥的3-DES
    • C=EK1(DK2(EK1(P)))
    • P=DK1(EK2(DK1(C)))


  • 使用3个密钥的3-DES
    • C=EK3(DK2(EK1(P)))
    • P=DK1(EK2(DK3(C)))
  • 比DES更加安全,但是加密的代价更高



    Copyright© by 寒江雪
    Date:2016-12-3
0 0
原创粉丝点击