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

Для шифрования секторов используется алгоритм blowfish в режиме CBC. Каждый сектор шифруется независимо от других и как единое целое. Синхропосылка шифрования генерируется на основе общей для всего устройства секретной информации, номера сектора и контрольной суммы открытого текста.

Генерация синхропосылки

При создании ключа диска с ДСЧ так же считывается 8 байт исходной информации для генерации синхропосылок секторов (S).
Для сектора с номером n синхропосылка вычисляется следующим образом:

IV(n) = S ⊕ n ⊕ (n « 32)

Далее по открытым данным сектора считается контрольная сумма (Fletcher checksum) с начальным значением IV(n). Для каждого четырехбайтного блока открытого текста, кроме первых двух, производится операция

IV0 += T
IV1 += IV0;

где IV0, IV1 -- младшие и старшие 4 байта синхропосылки, T -- блок открытого текста. Первые 8 байт сектора пропускаются, т.к. для их расшифрования необходимо знать синхропосылку.