mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-11 02:58:02 -06:00
* Documentation: Remove XHTML spec and fix errors None of the docs follow the XHTML specification, which means that programs that expect this (such as Gnome Web) as it is advertised as such, will completely fail to parse it as it is incorrect syntax. So it is removed. * Remove .chm files
171 lines
7.9 KiB
HTML
171 lines
7.9 KiB
HTML
<!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="Technical%20Details.html">技术细节</a>
|
||
<img src="arrow_right.gif" alt=">>" style="margin-top: 5px" />
|
||
<a href="Keyfiles.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;
|
||
"
|
||
>
|
||
<p>
|
||
VeraCrypt密钥文件是一种其内容会与密码相结合的文件。用户可以使用任何类型的文件作为VeraCrypt密钥文件。用户还可以使用内置的密钥文件生成器来生成密钥文件,该生成器利用VeraCrypt随机数生成器(RNG)生成具有随机内容的文件(更多信息,请参阅
|
||
<a href="Random%20Number%20Generator.html">
|
||
<em>随机数生成器</em></a
|
||
>部分)。
|
||
</p>
|
||
<p>
|
||
密钥文件的最大大小没有限制;但是,仅处理其前1,048,576字节(1 MiB)(由于处理超大文件会带来性能问题,所有剩余字节将被忽略)。用户可以提供一个或多个密钥文件(密钥文件的数量没有限制)。
|
||
</p>
|
||
<p>
|
||
密钥文件可以存储在符合PKCS - 11标准[23]的安全令牌和受多个PIN码保护的智能卡上(可以使用硬件PIN键盘或通过VeraCrypt图形用户界面输入这些PIN码)。
|
||
</p>
|
||
<p>
|
||
符合EMV标准的智能卡数据可以用作密钥文件,请参阅
|
||
<a
|
||
href="EMV%20Smart%20Cards.html"
|
||
style="text-align: left; color: #0080c0; text-decoration: none"
|
||
>
|
||
<em style="text-align: left">EMV智能卡</em></a
|
||
>章节。
|
||
</p>
|
||
<p>
|
||
密钥文件使用以下方法进行处理并应用于密码:
|
||
</p>
|
||
<ol>
|
||
<li>
|
||
设<em>P</em>为用户提供的VeraCrypt卷密码(可以为空)
|
||
</li>
|
||
<li>设<em>KP</em>为密钥文件池</li>
|
||
<li>
|
||
设<em>kpl</em>为密钥文件池<em>KP</em>的大小,以字节为单位(64,即512位);
|
||
<p>
|
||
kpl必须是哈希函数H输出大小的倍数
|
||
</p>
|
||
</li>
|
||
<li>
|
||
设<em>pl</em>为密码<em>P</em>的长度,以字节为单位(在当前版本中:0 ≤ <em>pl</em> ≤ 64)
|
||
</li>
|
||
<li>
|
||
如果<em>kpl > pl</em>,则在密码<em>P</em>后面追加(<em>kpl - pl</em>)个零字节(因此<em>pl = kpl</em>)
|
||
</li>
|
||
<li>
|
||
用<em>kpl</em>个零字节填充密钥文件池<em>KP</em>。
|
||
</li>
|
||
<li>
|
||
对每个密钥文件执行以下步骤:
|
||
<ol type="a">
|
||
<li>
|
||
将密钥文件池游标位置设置为池的开头
|
||
</li>
|
||
<li>初始化哈希函数<em>H</em></li>
|
||
<li>
|
||
逐个加载密钥文件的所有字节,并对每个加载的字节执行以下步骤:
|
||
<ol type="i">
|
||
<li>
|
||
使用哈希函数<em>H</em>对加载的字节进行哈希处理,而不初始化哈希,以获得中间哈希(状态)<em>M</em>。不要完成哈希计算(状态将保留用于下一轮)。
|
||
</li>
|
||
<li>
|
||
将状态<em>M</em>拆分为单个字节。<br />
|
||
例如,如果哈希输出大小为4字节,(<em>T</em><sub>0</sub> || <em>T</em><sub>1</sub> || <em>T</em><sub>2</sub> || <em>T</em><sub>3</sub>) = <em>M</em>
|
||
</li>
|
||
<li>
|
||
将这些字节(在步骤7.c.ii中获得)逐个写入密钥文件池,使用模2<sup>8</sup>加法运算(而不是替换池中旧值),写入位置为池游标的位置。写入一个字节后,池游标位置前进一个字节。当游标到达池的末尾时,其位置将设置为池的开头。
|
||
</li>
|
||
</ol>
|
||
</li>
|
||
</ol>
|
||
</li>
|
||
<li>
|
||
使用以下方法将密钥文件池的内容应用于密码<em>P</em>:
|
||
<ol type="a">
|
||
<li>
|
||
将密码<em>P</em>拆分为单个字节<em>B</em><sub>0</sub>...<em>B</em><sub>pl - 1</sub>。<br />
|
||
请注意,如果密码比密钥文件池短,则在步骤5中密码已用零字节填充到池的长度(因此,此时密码的长度始终大于或等于密钥文件池的长度)。
|
||
</li>
|
||
<li>
|
||
将密钥文件池<em>KP</em>拆分为单个字节<em>G</em><sub>0</sub>...<em>G</em><sub>kpl - 1</sub>
|
||
</li>
|
||
<li>对于0 ≤ i < kpl,执行:Bi = Bi ⊕ Gi</li>
|
||
<li>
|
||
<em>P</em> = <em>B</em><sub>0</sub> || <em>B</em><sub>1</sub> || ... || <em>B</em><sub>pl - 2</sub> || <em>B</em><sub>pl - 1</sub>
|
||
</li>
|
||
</ol>
|
||
</li>
|
||
<li>
|
||
应用了密钥文件池内容后的密码<em>P</em>现在将传递给头密钥派生函数PBKDF2(PKCS #5 v2),该函数使用用户选择的加密安全哈希算法(例如SHA - 512)对其进行处理(连同盐值和其他数据)。有关更多信息,请参阅
|
||
<a href="Header%20Key%20Derivation.html">
|
||
<em>头密钥派生、盐值和迭代次数</em></a
|
||
>部分。
|
||
</li>
|
||
</ol>
|
||
<p>
|
||
哈希函数<em>H</em>的作用仅仅是进行扩散[2]。使用CRC - 32作为哈希函数<em>H</em>。请注意,CRC - 32的输出随后会使用加密安全哈希算法进行处理:密钥文件池的内容(除了使用CRC - 32进行哈希处理外)会应用于密码,然后将该密码传递给头密钥派生函数PBKDF2(PKCS #5 v2),该函数使用用户选择的加密安全哈希算法(例如SHA - 512)对其进行处理(连同盐值和其他数据)。所得值用于形成头密钥和辅助头密钥(XTS模式)。
|
||
</p>
|
||
<p> </p>
|
||
<p>
|
||
<a
|
||
href="Personal%20Iterations%20Multiplier%20%28PIM%29.html"
|
||
style="
|
||
text-align: left;
|
||
color: #0080c0;
|
||
text-decoration: none;
|
||
font-weight: bold;
|
||
"
|
||
>下一部分 >></a
|
||
>
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div class="ClearBoth"></div>
|
||
</body>
|
||
</html> |