VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/doc/html/Authenticity and Integrity.html
blob: b7075bebabf1ed1707b41767c4349f710a8a0f97 (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
49
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>VeraCrypt - Free Open source disk encryption with strong security for the Paranoid</title>
<meta name="description" content="VeraCrypt is free open-source disk encryption software for Windows, Mac OS X and Linux. In case an attacker forces you to reveal the password, VeraCrypt provides plausible deniability. In contrast to file encryption, data encryption performed by VeraCrypt is real-time (on-the-fly), automatic, transparent, needs very little memory, and does not involve temporary unencrypted files."/>
<meta name="keywords" content="encryption, security"/>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>

<div>                      
<a href="https://www.veracrypt.fr/en/Home.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
</div>

<div id="menu">
	<ul>
	  <li><a href="Home.html">Home</a></li>
	  <li><a href="/code/">Source Code</a></li>
	  <li><a href="Downloads.html">Downloads</a></li>
	  <li><a class="active" href="Documentation.html">Documentation</a></li>
	  <li><a href="Donation.html">Donate</a></li>
	  <li><a href="https://sourceforge.net/p/veracrypt/discussion/" target="_blank">Forums</a></li>
	</ul>
</div>

<div>
<p>
<a href="Documentation.html">Documentation</a>           
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
<a href="Security%20Requirements%20and%20Precautions.html">Security Requirements and Precautions</a>
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
<a href="Authenticity%20and%20Integrity.html">Authenticity and Integrity</a>
</p></div>

<div class="wikidoc">
<div>
<h1>Authenticity and Integrity</h1>
<p>VeraCrypt uses encryption to preserve the <em>confidentiality</em> of data it encrypts. VeraCrypt neither preserves nor verifies the integrity or authenticity of data it encrypts or decrypts. Hence, if you allow an adversary to modify data encrypted by VeraCrypt,
 he can set the value of any 16-byte block of the data to a random value or to a previous value, which he was able to obtain in the past. Note that the adversary cannot choose the value that you will obtain when VeraCrypt decrypts the modified block &mdash;
 the value will be random &mdash; unless the attacker restores an older version of the encrypted block, which he was able to obtain in the past. It is your responsibility to verify the integrity and authenticity of data encrypted or decrypted by VeraCrypt (for
 example, by using appropriate third-party software).<br>
<br>
See also: <a href="Physical%20Security.html">
<em>Physical Security</em></a>, <a href="Security%20Model.html">
<em>Security Model</em></a></p>
</div>
</div><div class="ClearBoth"></div></body></html>
pan> string &message, const wstring &subject) : Exception (message, subject) { } }; #define TC_CIPHER(NAME, BLOCK_SIZE, KEY_SIZE) \ class TC_JOIN (Cipher,NAME) : public Cipher \ { \ public: \ TC_JOIN (Cipher,NAME) () { } \ virtual ~TC_JOIN (Cipher,NAME) () { } \ \ virtual size_t GetBlockSize () const { return BLOCK_SIZE; }; \ virtual size_t GetKeySize () const { return KEY_SIZE; }; \ virtual wstring GetName () const { return L###NAME; }; \ virtual shared_ptr <Cipher> GetNew () const { return shared_ptr <Cipher> (new TC_JOIN (Cipher,NAME)()); } \ TC_CIPHER_ADD_METHODS \ \ protected: \ virtual void Decrypt (byte *data) const; \ virtual void Encrypt (byte *data) const; \ virtual size_t GetScheduledKeySize () const; \ virtual void SetCipherKey (const byte *key); \ \ private: \ TC_JOIN (Cipher,NAME) (const TC_JOIN (Cipher,NAME) &); \ TC_JOIN (Cipher,NAME) &operator= (const TC_JOIN (Cipher,NAME) &); \ } #define TC_CIPHER_ADD_METHODS \ virtual void DecryptBlocks (byte *data, size_t blockCount) const; \ virtual void EncryptBlocks (byte *data, size_t blockCount) const; \ virtual bool IsHwSupportAvailable () const; TC_CIPHER (AES, 16, 32); TC_CIPHER (Serpent, 16, 32); TC_CIPHER (Twofish, 16, 32); TC_CIPHER (Camellia, 16, 32); #undef TC_CIPHER_ADD_METHODS #define TC_CIPHER_ADD_METHODS TC_CIPHER (Gost89, 16, 32); TC_CIPHER (Gost89StaticSBOX, 16, 32); TC_CIPHER (Kuznyechik, 16, 32); #undef TC_CIPHER #define TC_EXCEPTION(NAME) TC_EXCEPTION_DECL(NAME,CipherException) #undef TC_EXCEPTION_SET #define TC_EXCEPTION_SET \ TC_EXCEPTION (CipherInitError); \ TC_EXCEPTION (WeakKeyDetected); TC_EXCEPTION_SET; #undef TC_EXCEPTION #if (defined (TC_ARCH_X86) || defined (TC_ARCH_X64)) && !defined (__ppc__) # define TC_AES_HW_CPU #endif } #endif // TC_HEADER_Encryption_Ciphers