首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux中的dm-crypt是如何使所有512字节块都不同的非并行加密模式的?

Linux中的dm-crypt是如何使所有512字节块都不同的非并行加密模式的?
EN

Cryptography用户
提问于 2022-02-05 00:20:54
回答 1查看 96关注 0票数 1

Linux中的dm-crypt使用512个字节块(磁盘扇区),具有加密明文子块,用于不可并行的分组密码模式:

使用密码设置中常见的模式(CBC、ESSIV、XTS),您可以得到一个完全改变的512字节块以避免位错误。一个损坏的块会比偶尔翻转的单个比特造成更大的破坏,并可能导致各种模糊错误。

/\资料来源:https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions

它支持CBC,PCBC,OFB和CFB,它们是不可并行的.

我在Linux系统中测试了它:

代码语言:javascript
复制
dd if=/dev/zero of=./img count=5242880 bs=1
dd if=/dev/random of=./key count=32 bs=1
sudo cryptsetup open --type plain --cipher aes-cbc-essiv:sha3-256 --key-file ./key --key-size 256 ./img blah
sudo cat /dev/zero > /dev/mapper/blah
sudo cryptsetup close /dev/mapper/blah

/\我用十六进制编辑器打开磁盘映像文件,我可以看到所有512个字节的块是不同的,即使整个磁盘映像中的明文是一致的(零)。

我的问题是:

dm-crypt如何使所有512字节块彼此不同,即使它的明文是相同的?

如果我用CBC加密某些内容,并将其拆分为512字节块,则密钥和IV对于每个512字节块都是相同的,因此,如果我加密相同的明文,块将是相等的。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2022-02-07 07:22:10

他们只是将扇区号或它的某些函数作为to /IV使用。扇区号在加密和解密时已知,因此不需要与密文一起存储,这是很好的,因为没有空间容纳它。

所有这些模式实际上都是高度并行的:磁盘I/O通常以至少4K的倍数发生,并且已经可以以8种方式并行化。子扇区并行性不足是设计特点之一。驱动程序不可能对解密的扇区进行身份验证,因为没有存储身份验证者的空间,因此它必须依靠更高的级别来注意明文是错误的,而且错误越多,就越有可能发生这种情况。

票数 4
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/98524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档