[教學] 免費硬碟/隨身碟加密軟體 VeraCrypt (TrueCrypt 替代方案)

在開始介紹 VeraCrypt 之前,不得不從自 2004 年就開始發展的免費開源加密工具 TrueCrypt 說起,軟體本身採用 On-the-fly encryption (OTFE) 的方式來建立加密分割區或者是編碼過得虛擬區塊來模擬磁碟機,讓使用者可以將重要的檔案存放其內並加密,除非擁有正確的密碼,不然無法知道保護區塊內有啥樣類型的檔案。

也曾經有新聞報導過,美國 FBI 無法破解巴西政府委託透過 TrueCrypt 編碼的硬碟,自然軟體本身無法輕易被破解的強大保護功能似乎也再次受到驗證,加上跨平台的設計,其實也有著為數不少使用者,只是在無預警的情況下,TrueCrypt 在官網上註明了 “WARNING: Using TrueCrypt is not secure as it may contain unfixed security issues“,也明確說明 TC 不會繼續開發,最新的 7.2 版僅提供解碼功能,讓使用者可以解出使用先前版本製作的編碼檔案,並建議使用其他編碼工具替代,團隊並未針對所謂的安全疑慮做出其他解釋,不過盛囂塵上的傳言紛紛把矛頭指向 NSA,直指 TrueCrypt 早就被破解甚至值入後門,方便官方在某些情況下直接取得編碼內容,網友 badon 也在發表的 Hidden message on the new sourceforge TrueCrypt site 的文章中指出,最新版的程式碼中也透過藏頭的方式,用拉丁文來暗指 TC 下架的原因。

其實早 TrueCrypt 在公告停止開發之前,在 Indiegogo 就已經有人發起 The TrueCrypt Audit 的募資案,在發布的 Phase I/II Report 中,並未發現所謂的 critical vulnerability 或者 backdoor 來破解加密區塊的機密性,下面是相關的一些資訊,有興趣的可以參考看看。

儘管 TrueCrypt 已經中止開發,不過基於其架構下出現了 CipherShed 和 VeraCrypt 兩個分支,兩者皆會是 OpenSource 跨平台的方式來持續發展,如果已經很熟悉 TrueCrypt 的操作方式,其實選用 VeraCrypt 幾乎可以是無痛上手,操作方式如出一轍。

VeraCrypt 本身已經修正 TrueCrypt 已知的弱點和有安全疑慮的程式碼,強化在編碼系統分割區所使用的 PBKDF2-RIPEMD160 演算法複雜度,雖然會對系統增加一些運算上的負擔,不過現階段的硬體運算強度應該也不至於造成太大的困擾,同時為了避免延續先前架構造成像是 NSA 這類機構能夠較快的找出或者設計出破解機制,新的格式被落實也是必備開發項目。

軟體安裝

軟體下載連結

安裝注意事項

2015 02 28 060750

  • 選擇 Extract 的話,可以建立 Portable 版本,不過無法針對系統分割區/系統硬碟進行加密動作

操作語系切換

2015 03 01 024719

  • 若是英文界面操作上有窒礙,在 Setting/Language 下可以找到繁體中文

編碼演算法類別淺談

VeraCrypt 在編碼演算法的部份,除了提供 AES、Serpent 以及 Twofish 之外,還有所謂的 Cascade ciphers,也就是同樣的區塊,先後使用不同的演算法以及獨立金鑰下去編碼,甚至是使用上述的三種演算法來加密,進而增加複雜度,不過最直接反應的就是電腦硬體處理的效能,為了讓使用者評估編碼方式的選擇,VeraCrypt 也提供簡單的效能評估工具,讓使用者可以在電腦效能跟編碼複雜度中找到平衡點。

2015 03 03 085709

  • 在軟體主頁面 Tools 選項下方可以找到 Benchmark

2015 03 03 085923

  • 選取好 Buffer Size 之後按下 Benchmark 之後,就會開始各種編碼方式所需要處理的時間
  • 要注意的是,上述測試是單純在記憶體中運算所需要的時間,在實際的儲存媒體中編碼解碼效率,會受限於 I/O 效能
  • 眼尖的使用者,應該會發現 AES 編碼解碼效能遠高過其他演算法,這並非其編碼較為簡易,而是 CPU 本身有支援硬體加速功能

2015 03 03 090044

  • 想要知道自己電腦本身是否有 AES 硬體加速,可以在 Settings 下找到 Performance

2015 03 03 090251

  • 若是右上角顯示 Yes, 則是代表 CPU 有支援硬體加速,當然使用者也可以決定該功能是否開啟與否

加密用 Keyfile 的製作

Keyfile 的用途,是在編碼過程中加入雜訊,沒有正確的密碼和對應的檔案,就無法開啟加密過的空間,而 VeraCrypt 本身對於 Keyfile 的檔案大小以及類別並沒有限制,任何格式任何容量大小的檔案都可以作為 Keyfile,不過為了效能考量,只會使用檔案的前 1,048,576 bytes (1 MB) 來做運算,如果沒有適當的檔案或者想要建立亂數產生的 Keyfile,VeraCrypt 本身也提供使用 RNG ( Random Number Generator) 的工具來讓使用者自行製作。

2015 03 03 103322

  • Tools 下可以找到 Keyfile Generator 產生器

2015 03 03 103415

  • 雖然說是 RNG,不過其實還是屬於 Pseudorandomness,並非真的亂數,所以 VeraCrypt 加入了讓使用者隨意移動滑鼠的動作,滑行時間越久,強度就越高,命名完 Keyfile 名稱之後按下 Generate and Save Keyfile 即可

建立加密空間 (檔案格式)

2015 03 02 073600

  • 按下 Create Volume 即可建立加密空間

2015 03 02 073717

  • 選擇 Create an encrypted file container 即可建立檔案格式的加密空間

2015 03 02 073805

  • 這邊請選取 Standard VeraCrypt volume 建立標準加密檔,隱藏格式後面會另外說明

2015 03 02 073922

  • 指定編碼檔案所在位置,可以放在任何可讀寫的儲存媒體

2015 03 02 081405

  • 除了編碼演算法的選擇,VeraCrypt 提供編碼檔案 SHA-256、SHA-512 以及 Whirlpool 三種不同的雜湊演算法

2015 03 02 081640

  • 指定想要建立的編碼空間檔案大小

2015 03 02 081853

  • 設置編碼檔案的密碼,軟體本身會建議 20 碼以上,最高可以支援到 64 碼
  • 設定密碼的同時,也可以添加 Keyfiles 來增加強度

2015 03 02 082444

  • 使用者可以指定任意單檔/資料夾下的檔案來當作 Keyfile,自行自作的部份請參閱上面的介紹

2015 03 02 082632

  • 使用者可以設置編碼檔案內的檔案格式,可以是 NTFS 或者 FAT32
  • 按下 Format 之前,同樣可以透過隨意滑動滑鼠來增加隨機變數製作 Random Pool 來強化編碼強度

2015 03 02 082830

  • 按下 Format 就會按照使用者定義的編碼方式來產生編碼檔案

如何掛載編碼檔案空間 (檔案格式)

2015 03 02 085244

  • 編碼空間平常是以檔案的型態存在,要對內容進行存取時,需要透過掛載的動作
  • 先選取好要掛載的位置 (上圖為 M 槽),然後選擇當按位置後,按下 Mount

2015 03 02 085711

  • 輸入編碼空間預先設置的密碼
  • 如果有使用 Keyfile,請勾選 “Use keyfiles” 並按下 Keyfiles 選擇檔案所存放的位置

2015 03 02 085824

  • 掛載成功後,會顯示編碼空間所使用演算法方式以及類別
  • 若是要取消掛載,點選掛載位置後,按下 Dismount 即可

建立加密空間 (非系統分割區格式)

基本上非系統分割區的加密空間建立過程和概念,跟建立檔案格式的部份殊無二致,下面流程會稍微簡化一點,僅保留重要資訊

2015 03 02 090450

  • 選取 Encrypt a non-system partition/drive 來建立非系統分割區格式
  • 如果有要建立加密隨身碟的需求,這個類型的加密空間算是很適合的一個選擇

2015 03 02 090517

  • 同樣選擇標準模式,隱藏類型的加密空間後面會一併介紹

2015 03 02 090536

  • 選取要建立加密空間的位置

2015 03 02 090750

  • 選取要加密的非系統碟分割區,這邊使用的對象是 8GB 隨身碟

2015 03 02 090808

  • 選取成功後會顯示對應分割區資訊

2015 03 02 090919

  • 建立的分割區方式有兩種概念,一者是建立全新的編碼區塊並忽略內部檔案資訊,二者是保留分割區內容並且一併加密

2015 03 02 090930

  • 這邊就和建立檔案沒啥需要留意的地方,不過選擇分割區的方式

2015 03 02 091028

2015 03 02 090945

2015 03 02 091042

  • 除了密碼和編碼分割區的大小設定之外,若是希望可以存放超過 4GB 的單檔,可以在這邊先行確認,預設會幫使用者選取 NTFS 的檔案系統

2015 03 02 091233

  • 同樣按下 Format 即可建立分割區格式的加密空間

2015 03 02 101052

這邊要注意的是,由於整個分割區已經編碼,作業系統本身無法辨識,原本隨身碟還是會出現在作業系統中,但是點擊的時候會詢問是否要格式化,這個部份是比較需要留意的地方,不要誤刪重要的加密分割區

如何掛載編碼檔案空間 (非系統分割區格式)

2015 03 02 101131

  • 不同於編碼檔案,加密的分割區要使用 Auto-Mount Devices 的方式來掛載
  • 另外同樣要先選取掛載之後的磁碟名稱,輸入對應密碼 (Keyfiles)

2015 03 02 102013

  • 掛載完成之後,會顯示對應的分割區/編碼演算法/格式等資訊

如何建立隱藏編碼區塊

Image 024

所謂的隱藏編碼區塊,就是在建立好的編碼區塊中,再次建立一個編碼區塊,主要的用途是,在某些情況下,不得不提供第一層密碼時,由於主要容器內的資料本身已經是經過編碼,在這個情境下,是無法判斷在剩餘空間中是否有其他隱藏的編碼區塊,就連隱藏區塊的 Header 本身都是編碼過後的資訊,透過這種機制,除非知道隱藏其內的編碼空間密碼,不然是無法證明並被要求提供開啟所需要的密碼。

2015 03 02 103929

  • 隱藏編碼區塊的建立,不管是檔案結構或者非系統分割區的建立方式都一樣,都是建立在已經完成的編碼區塊內,這邊就以非系統分割區的建立方式為例子

2015 03 02 103946

  • 建立隱藏區塊的方式分成兩種,一者是重新建立普通編碼區塊,再者則是直接建立在已經製作完成的普通編碼區塊中,這邊使用後者 Direct mode 為例子

2015 03 02 104731

  • 首先選取之前已經經過編碼處理過得隨身碟分割區

2015 03 02 104808

  • 要先輸入建立好的編碼區塊所使用的密碼,若是有使用 Keyfiles 也必須一併選取

2015 03 02 104920

2015 03 02 104933

2015 03 02 105027

2015 03 02 105132

2015 03 02 105211

  • 隱藏區塊本身的建立過程就和標準區塊相同,這邊就不贅述

如何掛載隱藏編碼空間

2015 03 02 111833

  • 掛載非系統分割區的隱藏空間方式比較有趣一點,使用者並不需要先行 Auto-Mount 第一層的隱藏分割區,只需要直接輸入隱藏空間的密碼就可以開啟,因為解析的過程中,VeraCrypt 會自行對分割區的 Header 進行分析
  • 當然掛載成功之後,也會顯示隱藏的非系統分割區編碼區塊資訊,不同的是,類別從 Normal 變成 Hidden

建立系統分割區加密區塊

個人是沒有使用到這個功能,畢竟系統槽是屬於讀寫較為頻繁的分割區,複雜的加密過程對讀寫有一定程度的影響,如果真的有使用上的需求,建議可以考慮使用 SSD 搭配有 AES 硬體加速的 CPU,理論上可以將加解密對於系統存取的效能影響降至最低,下面同樣以需要留意的步驟為主。

2015 03 02 115654

  • 同樣可以在系統分割區建立隱藏區塊,不過這邊以一般加密區塊為例

2015 03 02 121858

  • 可以選擇單純加密主系統分割區或者系統碟整個空間

2015 03 02 121909

  • 軟體提供對單一作業系統加密,如果系統碟本身為多作業系統,也可以對兩個以上的系統做加密動作

2015 03 02 121947

  • 除了先前介紹過得雜湊演算法,系統碟的加密多出了使用 RIPEMD-160 的選項

2015 03 02 122023

2015 03 02 122059

2015 03 02 122204

  • 同樣要經過密碼設定以及亂數取樣的方式來強化編碼複雜度

2015 03 02 122316

2015 03 02 122411

  • 相較於檔案/非系統分割區而言,加密主系統安裝分割區在安全救援上更為重要,VeraCrypt 提供了救援光碟的製作,讓使用者在某些情況下出現 Header 毀損的時候可以進行救援動作
  • 預設會呼叫微軟內建的燒錄工具,待燒錄完成後,會對 Rescue CD 進行驗證的動作