Общее описание

Для шифрования секторов используется алгоритм 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 байт сектора пропускаются, т.к. для их расшифрования необходимо знать синхропосылку.