第四章 DES-X 介紹
4.5 DES 的操作模式
4.5.2 Cipher Block Chaining Mode(CBC 模式)
CBC 模式處理方式是加密演算法的輸入是由前一個密文區段的 64 位元與下一個明文區段的 64 位元經過 XOR 運算後所組成,其主要是改 良 ECB 模式在同樣內容的明文重複出現的情況下,不會產生相同的密 文輸出。因為一開始的明文區段並沒有前一個密文區段可以用,所以 必須另外準備「起始向量」(Initialization Vector,IV)給第一段明 文區段使用,而解密之時也只需要先將第一個密文區段和 IV 作 XOR 運
算之後就可以正常解密出明文,其作法如下所示:
圖 4-7 CBC 模式操作流程圖 4.5.3 Cipher Feedback Mode(CFB 模式)
DES 或其他對稱式區段加密演算法都是作用在固定長度區段上的加 密技巧,然而我們卻可以利用 CFB 模式將 DES 轉換成一個資料流加密 法(Stream Cipher),使用資料流加密法的話就不需要將訊息長度補足 成固定區段大小的倍數,可以用即時處理的方式來運作,因此當我們 要傳送一連串字元時就可以採用 CFB 模式。
資料流加密法的特質就是密文與明文長度必須相同,因此我們如果 要傳送 8 位元的字元資料的話,每個字元就必須用 8 位元來加密,若 是超過 8 位元來加密就浪費傳輸容量了。
CFB 模式的操作方法是加密函數輸入是一個位移暫存器(Shift Register),這個暫存器一開始會被設定成某個起始向量 IV,加密函數
的第一次輸出的最左邊的 j 個位元會與第一個明文單元 P1作 XOR 運
DES Encrypt K
Shift register 64-j bits | j bits
DES Encrypt K
Shift register 64-j bits | j bits
DES Encrypt K
Shift register 64-j bits | j bits
CFB Encrypt
圖 4-8 CFB 模式操作流程圖 4.5.3 Output Feedback Mode(OFB 模式)
OFB 模式的結構與 CFB 模式很類似,在 OFB 中回存到位移暫存器中
DES Encrypt K
Shift register 64-j bits | j bits
DES Encrypt K
Shift register 64-j bits | j bits
DES Encrypt K
Shift register 64-j bits | j bits
CFB Decrypt
DES Encrypt Shift register 64-j bits | j bits
DES Encrypt K
Shift register 64-j bits | j bits
DES Encrypt K
Shift register 64-j bits | j bits
OFB Decrypt
圖 4-9 OFB 模式操作流程圖
DES Encrypt K
Shift register 64-j bits | j bits
DES Encrypt K
Shift register 64-j bits | j bits
DES Encrypt K
Shift register 64-j bits | j bits
OFB Encrypt
第五章 SHA-1 介紹 5.1 何謂 SHA-1
安全雜湊演算法(Secure Hash Algorithm)簡稱 SHA,是由美國國 家標準與技術協會(NIST)所發展出來的,並且在 1993 年發布成為第 180 項美國聯邦資訊處理標準(FIPS PUB 180),而在 1995 年底又將其 修訂版本發布為 FIPS PUB 180-1,所以我們通稱此版本為 SHA-1,SHA 是以 MD4(Message Digest Algorithm)為基礎,並且設計方式與 MD4 也很類似。
Message(K bits) 100...0
Y
0Y
1… Y
q… Y
L-1512bits 512bits 512bits 512bits
Padding
(1 to 512bits) Message length
圖5-1 SHA-1演算法流程圖
5.2.1 SHA-1 訊息附加位元(Padding bits)
在訊息之後附加一些位元使訊息取 512 同餘之後等於 448,我們一 定要在訊息尾端附加位元即使訊息本身長度就已經符合我們需求,因 此我們附加的位元個數可以從 1 到 512 位元,而附加的方法是先加上 一個 1 然後再用 0 補到需要的長度,當然這需要在訊息末端加上一段 64 位元的資料,這段資料以一非負整數表示用來記錄原來訊息的長度。
5.2.2 設定 Message Digest 暫存區的初值
我們使用一個 160 位元的暫存區來存放這個雜湊函數的中間值及 最後結果,我們可以用 5 個 32 位元暫存器(A、B、C、D、E)來表示這 個暫存區,而這 5 個暫存器的起始初值如下(以 16 進位表示):
5.2.3 處理訊息中 512 位元區段
此為 SHA-1 核心部分,這部分是由四個「處理回合」所組成的模組,
每個回合有 20 個步驟,運作邏輯我們可以由圖 5-2 看到,這四個回合 的結構都差不多,但是每個回合都用了一個不同的基本邏輯函數,這 些邏輯函數在這個規格中分別被標示成 F1、F2、F3及 F4。
每回合的輸入是我們正要處理的 512 位元區段(Yq)與 160 位元的暫 存區 ABCDE,這四個回合會分別更動這個暫存區的內容,每個回合還會 加上常數 Kt,我們用步驟編號 t 由 0 到 79 來表示四個回合中的 80 個 步驟,而實際上我們只用了四個不同的常數如下所示:
F2,K,W[0……19]
20 個步驟
F3,K,W[0……19]
20 個步驟
F4,K,W[0……19]
20 個步驟 F1,K,W[0……19]
20 個步驟
A B C D E
A B C D E
A B C D E
+ + + + +
Yq CVq
A B C D E
CVq
A B C D
圖5-2 SHA-1處理一個512位元區段流程圖
第四個回合的輸出(第 80 個步驟的輸入)會跟第一個回合的輸入(CVq) 加在一起,所產生的結果就是 CVq+1,相加的方法是暫存區中的四個字 元與 CVq中相對應的字元相加(字元間彼此獨立相加),並且都要取 232 的同餘就可以得到結果。
5.2.4 SHA-1 輸出
當所有 512 位元的區段都處理過之後,最後一階段產生的輸出就是 我們要的 160 位元的訊息摘要值。我們可以將 SHA-1 的行為歸納如下:
CV0 = IV
CVq+1 = SUM32(CVq, ABCDEq) MD = CVL
此處
IV = ABCDE 暫存區的初始值
ABCDEq = 訊息中第 q 個區段最後一回合的輸出
L = 訊息中的區段個數(包含以附加的位元及長度欄位)
SUM32 = 將兩個輸入區段的字元分別獨立相加之再取 232的同餘 MD = 最後的訊息摘要值
5.3 SHA-1 的壓縮函數
和特性也很相似,我們就根據 MD4 所定義的設計目標來比較這兩個演 算法。
對抗暴力法攻擊的安全程度:最明顯也是最重要的差別就是 SHA-1 的摘要值要比 MD5 的摘要值多了 32 個位元,如果我們想針對一摘 要值來求出訊息的話,MD5 需要執行 2128個運算,而 SHA-1 則需要 執行 2160個運算。此外如果想要找到兩個可以產生相同摘要值得訊 息的話,那 MD5 需要執行約 264個運算,而 SHA-1 則需要執行約 280 個運算,因此就暴力破解法而言 SHA-1 是比較安全的。
對抗密碼破解的安全程度:近年來 MD5 在結構上被人發現是不安全 的,而 SHA-1 尚未有發現結構上的問題,加上 SHA-1 的設計策略和 DES 的 S-box 相同不為人知,所以目前看來比 MD5 要安全許多。
速度:這兩個演算法都大量的使用了取 232同餘的加法,所以他們 在 32 位元處理器上的表現都很好,但是 SHA-1 需要的步驟是 80 步 而 MD5 是 64 步,在暫存區的長度上 SHA-1 的 160 位元也比 MD5 的 128 位元要來的多,所以在同樣的電腦上 SHA-1 的執行速度要比 MD5 來的慢。
由上面幾點來看雖然 SHA-1 的執行速度較 MD5 為慢,但是 SHA-1 卻具 有較高的安全性強度,加上 MD5 被發現有結構上的缺點,所以我們當 然是採用 SHA-1。
第六章 Web Content Recovery System 程式介紹 6.1 安裝程式
此安裝程式主要負責幾項工作:
1. 拷貝 WCR 所有程式到使用者指定目錄。
2. 設定並建立 WCR 系統的設定檔(wcr.ini)。
3. 加入系統登錄檔註冊值,使檔案總管等程式之 POP 選單增加
「WCR 檔案加密」之選項。
4. 執行 Mkey.exe 來產生新的 DES 鑰匙並將其存放於指定的位置。
5. 藉由加密程式加密所有需要保護的網頁資料。
6. 建立程式集目錄和程式捷徑。
上述的步驟我們可以由下面的執行畫面 6-1~6-5 來看:
圖 6-1 WCR 安裝程式畫面 1
圖 6-2 WCR 安裝程式畫面 2
圖 6-3 WCR 安裝程式畫面 3
圖 6-4 WCR 安裝程式畫面 4
圖 6-5 WCR 安裝程式畫面 5
6.2 加密和備份程式
此程式則負責檔案的加密和加密之後的備份工作,以求發生網頁被 竄改之時能有還原網頁之能力,其使用和執行介面是經由 Windows 作 業系統上的檔案管理程式,不需另外開啟程式或特殊介面,我們可以 由圖 6-6 看到增加到 POP 右鍵選單上的「WCR 檔案加密」選項
圖 6-6 WCR 加密程式執行畫面 6.3 解密和還原程式
當檔案需要解密或是由備份中移除、還原時則由此程式來做,主要 用於網頁檔案 update 或是汰舊,另外因為我們的加密對象是檔案名 稱,所以所有檔名皆為無法認出的密文,為了讓使用者能夠方便的找
到檔案並作解密還原的動作,所以我們的解密還原程式就在讀取檔案 列表時即時的將檔名作 DES-X 解密動作,讓在 GUI 介面上看到的檔案 列表是未加密前的檔名,此做法不僅方便使用者另外一方面在解密檔 案時也不需要再作 DES-X 解密動作,其執行畫面如圖 6-7。
圖 6-7 解密還原程式執行畫面 6.4 WCR 主程式
功能說明
起始執行畫面如圖 6-8,主要可使用的功能有四個:
啟動:啟動 WCR TCP Proxy 的功能,啟動後才會開始執行 WCR 的功能。
重新載入虛擬目錄設定:當使用者在 WCR TCP Proxy 執行後修改虛擬
目錄的設定後,需執行此功能來重新載入設定,方能產生效果。
重新讀取設定:用來重新讀取其他細部的設定。
圖 6-8 WCR 主程式執行畫面
最小化:當點下右上角的最小化鍵後,WCR TCP Proxy 會縮到 task bar 上(如圖 6-9),在 task bar 上的 icon 連點兩下,WCR TCP Proxy 會回 復原來的大小。
圖 6-9 WCR 在最小化在 task bar 畫面 執行結果
在 WCR TCP Proxy 功能啟動後,輸入原始的檔名後,網頁正確的 開啟(圖 6-10),但實際網頁的名稱都已經經過加密(如圖 6-11),直接 到 IIS 所在的 port 來開啟同樣的網頁,結果並無法成功的開啟(如圖 6-12)。
圖 6-10 開啟網頁測試畫面
圖 6-11 實際在主機上的檔名畫面
圖 6-12 直接送要求給 IIS 開啟網頁的測試畫面 第七章 WCR 系統架構和問題解決
7.1 WCR 系統架構
整體架構大致分為兩部分:On-line 的主程式和 Off-Line 的加解 密及備份還原程式,其簡單的結構可由圖 7-1 來看:
On-Line 主程式
Off-Line
圖 7-1 WCR 系統簡單架構圖 TCP Proxy
即時檢查 即時還原 即時通知
資料備份還原
檔案加解密 離線檢查
而處理 Client 端瀏覽器 Request 的流程也可以由圖 7-2 清楚了解
轉送到TCPProxy Client端 Web Service Web Service將 Reqeust的檔案 Response給 TCPProxy Client端
TCPProxy Client端將Response
轉送到TCPProxy Server端
TCP Proxy 會 bind 到 80 PORT,然後當 Request 進來時,先將檔名 經 DES-X 加密後再搜尋目錄下檔名以此密文開頭的檔案,找到之後再 將此檔的內容經過 SHA-1 來計算其摘要值,並與檔名中的摘要值部份 比對,以檢查檔案的完整性,如果沒問題再將 Request 中的檔名改為 加密後的檔名,再送往 Web Service,收到 Web Service 的 Response 後將傳回給 Client 端;如果檔案有問題便即時將他從備份檔中還原,
並記錄 log 再以 E-mail 方式通知管理者,最後都由 Web Service 的程 式作 Response 後將傳回給 Client 端。
7.1.1 WCR 加密和備份做法說明
我們使用 DES-X 來加密檔案名稱(不包含路徑),而以 SHA-1 來計算 檔案內容的訊息摘要值,之後將兩者整合變成該加密後的檔案名稱,
也就是說我們的加密處理只變動檔名部分,不會對檔案內容作任何動 作或處理,至於檔案備份工作則是依照使用者設定的備份路徑將檔案 依照原本所在路徑的架構完整備份下來,舉例來說:當備份路徑為 D:\WCR\Backup 而加密過檔名為
E:\e5b7cd8e07106fbda28cee94b167af6fe8d74d8a014e76387d860346.html 則備份檔案為
D:\WCR\Backup\E\e5b7cd8e07106fbda28cee94b167af6fe8d74d8a014e76 387d860346.html。我們由圖 7-3 可以了解加密和備份程式處理檔案的 流程。
圖 7-3 WCR 加密備份程式流程圖
圖 7-3 WCR 加密備份程式流程圖