Windows中文网

 找回密码
 立即注册
搜索
查看: 6446|回复: 0

密文窃取CTS技术

[复制链接]

19

主题

22

帖子

428

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
428
发表于 2022-10-6 16:06:37 | 显示全部楼层 |阅读模式
除了上面介绍的几种填充模式,密文窃取(CipherTextStealing,简称CTS)技术也可以用于ECB和CBC模式。CTS是一种使用分组密码加密明文的技术,不需要将明文填充到分组长度的整数倍,明文和加密以后的密文的长度是相同的。
在CTS中,除了最后两个明文分组以外,所有其他分组的处理都保持不变,但是倒数第2个密文分组的一部分被窃取(也可以说是挪动位置)了,用来填充最后一个明文分组以达到分组长度的要求,最后一个明文分组经过填充以后,像往常一样加密。解密时要求首先解密最后一个密文分组,将被窃取的那一部分密文恢复到倒数第2个密文分组中,然后就可以像往常一样进行解密了。这种加密解密方法具有一个优点,如果明文的大小已经是分组长度的整数倍,则不需要进行密文窃取。但是,也存在一些问题,倒数第2个密文分组被窃取了,成为一个不完整的分组,最后一个密文分组是完整的,这会导致最后一个密文分组未在自然边界上对齐,从而使硬件实现复杂化。
最流行的替代方案是无条件地交换最后两个密文分组。设                              为明文,将 划分为n个明文分组 ,最后两个明文分组称为 和 ,其中 的长度为分组长度B(位), 的长度为M(位),M的范围为1~B(含),即 可能是一个完整的明文分组。加密方法如下图所示。
222.png

加密                              ,得到“原 ”,因为这个密文分组接下来会被窃取,并且交换顺序,因此我们称之为“原 ”。“原 ”的前M位成为 。“原 ”的后B – M位挪动到 的后面,组成一个完整的明文分组,接着加密该明文分组,成为 。
解密最后两个密文分组的方法。解密 ,得到 和“原 ”的后B – M位,然后将被窃取的这B – M位挪动到 的后面,组成一个完整的密文分组,该密文分组即“原 ”,解密之,得到 。
采用ECB模式的时候,可以直接按照上面的方法进行。采用CBC模式的时候,流程也是一样,但是具体方法稍有不同。这里再列出CBC模式时的加密方法。
(1)  执行 ,得到“原 ”;
(2)   “原 ”的前M位成为 ;
(3)    只有M位,后B – M位需要用0填充,即执行 ,以组成一个完整的明文分组 ;
(4)  执行 ,得到 。
解释一下第(4)步, 用0填充得到 ,与0异或还是自身,因此执行 ,一方面相当于是将“原 ”的后B – M位复制到 的后面,另一方面 与“原 ”的前M位执行了异或运算。

ECB模式的密文窃取要求明文的长度不低于一个分组,因为没有初始化向量。CBC模式的密文窃取则没有这个要求,当明文的长度不高于一个分组的时候,初始化向量可以充当倒数第2个密文分组。



回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

QQ|Archiver|手机版|小黑屋|Windows中文网 ( 鲁ICP备2021014210号 )

GMT+8, 2025-6-9 18:50 , Processed in 0.087091 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表