dm-crypt trong Linux sử dụng các khối 512 byte (các cung đĩa) có các khối con của văn bản gốc được mã hóa cho các chế độ mật mã khối không song song:
"Với các chế độ thông thường trong cryptsetup (CBC, ESSIV, XTS), bạn có thể nhận được một khối 512 byte bị thay đổi hoàn toàn do lỗi bit. Một khối bị hỏng gây ra nhiều sự tàn phá hơn so với một bit thỉnh thoảng bị lật và có thể dẫn đến nhiều lỗi khó hiểu khác nhau ."
/\ Nguồn: https://gitlab.com/cryptsetup/cryptsetup/-/wikis/FrequentlyAskedQuestions
Nó hỗ trợ CBC, PCBC, OFB và CFB không song song.
Tôi đã thử nghiệm nó ở đây trong hệ thống Linux của mình:
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
mèo sudo /dev/zero > /dev/mapper/blah
Sudo cryptsetup đóng /dev/mapper/blah
/\ Tôi đã mở tệp ảnh đĩa trong trình chỉnh sửa hệ thập lục phân và tôi có thể thấy rằng tất cả các khối 512 byte đều khác nhau ngay cả khi các bản rõ trong toàn bộ ảnh đĩa là đồng nhất (các số không).
Câu hỏi của tôi là:
Làm thế nào dm-crypt làm cho tất cả các khối 512 byte khác nhau ngay cả khi các bản rõ của nó giống nhau?
Nếu tôi mã hóa thứ gì đó bằng CBC và chia thành các khối 512 byte để có thể tìm kiếm được, thì khóa và IV sẽ giống nhau cho mỗi khối 512 byte, vì vậy nếu tôi mã hóa cùng một văn bản gốc thì các khối sẽ bằng nhau.