Общее описание
Для шифрования секторов используется алгоритм AES (Rijndael) в режиме
CBC. Размер блока шифра 128 бит, длина ключа 128, 192 или 256 бит.
Каждый сектор шифруется независимо от других и как единое целое.
Синхропосылка шифрования генерируется на основе общей для всего
устройства секретной информации, номера сектора и контрольной суммы
открытого текста.
Генерация синхропосылки
При создании ключа диска с ДСЧ так же считывается 16 байт исходной
информации для генерации синхропосылок секторов (S).
Для сектора с номером n синхропосылка вычисляется следующим
образом:
IV(n) = S ⊕ n ⊕ (n « 32)
⊕ (n « 64)
⊕ (n « 96)
Далее по открытым данным сектора считается контрольная сумма (Fletcher
checksum) с начальным значением IV(n). Для каждого
четырехбайтного блока открытого текста, кроме первых четырех,
производится операция
IV0 += T
IV1 += IV0
IV2 += T
IV3 += IV2;
где IV0..3 -- 4-хбайтные фрагменты
синхропосылки, T -- блок открытого текста. Первые 16 байт сектора
пропускаются, т.к. для их расшифрования необходимо знать синхропосылку.