VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Common/EncryptionThreadPool.h
blob: 053d41078190478b558484a5b7356c8d4d3af840 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
 Derived from source code of TrueCrypt 7.1a, which is
 Copyright (c) 2008-2012 TrueCrypt Developers Association and which is governed
 by the TrueCrypt License 3.0.

 Modifications and additions to the original source code (contained in this file)
 and all other portions of this file are Copyright (c) 2013-2017 IDRIX
 and are governed by the Apache License 2.0 the full text of which is
 contained in the file License.txt included in VeraCrypt binary and source
 code distribution packages.
*/

#ifndef TC_HEADER_ENCRYPTION_THREAD_POOL
#define TC_HEADER_ENCRYPTION_THREAD_POOL

#include "Tcdefs.h"
#include "Crypto.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef enum
{
	EncryptDataUnitsWork,
	DecryptDataUnitsWork,
	DeriveKeyWork,
	ReadVolumeHeaderFinalizationWork
} EncryptionThreadPoolWorkType;

#ifndef DEVICE_DRIVER
size_t GetCpuCount (WORD* pGroupCount);
#endif

void EncryptionThreadPoolBeginKeyDerivation (TC_EVENT *completionEvent, TC_EVENT *noOutstandingWorkItemEvent, LONG *completionFlag, LONG *outstandingWorkItemCount, int pkcs5Prf, char *password, int passwordLength, char *salt, int iterationCount, char *derivedKey);
void EncryptionThreadPoolBeginReadVolumeHeaderFinalization (TC_EVENT *keyDerivationCompletedEvent, TC_EVENT *noOutstandingWorkItemEvent, LONG* outstandingWorkItemCount, void* keyInfoBuffer, int keyInfoBufferSize, void* keyDerivationWorkItems, int keyDerivationWorkItemsSize);
void EncryptionThreadPoolDoWork (EncryptionThreadPoolWorkType type, byte *data, const UINT64_STRUCT *startUnitNo, uint32 unitCount, PCRYPTO_INFO cryptoInfo);
BOOL EncryptionThreadPoolStart (size_t encryptionFreeCpuCount);
void EncryptionThreadPoolStop ();
size_t GetEncryptionThreadCount ();
size_t GetMaxEncryptionThreadCount ();
BOOL IsEncryptionThreadPoolRunning ();

#ifdef __cplusplus
}
#endif

#endif // TC_HEADER_ENCRYPTION_THREAD_POOL
pan class="p">><a href="/code/">Исходный код</a></li> <li><a href="Downloads.html">Загрузить</a></li> <li><a class="active" href="Documentation.html">Документация</a></li> <li><a href="Donation.html">Поддержать разработку</a></li> <li><a href="https://sourceforge.net/p/veracrypt/discussion/" target="_blank">Форум</a></li> </ul> </div> <div> <p> <a href="Documentation.html">Документация</a> <img src="arrow_right.gif" alt=">>" style="margin-top: 5px"> <a href="Security%20Requirements%20and%20Precautions.html">Требования безопасности и меры предосторожности</a> <img src="arrow_right.gif" alt=">>" style="margin-top: 5px"> <a href="Data%20Leaks.html">Утечки данных</a> <img src="arrow_right.gif" alt=">>" style="margin-top: 5px"> <a href="Hibernation%20File.html">Файл гибернации</a> </p></div> <div class="wikidoc"> <div> <h1>Файл гибернации</h1> <p>Примечание: описанная ниже проблема вас не касается, если системный раздел или системный диск зашифрован<span>*</span> (см. подробности в главе <a href="System%20Encryption.html"> <em>Шифрование системы</em></a>) и если файл гибернации расположен на одном из разделов, входящих в область действия шифрования системы (что, как правило, принимается по умолчанию), например, на разделе, в котором установлена. Когда компьютер переходит в состояние гибернации, данные шифруются на лету перед тем, как они будут сохранены в файле гибернации.</p> <p>Когда компьютер переходит в состояние гибернации (или входит в режим энергосбережения), содержимое его оперативной памяти записывается в так называемый файл гибернации на жёстком диске. Вы можете настроить VeraCrypt (<em>Настройки</em> &gt; <em>Параметры</em> &gt; <em>Размонтировать все тома при: входе в энергосбережение</em>) на автоматическое размонтирование всех смонтированных томов VeraCrypt, удаление их хранящихся в ОЗУ мастер-ключей и очистку кэшированных в ОЗУ паролей (если они есть) перед тем, как компьютер перейдёт в состояние гибернации (или войдёт в режим энергосбережения). Нужно, однако, иметь в виду, что если не используется шифрование системы (см. главу <a href="System%20Encryption.html"><em>Шифрование системы</em></a>), VeraCrypt не может надёжно препятствовать сохранению в файле гибернации в незашифрованном виде содержимого конфиденциальных файлов, открытых в ОЗУ. Помните, что когда вы открываете файл, хранящийся в томе VeraCrypt, например, в текстовом редакторе, содержимое этого файла в <i>незашифрованном</i> виде помещается в ОЗУ (и может оставаться в ОЗУ <i>незашифрованным</i>, пока не будет выключен компьютер).<br> <br> Обратите внимание, что когда компьютер переходит в режим сна, на самом деле он может быть настроен на переход в так называемый гибридный спящий режим, вызывающий гибернацию. Также учтите, что операционная система может быть настроена на переход в режим гибернации или в гибридный спящий режим при выборе пункта «Завершить работу» (см. подробности в документации на свою операционную систему).<br> <br> <strong>Чтобы избежать описанных выше проблем</strong>, зашифруйте системный раздел/диск (о том, как это сделать, см. в главе <a href="System%20Encryption.html"><em>Шифрование системы</em></a>) и убедитесь, что файл гибернации находится на одном из разделов, входящих в область действия шифрования системы (что, как правило, принимается по умолчанию), например, на разделе, в котором установлена Windows. Когда компьютер переходит в состояние гибернации, данные шифруются на лету перед тем, как они будут сохранены в файле гибернации.</p> <p>Примечание: ещё один подходящий вариант – создать скрытую операционную систему (см. подробности в разделе <a href="Hidden%20Operating%20System.html"> <em>Скрытая операционная система</em></a>)<span>.</span></p> <p>Если по каким-то причинам вы не можете использовать шифрование системы, отключите или не допускайте гибернации в своём компьютере, по крайней мере, в течение каждого сеанса, когда вы работаете с секретными данными и монтируете том VeraCrypt.</p> <p><span>*</span> ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Поскольку Windows XP и Windows 2003 не предоставляют никакого API для шифрования файлов гибернации, VeraCrypt пришлось модифицировать недокументированные компоненты Windows XP/2003, чтобы позволить пользователям шифровать файлы гибернации. Поэтому VeraCrypt не может гарантировать, что файлы гибернации Windows XP/2003 будут всегда зашифрованы. В ответ на нашу публичную жалобу на отсутствие API, компания Microsoft начала предоставлять общедоступный API для шифрования файлов гибернации в Windows Vista и более поздних версиях Windows. VeraCrypt использует этот API и поэтому может безопасно шифровать файлы гибернации в Windows Vista и более поздних версиях Windows. Поэтому если вы используете Windows XP/2003 и хотите, чтобы файл гибернации был надёжно зашифрован, настоятельно рекомендуем вам выполнить обновление до Windows Vista или более поздней версии.</p> </div> </div><div class="ClearBoth"></div></body></html>