1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2026-06-15 09:06:08 -05:00

docs: clarify Argon2id and BLAKE2b-512 KDF usage

Document BLAKE2b-512 and Argon2id usage in the HTML/CHM user guide and Russian/Chinese translations. Clarify Argon2id's non-system scope, PBKDF2-HMAC system encryption behavior, PIM parameters, and regenerate the CHM files.
This commit is contained in:
Mounir IDRASSI
2026-06-14 11:24:11 +09:00
parent c8a2b89044
commit a751e75588
46 changed files with 1088 additions and 143 deletions
+3
View File
@@ -1,4 +1,5 @@
# Set the default behavior, in case people don't have core.autocrlf set.
.gitattributes text eol=lf
* text=auto
# Explicitly declare text files that could be normalized and converted
@@ -36,6 +37,8 @@ Sources text eol=lf
*.rc text eol=crlf
*.bat text eol=crlf
*.cmd text eol=crlf
*.hhc -text whitespace=cr-at-eol
*.hhp -text whitespace=cr-at-eol
# Denote all files that are truly binary and should not be modified.
*.png binary
Binary file not shown.
Binary file not shown.
Binary file not shown.
+4
View File
@@ -190,6 +190,10 @@
<param name="Name" value="BLAKE2s-256">
<param name="Local" value="BLAKE2s-256.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="BLAKE2b-512">
<param name="Local" value="BLAKE2b-512.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="SHA-256">
<param name="Local" value="SHA-256.html">
+1
View File
@@ -46,6 +46,7 @@ Beginner's Tutorial_Image_023.gif
Beginner's Tutorial_Image_024.gif
Beginner's Tutorial_Image_034.png
BLAKE2s-256.html
BLAKE2b-512.html
Camellia.html
Cascades.html
Changing Passwords and Keyfiles.html
+18
View File
@@ -190,6 +190,10 @@
<param name="Name" value="BLAKE2s-256">
<param name="Local" value="BLAKE2s-256.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="BLAKE2b-512">
<param name="Local" value="BLAKE2b-512.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="SHA-256">
<param name="Local" value="SHA-256.html">
@@ -207,6 +211,20 @@
<param name="Local" value="Streebog.html">
</OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Àëãîðèòìû ôîðìèðîâàíèÿ êëþ÷à">
<param name="Local" value="Key Derivation Algorithms.html">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Argon2id">
<param name="Local" value="Argon2id.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="PBKDF2">
<param name="Local" value="pbkdf2.html">
</OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Ïîääåðæèâàåìûå îïåðàöèîííûå ñèñòåìû">
<param name="Local" value="Supported Operating Systems.html">
+4
View File
@@ -14,6 +14,7 @@ Title=
Acknowledgements.html
Additional Security Requirements and Precautions.html
AES.html
Argon2id.html
arrow_right.gif
Authenticity and Integrity.html
Authors.html
@@ -46,6 +47,7 @@ Beginner's Tutorial_Image_023.png
Beginner's Tutorial_Image_024.png
Beginner's Tutorial_Image_034.png
BLAKE2s-256.html
BLAKE2b-512.html
Camellia.html
Cascades.html
Changing Passwords and Keyfiles.html
@@ -90,6 +92,7 @@ Incompatibilities.html
Introduction.html
Issues and Limitations.html
Journaling File Systems.html
Key Derivation Algorithms.html
Keyfiles in VeraCrypt.html
Keyfiles in VeraCrypt_Image_040.png
Keyfiles.html
@@ -111,6 +114,7 @@ Notation.html
Paging File.html
Parallelization.html
paypal_30x30.png
pbkdf2.html
Personal Iterations Multiplier (PIM).html
Personal Iterations Multiplier (PIM)_VeraCrypt_ChangePIM_Step1.png
Personal Iterations Multiplier (PIM)_VeraCrypt_ChangePIM_Step2.png
+18
View File
@@ -190,6 +190,10 @@
<param name="Name" value="BLAKE2s-256">
<param name="Local" value="BLAKE2s-256.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="BLAKE2b-512">
<param name="Local" value="BLAKE2b-512.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="SHA-256">
<param name="Local" value="SHA-256.html">
@@ -207,6 +211,20 @@
<param name="Local" value="Streebog.html">
</OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="密钥推导算法">
<param name="Local" value="Key Derivation Algorithms.html">
</OBJECT>
<UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="Argon2id">
<param name="Local" value="Argon2id.html">
</OBJECT>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="PBKDF2">
<param name="Local" value="pbkdf2.html">
</OBJECT>
</UL>
<LI> <OBJECT type="text/sitemap">
<param name="Name" value="支持的操作系统">
<param name="Local" value="Supported Operating Systems.html">
+4
View File
@@ -15,6 +15,7 @@ Title=VeraCrypt
Acknowledgements.html
Additional Security Requirements and Precautions.html
AES.html
Argon2id.html
arrow_right.gif
Authenticity and Integrity.html
Authors.html
@@ -47,6 +48,7 @@ Beginner's Tutorial_Image_023.gif
Beginner's Tutorial_Image_024.gif
Beginner's Tutorial_Image_034.png
BLAKE2s-256.html
BLAKE2b-512.html
Camellia.html
Cascades.html
Changing Passwords and Keyfiles.html
@@ -91,6 +93,7 @@ Incompatibilities.html
Introduction.html
Issues and Limitations.html
Journaling File Systems.html
Key Derivation Algorithms.html
Keyfiles in VeraCrypt.html
Keyfiles in VeraCrypt_Image_040.gif
Keyfiles.html
@@ -112,6 +115,7 @@ Notation.html
Paging File.html
Parallelization.html
paypal_30x30.png
pbkdf2.html
Personal Iterations Multiplier (PIM).html
Personal Iterations Multiplier (PIM)_VeraCrypt_ChangePIM_Step1.png
Personal Iterations Multiplier (PIM)_VeraCrypt_ChangePIM_Step2.png
+3 -3
View File
@@ -36,7 +36,7 @@
<div class="wikidoc">
<h1>Argon2id</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Argon2id is a memory-hard key derivation function designed to resist both time-memory trade-off attacks and side-channel attacks. It was selected as the winner of the Password Hashing Competition (PHC) in 2015 and is defined in RFC 9106. VeraCrypt supports Argon2id as an alternative to PBKDF2-HMAC for header key derivation.
Argon2id is a memory-hard key derivation function designed to resist both time-memory trade-off attacks and side-channel attacks. It was selected as the winner of the Password Hashing Competition (PHC) in 2015 and is defined in RFC 9106. VeraCrypt supports Argon2id as an alternative to PBKDF2-HMAC for non-system volume header key derivation.
</div>
<h3>Key Features</h3>
@@ -48,7 +48,7 @@ Argon2id is a memory-hard key derivation function designed to resist both time-m
<strong>Side-channel resistant:</strong> Combines data-dependent and data-independent memory access patterns
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Internal hash function:</strong> Uses BLAKE2b internally, eliminating the need for separate hash algorithm selection
<strong>Internal hash function:</strong> Uses <a href="BLAKE2b-512.html" style="color:#0080c0; text-decoration:none">BLAKE2b-512</a> internally, eliminating the need for separate hash algorithm selection
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Tunable parameters:</strong> Allows adjustment of memory cost, time cost, and parallelism
@@ -159,7 +159,7 @@ When using Argon2id in VeraCrypt:
<h3>Technical Specifications</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<strong>Algorithm:</strong> Argon2id as defined in RFC 9106<br/>
<strong>Internal hash:</strong> BLAKE2b<br/>
<strong>Internal hash:</strong> <a href="BLAKE2b-512.html" style="color:#0080c0; text-decoration:none">BLAKE2b-512</a><br/>
<strong>Salt size:</strong> 512 bits (same as PBKDF2-HMAC)<br/>
<strong>Header KDF output length:</strong> Fixed at 1536 bits (192 bytes) for the current VeraCrypt format. The required prefix is used for the selected encryption algorithm (for example, the first 64 bytes for AES (AES-256-XTS)). Third-party implementations must request 192 bytes from Argon2id before selecting the required prefix; requesting only the selected algorithm's key material length produces a different Argon2id output.<br/>
<strong>Version:</strong> Argon2 version 0x13 (19 decimal)
+51
View File
@@ -0,0 +1,51 @@
<!DOCTYPE html>
<html 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="Documentation.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.html">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="Hash%20Algorithms.html">Hash Algorithms</a>
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
<a href="BLAKE2b-512.html">BLAKE2b-512</a>
</p></div>
<div class="wikidoc">
<h1>BLAKE2b-512</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<p>
BLAKE2b is the 64-bit-word variant of BLAKE2 and the successor of BLAKE-512. BLAKE2b and BLAKE2s are specified in RFC 7693.
</p>
<p>
VeraCrypt uses BLAKE2b with its maximum output size of 64 bytes (512 bits) internally in <a href="Argon2id.html" style="text-align:left; color:#0080c0; text-decoration:none">Argon2id</a>. For non-system volume header key derivation, BLAKE2b-512 is reached by selecting the Argon2 key derivation algorithm in VeraCrypt; this corresponds to Argon2id internally. In hash-oriented contexts such as random pool mixing and keyfile generation, the same underlying hash may be displayed as BLAKE2b-512.
</p>
<p>
BLAKE2b-512 is not offered as a separate PBKDF2-HMAC hash algorithm. To use BLAKE2b-512 in VeraCrypt non-system volume header key derivation, select <a href="Argon2id.html" style="text-align:left; color:#0080c0; text-decoration:none">Argon2id</a>; no separate hash algorithm selection is available for Argon2id.
</p>
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<a href="SHA-256.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">Next Section &gt;&gt;</a></div>
</div><div class="ClearBoth"></div></body></html>
+2 -2
View File
@@ -42,9 +42,9 @@ BLAKE2 removes addition of constants to message words from BLAKE round function,
BLAKE2b and BLAKE2s are specified in RFC 7693.
</p>
<p>
VeraCrypt uses only BLAKE2s with its maximum output size of 32-bytes (256 bits).
VeraCrypt uses BLAKE2s with its maximum output size of 32 bytes (256 bits) as a PBKDF2-HMAC hash algorithm. For Argon2id, VeraCrypt uses <a href="BLAKE2b-512.html" style="text-align:left; color:#0080c0; text-decoration:none">BLAKE2b-512</a> internally.
</p>
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<a href="SHA-256.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">Next Section &gt;&gt;</a></div>
<a href="BLAKE2b-512.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">Next Section &gt;&gt;</a></div>
</div><div class="ClearBoth"></div></body></html>
@@ -49,8 +49,8 @@
</tr>
<tr>
<td><em>/hash</em></td>
<td>It must be followed by a parameter indicating the PRF hash algorithm to use when mounting the volume. Possible values for /hash parameter are: sha256, sha-256, sha512, sha-512, whirlpool, blake2s and blake2s-256. When /hash is omitted, VeraCrypt will try
all possible PRF algorithms thus lengthening the mount operation time.</td>
<td>It must be followed by a parameter indicating the PRF hash algorithm or KDF to use when mounting the volume. Possible values for /hash parameter are: sha256, sha-256, sha512, sha-512, whirlpool, blake2s, blake2s-256, streebog, and blake2b-512 (for Argon2id volumes). When /hash is omitted, VeraCrypt will try
all possible PRF/KDF algorithms thus lengthening the mount operation time.</td>
</tr>
<tr>
<td id="volume"><em>/volume</em> or <em>/v</em></td>
@@ -252,7 +252,7 @@ It must be followed by a parameter indicating the PIN to use in order to authent
<tr>
<td>&nbsp;<em>/hash</em></td>
<td>(Only with /create)<br>
It must be followed by a parameter indicating the PRF hash algorithm to use when creating the volume. It has the same syntax as VeraCrypt.exe.</td>
It must be followed by a parameter indicating the PRF hash algorithm or KDF to use when creating the volume. It has the same syntax as VeraCrypt.exe, and also accepts argon2 as an alias for Argon2id.</td>
</tr>
<tr>
<td>/encryption</td>
@@ -324,9 +324,9 @@ If it is followed by <strong>n</strong> or <strong>no</strong>: the password dia
</tbody>
</table>
<h4>Syntax</h4>
<p>VeraCrypt.exe [/tc] [/hash {sha256|sha-256|sha512|sha-512|whirlpool |blake2s|blake2s-256}][/a [devices|favorites]] [/b] [/c [y|n|f]] [/d [drive letter]] [/e] [/f] [/h [y|n]] [/k keyfile or search path] [tryemptypass [y|n]] [/l drive letter] [/m {bk|rm|recovery|ro|sm|ts|noattach}]
<p>VeraCrypt.exe [/tc] [/hash {sha256|sha-256|sha512|sha-512|whirlpool|blake2s|blake2s-256|streebog|blake2b-512}][/a [devices|favorites]] [/b] [/c [y|n|f]] [/d [drive letter]] [/e] [/f] [/h [y|n]] [/k keyfile or search path] [tryemptypass [y|n]] [/l drive letter] [/m {bk|rm|recovery|ro|sm|ts|noattach}]
[/p password] [/pim pimvalue] [/q [background|preferences]] [/s] [/tokenlib path] [/v volume] [/w]</p>
<p>&quot;VeraCrypt Format.exe&quot; [/n] [/create] [/size number[{K|M|G|T}]] [/p password]&nbsp; [/encryption {AES | Serpent | Twofish | Camellia | Kuznyechik | AES(Twofish) | AES(Twofish(Serpent)) | Serpent(AES) | Serpent(Twofish(AES)) | Twofish(Serpent) | Camellia(Kuznyechik) | Kuznyechik(Twofish) | Camellia(Serpent) | Kuznyechik(AES) | Kuznyechik(Serpent(Camellia)))}] [/hash {sha256|sha-256|sha512|sha-512|whirlpool|blake2s|blake2s-256}]
<p>&quot;VeraCrypt Format.exe&quot; [/n] [/create] [/size number[{K|M|G|T}]] [/p password]&nbsp; [/encryption {AES | Serpent | Twofish | Camellia | Kuznyechik | AES(Twofish) | AES(Twofish(Serpent)) | Serpent(AES) | Serpent(Twofish(AES)) | Twofish(Serpent) | Camellia(Kuznyechik) | Kuznyechik(Twofish) | Camellia(Serpent) | Kuznyechik(AES) | Kuznyechik(Serpent(Camellia)))}] [/hash {sha256|sha-256|sha512|sha-512|whirlpool|blake2s|blake2s-256|streebog|blake2b-512|argon2}]
[/filesystem {None|FAT|NTFS|ExFAT|ReFS}] [/dynamic] [/force] [/silent] [/noisocheck] [FastCreateFile] [/quick]</p>
<p>Note that the order in which options are specified does not matter.</p>
<h4>Examples</h4>
+1
View File
@@ -82,6 +82,7 @@
</li><li><strong><a href="Hash%20Algorithms.html">Hash Algorithms</a></strong>
<ul>
<li><a href="BLAKE2s-256.html">BLAKE2s-256</a>
</li><li><a href="BLAKE2b-512.html">BLAKE2b-512</a>
</li><li><a href="SHA-256.html">SHA-256</a> </li><li><a href="SHA-512.html">SHA-512</a> </li><li><a href="Whirlpool.html">Whirlpool</a>
</li><li><a href="Streebog.html">Streebog</a></li></ul>
</li><li><strong><a href="Key%20Derivation%20Algorithms.html">Key Derivation Algorithms</a></strong>
+2 -2
View File
@@ -56,9 +56,9 @@ Hidden Operating System</a>). If there is a hidden volume within this volume (or
<a href="Header%20Key%20Derivation.html">
<em>Header Key Derivation, Salt, and Iteration Count</em></a>), which can be one of the following:
HMAC-SHA-512, HMAC-SHA-256, HMAC-BLAKE2S-256, HMAC-Whirlpool, HMAC-Streebog.</li>
<li><strong>Argon2id:</strong> Memory-hard key derivation function with internal BLAKE2b hash function.</li>
<li><strong>Argon2id:</strong> Memory-hard key derivation function for non-system volumes, with internal <a href="BLAKE2b-512.html">BLAKE2b-512</a> hash function.</li>
</ul>
<p>If a PRF is explicitly specified by the user, it will be used directly without trying the other possibilities.</p>
<p>If a header key derivation algorithm (or, for PBKDF2-HMAC, a PRF hash) is explicitly specified by the user, it will be used directly without trying the other possibilities.</p>
<p>A password entered by the user (to which one or more keyfiles may have been applied &ndash; see the section
<a href="Keyfiles%20in%20VeraCrypt.html">
<em>Keyfiles</em></a>), a PIM value (if specified) and the salt read in (1) are passed to the header key derivation function, which produces a sequence of values (see the section
+8 -1
View File
@@ -34,13 +34,14 @@
<div class="wikidoc">
<h1>Hash Algorithms</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
In the Volume Creation Wizard, in the password change dialog window, and in the Keyfile Generator dialog window, you can select a hash algorithm when using PBKDF2-HMAC as the key derivation function. When Argon2id is selected as the key derivation function, no hash algorithm selection is available as Argon2id uses its own internal BLAKE2b hash function.
In the Volume Creation Wizard and in the password change dialog window, you can select a hash algorithm when using PBKDF2-HMAC as the key derivation function. In the Keyfile Generator dialog window, the selected hash algorithm is used by the VeraCrypt Random Number Generator as its pool mixing function. When Argon2id is selected as the key derivation function, no separate hash algorithm selection is available for header key derivation because Argon2id uses its own internal BLAKE2b-512 hash function.
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
For PBKDF2-HMAC, the user-selected hash algorithm is used by the VeraCrypt Random Number Generator as a pseudorandom &quot;mixing&quot; function, and by the header key derivation function (HMAC based on a hash function, as specified in PKCS #5 v2.0) as a pseudorandom function. When creating a new volume, the Random Number Generator generates the master key, secondary key (XTS mode), and salt. For more
information, please see the section <a href="Random%20Number%20Generator.html" style="text-align:left; color:#0080c0; text-decoration:none">
Random Number Generator</a> and section <a href="Header%20Key%20Derivation.html" style="text-align:left; color:#0080c0; text-decoration:none">
Header Key Derivation, Salt, and Iteration Count</a>.</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
VeraCrypt currently supports the following hash algorithms for PBKDF2-HMAC:</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
@@ -54,5 +55,11 @@ VeraCrypt currently supports the following hash algorithms for PBKDF2-HMAC:</div
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong style="text-align:left"><a href="Streebog.html">Streebog</a></strong>
</li></ul>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
VeraCrypt also associates the following hash with Argon2id:</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="BLAKE2b-512.html"><strong style="text-align:left">BLAKE2b-512</strong></a> (associated with Argon2id; not selectable for PBKDF2-HMAC)
</li></ul>
<p><a href="BLAKE2s-256.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">Next Section &gt;&gt;</a></p>
</div><div class="ClearBoth"></div></body></html>
+3 -3
View File
@@ -44,7 +44,7 @@ Encryption Scheme</a> and <a href="VeraCrypt%20Volume%20Format%20Specification.h
VeraCrypt Volume Format Specification</a>). In volumes created by VeraCrypt (and for
<a href="System%20Encryption.html" style="text-align:left; color:#0080c0; text-decoration:none">
system encryption</a>), the area is encrypted in XTS mode (see the section <a href="Modes%20of%20Operation.html" style="text-align:left; color:#0080c0; text-decoration:none">
Modes of Operation</a>). VeraCrypt supports two key derivation functions for generating header keys: PBKDF2 (specified in PKCS #5 v2.0) and Argon2id.</div>
Modes of Operation</a>). For system encryption, VeraCrypt uses PBKDF2-HMAC. For non-system volumes and file containers, VeraCrypt supports two key derivation functions for generating header keys: PBKDF2 (specified in PKCS #5 v2.0) and Argon2id.</div>
<h3>PBKDF2-HMAC Key Derivation</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
@@ -55,7 +55,7 @@ The PBKDF2 method uses HMAC-based pseudorandom functions with the following hash
<h3>Argon2id Key Derivation</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Argon2id is a memory-hard key derivation function that provides resistance against both time-memory trade-off attacks and side-channel attacks. Unlike PBKDF2-HMAC, Argon2id does not use a separate hash algorithm selection it uses its own internal hash function (BLAKE2b). Argon2id requires three parameters: memory cost (amount of memory used), time cost (number of iterations), and parallelism (number of threads). VeraCrypt sets the parallelism parameter to 1 for all cases.</div>
Argon2id is a memory-hard key derivation function that provides resistance against both time-memory trade-off attacks and side-channel attacks. Unlike PBKDF2-HMAC, Argon2id does not use a separate hash algorithm selection it uses its own internal hash function (<a href="BLAKE2b-512.html" style="text-align:left; color:#0080c0; text-decoration:none">BLAKE2b-512</a>). Argon2id requires three parameters: memory cost (amount of memory used), time cost (number of iterations), and parallelism (number of threads). VeraCrypt sets the parallelism parameter to 1 for all cases.</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
512-bit salt is used for both key derivation functions, which means there are 2<sup style="text-align:left; font-size:85%">512</sup> keys for each password. This significantly decreases vulnerability to 'off-line' dictionary/'rainbow table' attacks (pre-computing all the keys for a dictionary
@@ -74,7 +74,7 @@ PIM </a>value is not specified or if it is equal to zero, VeraCrypt uses the def
<ul>
<li>For system partition encryption (boot encryption) that uses SHA-256, BLAKE2s-256 or Streebog, <strong>200000</strong> iterations are used.</li>
<li>For system encryption that uses SHA-512 or Whirlpool, <strong>500000</strong> iterations are used.</li>
<li>For non-system encryption and file containers, all derivation algorithms will use <strong>500000</strong> iterations.
<li>For non-system encryption and file containers, all PBKDF2-HMAC variants will use <strong>500000</strong> iterations.
</li></ul>
</p>
<p>When a <a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html">
+1 -1
View File
@@ -38,7 +38,7 @@ A key derivation function (KDF) transforms your password (and optional keyfiles)
<h3>Available Algorithms in VeraCrypt</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:8px; padding:0px">
<strong><a href="Argon2id.html" style="color:#0080c0; text-decoration:none">Argon2id</a>:</strong> A modern, memory-hard KDF (based on BLAKE2b internally). Recommended for new volumes. No separate hash selection is required.
<strong><a href="Argon2id.html" style="color:#0080c0; text-decoration:none">Argon2id</a>:</strong> A modern, memory-hard KDF (based on <a href="BLAKE2b-512.html" style="color:#0080c0; text-decoration:none">BLAKE2b-512</a> internally). Recommended for new non-system volumes. No separate hash selection is required.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding:0px">
<strong><a href="pbkdf2.html" style="color:#0080c0; text-decoration:none">PBKDF2-HMAC</a>:</strong> A widely deployed KDF that uses HMAC with a selectable hash function. Supported HMAC hashes in VeraCrypt:
@@ -93,7 +93,7 @@ When creating a volume or when changing the password, the user has the possibili
<div>&nbsp;</div>
<div>The PIM is treated like a secret value that must be entered by the user each time alongside the password. If the incorrect PIM value is specified, the mount/boot operation will fail.</div>
<div>&nbsp;</div>
<div>Using high PIM values leads to better security thanks to the increased number of iterations but it comes with slower mounting/booting times.</div>
<div>Using high PIM values leads to better security thanks to increased KDF cost parameters but it comes with slower mounting/booting times.</div>
<div>With small PIM values, mounting/booting is quicker but this could decrease security if a weak password is used.</div>
<div>&nbsp;</div>
<div>During the creation of a volume or the encryption of the system, VeraCrypt forces the PIM value to be greater than or equal to a certain minimal value when the password is less than 20 characters. This check is done in order to ensure that, for short passwords,
+4 -4
View File
@@ -50,11 +50,11 @@
written to the pool, this function is applied to the entire pool.</p>
<p>Description of the pool mixing function:</p>
<ol>
<li>Let <em>R</em> be the randomness pool. </li><li>Let <em>H</em> be the hash function selected by the user (SHA-512, BLAKE2S-256, or Whirlpool).
<li>Let <em>R</em> be the randomness pool. </li><li>Let <em>H</em> be the current RNG pool-mixing hash function. In standalone random-pool and keyfile-generation contexts, this is the hash selected by the user. During volume operations, VeraCrypt derives it from the selected header key derivation algorithm: for PBKDF2-HMAC, it is the selected hash (SHA-512, SHA-256, BLAKE2s-256, Whirlpool, or Streebog); for Argon2id, it is <a href="BLAKE2b-512.html">BLAKE2b-512</a>.
</li><li><em>l</em> = byte size of the output of the hash function <em>H</em> (i.e., if
<em>H</em> is BLAKE2S-256, then <em>l</em> = 20; if <em>H</em> is SHA-512, <em>l</em> = 64)
<em>H</em> is BLAKE2s-256 or SHA-256, then <em>l</em> = 32; if <em>H</em> is SHA-512, Whirlpool, Streebog, or BLAKE2b-512, <em>l</em> = 64)
</li><li><em>z</em> = byte size of the randomness pool <em>R </em>(320 bytes) </li><li><em>q</em> = <em>z</em> / <em>l</em> &ndash; 1 (e.g., if <em>H</em> is Whirlpool, then
<em>q</em> = 4) </li><li>Ris divided intol-byte blocksB0...Bq.
<em>q</em> = 4) </li><li><em>R</em> is divided into <em>l</em>-byte blocks <em>B</em>0...<em>B</em>q.
<p>For 0 &le; i &le; q (i.e., for each block B) the following steps are performed:</p>
<ol type="a">
<li><em>M = H</em> (<em>B</em>0 || <em>B</em>1 || ... || <em>B</em>q) [i.e., the randomness pool is hashed using the hash function H, which produces a hash M]
@@ -73,7 +73,7 @@
is greater than the size of the pool, no value is generated and an error is returned).
</li><li>The state of each bit in the pool is inverted (i.e., 0 is changed to 1, and 1 is changed to 0).
</li><li>Data obtained from some of the sources listed above is added to the pool as described above.
</li><li>The content of the pool is transformed using the pool mixing function. Note: The function uses a cryptographically secure one-way hash function selected by the user (for more information, see the section
</li><li>The content of the pool is transformed using the pool mixing function. Note: The function uses the cryptographically secure one-way hash function associated with the selected KDF/hash option (for more information, see the section
<em>Pool Mixing Function</em> above). </li><li>The transformed content of the pool is XORed into the output buffer as follows:
<ol type="a">
<li>The output buffer write cursor is set to 0 (the first byte of the buffer). </li><li>The byte at the position of the pool cursor is read from the pool and XORed into the byte in the output buffer at the position of the output buffer write cursor.
+1 -1
View File
@@ -60,7 +60,7 @@ The number of PBKDF2 iterations depends on the selected HMAC hash, the context (
<h4>Output Length</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding:0px">
The derived key length depends on the selected encryption algorithm(s) (e.g., 256 bits for AES-256, 768 bits for AES-Twofish-Serpent cascades).
The amount of derived header key material consumed depends on the selected encryption algorithm(s). For current XTS volumes, VeraCrypt uses both primary and secondary header keys; for example, AES-256-XTS uses 512 bits in total (two 256-bit keys), and an AES-Twofish-Serpent-XTS cascade uses 1536 bits in total (six 256-bit keys).
</div>
<h3>Advantages and Considerations</h3>
+174
View File
@@ -0,0 +1,174 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>VeraCrypt - Бесплатное надёжное шифрование дисков с открытым исходным кодом</title>
<meta name="description" content="VeraCrypt это бесплатное программное обеспечение для шифрования дисков с открытым исходным кодом для Windows, Mac OS X (macOS) и Linux. В случае, если злоумышленник вынуждает вас раскрыть пароль, VeraCrypt обеспечивает правдоподобное отрицание наличия шифрования. В отличие от пофайлового шифрования, VeraCrypt шифрует данные в реальном времени (на лету), автоматически, прозрачно, требует очень мало памяти и не использует временные незашифрованные файлы."/>
<meta name="keywords" content="encryption, security, шифрование, безопасность"/>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div>
<a href="Documentation.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
</div>
<div id="menu">
<ul>
<li><a href="Home.html">Начало</a></li>
<li><a href="Code.html">Исходный код</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="Key%20Derivation%20Algorithms.html">Алгоритмы формирования ключа</a>
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
<a href="Argon2id.html">Argon2id</a>
</p></div>
<div class="wikidoc">
<h1>Argon2id</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Argon2id &mdash; это функция формирования ключа с повышенными требованиями к памяти, разработанная для противодействия как атакам с компромиссом время-память, так и атакам по сторонним каналам. В 2015 году она была выбрана победителем Password Hashing Competition (PHC) и определена в RFC 9106. VeraCrypt поддерживает Argon2id как альтернативу PBKDF2-HMAC для формирования ключа заголовка несистемных томов.
</div>
<h3>Основные свойства</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Повышенные требования к памяти:</strong> использует настраиваемый объём памяти, что повышает устойчивость к атакам с применением специализированного оборудования.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Устойчивость к атакам по сторонним каналам:</strong> сочетает шаблоны доступа к памяти, зависящие и не зависящие от данных.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Внутренняя хеш-функция:</strong> использует <a href="BLAKE2b-512.html" style="color:#0080c0; text-decoration:none">BLAKE2b-512</a> внутри алгоритма, поэтому отдельный выбор хеш-алгоритма не требуется.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Настраиваемые параметры:</strong> позволяет изменять затраты памяти, затраты времени и степень параллелизма.
</li>
</ul>
<h3>Варианты Argon2</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
У Argon2 есть три варианта:
</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Argon2d:</strong> использует доступ к памяти, зависящий от данных; устойчив к атакам с компромиссом время-память, но уязвимее к атакам по сторонним каналам.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Argon2i:</strong> использует доступ к памяти, не зависящий от данных; устойчив к атакам по сторонним каналам, но менее устойчив к атакам с компромиссом время-память.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Argon2id:</strong> гибридный вариант, объединяющий оба подхода и обеспечивающий устойчивость к обоим типам атак (используется в VeraCrypt).
</li>
</ul>
<h3>Параметры в VeraCrypt</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
VeraCrypt использует Argon2id со следующей конфигурацией параметров:
</div>
<h4>Затраты памяти (m_cost)</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Объём памяти, используемый при формировании ключа, управляется значением PIM:
</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Формула:</strong> m_cost(pim) = min(64 MiB + (pim - 1) &times; 32 MiB, 1024 MiB)
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Диапазон:</strong> от 64 MiB до 1024 MiB (ограничение достигается при PIM = 31)
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>По умолчанию:</strong> 416 MiB (эквивалентно PIM = 12)
</li>
</ul>
<h4>Затраты времени (t_cost)</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Количество итераций, выполняемых при формировании ключа:
</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Для PIM &le; 31:</strong> t_cost(pim) = 3 + floor((pim - 1) / 3)
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Для PIM &gt; 31:</strong> t_cost(pim) = 13 + (pim - 31)
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>По умолчанию:</strong> 6 итераций (эквивалентно PIM = 12)
</li>
</ul>
<h4>Параллелизм</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Количество параллельных потоков, используемых при вычислении:
</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Значение:</strong> в VeraCrypt всегда фиксировано на уровне 1 потока.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Причина:</strong> обеспечивает одинаковое поведение на разных аппаратных конфигурациях.
</li>
</ul>
<h3>Преимущества перед PBKDF2</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Требовательность к памяти:</strong> требует выделения значительного объёма памяти, что делает атаки с использованием GPU и ASIC дороже.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Современная конструкция:</strong> специально разработан с учётом современных методов атак.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Устойчивость к атакам по сторонним каналам:</strong> содержит встроенные меры защиты от атак по времени доступа к кэшу и других сторонних каналов.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Стандартизация:</strong> официально стандартизован в RFC 9106.
</li>
</ul>
<h3>Рекомендации по использованию</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
При использовании Argon2id в VeraCrypt:
</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Требования к памяти:</strong> убедитесь, что доступен достаточный объём ОЗУ, особенно при больших значениях PIM.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Производительность:</strong> более высокие затраты памяти могут увеличить время монтирования, но обеспечивают более высокий уровень защиты.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Совместимость:</strong> доступен в версиях VeraCrypt, поддерживающих несколько функций формирования ключа.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Без выбора хеш-алгоритма:</strong> в отличие от PBKDF2-HMAC, отдельный хеш-алгоритм выбирать не нужно.
</li>
</ul>
<h3>Технические характеристики</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<strong>Алгоритм:</strong> Argon2id согласно RFC 9106<br/>
<strong>Внутренняя хеш-функция:</strong> <a href="BLAKE2b-512.html" style="color:#0080c0; text-decoration:none">BLAKE2b-512</a><br/>
<strong>Размер соли:</strong> 512 бит (как и у PBKDF2-HMAC)<br/>
<strong>Длина вывода KDF заголовка:</strong> фиксирована и составляет 1536 бит (192 байта) для текущего формата VeraCrypt. Для выбранного алгоритма шифрования используется требуемый префикс этого вывода (например, первые 64 байта для AES (AES-256-XTS)). Сторонние реализации должны запрашивать у Argon2id 192 байта до выбора требуемого префикса; запрос только длины ключевого материала выбранного алгоритма даёт другой вывод Argon2id.<br/>
<strong>Версия:</strong> Argon2 версии 0x13 (19 в десятичной системе)
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Дополнительные сведения о значениях PIM и их влиянии на параметры Argon2id см. в разделе
<a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html" style="text-align:left; color:#0080c0; text-decoration:none">
Персональный множитель итераций (PIM)</a>.
</div>
</div><div class="ClearBoth"></div></body></html>
+51
View File
@@ -0,0 +1,51 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>VeraCrypt - Бесплатное надёжное шифрование дисков с открытым исходным кодом</title>
<meta name="description" content="VeraCrypt это бесплатное программное обеспечение для шифрования дисков с открытым исходным кодом для Windows, Mac OS X (macOS) и Linux. В случае, если злоумышленник вынуждает вас раскрыть пароль, VeraCrypt обеспечивает правдоподобное отрицание наличия шифрования. В отличие от пофайлового шифрования, VeraCrypt шифрует данные в реальном времени (на лету), автоматически, прозрачно, требует очень мало памяти и не использует временные незашифрованные файлы."/>
<meta name="keywords" content="encryption, security, шифрование, безопасность"/>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div>
<a href="Documentation.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
</div>
<div id="menu">
<ul>
<li><a href="Home.html">Начало</a></li>
<li><a href="Code.html">Исходный код</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="Hash%20Algorithms.html">Алгоритмы хеширования</a>
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
<a href="BLAKE2b-512.html">BLAKE2b-512</a>
</p></div>
<div class="wikidoc">
<h1>BLAKE2b-512</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<p>
BLAKE2b — это вариант BLAKE2 с 64-битовыми словами и преемник BLAKE-512. BLAKE2b и BLAKE2s указаны в документе RFC 7693.
</p>
<p>
VeraCrypt использует BLAKE2b с максимальным выходным размером 64 байта (512 бит) внутри <a href="Argon2id.html" style="text-align:left; color:#0080c0; text-decoration:none">Argon2id</a>. Для формирования ключа заголовка несистемных томов BLAKE2b-512 применяется при выборе алгоритма формирования ключа Argon2 в VeraCrypt; внутри это соответствует Argon2id. В контекстах, связанных с хешированием, например при перемешивании пула случайных чисел и создании ключевых файлов, эта же базовая хеш-функция может отображаться как BLAKE2b-512.
</p>
<p>
BLAKE2b-512 не предлагается как отдельный алгоритм хеширования PBKDF2-HMAC. Чтобы использовать BLAKE2b-512 при формировании ключа заголовка несистемного тома VeraCrypt, выберите <a href="Argon2id.html" style="text-align:left; color:#0080c0; text-decoration:none">Argon2id</a>; для Argon2id отдельный выбор алгоритма хеширования недоступен.
</p>
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<a href="SHA-256.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">Следующий раздел &gt;&gt;</a></div>
</div><div class="ClearBoth"></div></body></html>
+2 -2
View File
@@ -50,9 +50,9 @@ BLAKE2 убирает добавление констант к словам со
BLAKE2b и BLAKE2s указаны в документе RFC 7693.
</p>
<p>
VeraCrypt использует только BLAKE2s с максимальным выходным размером 32 байта (256 бит).
VeraCrypt использует BLAKE2s с максимальным выходным размером 32 байта (256 бит) как алгоритм хеширования PBKDF2-HMAC. Для Argon2id VeraCrypt внутренне использует <a href="BLAKE2b-512.html" style="text-align:left; color:#0080c0; text-decoration:none">BLAKE2b-512</a>.
</p>
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<a href="SHA-256.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">Следующий раздел &gt;&gt;</a></div>
<a href="BLAKE2b-512.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">Следующий раздел &gt;&gt;</a></div>
</div><div class="ClearBoth"></div></body></html>
+5 -5
View File
@@ -48,8 +48,8 @@
</tr>
<tr>
<td>&nbsp;<em>/hash</em></td>
<td>После этого ключа указывается хеш-алгоритм PRF, используемый при монтировании тома. Возможные значения ключа /hash: <code>sha256, sha-256, sha512, sha-512, whirlpool, blake2s</code> и <code>blake2s-256</code>. Если ключ <code>/hash</code> не указан, VeraCrypt будет пробовать
все доступные PRF-алгоритмы, тем самым увеличивая время монтирования.</td>
<td>После этого ключа указывается хеш-алгоритм PRF или KDF, используемый при монтировании тома. Возможные значения ключа /hash: <code>sha256, sha-256, sha512, sha-512, whirlpool, blake2s, blake2s-256, streebog</code> и <code>blake2b-512</code> (для томов Argon2id). Если ключ <code>/hash</code> не указан, VeraCrypt будет пробовать
все доступные PRF/KDF-алгоритмы, тем самым увеличивая время монтирования.</td>
</tr>
<tr>
<td id="volume">&nbsp;<em>/volume</em> или <em>/v</em></td>
@@ -233,7 +233,7 @@
<tr>
<td>&nbsp;<em>/hash</em></td>
<td>(Только с ключом <code>/create</code>)<br>
После этого ключа указывается хеш-алгоритм PRF, используемый при создании тома. Синтаксис такой же, как у VeraCrypt.exe.</td>
После этого ключа указывается хеш-алгоритм PRF или KDF, используемый при создании тома. Синтаксис такой же, как у VeraCrypt.exe; также принимается <code>argon2</code> как псевдоним Argon2id.</td>
</tr>
<tr>
<td>&nbsp;<em>/encryption</em></td>
@@ -305,9 +305,9 @@
</tbody>
</table>
<h4>Синтаксис</h4>
<p><code>VeraCrypt.exe [/tc] [/hash {sha256|sha-256|sha512|sha-512|whirlpool |blake2s|blake2s-256}][/a [devices|favorites]] [/b] [/c [y|n|f]] [/d [буква диска]] [/e] [/f] [/h [y|n]] [/k ключевой файл или путь поиска] [tryemptypass [y|n]] [/l буква диска] [/m {bk|rm|recovery|ro|sm|ts|noattach}]
<p><code>VeraCrypt.exe [/tc] [/hash {sha256|sha-256|sha512|sha-512|whirlpool|blake2s|blake2s-256|streebog|blake2b-512}][/a [devices|favorites]] [/b] [/c [y|n|f]] [/d [буква диска]] [/e] [/f] [/h [y|n]] [/k ключевой файл или путь поиска] [tryemptypass [y|n]] [/l буква диска] [/m {bk|rm|recovery|ro|sm|ts|noattach}]
[/p пароль] [/pim значение pim] [/q [background|preferences]] [/s] [/tokenlib путь] [/v том] [/w]</code></p>
<p><code>&quot;VeraCrypt Format.exe&quot; [/n] [/create] [/size число[{K|M|G|T}]] [/p пароль]&nbsp; [/encryption {AES | Serpent | Twofish | Camellia | Kuznyechik | AES(Twofish) | AES(Twofish(Serpent)) | Serpent(AES) | Serpent(Twofish(AES)) | Twofish(Serpent) | Camellia(Kuznyechik) | Kuznyechik(Twofish) | Camellia(Serpent) | Kuznyechik(AES) | Kuznyechik(Serpent(Camellia))}] [/hash {sha256|sha-256|sha512|sha-512|whirlpool|blake2s|blake2s-256}]
<p><code>&quot;VeraCrypt Format.exe&quot; [/n] [/create] [/size число[{K|M|G|T}]] [/p пароль]&nbsp; [/encryption {AES | Serpent | Twofish | Camellia | Kuznyechik | AES(Twofish) | AES(Twofish(Serpent)) | Serpent(AES) | Serpent(Twofish(AES)) | Twofish(Serpent) | Camellia(Kuznyechik) | Kuznyechik(Twofish) | Camellia(Serpent) | Kuznyechik(AES) | Kuznyechik(Serpent(Camellia))}] [/hash {sha256|sha-256|sha512|sha-512|whirlpool|blake2s|blake2s-256|streebog|blake2b-512|argon2}]
[/filesystem {пусто|FAT|NTFS|ExFAT|ReFS}] [/dynamic] [/force] [/silent] [/noisocheck] [FastCreateFile] [/quick]</code></p>
<p>Порядок, в котором указаны параметры, не имеет значения.</p>
<h4>Примеры</h4>
+6
View File
@@ -82,11 +82,17 @@
</li><li><strong><a href="Hash%20Algorithms.html">Алгоритмы хеширования</a></strong>
<ul>
<li><a href="BLAKE2s-256.html">BLAKE2s-256</a></li>
<li><a href="BLAKE2b-512.html">BLAKE2b-512</a></li>
<li><a href="SHA-256.html">SHA-256</a></li>
<li><a href="SHA-512.html">SHA-512</a></li>
<li><a href="Whirlpool.html">Whirlpool</a></li>
<li><a href="Streebog.html">Streebog</a></li>
</ul>
</li><li><strong><a href="Key%20Derivation%20Algorithms.html">Алгоритмы формирования ключа</a></strong>
<ul>
<li><a href="Argon2id.html">Argon2id</a></li>
<li><a href="pbkdf2.html">PBKDF2</a></li>
</ul>
</li><li><strong><a href="Supported%20Operating%20Systems.html">Поддерживаемые операционные системы</a></strong>
</li><li><strong><a href="Command%20Line%20Usage.html">Использование в командной строке</a></strong>
</li><li><strong><a href="Security%20Model.html">Модель безопасности</a></strong>
+7 -3
View File
@@ -53,11 +53,15 @@
и сгенерированные в ходе дешифрования, хранятся в ОЗУ (VeraCrypt никогда не сохраняет их на диске). Указанные ниже параметры
неизвестны и определяются методом проб и ошибок (то есть проверкой всех возможных комбинаций следующего):
<ol type="a">
<li>PRF (псевдослучайная функция), применяемая при формировании (деривации) ключа заголовка (как определено в PKCS #5 v2.0; см.
<li>Функция формирования ключа (KDF) и связанные параметры:
<ul>
<li><strong>PBKDF2-HMAC:</strong> PRF (псевдослучайная функция), применяемая при формировании (деривации) ключа заголовка (как определено в PKCS #5 v2.0; см.
<a href="Header%20Key%20Derivation.html">
<em>Формирование ключа заголовка, соль и количество итераций</em></a>), которая может быть одной из следующих:
<p>HMAC-SHA-512, HMAC-SHA-256, HMAC-BLAKE2S-256, HMAC-Whirlpool.</p>
<p>Если PRF указана пользователем явно, используется непосредственно она, без опробования других функций.</p>
HMAC-SHA-512, HMAC-SHA-256, HMAC-BLAKE2S-256, HMAC-Whirlpool, HMAC-Streebog.</li>
<li><strong>Argon2id:</strong> функция формирования ключа с повышенными требованиями к памяти для несистемных томов, использующая внутреннюю хеш-функцию <a href="BLAKE2b-512.html">BLAKE2b-512</a>.</li>
</ul>
<p>Если алгоритм формирования ключа заголовка (или, для PBKDF2-HMAC, хеш PRF) явно указан пользователем, он используется напрямую без опробования других вариантов.</p>
<p>Введённый пользователем пароль (который может сопровождаться одним или несколькими ключевыми файлами – см. раздел
<a href="Keyfiles%20in%20VeraCrypt.html">
<em>Ключевые файлы</em></a>), значение PIM (если указано) и соль, считанные на этапе 1, передаются в функцию формирования
+11 -8
View File
@@ -34,17 +34,14 @@
<div class="wikidoc">
<h1>Алгоритмы хеширования</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Выбор алгоритма хеширования предлагается в мастере создания томов, в диалоговом окне смены пароля,
а также в окне генератора ключевых файлов. Выбранный пользователем алгоритм хеширования применяется
во встроенном в VeraCrypt генераторе случайных чисел как функция псевдослучайного &quot;смешивания&quot;,
а также в функции формирования ключа заголовка (HMAC – алгоритме усиления криптостойкости других
криптоалгоритмов на основе хеш-функции, как определено в PKCS #5 v2.0) как псевдослучайная функция.
При создании нового тома, генератором случайных чисел создаются мастер-ключ, вторичный ключ (режим XTS)
и соль. Более подробную информацию см. в разделах <a href="Random%20Number%20Generator.html" style="text-align:left; color:#0080c0; text-decoration:none">
В мастере создания томов и диалоговом окне смены пароля можно выбрать алгоритм хеширования при использовании PBKDF2-HMAC как функции формирования ключа. В окне генератора ключевых файлов выбранный алгоритм хеширования применяется генератором случайных чисел VeraCrypt как функция перемешивания пула. Если в качестве функции формирования ключа выбран Argon2id, отдельный выбор алгоритма хеширования для формирования ключа заголовка недоступен, поскольку Argon2id использует собственную внутреннюю хеш-функцию BLAKE2b-512.
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Для PBKDF2-HMAC выбранный пользователем алгоритм хеширования применяется генератором случайных чисел VeraCrypt как псевдослучайная функция &quot;смешивания&quot;, а также функцией формирования ключа заголовка (HMAC на основе хеш-функции, как определено в PKCS #5 v2.0) как псевдослучайная функция. При создании нового тома генератор случайных чисел создаёт мастер-ключ, вторичный ключ (режим XTS) и соль. Более подробную информацию см. в разделах <a href="Random%20Number%20Generator.html" style="text-align:left; color:#0080c0; text-decoration:none">
Генератор случайных чисел</a> и <a href="Header%20Key%20Derivation.html" style="text-align:left; color:#0080c0; text-decoration:none">
Формирование ключа заголовка, соль и количество итераций</a>.</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
В настоящее время VeraCrypt поддерживает следующие алгоритмы хеширования:</div>
В настоящее время VeraCrypt поддерживает следующие алгоритмы хеширования для PBKDF2-HMAC:</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="BLAKE2s-256.html"><strong style="text-align:left">BLAKE2s-256</strong></a>
@@ -57,5 +54,11 @@
</li><li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong style="text-align:left"><a href="Streebog.html">Streebog</a></strong>
</li></ul>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
VeraCrypt также связывает с Argon2id следующую хеш-функцию:</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="BLAKE2b-512.html"><strong style="text-align:left">BLAKE2b-512</strong></a> (связана с Argon2id; недоступна для выбора в PBKDF2-HMAC)
</li></ul>
<p><a href="BLAKE2s-256.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">Следующий раздел &gt;&gt;</a></p>
</div><div class="ClearBoth"></div></body></html>
+28 -17
View File
@@ -45,44 +45,55 @@ VeraCrypt (в случае
Спецификация формата томов VeraCrypt</a>). В томах, созданных с помощью VeraCrypt (и для
<a href="System%20Encryption.html" style="text-align:left; color:#0080c0; text-decoration:none">
шифрования системы</a>), эта область зашифрована в режиме XTS (см. раздел <a href="Modes%20of%20Operation.html" style="text-align:left; color:#0080c0; text-decoration:none">
Режимы работы</a>). Для генерирования ключа заголовка и вторичного ключа заголовка (режим XTS)
VeraCrypt использует метод PBKDF2, определённый в PKCS #5 v2.0; см.
Режимы работы</a>). Для шифрования системы VeraCrypt использует PBKDF2-HMAC. Для несистемных томов и файловых контейнеров VeraCrypt поддерживает две функции формирования ключей заголовка: PBKDF2,
определённую в PKCS #5 v2.0; см.
<a href="References.html" style="text-align:left; color:#0080c0; text-decoration:none">
[7]</a>.</div>
[7]</a>, и Argon2id.</div>
<h3>Формирование ключа PBKDF2-HMAC</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
В программе применяется 512-битовая соль, что означает 2<sup style="text-align:left; font-size:85%">512</sup>
ключей для каждого пароля. Благодаря этому значительно повышается устойчивость к атакам с офлайн-словарями/"радужной
таблицей" (соль крайне осложняет предвычисление всех ключей для словаря паролей) [7]. Соль состоит из
случайных значений, созданных
<a href="Random%20Number%20Generator.html" style="text-align:left; color:#0080c0; text-decoration:none">
генератором случайных чисел VeraCrypt</a> в процессе создания тома. Функция формирования (деривации) ключа
заголовка основана на HMAC-SHA-512, HMAC-SHA-256, HMAC-BLAKE2S-256, HMAC-Whirlpool или HMAC-Streebog (см. [8, 9, 20, 22]) &ndash;
Метод PBKDF2 использует псевдослучайные функции на основе HMAC со следующими доступными алгоритмами хеширования: HMAC-SHA-512, HMAC-SHA-256, HMAC-BLAKE2S-256, HMAC-Whirlpool или HMAC-Streebog (см. [8, 9, 20, 22]) &ndash;
какая из них будет применяться, выбирается пользователем. Длина сформированного ключа не зависит от
размера вывода лежащей в основе хеш-функции. Например, длина ключа заголовка для шифра AES-256 всегда равна
256 битам, даже если используется HMAC-SHA-512 (в режиме XTS применяется дополнительный 256-битовый
вторичный ключ заголовка; следовательно, для AES-256 в целом применяются два 256-битовых ключа). Более
подробную информацию см. в [7]. Для формирования ключа заголовка выполняется большое количество итераций,
что увеличивает время, необходимое для полного поиска паролей (то есть атакой методом перебора)&nbsp;[7].</div>
<h3>Формирование ключа Argon2id</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<p>До версии 1.12 в VeraCrypt всегда использовалось фиксированное количество итераций, зависящее только от типа
тома и алгоритма формирования ключа.</p>
Argon2id — это функция формирования ключа с повышенными требованиями к памяти, обеспечивающая устойчивость к атакам с компромиссом время-память и атакам по сторонним каналам. В отличие от PBKDF2-HMAC, Argon2id не использует отдельный выбор алгоритма хеширования, а применяет собственную внутреннюю хеш-функцию (<a href="BLAKE2b-512.html" style="text-align:left; color:#0080c0; text-decoration:none">BLAKE2b-512</a>). Для Argon2id требуются три параметра: затраты памяти (объём используемой памяти), затраты времени (число итераций) и параллелизм (число потоков). VeraCrypt во всех случаях устанавливает параметр параллелизма равным 1.</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Для обеих функций формирования ключа применяется 512-битовая соль, что означает 2<sup style="text-align:left; font-size:85%">512</sup>
ключей для каждого пароля. Благодаря этому значительно повышается устойчивость к атакам с офлайн-словарями/"радужной
таблицей" (соль крайне осложняет предвычисление всех ключей для словаря паролей) [7]. Соль состоит из
случайных значений, созданных
<a href="Random%20Number%20Generator.html" style="text-align:left; color:#0080c0; text-decoration:none">
генератором случайных чисел VeraCrypt</a> в процессе создания тома.</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<p>До версии 1.12 VeraCrypt всегда использовал PBKDF2-HMAC с фиксированным количеством итераций, зависящим только от типа
тома и используемого алгоритма хеширования.</p>
<ul></ul>
<p>Начиная с версии 1.12, поле <a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html">
PIM</a> (<a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html">Персональный множитель итераций</a>)
даёт пользователям больший контроль за количеством итераций, используемых в функции формирования ключа.</p>
даёт пользователям больший контроль над вычислительными параметрами, используемыми функцией формирования ключа.</p>
<h4>Параметры PBKDF2-HMAC</h4>
<p>Если <a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html">
PIM</a> не указан или равен нулю, VeraCrypt использует следующие стандартные значения:</p>
PIM</a> не указан или равен нулю, VeraCrypt использует следующие стандартные значения для PBKDF2-HMAC:</p>
<ul>
<li>Для шифрования системы (шифрование загрузки), если используется SHA-256, BLAKE2s-256 или Streebog, <i>число итераций</i> = <strong>200 000</strong>.</li>
<li>Для шифрования системы, если используется SHA-512 или Whirlpool, а также для несистемных разделов и файловых контейнеров <i>число итераций</i> = <strong>500 000</strong>.
<li>Для шифрования системы, если используется SHA-512 или Whirlpool, а также для несистемных разделов и файловых контейнеров с PBKDF2-HMAC <i>число итераций</i> = <strong>500 000</strong>.
</li></ul>
</p>
<p>Если <a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html">
PIM</a> указан, то количество итераций функции формирования ключа вычисляется следующим образом:</p>
PIM</a> указан, то количество итераций функции формирования ключа PBKDF2 вычисляется следующим образом:</p>
<ul>
<li>Для шифрования системы, если не используется SHA-512 или Whirlpool, <i>число итераций</i> = <strong>PIM &times; 2048</strong>.</li>
<li>Для шифрования системы, если используется SHA-512 или Whirlpool, а также для несистемных разделов и файлов-контейнеров <i>число итераций</i> = <strong>15 000 &#43; (PIM &times; 1000)</strong>.
<li>Для шифрования системы, если используется SHA-512 или Whirlpool, а также для несистемных разделов и файлов-контейнеров с PBKDF2-HMAC <i>число итераций</i> = <strong>15 000 &#43; (PIM &times; 1000)</strong>.
</li></ul>
<h4>Параметры Argon2id</h4>
<p>Для Argon2id значение PIM управляет затратами памяти и времени. Если PIM не указан, используются параметры по умолчанию, соответствующие PIM = 12 (416 MiB памяти, 6 итераций).</p>
<p>Для Argon2id VeraCrypt формирует фиксированные 192 байта ключевого материала заголовка для текущего формата томов независимо от выбранного алгоритма шифрования. Затем выбранный алгоритм шифрования использует требуемый префикс этого вывода. Например, AES-XTS использует первые 64 байта. Реализации должны запрашивать у Argon2id 192 байта, а затем выбирать требуемый префикс; запрос только длины ключевого материала выбранного алгоритма даёт другой вывод Argon2id, поскольку Argon2id включает запрошенную длину вывода в своё вычисление.</p>
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Ключи заголовка, используемые шифрами при каскадном (последовательном) шифровании, не зависят друг от друга,
@@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>VeraCrypt - Бесплатное надёжное шифрование дисков с открытым исходным кодом</title>
<meta name="description" content="VeraCrypt это бесплатное программное обеспечение для шифрования дисков с открытым исходным кодом для Windows, Mac OS X (macOS) и Linux. В случае, если злоумышленник вынуждает вас раскрыть пароль, VeraCrypt обеспечивает правдоподобное отрицание наличия шифрования. В отличие от пофайлового шифрования, VeraCrypt шифрует данные в реальном времени (на лету), автоматически, прозрачно, требует очень мало памяти и не использует временные незашифрованные файлы."/>
<meta name="keywords" content="encryption, security, шифрование, безопасность"/>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div>
<a href="Documentation.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
</div>
<div id="menu">
<ul>
<li><a href="Home.html">Начало</a></li>
<li><a href="Code.html">Исходный код</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="Key%20Derivation%20Algorithms.html">Алгоритмы формирования ключа</a>
</p></div>
<div class="wikidoc">
<h1>Алгоритмы формирования ключа</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Функция формирования ключа (KDF) преобразует пароль и, при наличии, ключевые файлы в криптографические ключи, используемые для расшифрования заголовка тома VeraCrypt. Такие функции замедляют атаки перебором и защищают от предвычислений благодаря большой случайной соли и настраиваемому рабочему фактору, например числу итераций или объему памяти.
</div>
<h3>Доступные алгоритмы в VeraCrypt</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:8px; padding:0px">
<strong><a href="Argon2id.html" style="color:#0080c0; text-decoration:none">Argon2id</a>:</strong> современная функция формирования ключа с повышенными требованиями к памяти, внутри использующая <a href="BLAKE2b-512.html" style="color:#0080c0; text-decoration:none">BLAKE2b-512</a>. Рекомендуется для новых несистемных томов. Отдельный выбор хеш-алгоритма не требуется.
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding:0px">
<strong><a href="pbkdf2.html" style="color:#0080c0; text-decoration:none">PBKDF2-HMAC</a>:</strong> широко применяемая KDF, использующая HMAC с выбираемой хеш-функцией. Поддерживаемые HMAC-хеши в VeraCrypt:
<a href="SHA-512.html" style="color:#0080c0; text-decoration:none">SHA-512</a>, <a href="SHA-256.html" style="color:#0080c0; text-decoration:none">SHA-256</a>, <a href="Whirlpool.html" style="color:#0080c0; text-decoration:none">Whirlpool</a>, <a href="BLAKE2s-256.html" style="color:#0080c0; text-decoration:none">BLAKE2s-256</a> и <a href="Streebog.html" style="color:#0080c0; text-decoration:none">Streebog</a>.
</li>
</ul>
</div>
</div><div class="ClearBoth"></div></body></html>
@@ -37,27 +37,57 @@
<h1>PIM (Персональный множитель итераций)</h1>
<div>
<p>PIM расшифровывается как &quot;Персональный множитель итераций&quot;. Это параметр впервые появился в VeraCrypt 1.12,
его значение определяет количество итераций, используемых функцией формирования ключа заголовка. Это значение можно
указать в диалоговом окне пароля или в командной строке.</p>
<p>Если значение PIM указано, количество итераций вычисляется следующим образом:</p>
его значение управляет вычислительными параметрами функции формирования ключа заголовка. Это значение можно указать
в диалоговом окне пароля или в командной строке.</p>
<p>Точное значение PIM зависит от используемой функции формирования ключа (KDF):</p>
<h3>Формирование ключа PBKDF2-HMAC</h3>
<p>При использовании PBKDF2-HMAC значение PIM управляет количеством итераций следующим образом:</p>
<ul>
<li>Для шифрования системного раздела без использования SHA-512 или Whirlpool <i>количество итераций</i> = <strong>PIM &times; 2048</strong> </li>
<li>Для шифрования системного раздела с использованием SHA-512 или Whirlpool <i>количество итераций</i> = <strong>15 000 &#43; (PIM &times; 1000)</strong></li>
<li>Для шифрования несистемных разделов и файловых контейнеров <i>количество итераций</i> = <strong>15 000 &#43; (PIM &times; 1000)</strong></li>
</ul>
<p>Если значение PIM не указано, будет использоваться количество итераций по умолчанию, применяемое в версиях до 1.12
(см. <a href="Header%20Key%20Derivation.html">Формирование ключа заголовка</a>).
Это можно резюмировать следующим образом:<br/>
<h3>Формирование ключа Argon2id</h3>
<p>При использовании Argon2id значение PIM управляет параметрами затрат памяти и времени:</p>
<ul>
<li><strong>Затраты памяти (m_cost) в MiB:</strong><br/>
m_cost(pim) = min(64 MiB + (pim - 1) * 32 MiB, 1024 MiB)<br/>
Затраты памяти увеличиваются на 32 MiB при каждом увеличении PIM, начиная с 64 MiB, и ограничиваются 1024 MiB, когда PIM достигает 31 или более.
</li>
<li><strong>Затраты времени (t_cost) в итерациях:</strong><br/>
Если PIM ≤ 31: t_cost(pim) = 3 + floor((pim - 1) / 3)<br/>
Если PIM > 31: t_cost(pim) = 13 + (pim - 31)<br/>
Затраты времени увеличиваются на 1 итерацию при каждых 3 увеличениях PIM, когда PIM ≤ 31, и на 1 итерацию при каждом увеличении PIM, когда PIM > 31.
</li>
<li><strong>Параллелизм:</strong> фиксирован на 1 поток во всех случаях.</li>
</ul>
<p><strong>Примеры Argon2id:</strong></p>
<ul>
<li>При PIM = 12: затраты памяти = 416 MiB, затраты времени = 6 итераций</li>
<li>При PIM = 31: затраты памяти = 1024 MiB, затраты времени = 13 итераций</li>
<li>При PIM = 32: затраты памяти = 1024 MiB, затраты времени = 14 итераций</li>
</ul>
<p>Если значение PIM не указано, VeraCrypt будет использовать параметры по умолчанию, применявшиеся в версиях до 1.12 для PBKDF2-HMAC
(см. <a href="Header%20Key%20Derivation.html">Формирование ключа заголовка</a>). Для Argon2id параметры по умолчанию эквивалентны PIM = 12:
</p>
<ul>
<li><strong>Значения PBKDF2-HMAC по умолчанию:</strong></li>
<ul>
<li>Для шифрования системного раздела (шифрования загрузки) с использованием SHA-256, BLAKE2s-256 или Streebog применяется <strong>200 000</strong> итераций, что эквивалентно значению PIM <strong>98</strong>.</li>
<li>Для шифрования системного раздела с использованием SHA-512 или Whirlpool применяется <strong>500 000</strong> итераций, что эквивалентно значению PIM <strong>485</strong>.</li>
<li>Для шифрования несистемных разделов и файловых контейнеров все алгоритмы формирования ключа (деривации) будут использовать <strong>500 000</strong> итераций, что эквивалентно значению PIM <strong>485</strong>.</li>
<li>Для шифрования несистемных разделов и файловых контейнеров с PBKDF2-HMAC применяется <strong>500 000</strong> итераций, что эквивалентно значению PIM <strong>485</strong>.</li>
</ul>
</p>
<li><strong>Значения Argon2id по умолчанию:</strong> затраты памяти = 416 MiB, затраты времени = 6 итераций (эквивалентно PIM = 12)</li>
</ul>
<p>До версии 1.12 безопасность тома VeraCrypt основывалась только на надёжности пароля, поскольку VeraCrypt использовал
фиксированное количество итераций.<br>
Благодаря реализации управления PIM у VeraCrypt появилось двумерное пространство безопасности для томов, основанное
на паре (Пароль, PIM). Это обеспечивает большую гибкость при настройке желаемого уровня безопасности, одновременно
Благодаря реализации управления PIM у VeraCrypt появилось многомерное пространство безопасности для томов, основанное
на сочетании (Пароль, PIM, функция формирования ключа). Это обеспечивает большую гибкость при настройке желаемого уровня безопасности, одновременно
контролируя производительность операции монтирования/загрузки.</p>
<h3>Использование PIM</h3>
Указывать PIM не обязательно.</div>
@@ -69,7 +99,7 @@
<div>PIM обрабатывается как секретное значение, которое пользователь должен вводить каждый раз вместе с паролем.
Если указано неверное значение PIM, операция монтирования/загрузки завершится ошибкой.</div>
<div>&nbsp;</div>
<div>Чем больше PIM, тем выше безопасность, так как увеличивается число итераций, но тем медленнее
<div>Чем больше PIM, тем выше безопасность благодаря увеличению параметров затрат KDF, но тем медленнее
монтирование/загрузка.</div>
<div>Чем меньше PIM, тем быстрее монтирование/загрузка, но возможно ухудшение безопасности, если используется
слабый пароль.</div>
@@ -79,11 +109,11 @@
того, чтобы убедиться, что для коротких паролей уровень безопасности по крайней мере равен уровню по умолчанию,
когда PIM пуст.</div>
<div>&nbsp;</div>
<div>Минимальное значение PIM для коротких паролей равно <b>98</b> для шифрования системы без использования
SHA-512 или Whirlpool, и <b>485</b> для других случаев. Для пароля, состоящего из 20 и более символов,
<div>Минимальное значение PIM для коротких паролей равно <b>12</b> для томов с Argon2id, <b>98</b> для шифрования системы без использования
SHA-512 или Whirlpool, и <b>485</b> для PBKDF2-HMAC в остальных случаях. Для пароля, состоящего из 20 и более символов,
минимальное значение PIM равно <b>1</b>.
Во всех случаях, если оставить PIM пустым или установить его значение равным 0, VeraCrypt будет использовать
большое количество итераций по умолчанию, как это объяснено в разделе
параметры KDF по умолчанию, как это объяснено в разделе
<a href="Header%20Key%20Derivation.html">
Формирование ключа заголовка</a>.</div>
<div><br>
@@ -92,8 +122,8 @@ SHA-512 или Whirlpool, и <b>485</b> для других случаев. Дл
<li>добавление дополнительного секретного параметра (PIM), который злоумышленнику придётся угадывать;</li>
<li>повышение уровня безопасности при использовании больших значений PIM, чтобы воспрепятствовать дальнейшему
развитию атак методом перебора;</li>
<li>ускорение загрузки или монтирования за счет использования небольшого значения PIM (менее 98 для
шифрования системы без использования SHA-512 или Whirlpool, и менее 485 для других случаев)
<li>ускорение загрузки или монтирования за счет использования небольшого значения PIM (менее 12 для томов с Argon2id, менее 98 для
шифрования системы без использования SHA-512 или Whirlpool, и менее 485 для PBKDF2-HMAC в остальных случаях)
</li></ul>
<p>На приведённых ниже снимках экрана показан шаг монтирования тома с использованием PIM, равного 231:</p>
<table style="margin-left:auto; margin-right:auto">
+3 -3
View File
@@ -59,9 +59,9 @@
<p>Описание функции перемешивания пула:</p>
<ol>
<li>Пусть <em>R</em> это пул случайных значений</li>
<li>Пусть <em>H</em> это выбранная пользователем функция хеширования (SHA-512, BLAKE2S-256 или Whirlpool)</li>
<li>Пусть <em>H</em> это текущая хеш-функция перемешивания пула RNG. В отдельных контекстах работы со случайным пулом и генерации ключевых файлов это хеш-функция, выбранная пользователем. При операциях с томами VeraCrypt получает её из выбранного алгоритма формирования ключа заголовка: для PBKDF2-HMAC это выбранный хеш (SHA-512, SHA-256, BLAKE2s-256, Whirlpool или Streebog); для Argon2id это <a href="BLAKE2b-512.html">BLAKE2b-512</a>.</li>
<li><em>l</em> = байтовый размер вывода функции хеширования <em>H</em> (то есть если
<em>H</em> BLAKE2S-256, то <em>l</em> = 20; если <em>H</em> SHA-512, то <em>l</em> = 64)</li>
<em>H</em> BLAKE2s-256 или SHA-256, то <em>l</em> = 32; если <em>H</em> SHA-512, Whirlpool, Streebog или BLAKE2b-512, то <em>l</em> = 64)</li>
<li><em>z</em> = байтовый размер пула случайных значений <em>R </em>(320 байт)</li>
<li><em>q</em> = <em>z</em> / <em>l</em> &ndash; 1 (например, если <em>H</em> Whirlpool, то
<em>q</em> = 4)</li>
@@ -93,7 +93,7 @@
<li>Состояние каждого бита в пуле инвертируется (то есть 0 становится 1, а 1 становится 0).</li>
<li>Данные, полученные из какого-либо перечисленного выше источника, добавляются в пул, как описано выше.</li>
<li>Содержимое пула трансформируется с помощью функции перемешивания пула.<br>
Примечание. Эта функция использует криптографически стойкую одностороннюю хеш-функцию, выбираемую пользователем
Примечание. Эта функция использует криптографически стойкую одностороннюю хеш-функцию, связанную с выбранным вариантом KDF/хеширования
(подробности см. выше в разделе <em>Функция перемешивания пула</em>).</li>
<li>Преобразованное содержимое пула подвергается операции XOR в выходной буфер следующим образом:
<ol type="a">
+82
View File
@@ -0,0 +1,82 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>VeraCrypt - Бесплатное надёжное шифрование дисков с открытым исходным кодом</title>
<meta name="description" content="VeraCrypt это бесплатное программное обеспечение для шифрования дисков с открытым исходным кодом для Windows, Mac OS X (macOS) и Linux. В случае, если злоумышленник вынуждает вас раскрыть пароль, VeraCrypt обеспечивает правдоподобное отрицание наличия шифрования. В отличие от пофайлового шифрования, VeraCrypt шифрует данные в реальном времени (на лету), автоматически, прозрачно, требует очень мало памяти и не использует временные незашифрованные файлы."/>
<meta name="keywords" content="encryption, security, шифрование, безопасность"/>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div>
<a href="Documentation.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
</div>
<div id="menu">
<ul>
<li><a href="Home.html">Начало</a></li>
<li><a href="Code.html">Исходный код</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="Key%20Derivation%20Algorithms.html">Алгоритмы формирования ключа</a>
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
<a href="pbkdf2.html">PBKDF2</a>
</p></div>
<div class="wikidoc">
<h1>PBKDF2</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding:0px">
PBKDF2 (Password-Based Key Derivation Function 2) — широко применяемая KDF, которая многократно применяет псевдослучайную функцию HMAC, чтобы замедлить подбор пароля. В VeraCrypt PBKDF2 доступна с несколькими HMAC-хеш-функциями и используется для формирования ключей, расшифровывающих заголовок тома.
</div>
<h3>Варианты PBKDF2-HMAC, поддерживаемые в VeraCrypt</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding:0px">
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>PBKDF2-HMAC-<a href="SHA-512.html" style="color:#0080c0; text-decoration:none">SHA-512</a></strong></li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>PBKDF2-HMAC-<a href="SHA-256.html" style="color:#0080c0; text-decoration:none">SHA-256</a></strong></li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>PBKDF2-HMAC-<a href="Whirlpool.html" style="color:#0080c0; text-decoration:none">Whirlpool</a></strong></li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>PBKDF2-HMAC-<a href="BLAKE2s-256.html" style="color:#0080c0; text-decoration:none">BLAKE2s-256</a></strong></li>
<li style="text-align:left; margin:0px 0px 0px 0px; padding:0px"><strong>PBKDF2-HMAC-<a href="Streebog.html" style="color:#0080c0; text-decoration:none">Streebog</a></strong></li>
</ul>
<h3>Параметры в VeraCrypt</h3>
<h4>Соль</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding:0px">
512-битовая случайная соль, сохраняемая в заголовке тома, смешивается с паролем, чтобы предотвратить предвычисления и атаки с радужными таблицами.
</div>
<h4>Количество итераций</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding:0px">
Количество итераций PBKDF2 зависит от выбранного HMAC-хеша, контекста (например, системное или несистемное шифрование) и значения <a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html" style="color:#0080c0; text-decoration:none">PIM</a>. Увеличение PIM повышает число итераций и, следовательно, время, необходимое для формирования ключей. Точные значения и формулы приведены в разделе <a href="Header%20Key%20Derivation.html" style="color:#0080c0; text-decoration:none">Формирование ключа заголовка, соль и количество итераций</a>.
</div>
<h4>Длина вывода</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding:0px">
Объём сформированного ключевого материала заголовка зависит от выбранного алгоритма или каскада шифрования. В текущих томах XTS VeraCrypt использует как первичные, так и вторичные ключи заголовка; например, для AES-256-XTS требуется всего 512 бит (два 256-битовых ключа), а для каскада AES-Twofish-Serpent-XTS — 1536 бит (шесть 256-битовых ключей).
</div>
<h3>Преимущества и особенности</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding:0px">
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>Широкая совместимость:</strong> PBKDF2 широко поддерживается на разных платформах и в разных средах.</li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>Низкие требования к памяти:</strong> подходит для систем с ограниченными ресурсами.</li>
<li style="text-align:left; margin:0px 0px 0px 0px; padding:0px"><strong>Не обладает повышенными требованиями к памяти:</strong> по сравнению с <a href="Argon2id.html" style="color:#0080c0; text-decoration:none">Argon2id</a>, PBKDF2 обеспечивает меньшую устойчивость к атакам с использованием массово-параллельного оборудования (GPU/ASIC). Если необходимо использовать PBKDF2, рассмотрите возможность повышения PIM.</li>
</ul>
<h3>Связанные разделы</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding:0px">
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><a href="Key%20Derivation%20Algorithms.html" style="color:#0080c0; text-decoration:none">Алгоритмы формирования ключа (обзор)</a></li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><a href="Argon2id.html" style="color:#0080c0; text-decoration:none">Argon2id</a></li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><a href="Header%20Key%20Derivation.html" style="color:#0080c0; text-decoration:none">Формирование ключа заголовка, соль и количество итераций</a></li>
<li style="text-align:left; margin:0px 0px 0px 0px; padding:0px"><a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html" style="color:#0080c0; text-decoration:none">PIM (Персональный множитель итераций)</a></li>
</ul>
</div><div class="ClearBoth"></div></body></html>
+174
View File
@@ -0,0 +1,174 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密工具</title>
<meta name="description" content="VeraCrypt是一款适用于Windows、Mac OS X和Linux的免费开源磁盘加密软件。若攻击者迫使您透露密码,VeraCrypt可提供似是而非的否认。与文件加密不同,VeraCrypt执行的数据加密是实时(即时)、自动、透明的,所需内存极少,且不涉及临时未加密文件。"/>
<meta name="keywords" content="加密, 安全"/>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div>
<a href="Documentation.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
</div>
<div id="menu">
<ul>
<li><a href="Home.html">主页</a></li>
<li><a href="Code.html">源代码</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="Key%20Derivation%20Algorithms.html">密钥推导算法</a>
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
<a href="Argon2id.html">Argon2id</a>
</p></div>
<div class="wikidoc">
<h1>Argon2id</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Argon2id 是一种内存困难型密钥推导函数,设计用于抵抗时间-内存权衡攻击和侧信道攻击。它在 2015 年被选为密码哈希竞赛(PHC)的获胜算法,并由 RFC 9106 定义。VeraCrypt 支持将 Argon2id 作为 PBKDF2-HMAC 的替代方案用于非系统卷头密钥推导。
</div>
<h3>主要特性</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>内存困难:</strong>需要可配置数量的内存,从而提高对专用硬件攻击的抵抗能力。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>抗侧信道攻击:</strong>结合了依赖数据和不依赖数据的内存访问模式。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>内部哈希函数:</strong>内部使用 <a href="BLAKE2b-512.html" style="color:#0080c0; text-decoration:none">BLAKE2b-512</a>,无需单独选择哈希算法。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>可调参数:</strong>允许调整内存成本、时间成本和并行度。
</li>
</ul>
<h3>Argon2 变体</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Argon2 有三个变体:
</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Argon2d</strong>使用依赖数据的内存访问方式,可抵抗时间-内存权衡攻击,但更容易受到侧信道攻击。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Argon2i</strong>使用不依赖数据的内存访问方式,可抵抗侧信道攻击,但对时间-内存权衡攻击的抵抗力较弱。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>Argon2id</strong>结合两种变体的混合方式,可同时抵抗两类攻击(VeraCrypt 使用此变体)。
</li>
</ul>
<h3>VeraCrypt 中的参数</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
VeraCrypt 使用 Argon2id 时采用以下参数配置:
</div>
<h4>内存成本(m_cost</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
密钥推导过程中使用的内存量由 PIM 值控制:
</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>公式:</strong>m_cost(pim) = min(64 MiB + (pim - 1) &times; 32 MiB, 1024 MiB)
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>范围:</strong>64 MiB 到 1024 MiB(在 PIM = 31 时达到上限)
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>默认值:</strong>416 MiB(相当于 PIM = 12
</li>
</ul>
<h4>时间成本(t_cost</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
密钥推导过程中执行的迭代次数:
</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>当 PIM &le; 31 时:</strong>t_cost(pim) = 3 + floor((pim - 1) / 3)
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>当 PIM &gt; 31 时:</strong>t_cost(pim) = 13 + (pim - 31)
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>默认值:</strong>6 次迭代(相当于 PIM = 12
</li>
</ul>
<h4>并行度</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
计算过程中使用的并行线程数:
</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>值:</strong>VeraCrypt 中始终固定为 1 个线程。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>原因:</strong>确保在不同硬件配置上具有一致的行为。
</li>
</ul>
<h3>相对于 PBKDF2 的优势</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>内存困难性:</strong>需要分配大量内存,使 GPU 和 ASIC 攻击成本更高。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>现代设计:</strong>专门设计用于抵抗当代攻击方法。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>抗侧信道攻击:</strong>内置对缓存计时和其他侧信道攻击的防护。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>标准化:</strong>已在 RFC 9106 中正式标准化。
</li>
</ul>
<h3>使用注意事项</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
在 VeraCrypt 中使用 Argon2id 时:
</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>内存要求:</strong>请确保有足够的 RAM,尤其是在使用较高 PIM 值时。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>性能:</strong>较高的内存成本可能导致挂载时间变慢,但可提供更好的安全性。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>兼容性:</strong>适用于支持多种密钥推导函数的 VeraCrypt 版本。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<strong>无需哈希选择:</strong>与 PBKDF2-HMAC 不同,无需选择单独的哈希算法。
</li>
</ul>
<h3>技术规格</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<strong>算法:</strong>RFC 9106 定义的 Argon2id<br/>
<strong>内部哈希:</strong><a href="BLAKE2b-512.html" style="color:#0080c0; text-decoration:none">BLAKE2b-512</a><br/>
<strong>盐值大小:</strong>512 位(与 PBKDF2-HMAC 相同)<br/>
<strong>头 KDF 输出长度:</strong>当前 VeraCrypt 格式固定为 1536 位(192 字节)。所选加密算法使用该输出中所需的前缀部分(例如 AES(AES-256-XTS)使用前 64 字节)。第三方实现必须先从 Argon2id 请求 192 字节,再选择所需前缀;如果只请求所选算法的密钥材料长度,将得到不同的 Argon2id 输出。<br/>
<strong>版本:</strong>Argon2 版本 0x13(十进制 19
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
有关 PIM 值及其对 Argon2id 参数影响的更多信息,请参阅
<a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html" style="text-align:left; color:#0080c0; text-decoration:none">
个人迭代乘数(PIM</a>部分。
</div>
</div><div class="ClearBoth"></div></body></html>
+51
View File
@@ -0,0 +1,51 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密工具</title>
<meta name="description" content="VeraCrypt是一款适用于Windows、Mac OS X和Linux的免费开源磁盘加密软件。若攻击者迫使您透露密码,VeraCrypt可提供似是而非的否认。与文件加密不同,VeraCrypt执行的数据加密是实时(即时)、自动、透明的,所需内存极少,且不涉及临时未加密文件。"/>
<meta name="keywords" content="加密, 安全"/>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div>
<a href="Documentation.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
</div>
<div id="menu">
<ul>
<li><a href="Home.html">主页</a></li>
<li><a href="Code.html">源代码</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="Hash%20Algorithms.html">哈希算法</a>
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
<a href="BLAKE2b-512.html">BLAKE2b-512</a>
</p></div>
<div class="wikidoc">
<h1>BLAKE2b-512</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<p>
BLAKE2b是BLAKE2的64位字变体,也是BLAKE-512的后继者。BLAKE2b和BLAKE2s在RFC 7693中进行了详细说明。
</p>
<p>
VeraCrypt在<a href="Argon2id.html" style="text-align:left; color:#0080c0; text-decoration:none">Argon2id</a>内部使用最大输出大小为64字节(512位)的BLAKE2b。对于非系统卷头密钥推导,通过在 VeraCrypt 中选择 Argon2 密钥推导算法来使用 BLAKE2b-512;其内部对应 Argon2id。在随机数池混合和密钥文件生成等哈希相关上下文中,同一底层哈希函数可能显示为BLAKE2b-512。
</p>
<p>
BLAKE2b-512不作为单独的PBKDF2-HMAC哈希算法提供。要在VeraCrypt非系统卷头密钥推导中使用BLAKE2b-512,请选择<a href="Argon2id.html" style="text-align:left; color:#0080c0; text-decoration:none">Argon2id</a>;Argon2id没有单独的哈希算法选择。
</p>
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<a href="SHA-256.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">下一部分 &gt;&gt;</a></div>
</div><div class="ClearBoth"></div></body></html>
+2 -2
View File
@@ -42,9 +42,9 @@ BLAKE2从BLAKE的轮函数中移除了消息字的常量加法,更改了两个
BLAKE2b和BLAKE2s在RFC 7693中进行了详细说明。
</p>
<p>
VeraCrypt仅使用最大输出大小为32字节(256位)的BLAKE2s。
VeraCrypt最大输出大小为32字节(256位)的BLAKE2s用作PBKDF2-HMAC哈希算法。对于Argon2idVeraCrypt在内部使用<a href="BLAKE2b-512.html" style="text-align:left; color:#0080c0; text-decoration:none">BLAKE2b-512</a>
</p>
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<a href="SHA-256.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">下一部分 &gt;&gt;</a></div>
<a href="BLAKE2b-512.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">下一部分 &gt;&gt;</a></div>
</div><div class="ClearBoth"></div></body></html>
+4 -4
View File
@@ -47,7 +47,7 @@
</tr>
<tr>
<td><em>/hash</em></td>
<td>必须后跟一个参数,指示挂载卷时要使用的 PRF 哈希算法。可能的 /hash 参数值为:sha256, sha-256, sha512, sha-512, whirlpool, blake2s blake2s-256。当省略 /hash 时,VeraCrypt 将尝试所有可能的 PRF 算法,从而延长挂载操作时间。</td>
<td>必须后跟一个参数,指示挂载卷时要使用的 PRF 哈希算法或 KDF。可能的 /hash 参数值为:sha256, sha-256, sha512, sha-512, whirlpool, blake2s, blake2s-256, streebog 和 blake2b-512(用于 Argon2id 卷)。当省略 /hash 时,VeraCrypt 将尝试所有可能的 PRF/KDF 算法,从而延长挂载操作时间。</td>
</tr>
<tr>
<td id="volume"><em>/volume</em><em>/v</em></td>
@@ -228,7 +228,7 @@
<tr>
<td>&nbsp;<em>/hash</em></td>
<td>(仅与 /create 一起使用)<br>
必须后跟一个参数,指示创建卷时要使用的 PRF 哈希算法。它与 VeraCrypt.exe 具有相同的语法。</td>
必须后跟一个参数,指示创建卷时要使用的 PRF 哈希算法或 KDF。它与 VeraCrypt.exe 具有相同的语法,并且还接受 <code>argon2</code> 作为 Argon2id 的别名</td>
</tr>
<tr>
<td>/encryption</td>
@@ -299,9 +299,9 @@
</tbody>
</table>
<h4>语法</h4>
<p>VeraCrypt.exe [/tc] [/hash {sha256|sha-256|sha512|sha-512|whirlpool |blake2s|blake2s-256}][/a [devices|favorites]] [/b] [/c [y|n|f]] [/d [drive letter]] [/e] [/f] [/h [y|n]] [/k keyfile or search path] [tryemptypass [y|n]] [/l drive letter] [/m {bk|rm|recovery|ro|sm|ts|noattach}]
<p>VeraCrypt.exe [/tc] [/hash {sha256|sha-256|sha512|sha-512|whirlpool|blake2s|blake2s-256|streebog|blake2b-512}][/a [devices|favorites]] [/b] [/c [y|n|f]] [/d [drive letter]] [/e] [/f] [/h [y|n]] [/k keyfile or search path] [tryemptypass [y|n]] [/l drive letter] [/m {bk|rm|recovery|ro|sm|ts|noattach}]
[/p password] [/pim pimvalue] [/q [background|preferences]] [/s] [/tokenlib path] [/v volume] [/w]</p>
<p>&quot;VeraCrypt Format.exe&quot; [/n] [/create] [/size number[{K|M|G|T}]] [/p password]&nbsp; [/encryption {AES | Serpent | Twofish | Camellia | Kuznyechik | AES(Twofish) | AES(Twofish(Serpent)) | Serpent(AES) | Serpent(Twofish(AES)) | Twofish(Serpent) | Camellia(Kuznyechik) | Kuznyechik(Twofish) | Camellia(Serpent) | Kuznyechik(AES) | Kuznyechik(Serpent(Camellia))}] [/hash {sha256|sha-256|sha512|sha-512|whirlpool|blake2s|blake2s-256}]
<p>&quot;VeraCrypt Format.exe&quot; [/n] [/create] [/size number[{K|M|G|T}]] [/p password]&nbsp; [/encryption {AES | Serpent | Twofish | Camellia | Kuznyechik | AES(Twofish) | AES(Twofish(Serpent)) | Serpent(AES) | Serpent(Twofish(AES)) | Twofish(Serpent) | Camellia(Kuznyechik) | Kuznyechik(Twofish) | Camellia(Serpent) | Kuznyechik(AES) | Kuznyechik(Serpent(Camellia))}] [/hash {sha256|sha-256|sha512|sha-512|whirlpool|blake2s|blake2s-256|streebog|blake2b-512|argon2}]
[/filesystem {None|FAT|NTFS|ExFAT|ReFS}] [/dynamic] [/force] [/silent] [/noisocheck] [FastCreateFile] [/quick]</p>
<p>请注意,选项的指定顺序无关紧要。</p>
<h4>示例</h4>
+6
View File
@@ -82,8 +82,14 @@
</li><li><strong><a href="Hash%20Algorithms.html">哈希算法</a></strong>
<ul>
<li><a href="BLAKE2s-256.html">BLAKE2s-256</a>
</li><li><a href="BLAKE2b-512.html">BLAKE2b-512</a>
</li><li><a href="SHA-256.html">SHA-256</a> </li><li><a href="SHA-512.html">SHA-512</a> </li><li><a href="Whirlpool.html">Whirlpool</a>
</li><li><a href="Streebog.html">Streebog</a></li></ul>
</li><li><strong><a href="Key%20Derivation%20Algorithms.html">密钥推导算法</a></strong>
<ul>
<li><a href="Argon2id.html">Argon2id</a></li>
<li><a href="pbkdf2.html">PBKDF2</a></li>
</ul>
</li><li><strong><a href="Supported%20Operating%20Systems.html">支持的操作系统</a></strong>
</li><li><strong><a href="Command%20Line%20Usage.html">命令行使用方法</a></strong>
</li><li><strong><a href="Security%20Model.html">安全模型</a></strong>
+7 -3
View File
@@ -50,10 +50,14 @@
</li>
<li>现在VeraCrypt尝试解密在步骤(1)中读取的标准卷头。解密过程中使用和生成的所有数据都保存在内存中(VeraCrypt从不将它们保存到磁盘)。以下参数是未知的&dagger;,必须通过试错过程(即测试以下所有可能的组合)来确定:
<ol type="a">
<li>密钥派生函数使用的伪随机函数(PRF,如PKCS #5 v2.0中所指定;请参阅
<li>密钥推导函数(KDF)及其相关参数:
<ul>
<li><strong>PBKDF2-HMAC</strong>头密钥派生函数使用的伪随机函数(PRF,如PKCS #5 v2.0中所指定;请参阅
<a href="Header%20Key%20Derivation.html">
<em>头密钥派生、盐值和迭代次数</em></a>部分),可以是以下之一:
<p>HMAC - SHA - 512、HMAC - SHA - 256、HMAC - BLAKE2S - 256、HMAC - Whirlpool。如果用户明确指定了PRF,则将直接使用它,而不尝试其他可能性</p>
<em>头密钥派生、盐值和迭代次数</em></a>部分),可以是以下之一:HMAC-SHA-512、HMAC-SHA-256、HMAC-BLAKE2s-256、HMAC-Whirlpool、HMAC-Streebog。</li>
<li><strong>Argon2id</strong>用于非系统卷的内存困难型密钥推导函数,内部使用<a href="BLAKE2b-512.html">BLAKE2b-512</a>哈希函数</li>
</ul>
<p>如果用户明确指定了卷头密钥推导算法(或对于 PBKDF2-HMAC 明确指定了 PRF 哈希),VeraCrypt 将直接使用它,而不尝试其他可能性。</p>
<p>用户输入的密码(可能已应用了一个或多个密钥文件 - 请参阅
<a href="Keyfiles%20in%20VeraCrypt.html">
<em>密钥文件</em></a>部分)、PIM值(如果指定)和在步骤(1)中读取的盐值将传递给头密钥派生函数,该函数会生成一系列值(请参阅
+12 -2
View File
@@ -34,10 +34,13 @@
<div class="wikidoc">
<h1>哈希算法</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
在卷创建向导密码更改对话框窗口和密钥文件生成器对话框窗口中,您可以选择一种哈希算法。用户选择的哈希算法由VeraCrypt随机数生成器用作伪随机“混合函数,并由头密钥推导函数(基于哈希函数的HMAC,如PKCS #5 v2.0中所规定)用作伪随机函数。在创建新卷时,随机数生成器会生成主密钥、辅助密钥(XTS模式)和盐值。有关更多信息,请参阅<a href="Random%20Number%20Generator.html" style="text-align:left; color:#0080c0; text-decoration:none">随机数生成器</a>部分和<a href="Header%20Key%20Derivation.html" style="text-align:left; color:#0080c0; text-decoration:none">头密钥推导、盐值和迭代次数</a>部分
在卷创建向导密码更改对话框窗口中,当使用PBKDF2-HMAC作为密钥推导函数时,您可以选择哈希算法。在密钥文件生成器对话框窗口中,所选哈希算法由VeraCrypt随机数生成器用作混合函数。当选择Argon2id作为密钥推导函数时,头密钥推导没有单独的哈希算法选择,因为Argon2id使用其内部的BLAKE2b-512哈希函数
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
VeraCrypt目前支持以下哈希算法:
对于PBKDF2-HMAC,用户选择的哈希算法由VeraCrypt随机数生成器用作伪随机“混合”函数,并由头密钥推导函数(基于哈希函数的HMAC,如PKCS #5 v2.0中所规定)用作伪随机函数。在创建新卷时,随机数生成器会生成主密钥、辅助密钥(XTS模式)和盐值。有关更多信息,请参阅<a href="Random%20Number%20Generator.html" style="text-align:left; color:#0080c0; text-decoration:none">随机数生成器</a>部分和<a href="Header%20Key%20Derivation.html" style="text-align:left; color:#0080c0; text-decoration:none">头密钥推导、盐值和迭代次数</a>部分。
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
VeraCrypt目前支持以下用于PBKDF2-HMAC的哈希算法:
</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
@@ -56,6 +59,13 @@ VeraCrypt目前支持以下哈希算法:
<strong style="text-align:left"><a href="Streebog.html">Streebog</a></strong>
</li>
</ul>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
VeraCrypt还将以下哈希与Argon2id关联:</div>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="BLAKE2b-512.html"><strong style="text-align:left">BLAKE2b-512</strong></a>(与Argon2id关联;不能作为PBKDF2-HMAC选择)
</li>
</ul>
<p><a href="BLAKE2s-256.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">下一部分 &gt;&gt;</a></p>
</div>
<div class="ClearBoth"></div></body></html>
+21 -10
View File
@@ -44,35 +44,46 @@
VeraCrypt卷格式规范</a> 部分)。在VeraCrypt创建的卷中(以及对于
<a href="System%20Encryption.html" style="text-align:left; color:#0080c0; text-decoration:none">
系统加密</a>),该区域采用XTS模式进行加密(请参阅 <a href="Modes%20of%20Operation.html" style="text-align:left; color:#0080c0; text-decoration:none">
操作模式</a> 部分)。VeraCrypt用于生成头密钥和辅助头密钥(XTS模式)的方法是PBKDF2该方法在PKCS #5 v2.0中定义;请参阅
操作模式</a> 部分)。对于系统加密,VeraCrypt使用PBKDF2-HMAC。对于非系统卷和文件容器,VeraCrypt支持两种用于生成头密钥的密钥推导函数:PBKDF2该方法在PKCS #5 v2.0中定义;请参阅
<a href="References.html" style="text-align:left; color:#0080c0; text-decoration:none">
[7]</a>
[7]</a>)和Argon2id
</div>
<h3>PBKDF2-HMAC密钥推导</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
PBKDF2方法使用基于HMAC的伪随机函数,可用的哈希算法包括HMAC-SHA-512、HMAC-SHA-256、HMAC-BLAKE2s-256、HMAC-Whirlpool或HMAC-Streebog(请参阅 [8, 9, 20, 22]) — 用户可以选择使用哪种。派生密钥的长度不取决于底层哈希函数的输出大小。例如,即使使用HMAC-SHA-512AES-256密码的头密钥始终为256位长(在XTS模式下,还会使用一个额外的256位辅助头密钥;因此,AES-256总共使用两个256位密钥)。更多信息,请参阅 [7]。为了推导出头密钥,必须执行大量的密钥推导函数迭代,这增加了进行密码穷举搜索(即暴力攻击)所需的时间 [7]。
</div>
<h3>Argon2id密钥推导</h3>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
Argon2id是一种内存困难型密钥推导函数,可抵抗时间 - 内存权衡攻击和侧信道攻击。与PBKDF2-HMAC不同,Argon2id不使用单独的哈希算法选择,而是使用自己的内部哈希函数(<a href="BLAKE2b-512.html" style="text-align:left; color:#0080c0; text-decoration:none">BLAKE2b-512</a>)。Argon2id需要三个参数:内存成本(使用的内存量)、时间成本(迭代次数)和并行度(线程数)。VeraCrypt在所有情况下都将并行度参数设为1。
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
使用512位的盐值,这意味着每个密码有2<sup style="text-align:left; font-size:85%">512</sup> 个密钥。这显著降低了对“离线”字典/“彩虹表”攻击的脆弱性(使用盐值时,为字典中的所有密码预先计算所有密钥非常困难) [7]。盐值由
两种密钥推导函数都使用512位的盐值,这意味着每个密码有2<sup style="text-align:left; font-size:85%">512</sup> 个密钥。这显著降低了对“离线”字典/“彩虹表”攻击的脆弱性(使用盐值时,为字典中的所有密码预先计算所有密钥非常困难) [7]。盐值由
<a href="Random%20Number%20Generator.html" style="text-align:left; color:#0080c0; text-decoration:none">
VeraCrypt随机数生成器</a> 在卷创建过程中生成的随机值组成。头密钥推导函数基于HMAC - SHA - 512、HMAC - SHA - 256、HMAC - BLAKE2S - 256、HMAC - Whirlpool或HMAC - Streebog(请参阅 [8, 9, 20, 22]) — 用户可以选择使用哪种。派生密钥的长度不取决于底层哈希函数的输出大小。例如,即使使用HMAC - SHA - 512AES - 256密码的头密钥始终为256位长(在XTS模式下,还会使用一个额外的256位辅助头密钥;因此,AES - 256总共使用两个256位密钥)。更多信息,请参阅 [7]。为了推导出头密钥,必须执行大量的密钥推导函数迭代,这增加了进行密码穷举搜索(即暴力攻击)所需的时间 [7]。
VeraCrypt随机数生成器</a> 在卷创建过程中生成的随机值组成。
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<p>在1.12版本之前,VeraCrypt始终使用固定的迭代次数,该次数仅取决于卷类型和使用的推导算法。
<p>在1.12版本之前,VeraCrypt始终使用PBKDF2-HMAC,并采用固定的迭代次数,该次数仅取决于卷类型和使用的哈希算法。
从1.12版本开始,<a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html">
PIM </a>字段(<a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html">个人迭代乘数</a>)使用户能够更好地控制密钥推导函数使用的迭代次数。</p>
<p>
PIM </a>字段(<a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html">个人迭代乘数</a>)使用户能够更好地控制密钥推导函数使用的计算参数。</p>
<h4>PBKDF2-HMAC参数</h4>
<p>当未指定 <a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html">
PIM </a>值或该值等于零时,VeraCrypt使用以下默认值:<br/>
PIM </a>值或该值等于零时,VeraCrypt对PBKDF2-HMAC使用以下默认值:<br/>
<ul>
<li>对于使用SHA-256、BLAKE2s-256或Streebog的系统分区加密(引导加密),使用 <strong>200000</strong> 次迭代。</li>
<li>对于使用SHA-512或Whirlpool的系统加密,使用 <strong>500000</strong> 次迭代。</li>
<li>对于非系统加密和文件容器,所有推导算法都将使用 <strong>500000</strong> 次迭代。
<li>对于非系统加密和文件容器,所有PBKDF2-HMAC变体都将使用 <strong>500000</strong> 次迭代。
</li></ul>
</p>
<p>当用户提供 <a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html">
PIM </a>值时,密钥推导函数的迭代次数计算如下:</p>
PIM </a>值时,PBKDF2密钥推导函数的迭代次数计算如下:</p>
<ul>
<li>对于不使用SHA-512或Whirlpool的系统加密:迭代次数 = <strong>PIM x 2048</strong>
</li><li>对于使用SHA-512或Whirlpool的系统加密:迭代次数 = <strong>15000 + (PIM x 1000)</strong>
</li><li>对于非系统加密和文件容器:迭代次数 = <strong>15000 + (PIM x 1000)</strong>
</li></ul>
<h4>Argon2id参数</h4>
<p>对于Argon2id,PIM值控制内存成本和时间成本。如果未指定PIM,则使用相当于PIM = 12的默认参数(416 MiB内存,6次迭代)。</p>
<p>对于Argon2idVeraCrypt会为当前卷格式派生固定的192字节头密钥材料,而不依赖于所选加密算法。随后,所选加密算法使用该派生输出中所需的前缀。例如,AES-XTS使用前64字节。实现必须先从Argon2id请求192字节,然后再选择所需前缀;如果只请求所选算法的密钥材料长度,将得到不同的Argon2id输出,因为Argon2id会把请求的输出长度纳入计算。</p>
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
级联密码中使用的头密钥相互独立,即使它们是从单个密码(可能已应用密钥文件)派生而来。例如,对于AES-Twofish-Serpent级联,头密钥推导函数会根据给定密码推导出一个768位的加密密钥(在XTS模式下,还会从给定密码推导出一个768位的
@@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密工具</title>
<meta name="description" content="VeraCrypt是一款适用于Windows、Mac OS X和Linux的免费开源磁盘加密软件。若攻击者迫使您透露密码,VeraCrypt可提供似是而非的否认。与文件加密不同,VeraCrypt执行的数据加密是实时(即时)、自动、透明的,所需内存极少,且不涉及临时未加密文件。"/>
<meta name="keywords" content="加密, 安全"/>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div>
<a href="Documentation.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
</div>
<div id="menu">
<ul>
<li><a href="Home.html">主页</a></li>
<li><a href="Code.html">源代码</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="Key%20Derivation%20Algorithms.html">密钥推导算法</a>
</p></div>
<div class="wikidoc">
<h1>密钥推导算法</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
密钥推导函数(KDF)会将您的密码以及可选的密钥文件转换为用于解密 VeraCrypt 卷头的加密密钥。KDF 通过使用大的随机盐值和可调的工作因子(例如迭代次数或内存用量)来减缓暴力破解,并防止预计算攻击。
</div>
<h3>VeraCrypt 中可用的算法</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<li style="text-align:left; margin-top:0px; margin-bottom:8px; padding:0px">
<strong><a href="Argon2id.html" style="color:#0080c0; text-decoration:none">Argon2id</a></strong>现代的内存困难型 KDF,内部基于 <a href="BLAKE2b-512.html" style="color:#0080c0; text-decoration:none">BLAKE2b-512</a>。推荐用于新的非系统卷。无需单独选择哈希算法。
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding:0px">
<strong><a href="pbkdf2.html" style="color:#0080c0; text-decoration:none">PBKDF2-HMAC</a></strong>广泛部署的 KDF,使用带有可选哈希函数的 HMAC。VeraCrypt 支持的 HMAC 哈希包括:
<a href="SHA-512.html" style="color:#0080c0; text-decoration:none">SHA-512</a><a href="SHA-256.html" style="color:#0080c0; text-decoration:none">SHA-256</a><a href="Whirlpool.html" style="color:#0080c0; text-decoration:none">Whirlpool</a><a href="BLAKE2s-256.html" style="color:#0080c0; text-decoration:none">BLAKE2s-256</a><a href="Streebog.html" style="color:#0080c0; text-decoration:none">Streebog</a>
</li>
</ul>
</div>
</div><div class="ClearBoth"></div></body></html>
@@ -36,24 +36,55 @@
<div class="wikidoc">
<h1>PIM</h1>
<div>
<p>PIM代表“个人迭代乘数”。它是VeraCrypt 1.12版本引入的一个参数,其值控制头部密钥推导函数使用的迭代次数。该值可以通过密码对话框或命令行指定。</p>
<p>当指定了PIM值时,迭代次数的计算方式如下</p>
<p>PIM代表“个人迭代乘数”。它是VeraCrypt 1.12版本引入的一个参数,其值控制头部密钥推导函数使用的计算参数。该值可以通过密码对话框或命令行指定。</p>
<p>PIM的确切含义取决于所使用的密钥推导函数(KDF)</p>
<h3>PBKDF2-HMAC密钥推导</h3>
<p>使用PBKDF2-HMAC时,PIM值按如下方式控制迭代次数:</p>
<ul>
<li>对于不使用SHA-512或Whirlpool的系统加密:迭代次数 = <strong>PIM x 2048</strong>
</li><li>对于使用SHA-512或Whirlpool的系统加密:迭代次数 = <strong>15000 + (PIM x 1000)</strong>
</li><li>对于非系统加密和文件容器:迭代次数 = <strong>15000 + (PIM x 1000)</strong>
</li></ul>
<p>如果未指定PIM值,VeraCrypt将使用1.12版本之前的默认迭代次数(请参阅
<h3>Argon2id密钥推导</h3>
<p>使用Argon2id时,PIM值同时控制内存成本和时间成本参数:</p>
<ul>
<li><strong>内存成本(m_cost),单位MiB</strong><br/>
m_cost(pim) = min(64 MiB + (pim - 1) * 32 MiB, 1024 MiB)<br/>
内存成本从64 MiB开始,每增加1个PIM增加32 MiB;当PIM达到31或更高时,上限为1024 MiB。
</li>
<li><strong>时间成本(t_cost),以迭代计:</strong><br/>
如果PIM ≤ 31t_cost(pim) = 3 + floor((pim - 1) / 3)<br/>
如果PIM > 31t_cost(pim) = 13 + (pim - 31)<br/>
当PIM ≤ 31时,每增加3个PIM,时间成本增加1次迭代;当PIM > 31时,每增加1个PIM,时间成本增加1次迭代。
</li>
<li><strong>并行度:</strong>所有情况下固定为1个线程。</li>
</ul>
<p><strong>Argon2id示例:</strong></p>
<ul>
<li>PIM = 12:内存成本 = 416 MiB,时间成本 = 6 次迭代</li>
<li>PIM = 31:内存成本 = 1024 MiB,时间成本 = 13 次迭代</li>
<li>PIM = 32:内存成本 = 1024 MiB,时间成本 = 14 次迭代</li>
</ul>
<p>如果未指定PIM值,VeraCrypt将对PBKDF2-HMAC使用1.12版本之前的默认参数(请参阅
<a href="Header%20Key%20Derivation.html">
头部密钥推导</a>)。这可以总结如下:<br/>
头部密钥推导</a>)。对于Argon2id,默认参数相当于PIM = 12
</p>
<ul>
<li><strong>PBKDF2-HMAC默认值:</strong></li>
<ul>
<li>对于使用SHA-256、BLAKE2s-256或Streebog的系统分区加密(引导加密),使用<strong>200000</strong>次迭代,这相当于PIM值为<strong>98</strong></li>
<li>对于使用SHA-512或Whirlpool的系统加密,使用<strong>500000</strong>次迭代,这相当于PIM值为<strong>485</strong></li>
<li>对于非系统加密和文件容器,所有推导算法将使用<strong>500000</strong>次迭代,这相当于PIM值为<strong>485</strong></li>
<li>对于使用PBKDF2-HMAC的非系统加密和文件容器,使用<strong>500000</strong>次迭代,这相当于PIM值为<strong>485</strong></li>
</ul>
</p>
<li><strong>Argon2id默认值:</strong>内存成本 = 416 MiB,时间成本 = 6 次迭代(相当于PIM = 12)</li>
</ul>
<p>在1.12版本之前,VeraCrypt卷的安全性仅基于密码强度,因为VeraCrypt使用固定的迭代次数。<br>
随着PIM的引入,VeraCrypt的卷在基于(密码,PIM)对的二维安全空间中具有更高的灵活性,可在控制挂载/引导操作性能的同时调整所需的安全级别。</p>
随着PIM的引入,VeraCrypt基于(密码,PIM,密钥推导函数)组合形成多维安全空间,可在控制挂载/引导操作性能的同时更灵活地调整所需的安全级别。</p>
<h3>PIM的使用</h3>
不强制要求指定PIM。</div>
<div><br>
@@ -61,21 +92,21 @@
<div>&nbsp;</div>
<div>PIM被视为一个秘密值,每次用户都必须与密码一起输入。如果指定了错误的PIM值,挂载/引导操作将失败。</div>
<div>&nbsp;</div>
<div>使用较高的PIM值可以通过增加迭代次数来提高安全性,但会导致挂载/引导时间变慢。</div>
<div>使用较高的PIM值可以通过提高KDF成本参数来增强安全性,但会导致挂载/引导时间变慢。</div>
<div>使用较小的PIM值,挂载/引导速度会更快,但如果使用弱密码,可能会降低安全性。</div>
<div>&nbsp;</div>
<div>在创建卷或对系统进行加密时,当密码长度小于20个字符时,VeraCrypt会强制PIM值大于或等于某个最小值。进行此检查是为了确保对于短密码,安全级别至少等于空PIM提供的默认级别。</div>
<div>&nbsp;</div>
<div>对于短密码,不使用SHA - 512或Whirlpool的系统加密的PIM最小值<strong>98</strong>,其他情况的PIM最小值
<div>对于短密码,Argon2id卷的PIM最小值为<strong>12</strong>不使用SHA-512或Whirlpool的系统加密为<strong>98</strong>,其他使用PBKDF2-HMAC的情况为
<strong>485</strong>。对于长度为20个字符及以上的密码,PIM最小值为
<strong>1</strong>。在所有情况下,将PIM留空或将其值设置为0将使VeraCrypt使用如
<a href="Header%20Key%20Derivation.html">
头部密钥推导</a>部分所述的默认高迭代次数。</div>
头部密钥推导</a>部分所述的默认KDF参数。</div>
<div><br>
使用自定义PIM值的动机可能包括:<br>
<ul>
<li>添加一个额外的秘密参数(PIM),使攻击者必须猜测</li><li>通过使用较大的PIM值来提高安全级别,以抵御未来暴力攻击技术的发展。
</li><li>通过使用较小的PIM值(对于不使用SHA - 512或Whirlpool的系统加密小于98,对于其他情况小于485)来加快引导或挂载速度
</li><li>通过使用较小的PIM值(对于Argon2id卷小于12,对于不使用SHA-512或Whirlpool的系统加密小于98,对于其他使用PBKDF2-HMAC的情况小于485)来加快引导或挂载速度
</li></ul>
<p>以下屏幕截图展示了使用PIM值为231挂载卷的步骤:</p>
<table style="margin-left:auto; margin-right:auto">
+3 -3
View File
@@ -50,8 +50,8 @@
<p>池混合函数的描述:</p>
<ol>
<li><em>R</em>为随机数池。</li>
<li><em>H</em>用户选择的哈希函数SHA - 512、BLAKE2S - 256Whirlpool</li>
<li><em>l</em> = 哈希函数<em>H</em>输出的字节大小(即,如果<em>H</em>是BLAKE2S - 256,则<em>l</em> = 20;如果<em>H</em>是SHA - 512,则<em>l</em> = 64</li>
<li><em>H</em>当前RNG池混合哈希函数。在独立随机数池和密钥文件生成上下文中,它是用户选择的哈希函数。在卷操作期间,VeraCrypt会根据所选头密钥推导算法确定它:对于PBKDF2-HMAC,它是所选哈希SHA-512、SHA-256、BLAKE2s-256Whirlpool或Streebog);对于Argon2id,它是<a href="BLAKE2b-512.html">BLAKE2b-512</a></li>
<li><em>l</em> = 哈希函数<em>H</em>输出的字节大小(即,如果<em>H</em>是BLAKE2s-256或SHA-256,则<em>l</em> = 32;如果<em>H</em>是SHA-512、Whirlpool、Streebog或BLAKE2b-512,则<em>l</em> = 64</li>
<li><em>z</em> = 随机数池<em>R</em>的字节大小(320字节)</li>
<li><em>q</em> = <em>z</em> / <em>l</em> - 1(例如,如果<em>H</em>是Whirlpool,则<em>q</em> = 4</li>
<li><em>R</em>被分割成<em>l</em>字节的块<em>B</em>0...<em>B</em>q。
@@ -78,7 +78,7 @@
<li>将请求的字节数从池复制到输出缓冲区(复制从池游标的位置开始;当到达池的末尾时,复制从池的开头继续;如果请求的字节数大于池的大小,则不生成值并返回错误)。</li>
<li>反转池中每个位的状态(即,0变为1,1变为0)。</li>
<li>将从上述某些来源获得的数据按上述方式添加到池中。</li>
<li>使用池混合函数转换池的内容。注意:该函数使用用户选择的加密安全单向哈希函数(有关更多信息,请参阅上面的<em>池混合函数</em>部分)。</li>
<li>使用池混合函数转换池的内容。注意:该函数使用与所选KDF/哈希选项关联的加密安全单向哈希函数(有关更多信息,请参阅上面的<em>池混合函数</em>部分)。</li>
<li>将转换后的池内容按以下方式异或到输出缓冲区:
<ol type="a">
<li>将输出缓冲区写入游标设置为0(缓冲区的第一个字节)。</li>
+82
View File
@@ -0,0 +1,82 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>VeraCrypt - 为偏执者提供强大安全保障的免费开源磁盘加密工具</title>
<meta name="description" content="VeraCrypt是一款适用于Windows、Mac OS X和Linux的免费开源磁盘加密软件。若攻击者迫使您透露密码,VeraCrypt可提供似是而非的否认。与文件加密不同,VeraCrypt执行的数据加密是实时(即时)、自动、透明的,所需内存极少,且不涉及临时未加密文件。"/>
<meta name="keywords" content="加密, 安全"/>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div>
<a href="Documentation.html"><img src="VeraCrypt128x128.png" alt="VeraCrypt"/></a>
</div>
<div id="menu">
<ul>
<li><a href="Home.html">主页</a></li>
<li><a href="Code.html">源代码</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="Key%20Derivation%20Algorithms.html">密钥推导算法</a>
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px">
<a href="pbkdf2.html">PBKDF2</a>
</p></div>
<div class="wikidoc">
<h1>PBKDF2</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding:0px">
PBKDF2Password-Based Key Derivation Function 2)是一种广泛使用的 KDF,会重复应用伪随机函数(HMAC)以减缓密码猜测。在 VeraCrypt 中,PBKDF2 可与多种 HMAC 哈希函数配合使用,并用于派生解密卷头所需的密钥。
</div>
<h3>VeraCrypt 支持的 PBKDF2-HMAC 变体</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding:0px">
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>PBKDF2-HMAC-<a href="SHA-512.html" style="color:#0080c0; text-decoration:none">SHA-512</a></strong></li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>PBKDF2-HMAC-<a href="SHA-256.html" style="color:#0080c0; text-decoration:none">SHA-256</a></strong></li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>PBKDF2-HMAC-<a href="Whirlpool.html" style="color:#0080c0; text-decoration:none">Whirlpool</a></strong></li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>PBKDF2-HMAC-<a href="BLAKE2s-256.html" style="color:#0080c0; text-decoration:none">BLAKE2s-256</a></strong></li>
<li style="text-align:left; margin:0px 0px 0px 0px; padding:0px"><strong>PBKDF2-HMAC-<a href="Streebog.html" style="color:#0080c0; text-decoration:none">Streebog</a></strong></li>
</ul>
<h3>VeraCrypt 中的参数</h3>
<h4>盐值</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding:0px">
存储在卷头中的 512 位随机盐值会混入密码,以防止预计算和彩虹表攻击。
</div>
<h4>迭代次数</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding:0px">
PBKDF2 迭代次数取决于所选 HMAC 哈希、使用场景(例如系统加密或非系统加密)以及 <a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html" style="color:#0080c0; text-decoration:none">PIM</a> 值。提高 PIM 会增加迭代次数,从而增加派生密钥所需的时间。精确值和公式请参阅 <a href="Header%20Key%20Derivation.html" style="color:#0080c0; text-decoration:none">头密钥推导、盐值和迭代次数</a>
</div>
<h4>输出长度</h4>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding:0px">
派生并使用的卷头密钥材料量取决于所选加密算法或级联。在当前 XTS 卷中,VeraCrypt 同时使用主卷头密钥和辅助卷头密钥;例如,AES-256-XTS 总共使用 512 位(两个 256 位密钥),AES-Twofish-Serpent-XTS 级联总共使用 1536 位(六个 256 位密钥)。
</div>
<h3>优点和注意事项</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding:0px">
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>兼容性广:</strong>PBKDF2 在多种平台和环境中得到广泛支持。</li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><strong>内存需求低:</strong>适合资源受限的系统。</li>
<li style="text-align:left; margin:0px 0px 0px 0px; padding:0px"><strong>不是内存困难型:</strong><a href="Argon2id.html" style="color:#0080c0; text-decoration:none">Argon2id</a> 相比,PBKDF2 对使用大规模并行硬件(GPU/ASIC)的攻击抵抗力较弱。如果必须使用 PBKDF2,请考虑提高 PIM。</li>
</ul>
<h3>相关主题</h3>
<ul style="text-align:left; margin-top:18px; margin-bottom:19px; padding:0px">
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><a href="Key%20Derivation%20Algorithms.html" style="color:#0080c0; text-decoration:none">密钥推导算法(概述)</a></li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><a href="Argon2id.html" style="color:#0080c0; text-decoration:none">Argon2id</a></li>
<li style="text-align:left; margin:0px 0px 6px 0px; padding:0px"><a href="Header%20Key%20Derivation.html" style="color:#0080c0; text-decoration:none">头密钥推导、盐值和迭代次数</a></li>
<li style="text-align:left; margin:0px 0px 0px 0px; padding:0px"><a href="Personal%20Iterations%20Multiplier%20%28PIM%29.html" style="color:#0080c0; text-decoration:none">个人迭代乘数(PIM</a></li>
</ul>
</div><div class="ClearBoth"></div></body></html>