From DiskCryptor wiki
Jump to: navigation, search

Формат зашифрованного раздела

Зашифрованный DiskCryptor раздел не содержит видимых сигнатур или иных идентификационных данных. Без знания пароля он неотличим от случайных чисел, и структура раздела может быть обнаружена лишь при наличии правильного пароля к нему.

Зашифрованный раздел содержит область служебных данных (заголовок тома), после которой располагаются пользовательские данные.

DiskCryptor — Формат зашифрованного раздела

Заголовок тома

Первые 2048 байт раздела занимает заголовок тома. В нем хранится информация о разделе и ключи к всем пользовательским данным. Заголовок тома зашифрован выбранным криптоалгоритмом в режиме XTS ключом, полученным из пользовательского пароля. Пользовательские данные, находившиеся в первых 2048 байтах раздела, перемещаются в область перемещения, непрерывную последовательность секторов в пользовательской части (подробности ниже). Заголовок не имеет никаких видимых сигнатур, и без знания пароля неотличим от случайных чисел.

Формат заголовка тома

typedef struct _dc_header {
	u8  salt[PKCS5_SALT_SIZE]; /* pkcs5.2 salt */
	u32 sign;                  /* signature 'DCRP' */
	u32 hdr_crc;               /* crc32 of decrypted volume header */
	u16 version;               /* volume format version */
	u32 flags;                 /* volume flags */
	u32 disk_id;               /* unique volume identifier */
	int alg_1;                 /* crypt algo 1 */
	u8  key_1[DISKKEY_SIZE];   /* crypt key 1  */
	int alg_2;                 /* crypt algo 2 */
	u8  key_2[DISKKEY_SIZE];   /* crypt key 2  */

	u64 stor_off;    /* temporary storage offset */
	u64 use_size;    /* user available volume size */
	u64 tmp_size;    /* temporary part size      */
	u8  tmp_wp_mode; /* data wipe mode */

	u8  reserved[1422 - 1];
} dc_header;
Смещение Размер Шифрование Описание
0 64 Нет Salt. Случайное число, использующееся при получении ключа заголовка.
64 4 Да Сигнатура тома DiskCryptor. Имеет значение 0x50524344 (ascii 'DCRP').
68 4 Да CRC32 остальной части заголовка (байт 72–2047).
72 2 Да Версия формата заголовка. Имеет значение 1 для томов DiskCryptor 0.5.
74 4 Да Флаги тома. Используются для указания состояния тома.
78 4 Да Уникальный идентификатор тома. Используется для поиска раздела при выборе загрузки с указанного раздела.
82 4 Да Идентификатор основного криптоалгоритма, которым зашифрован раздел.
86 256 Да Основной ключ шифрования пользовательских данных тома.
342 4 Да Идентификатор дополнительного криптоалгоритма, которым зашифрован раздел. Указывает на предыдущий криптоалгоритм при перешифровании.
346 256 Да Дополнительный ключ шифрования пользовательских данных тома. Используется для хранения предыдущего ключа при перешифровании.
602 8 Да Смещение в области пользовательских данных, по которому перемещены первые 2048 байт содержимого раздела.
610 8 Да Размер области пользовательских данных.
618 8 Да Размер зашифрованной области. Присутствует только в частично зашифрованном состоянии.
626 1 Да Режим очистки диска использовавшийся при шифровании. Присутствует только в частично зашифрованном состоянии.
627 1421 Да Зарезервировано. Заполнено нулями.

Область перемещения

Область перемещения — это непрерывная последовательность секторов, в которой хранятся первые 2048 байт данных раздела.

В данный момент используются два способа размещения этой области: в файле $dcsys$ или в конце раздела. При шифровании раздела с уже имеющимися данными, эта область размещается в файле $dcsys$, который расположен в непрерывной цепочке кластеров. При форматировании нового раздела, эта область располагается в конце раздела, после пользовательских данных.

Для предотвращения удаления, фрагментации, или перемещения файла $dcsys$, доступ к нему запрещается драйвером.

Language: English  • Deutsch • русский