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 的加密軟體。然而這並不是一個廣泛使用的開源軟體許可證，也不是自由軟體基金會定義的自由軟體許可證，因為它包含分銷和版權責任的限制等。

## 基本資料

- 開發者：IDRIX
- 發行日期：2013年6月22日
- 狀態：活躍
- 程式語言：C、C++、彙編語言
- 作業系統：Windows XP及更高版本、Windows Server 2003–2012、macOS 10.7及更高版本、Linux、FreeBSD
- 語言：37
- 類型：硬碟加密軟體
- 許可協議：Apache License 2.0 但受限於 TrueCrypt License version 3.0