From DiskCryptor wiki
Jump to: navigation, search
m (orfo)
 
m
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
== Формат зашифрованного раздела ==
+
== Encrypted partition format ==
Зашифрованный DiskCryptor раздел не содержит видимых сигнатур или иных идентификационных данных. Без знания пароля он неотличим от случайных чисел, и структура раздела может быть обнаружена лишь при наличии правильного пароля к нему.
+
Encrypted DiskCryptor partition does not have visible signatures or any other identifiable data. Without knowing the proper password it is indistinguishable from random numbers, and the structure of the partition can only be discovered by providing right password.
  
Зашифрованный раздел содержит область служебных данных (заголовок тома), после которой располагаются пользовательские данные.
+
Encrypted partition has the housekeeping data area (volume header) that is followed by the user data.
  
[[File:DiskCryptor_Volume.png|center|DiskCryptor — Формат зашифрованного раздела]]
+
[[File:DiskCryptor_Volume.png|center|DiskCryptor — Encrypted partition format]]
  
=== Заголовок тома ===
+
=== Volume header ===
Первые 2048 байт раздела занимает {{acronym|заголовок тома|volume header}}. В нем хранится информация о разделе и ключи к всем пользовательским данным. Заголовок тома зашифрован выбранным криптоалгоритмом в режиме XTS ключом, полученным из пользовательского пароля. Пользовательские данные, находившиеся в первых 2048 байтах раздела, перемещаются в область перемещения, непрерывную последовательность секторов в пользовательской части (подробности ниже). Заголовок не имеет никаких видимых сигнатур, и без знания пароля неотличим от случайных чисел.
+
The first 2048 bytes of the partition are occupied by volume header. It contains the information about partition and keys to all user data. Volume header is encrypted with a chosen cryptographic algorithm in XTS mode, with a key derived from a user's password. User data that has been residing in the first 2048 bytes of a partition is moved to a relocation area, which is a contiguous sequence of sectors in user area (please read details below). Volume header does not have visible signatures, and without knowing the correct password is indistinguishable from random numbers.
  
=== Формат заголовка тома ===
+
=== Volume header format ===
 
<pre>
 
<pre>
 
typedef struct _dc_header {
 
typedef struct _dc_header {
Line 23: Line 23:
 
u8  key_2[DISKKEY_SIZE];  /* crypt key 2  */
 
u8  key_2[DISKKEY_SIZE];  /* crypt key 2  */
  
u64 stor_off;   /* temporary storage offset */
+
u64 stor_off;             /* temporary storage offset */
u64 use_size;   /* user available volume size */
+
u64 use_size;             /* user available volume size */
u64 tmp_size;   /* temporary part size     */
+
u64 tmp_size;             /* temporary part size */
u8  tmp_wp_mode; /* data wipe mode */
+
u8  tmp_wp_mode;           /* data wipe mode */
  
 
u8  reserved[1422 - 1];
 
u8  reserved[1422 - 1];
Line 33: Line 33:
  
 
{| class="wikitable" border="1" width="100%"
 
{| class="wikitable" border="1" width="100%"
! width="7%" | Смещение
+
! width="7%"| Offset
! width="7%" | Размер
+
! width="7%"| Size
! width="7%" | Шифрование
+
! width="7%"| Encryption
! Описание
+
! Description
 
|-
 
|-
 
| 0
 
| 0
 
| 64
 
| 64
| Нет
+
| No
| Salt. Случайное число, использующееся при получении ключа заголовка.
+
| Salt. Random number used when deriving volume header key.
 
|-
 
|-
 
| 64
 
| 64
 
| 4
 
| 4
| Да
+
| Yes
| Сигнатура тома DiskCryptor. Имеет значение 0x50524344 (ascii 'DCRP').
+
| DiskCryptor volume signature. Has the value of 0x50524344 (ascii 'DCRP').
 
|-
 
|-
 
| 68
 
| 68
| 4  
+
| 4
| Да
+
| Yes
| CRC32 остальной части заголовка (байт 72–2047).
+
| CRC32 of the remaining part of the header (bytes 72-2047).
 
|-
 
|-
 
| 72
 
| 72
 
| 2
 
| 2
| Да
+
| Yes
| Версия формата заголовка. Имеет значение 1 для томов DiskCryptor 0.5.
+
| Header format version. Has the value of 1 for DiskCryptor 0.5 volumes.
 
|-
 
|-
 
| 74
 
| 74
 
| 4
 
| 4
| Да
+
| Yes
| Флаги тома. Используются для указания состояния тома.
+
| Volume flags. Used for indicating volume's state.
 
|-
 
|-
 
| 78
 
| 78
 
| 4
 
| 4
| Да
+
| Yes
| Уникальный идентификатор тома. Используется для поиска раздела при выборе загрузки с указанного раздела.
+
| Unique volume identifier. Used to search for a partition when choosing to boot from the specified partition.
 
|-
 
|-
 
| 82
 
| 82
 
| 4
 
| 4
| Да
+
| Yes
| Идентификатор основного криптоалгоритма, которым зашифрован раздел.
+
| Identifier of a main cryptoalgorithm, with which partition is encrypted.
 
|-
 
|-
 
| 86
 
| 86
 
| 256
 
| 256
| Да
+
| Yes
| Основной ключ шифрования пользовательских данных тома.
+
| Main encryption key of user data on a volume.
|-  
+
|-
 
| 342
 
| 342
 
| 4
 
| 4
| Да
+
| Yes
| Идентификатор дополнительного криптоалгоритма, которым зашифрован раздел. Указывает на предыдущий криптоалгоритм при перешифровании.  
+
| Identifier of an additional cryptoalgorithm, with which partition is encrypted. Indicates about a previously used cryptoalgorithm on re-encryption.
 
|-
 
|-
 
| 346
 
| 346
 
| 256
 
| 256
| Да
+
| Yes
| Дополнительный ключ шифрования пользовательских данных тома. Используется для хранения предыдущего ключа при перешифровании.
+
| Additional encryption key of user data on a volume. Used for storing the previous key on re-encryption.
 
|-
 
|-
 
| 602
 
| 602
 
| 8
 
| 8
| Да
+
| Yes
| Смещение в области пользовательских данных, по которому перемещены первые 2048 байт содержимого раздела.
+
| Offset in user data area, by which the first 2048 bytes of partition data have been relocated.
 
|-
 
|-
 
| 610
 
| 610
| 8  
+
| 8
| Да
+
| Yes
| Размер области пользовательских данных.  
+
| Size of a user data area.
|-  
+
|-
 
| 618
 
| 618
| 8  
+
| 8
| Да
+
| Yes
| Размер зашифрованной области. Присутствует только в частично зашифрованном состоянии.
+
| Size of the encrypted area. Present only in a partially encrypted state.
 
|-
 
|-
 
| 626
 
| 626
 
| 1
 
| 1
| Да
+
| Yes
| Режим очистки диска использовавшийся при шифровании. Присутствует только в частично зашифрованном состоянии.
+
| Partition wipe mode used on encryption. Present only in a partially encrypted state.
 
|-
 
|-
 
| 627
 
| 627
 
| 1421
 
| 1421
| Да
+
| Yes
| Зарезервировано. Заполнено нулями.
+
| Reserved. Zero-filled.
 
|}
 
|}
  
=== Область перемещения ===
+
=== Relocation area ===
Область перемещения это непрерывная последовательность секторов, в которой хранятся первые 2048 байт данных раздела.
+
Relocation area is a contiguous sequence of sectors where the first 2048 bytes of partition are stored.
  
В данный момент используются два способа размещения этой области: в файле $dcsys$ или в конце раздела. При шифровании раздела с уже имеющимися данными, эта область размещается в файле $dcsys$, который расположен в непрерывной цепочке кластеров. При форматировании нового раздела, эта область располагается в конце раздела, после пользовательских данных.
+
Currently there are two methods of placement of this area that are being used: in <tt>$dcsys$</tt> file, or at the end of partition. On encryption of partition that has data on it, this area is being placed in <tt>$dcsys$</tt> file, which is located in a contiguous sequence of clusters. On formatting a new partition, this area is being placed at the end of partition, after user data.
  
Для предотвращения удаления, фрагментации, или перемещения файла $dcsys$, доступ к нему запрещается драйвером.
+
In order to protect the <tt>$dcsys$</tt> file from being deleted, fragmented or moved, its access is forbidden by the driver.
  
 
{{Languages}}
 
{{Languages}}

Latest revision as of 20:39, 12 December 2015

Encrypted partition format

Encrypted DiskCryptor partition does not have visible signatures or any other identifiable data. Without knowing the proper password it is indistinguishable from random numbers, and the structure of the partition can only be discovered by providing right password.

Encrypted partition has the housekeeping data area (volume header) that is followed by the user data.

DiskCryptor — Encrypted partition format

Volume header

The first 2048 bytes of the partition are occupied by volume header. It contains the information about partition and keys to all user data. Volume header is encrypted with a chosen cryptographic algorithm in XTS mode, with a key derived from a user's password. User data that has been residing in the first 2048 bytes of a partition is moved to a relocation area, which is a contiguous sequence of sectors in user area (please read details below). Volume header does not have visible signatures, and without knowing the correct password is indistinguishable from random numbers.

Volume header format

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;
Offset Size Encryption Description
0 64 No Salt. Random number used when deriving volume header key.
64 4 Yes DiskCryptor volume signature. Has the value of 0x50524344 (ascii 'DCRP').
68 4 Yes CRC32 of the remaining part of the header (bytes 72-2047).
72 2 Yes Header format version. Has the value of 1 for DiskCryptor 0.5 volumes.
74 4 Yes Volume flags. Used for indicating volume's state.
78 4 Yes Unique volume identifier. Used to search for a partition when choosing to boot from the specified partition.
82 4 Yes Identifier of a main cryptoalgorithm, with which partition is encrypted.
86 256 Yes Main encryption key of user data on a volume.
342 4 Yes Identifier of an additional cryptoalgorithm, with which partition is encrypted. Indicates about a previously used cryptoalgorithm on re-encryption.
346 256 Yes Additional encryption key of user data on a volume. Used for storing the previous key on re-encryption.
602 8 Yes Offset in user data area, by which the first 2048 bytes of partition data have been relocated.
610 8 Yes Size of a user data area.
618 8 Yes Size of the encrypted area. Present only in a partially encrypted state.
626 1 Yes Partition wipe mode used on encryption. Present only in a partially encrypted state.
627 1421 Yes Reserved. Zero-filled.

Relocation area

Relocation area — is a contiguous sequence of sectors where the first 2048 bytes of partition are stored.

Currently there are two methods of placement of this area that are being used: in $dcsys$ file, or at the end of partition. On encryption of partition that has data on it, this area is being placed in $dcsys$ file, which is located in a contiguous sequence of clusters. On formatting a new partition, this area is being placed at the end of partition, after user data.

In order to protect the $dcsys$ file from being deleted, fragmented or moved, its access is forbidden by the driver.

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