• 电子密码本模式和加密分组链接模式的分组算法都要求加密输入的分组是固定长度 的,但是大多数输入明文可能都不是分组长度的整数倍,也就是说,最后一个分组一般来 说是不足一个分组长度的。为了使分组加密算法能够正常工作,通常使用填充技术对最后 一个分组进行填充以使该分组正好为一个分组的固定长度。
  • 不足的部分填充0或者1
  • OpenSSL中使用的填充方法。使用该分组不够的字节的数作为值填充各个要填充的字节,这 样,在解密恢复的时候,检查最后一个字节的值就知道要删除的填充字节的数目。但是为 了使这种方法能正确工作,即便最后一个分组是完整的,也要增加一个分组作为填充
  • 例 如分组长度位是8字节 (64位),最后一个分组长度为5个字节,那么需要填充的字节是3,那么就使用数值3填充最后的3个字节。

  • 分组长度也是8字节 (64位),但是最后一个分组长度是完整的填充示意图,填充的字节 长度就是8个字节,数值为8

  • 上述方法有一个缺点,就是经过填充后,密文长度跟明文长度不一样,这在很多应用 中是非常不方便的。为此提出了一种称为密文挪用的分组填充办法

 

序列加密模式

  • 分组加密模式每次对一组数据进行加密处理,而序列加密模式则不同,它每次对一位明文进行简单运算 (一般是异或运算)从而得到密文
  • 一个序列加密模式结构一般由密钥序列发生器、运算单元(进行上述的简单的运算,比如进行异或运算)、明文输入和密文输出组成
  • 假设密钥序列发生器的输出位序列为K 1,K2 ,K3 ......,明文输入为P 1,P2,P3......,密文输出用C1、C2、C3......表示,序列加密模式可以使用公式如下

  • 序列加密模式的安全性完全依赖密钥序列的安全性,也就是说,依赖密钥序列发生器 的安全性。假如密钥序列输出总是为0,那么相当于没有加密,该加密系统就没有任何存在的意义,如果密钥序列是完全随机不重复的,那么该加密系统的安全性相当于一次一乱 密码本方式,几乎是不可破译的。当然,实际上很难构造出输出完全随机的密钥序列发生器。
  • 密钥序列发生器的输出虽然应该看起来是随机的,但必须是确定的,也就是说应该是可以控制的,否则如果加密跟解密的输出密钥序列不一样,就不可能进行正确的数据 解密。
  • 密钥序列发生器的输出不能每次都相同,否则就非常容易破密,没有任何安全性。在 一个密钥序列发生器每次输出都是一样的情况下,攻击者如果有机会获得一份明文跟密文对应的数据,他就可以恢复出密钥,从而可以用该密钥来读取任何使用该序列加密算法加 密的数据,不仅仅是以后的数据,也可以包括以前有办法截取到的数据。所以,为了使密钥序列发生器每次输出不一样,我们需要设置其状态,使得其开始输出的状态都不同,这个初始化的向量就是密钥。这样就增加了攻击者攻击的难度,如果他有办法获得一个密钥,只要更换密钥,他就只好获得新的密钥,但是很可能也是徒劳。
  • 一个密钥序列发生器理论上可以抽象为三部分:内部状态、状态转移函数及输出函数,如图所示。内部状态描述了密钥序列发生器当前的内部状态,对于一个同样结构的密钥序列发生器,相同的内部状态应该输出相同的密钥序列,否则就不可能进行正确的 加密和解密。状态转移函数描述了从当前状态转移到下一个状态的规则,从而产生一个新的状态输出函数对内部状态进行计算等处理,从而输出密钥序列。在实际应用中,这些组件的划分有时候并非那么明确。对于密钥序列发生器来说,密钥可以看作是对其内部状 态进行初始化或重置的向量

自同步序列加密模式

  • 自同步序列加密模式又称为密文自动密钥,它的主要思想是密钥序列跟以前一定数量 的密文位相关,即密钥序列是以前一定数量密文位的函数。如图所示是自同步序列加密模 式的加密和解密框架图。

  • 如图所示的自同步序列加密模式中,内部状态就是由以前密文的n 位组成,而 内部状态中的n位密文作为输出函数的输入,所以,输出的密钥序列的复杂性和安全性完全依赖于输出函数。输出函数通常可以有各种各样的形式,比如可以使用分组加密算法或 单向散列函数算法为主体构成。因为在自同步序列加密模式中,解密端的内部状态在从开 始到收到n位密文之后,自动跟密文序列进行同步的解密,所以称为自同步序列加密模式。
  • 在自同步序列加密模式中,不需要进行人工的同步,一般来说,可以在开始的n 位 (假设内部状态是n位密文的函数)之前,可以随便传送一些信息,这些解密一般是不正确的,在收到n位密文之后,就开始实现同步,能够进行信息的正确解密了。这种能够自动进行解密密钥同步的功能在某些应用中是很有用的。
  • 自同步序列加密模式事实上跟分组加密模式中的加密反馈模式很相似,同样存在错误扩散问题。也就是说,如果有一位密文发生了错误,那么随后的n位密文的解密都不能正确进行
  • 在密钥没有更换的情况下,自同步序列加密模式很容易受到回放攻击,攻击者可以将 记录下的密文重新发送给接收者,因为解密器能够自动进行同步,所以接收端会重复接收到正确的解密信息。这在一些电子交易应用中可能给攻击者带来巨大的利益。

自同步加密模式的特点

  • 内部状态是前面n位固定长度密文的函数。
  • 算法的安全性依赖于输出函数的复杂性和安全性。
  • 会产生密文错误扩散,密文中一位发生错误,会导致其后n位密文不能正确解密。
  • 解密的时候具有密钥序列和密文自动同步的功能,具有同步错误自恢复功能。
  • 明文长度和密文长度相同。
  • 容易受到回放攻击。

同步序列加密模式

  • 同步序列加密模式又称为密钥自动密钥加密,它的特点是密钥序列的产生跟处理的消息是不相关,相互独立的。如图所示是同步序列加密模式的加密和解密流程。

  • 在加密端,密钥序列发生器在使用密钥进行初始化后开始产生密钥序列,在解密端, 密钥序列发生器使用同样的密钥进行状态初始化从而产生同样的密钥序列,这样就能够开 始进行正确的加密和解密。一般来说,加密端和解密端的同步都是通过相同的密钥进行状 态初始化设置实现的。由于在加密和解密端必须产生相同的密钥,所以事实上同步序列加 密模式的密钥发生器产生的密钥必须是确定的,必须保证这些输出密钥序列在相当长的一 个范围内不能重复,否则安全性将得不到保证。当然,最好是不重复,但这基本上是不可 能做到的。
  • 如果在解密过程中同步状态被破坏了,比如增加或删除了一个密文位或者密钥序列发生器跳过了一个周期,那么必须重新进行同步,否则数据不可能进行正确的解密。所以同步序列加密模式对同步错误是没有办法恢复的。
  • 同步序列加密模式不会产生密文错误扩散,如果一个密文位发生了错误,它只会影响该位的正确解密,而不会对其他任何密文位的解密产生影响。因为同步序列加密模式不会对密钥和密文进行自动同步,所以能够一定程度上防止直接针对密文的一些攻击。比如在密文中插入或删除一位很容易被发现,这时候因为失去同 步,解密的可能都是乱码。在自同步序列加密模式下采用的简单回放攻击,对同步序列加密模式也是基本无效的。

同步序列加密模式的特点

  • 密钥序列的产生跟明文和密文消息都无关。
  • 不会产生密文错误扩散,但是没有同步错误自动恢复功能。
  • 密文和明文长度相同。

密码学专题 数据填充的方式|序列加密的方式相关推荐

  1. 密码学专题 密钥生成|分组加密的模式 ECB|CBC|CFB|OFB

    密钥生成 如何安全地生成密钥.即如何生成可信任的密钥,保证用户得到的密钥是安全的, 生成密钥的机器或程序是可信的. 如何生成安全的密钥.安全的密钥没有统一准确的定义,但一般来说是指密钥抗 猜测和抗穷举 ...

  2. 密码学专题 加密模式的选择|传输数据加密

    分组加密模式和序列加密模式.它们之间最大的区 别在于分组加密模式每次对一组数据进行加密运算处理,而序列加密模式则逐位对数据进 行加密运算处理.事实上,在实际设计应用的算法中,并没有那么严格的区别,它们 ...

  3. des加密去掉特殊字符_对称加密中的数据填充

    如 AES,DES 一类的分组对称加密算法要求明文数据的字节长度必须是其块大小的倍数,因此在加密明文数据之前我们必须对明文数据进行填充. 概述 在分组对称加密算法中,我们通常在加密之前在明文数据的末尾 ...

  4. 常见的数据签名及加密处理方式

    跨服务请求中的数据加密与签名处理 数据隐私与安全是我们所有开发人员在业务需求开发过程中都避免不掉的问题, 比如数据防篡改, 隐秘信息加密, 用户登录ticket生成等场景, 然后这里我们就可以根据不同 ...

  5. 35. 通过实现一个序列加密的功能,熟悉对二维空间与一维空间的操作。

    按行读的话,肯定可以读出数据,如果按列来读的话,则会出再乱码的现像.正 是这种现像可作为一种加密手段,称为序列加密. hello everyone  原始序列 可以看成 hello_ everyo n ...

  6. 密码学专题 非对称加密算法指令概述 RSA

    非对称加密算法也称为公开密钥算法,其解决了对称加密算法密钥需要预分配的难题,使得现代密码学的研究和应用取得了重大发展. 非对称加密算法的基本特点如下: 加密密钥和解密密钥不相同; 密钥对中的一个密钥可 ...

  7. LoRaWAN入网方式以及加密进阶版

    LoRaWAN入网方式以及加密进阶版 文章目录 LoRaWAN入网方式以及加密进阶版 首先了解一下关于LoRaWAN入网的一些参数解释:(OTAA模式) OTAA入网过程: 大致过程: 具体过程: 关 ...

  8. excel找到对应数据的列指标_三种方式制作数据地图

    数据地图,因为地理信息的加持,信息丰富,直观明显,广泛地应用于多个行业,数据分析必备利器. 方式一:通过Excel制作数据地图 本文大篇幅在介绍这种方式的具体操作方法,共分为四个步骤.概括来说其主要通 ...

  9. pandorabox mysql_GitHub - gy-games/pandorabox: 基于非对称加密(RSA)的私密信息传递工具,数据由本地客户端进行加密、解密操作。...

    PandoraBox | 私密信息传递工具 基于非对称加密(RSA)的私密信息传递工具,数据由本地客户端进行加密.解密操作,密文通过网络进行传输,确保信息的安全性! -- Browse Website ...

最新文章

  1. iPhone 14 与iPhone 13
  2. vim tab设置为4个空格
  3. Python字典dict的增删查改及常用操作
  4. RTMPdump(libRTMP) 源代码分析 7: 建立一个流媒体连接 (NetStream部分 2)
  5. 管理员获得所有权_在Windows 7中获得注册表项的所有权
  6. 使用LinkedHashMap的Code4ReferenceList最近使用(LRU)实现
  7. 全球最大的LoRaWAN智能路灯项目刚刚启动
  8. 比特币里面有哪些天才的设计?
  9. 华为机试HJ38:求小球落地5次后所经历的路程和第5次反弹的高度
  10. ajax验证本服务器,jquery – 使用Ajax调用的http基本身份验证
  11. 【转】Build Your own Simplified AngularJS in 200 Lines of JavaScript
  12. Android源码下载
  13. 串口驱动的3种实现方式
  14. [附源码]Java计算机毕业设计SSM房屋租赁管理系统设计
  15. hexo+next主题优化之加入网易云音乐、网易云跟帖、炫酷动态背景
  16. 云服务优缺点_云服务器优点和缺点详细介绍
  17. 【Golang开发面经】深信服(两轮技术面)
  18. 软考下午题第1题——数据流,题目分析与案例解析:
  19. ArcGIS空间数据查询与处理
  20. informatica 许可_安装Informatica9.5.1

热门文章

  1. tdk怎么设置_你真的做好网站的标题、描述、关键词(TDK)设置了吗?
  2. C#进阶之WebAPI(二)
  3. 【转】aspx,ascx和ashx使用小结
  4. 【Python CheckiO 题解】Sort Array by Element Frequency
  5. java实体类属性非空判断工具类
  6. java不建议用全局变量吗_不要使用全局变量, ThreadLocal也不行
  7. c++ pdflib输出表格_DescrTab2包,输出SCI级别的描述统计表
  8. CCNA-第十篇-VLAN-下
  9. 【LeetCode - 33】搜索旋转排序数组(二分)
  10. 【51Nod - 1094】和为k的连续区间 (前缀和,二分查找)