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
+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>
+6 -6
View File
@@ -30,21 +30,21 @@
<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="BLAKE2s-256.html">BLAKE2s - 256</a>
<a href="BLAKE2s-256.html">BLAKE2s-256</a>
</p></div>
<div class="wikidoc">
<h1>BLAKE2s - 256</h1>
<h1>BLAKE2s-256</h1>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<p>
BLAKE2是一种基于BLAKE的加密哈希函数,由让 - 菲利普·奥马森(Jean - Philippe Aumasson)、塞缪尔·内维斯(Samuel Neves)、祖科·威尔科克斯 - 奥赫恩(Zooko Wilcox - O'Hearn)和克里斯蒂安·温纳莱因(Christian Winnerlein)创建。它于2012年12月21日发布。其设计目标是在需要软件高性能的应用程序中取代广泛使用但已被破解的MD5和SHA - 1算法。BLAKE2提供了比SHA - 2更好的安全性,与SHA - 3相当(例如,对长度扩展攻击具有免疫性,与随机预言机不可区分等)。<br/>
BLAKE2从BLAKE的轮函数中移除了消息字的常量加法,更改了两个旋转常量,简化了填充方式,添加了与初始化向量进行异或运算的参数块,并将BLAKE2b(BLAKE - 512的后继者)的轮数从16轮减少到12轮,将BLAKE2sBLAKE - 256的后继者)的轮数从14轮减少到10轮。<br/>
BLAKE2从BLAKE的轮函数中移除了消息字的常量加法,更改了两个旋转常量,简化了填充方式,添加了与初始化向量进行异或运算的参数块,并将BLAKE2b(BLAKE-512的后继者)的轮数从16轮减少到12轮,将BLAKE2sBLAKE-256的后继者)的轮数从14轮减少到10轮。<br/>
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>
</div><div class="ClearBoth"></div></body></html>
<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
@@ -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>
@@ -315,4 +315,4 @@
<p>使用密码 <em>test</em> 创建一个 10 MB 的文件容器,并使用 FAT 格式化:</p>
<p><code>&quot;C:\Program Files\VeraCrypt\VeraCrypt Format.exe&quot; /create c:\Data\test.hc /password test /hash sha512 /encryption serpent /filesystem FAT /size 10M /force</code></p>
</div>
</div><div class="ClearBoth"></div></body></html>
</div><div class="ClearBoth"></div></body></html>
+8 -2
View File
@@ -81,9 +81,15 @@
</li></ul>
</li><li><strong><a href="Hash%20Algorithms.html">哈希算法</a></strong>
<ul>
<li><a href="BLAKE2s-256.html">BLAKE2s - 256</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><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>
+9 -5
View File
@@ -50,17 +50,21 @@
</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)中读取的盐值将传递给头密钥派生函数,该函数会生成一系列值(请参阅
<a href="Header%20Key%20Derivation.html">
<em>头密钥派生、盐值和迭代次数</em></a>部分),从中形成头加密密钥和辅助头密钥(XTS模式)。(这些密钥用于解密卷头。)</p>
</li>
<li>加密算法:AES - 256、Serpent、Twofish、AES - Serpent、AES - Twofish - Serpent等。</li>
<li>加密算法:AES-256、Serpent、Twofish、AES-Serpent、AES-Twofish-Serpent等。</li>
<li>操作模式:仅支持XTS模式</li>
<li>密钥大小</li>
</ol>
@@ -88,4 +92,4 @@
<p>** 主密钥是在卷创建期间生成的,之后无法更改。更改卷密码是通过使用新的头密钥(从新密码派生)重新加密卷头来实现的。</p>
<p>&nbsp;</p>
<p><a href="Modes%20of%20Operation.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">下一部分 &gt;&gt;</a></p>
</div><div class="ClearBoth"></div></body></html>
</div><div class="ClearBoth"></div></body></html>
+16 -6
View File
@@ -34,20 +34,23 @@
<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">
<a href="BLAKE2s-256.html"><strong style="text-align:left">BLAKE2s - 256</strong></a>
<a href="BLAKE2s-256.html"><strong style="text-align:left">BLAKE2s-256</strong></a>
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="SHA-256.html"><strong style="text-align:left">SHA - 256</strong></a>
<a href="SHA-256.html"><strong style="text-align:left">SHA-256</strong></a>
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="SHA-512.html"><strong style="text-align:left">SHA - 512</strong></a>
<a href="SHA-512.html"><strong style="text-align:left">SHA-512</strong></a>
</li>
<li style="text-align:left; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px">
<a href="Whirlpool.html"><strong style="text-align:left">Whirlpool</strong></a>
@@ -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>
<div class="ClearBoth"></div></body></html>
+27 -16
View File
@@ -44,41 +44,52 @@
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>对于使用SHA-256、BLAKE2s-256或Streebog的系统分区加密(引导加密),使用 <strong>200000</strong> 次迭代。</li>
<li>对于使用SHA-512或Whirlpool的系统加密,使用 <strong>500000</strong> 次迭代。</li>
<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>对于不使用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位的
级联密码中使用的头密钥相互独立,即使它们是从单个密码(可能已应用密钥文件)派生而来。例如,对于AES-Twofish-Serpent级联,头密钥推导函数会根据给定密码推导出一个768位的加密密钥(在XTS模式下,还会从给定密码推导出一个768位的
<em style="text-align:left">辅助</em> 头密钥)。生成的768位头密钥随后被拆分为三个256位密钥(在XTS模式下,
<em style="text-align:left">辅助</em> 头密钥也被拆分为三个256位密钥,因此级联实际上总共使用六个256位密钥),其中第一个密钥由Serpent使用,第二个密钥由Twofish使用,第三个密钥由AES使用(此外,在XTS模式下,第一个辅助密钥由Serpent使用,第二个辅助密钥由Twofish使用,第三个辅助密钥由AES使用)。因此,即使攻击者拥有其中一个密钥,他也无法使用该密钥推导出其他密钥,因为除了对弱密码进行暴力攻击外,没有可行的方法来确定派生该密钥的密码。
</div>
<div style="text-align:left; margin-top:19px; margin-bottom:19px; padding-top:0px; padding-bottom:0px">
<a href="Random%20Number%20Generator.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">下一部分 &gt;&gt;</a></div>
</div><div class="ClearBoth"></div></body></html>
</div><div class="ClearBoth"></div></body></html>
@@ -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>对于不使用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/>
<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>
</ul>
头部密钥推导</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>对于使用PBKDF2-HMAC的非系统加密和文件容器,使用<strong>500000</strong>次迭代,这相当于PIM值为<strong>485</strong></li>
</ul>
<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">
@@ -119,4 +150,4 @@
<p>&nbsp;</p>
<p><a href="VeraCrypt%20Volume%20Format%20Specification.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">下一部分 &gt;&gt;</a></p>
</div>
</div><div class="ClearBoth"></div></body></html>
</div><div class="ClearBoth"></div></body></html>
+4 -4
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>
@@ -98,4 +98,4 @@
</ul>
<p>&nbsp;</p>
<p><a href="Keyfiles.html" style="text-align:left; color:#0080c0; text-decoration:none; font-weight:bold">下一部分 &gt;&gt;</a></p>
</div><div class="ClearBoth"></div></body></html>
</div><div class="ClearBoth"></div></body></html>
+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>