Veracrypt

**VeraCrypt** 是一款開放原始碼的即時加密軟體（OTFE）。它可以建立一個虛擬加密磁碟檔案或加密分割區，或預引導認證整個儲存裝置（除非使用了 UEFI 或 GPT）。

VeraCrypt 是已經停止開發的 TrueCrypt 專案的一個分支。據其開發者聲稱，安全方面的改進已經落實，最初 TrueCrypt 的代碼審計問題已得到解決。

## 加密方式

### 演算法

與 TrueCrypt 相同，VeraCrypt 支援的加密演算法有 AES、Camellia、Kuzenyechik、Serpent 及 Twofish。此外，另有十種多重加密方式：AES-Twofish，AES-Twofish-Serpent，Serpent-AES，Serpent-Twofish-AES，Twofish-Serpent，Camellia-Kuzenyechik，Kuzenyechik-Twofish，Camellia-Serpent，Kuzenyechik-AES 及 Kuzenyechik-Serpent-Camellia。 可使用的密碼雜湊函式有 RIPEMD-160，SHA-256，SHA-512，Whirlpool 和 Streebog。

### 操作模式

VeraCrypt 使用 XTS 操作模式。

### 密匙

軟體頭密匙（header key）和第二頭密匙（the secondary header key）是使用 512 - 位鹽和 327,661 至 655,331 迭代的 PBKDF2 產生的，這取決於其使用的底層雜湊函式。

## 安全性改進

據其開發者聲稱，VeraCrypt 對 TrueCrypt 提出了一些安全方面的改進。

雖然 TrueCrypt 使用 1000 次迭代的 PBKDF2-RIPEMD160 演算法的系統分割區，然而 VeraCrypt 使用的是 327,661 次迭代。對於標準儲存器和其他分割區，VeraCrypt 使用 655331 次迭代的 RIPEMD160 和 500,000 次迭代 SHA-2 和 Whirlpool。雖然這使得 VeraCrypt 在打開被加密分割區時稍慢，但它可以讓密碼破解增加最少 10 倍和最多約 300 倍的的難度。「事實上，如果破解 TrueCrypt 的加密分割區需要一個月，那麼破解 VeraCrypt 可能需要一年。」

Windows 在引導程式中的漏洞也是如此。開發人員增加了對 SHA-256 的系統啟動加密選項，還修正了 Shell 的安全問題。Linux 和 Mac OS X 使用者受益於硬碟機磁區大小大於 512 的支援，並且 Linux 得到了 NTFS 格式加密磁區的支援。

由於安全性改進，因此 VeraCrypt 儲存格式是與 TrueCrypt 不相容的。VeraCrypt 開發團隊認為，TrueCrypt 的舊格式容易受到美國國家安全局的攻擊，因此它必須被拋棄。這是和 VeraCrypt 的競爭對手 ——CipherShed 之間的主要區別之一，CipherShed 繼續使用了 TrueCrypt 加密格式。自版本 1.0F 開始，VeraCrypt 開始支援打開及轉換 TrueCrypt 的舊格式加密卷。

## 似是而非的否認

VeraCrypt 支援一種名為「似是而非的否認」的功能，允許在卷內建立另一個「隱藏驅動卷」。此外，Windows 版本的 VeraCrypt 可以建立並執行一個隱藏的加密作業系統，其存在可以被否認。該功能使使用者在受到脅迫時通過展示無關緊要的外層卷，而使內層隱藏卷矇混過關。

VeraCrypt 說明文件中列出多種方式寫明當該功能受到影響時（例如第三方軟體可能通過臨時檔案、縮圖等向未加密的磁碟分割區泄露資訊），幾種可能的方法來避免這種情況。

## 效能

VeraCrypt 支援多元處理並列加密，在 Windows 系統中，管線型讀寫操作（非同步處理的一種形式）以提高加密解密的效能效率。該軟體在較新的處理器支援 AES-NI 指令集，亦支援 AES 硬體加速以進一步提高效能。 磁碟加密對效能的影響在使用直接記憶體存取（Direct Memory Access，DMA）操作中尤其明顯，因為所有資料必須通過 CPU 進行解密，而不是直接從磁碟複製到記憶體。

## 安全問題

VeraCrypt 很容易受到各種已知的攻擊，也影響到其他基於軟體的磁碟加密軟體，如 BitLocker。為了緩解這些攻擊，VeraCrypt 的說明文件要求使用者遵守各種安全防範措施。一些安全問題詳述如下：

### 記憶體中的加密密匙

VeraCrypt 儲存其在記憶體中的密匙。普通個人電腦上對動態記憶體斷電後的幾秒鐘（或更長，如降低溫度）之後可能仍然保留著資料。即使在記憶體中的資料已經嚴重遺失，仍有各種演算法可以恢復金鑰。這種方法被稱為冷啟動攻擊，特別適用於在接入電源時，閒置或鎖屏模式下的筆記型電腦，現已成功地用於攻擊由 TrueCrypt 加密保護的檔案系統。

### 物理安全性

VeraCrypt 說明文件指出，如果攻擊者物理攻擊電腦中的資料，或者在受感染的電腦上使用該軟體，VeraCrypt 也無法保全其加密資料的完整性。當然電腦被盜，遺失或被沒收這樣的情況自然無能為力。當攻擊者通過物理存取電腦，例如，安裝一個硬體或軟體的鍵盤記錄器或一個匯流排主控裝置擷取記憶體資訊，或安裝任何其他惡意硬體或軟體的攻擊，讓攻擊者捕捉到未加密的資料（包括加密金鑰和密碼），然後以這些非法得到的加密密匙及密碼進行解密。因此，物理安全是一個完善安全系統的基本前提。這種攻擊方式也一般稱之為「邪惡女傭攻擊」（Evil Maid attack）。

### 惡意軟體

VeraCrypt 說明文件指出，VeraCrypt 無法保護被感染某些惡意軟體類型的電腦上的資料。某些類型的惡意軟體被設計用來記錄鍵盤輸入，包括鍵入的密碼，攻擊者也可以通過網際網路上傳或儲存到未加密的本地驅動器後讀取它，或者直接物理存取電腦時。

### 可信平台模組

VeraCrypt 網站上的 FAQ 指出，可信平台模組（Trusted Platform Module，TPM） 的安全性並不可靠。因為如果攻擊者具有對電腦的物理管理存取權限時，電腦可能被攻擊者植入惡意程式，如一個簡單的鍵盤按鍵記錄器等，可以被用來捕捉密碼或其他敏感資訊。——TPM 並非防毒軟體，並不會防止攻擊者惡意修改電腦，因此 VeraCrypt 將不支援 TPM。

## 安全審計

VeraCrypt 正在進行一次獨立的代碼稽核，目前正處於初期規劃階段。

VeraCrypt 是基於 TrueCrypt 開發的，通過獨立的安全審計。審計的第一階段已於 2014 年 4 月 14 日完成，結果為「沒有證據證明該軟體有後門或惡意代碼」。審計的第二階段完成於 2015 年 4 月 2 日，結果為「沒有證據表明該軟體有故意後門，或在大多數情況下將使軟體不安全的嚴重設計缺陷」。

## 許可證

VeraCrypt 從 2015 年 6 月 28 日起採用 Apache 2.0 許可證授權。在此之前，它是以微軟公共許可證（Microsoft Public License）發布的。VeraCrypt 使用了大量從其前身 TrueCrypt 得到的代碼，也是唯一一款使用 TrueCrypt License 3.0 的加密軟體。然而這並不是一個廣泛使用的開源軟體許可證，也不是自由軟體基金會定義的自由軟體許可證，因為它包含分銷和著作權責任的限制等。

## 參見

* TrueCrypt
* 硬碟加密軟體
* 硬碟加密軟體比較

## 參考文獻

## 外部連結

* VeraCrypt 網站（頁面存檔備份，存於網際網路檔案館）
* TrueCrypt 網站