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