資訊安全─入門手冊

108
資資資資─資資資資 第 12 第 第第

Upload: hafwen

Post on 07-Jan-2016

21 views

Category:

Documents


1 download

DESCRIPTION

資訊安全─入門手冊. 第 12 章 加密. 第 12 章 加密. 『 良好的加密是安全的不二法門 』 。 如果可以利用加密來保護資訊,也就沒有人可以看得到內容或修改內容。 如果我們使用加密,也可以確認交談對象的身份。 加密確實是非常重要的安全工具、加密機制可以協助確認資訊的來源,但是加密本身並不是最後的答案。 加密機制可以做為廣泛安全計畫其中的一個環節。. 在安全計畫之中廣泛地使用加密機制,只是因為加密機制可以協助資訊的機密性、完整性和可說明性。 加密只會延緩取得內容所需的時間。 本章主要是希望提供您加密的基本觀念以及如何使用加密。. 本章的內容如下: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 資訊安全─入門手冊

資訊安全─入門手冊

第 12 章 加密

Page 2: 資訊安全─入門手冊

第 12 章 加密

『良好的加密是安全的不二法門』。 如果可以利用加密來保護資訊,也就沒有人可

以看得到內容或修改內容。 如果我們使用加密,也可以確認交談對象的身

份。 加密確實是非常重要的安全工具、加密機制可

以協助確認資訊的來源,但是加密本身並不是最後的答案。

加密機制可以做為廣泛安全計畫其中的一個環節。

Page 3: 資訊安全─入門手冊

在安全計畫之中廣泛地使用加密機制,只是因為加密機制可以協助資訊的機密性、完整性和可說明性。

加密只會延緩取得內容所需的時間。 本章主要是希望提供您加密的基本觀念以及如

何使用加密。

Page 4: 資訊安全─入門手冊

本章的內容如下: 12-1 認識加密的基本概念 12-2 認識私密金鑰加密 12-3 認識公眾金鑰加密 12-4 認識數位簽章 12-5 認識金鑰管理 12-6 認識可信任的系統

Page 5: 資訊安全─入門手冊

12-1 認識加密的基本概念

加密就是利用某種方式將資訊打散,避免無權檢視資訊內容的人看到資訊的內容,而且允許真正獲得授權的人才能看到資訊的內容。

『獲得授權的人』是指擁有解密金鑰( key )的人。

加密是讓毫無相干的人員難以讀取資訊的內容。即使得知加密系統所使用的加密演算法,但沒有金鑰也就無從得知資訊的內容。

Page 6: 資訊安全─入門手冊

透過加密可以提供下列三種安全服務:機密性:不論是在傳輸或儲存設備之中,都可

以利用加密隱藏資訊。完整性:不論是在傳輸或儲存設備之中,都可

以利用加密確認資訊的完整性。可說明性:加密可以用來確認資訊的來源,且

可讓資訊的來源無法否認資訊的出處。 本節的內容如下:

12-1-1 加密專有名詞 12-1-2 針對加密的攻擊

Page 7: 資訊安全─入門手冊

12-1-1 加密專有名詞

加密運作模式專有名詞如下: 原文( plaintext):資訊的原始格式,一般也通稱為

明文( cleartext )。 密文( chipertext):透過加密演算法打散的資訊。 演算法( algorithm):將原文處理成密文的運算法則。 演算法 (algorithm):將原文轉成密文的處理方法。 金鑰( key):將原文轉成密文或將密文轉成原文的過

程中,一種用來協助演算法計算的資料。 加密( encryption):將原文轉成密文的程序。 解密( decryption):將密文轉成原文的程序。

Page 8: 資訊安全─入門手冊

可以協助讀者瞭解加密運算的四種專有名詞如下:密碼學( cryptography):利用加密隱藏資

訊的技術。密碼員( cryptographer):從事密碼學的人。密碼分析( cryptanalysis):分析分析密碼

學演算法並嘗試找出缺陷。密碼分析師( cryptanalyst):利用密碼分析

來確認並利用密碼學演算法缺點的人。

Page 9: 資訊安全─入門手冊

12-1-2 針對加密的攻擊

加密系統可能遭到下列三種攻擊: 透過演算法的缺點 暴力破解金鑰 透過系統週遭的弱點

當演算法受到攻擊時,分解員會找尋將原文轉成密文的演算法缺點,且在沒有金鑰的情況下快速還原資訊的原文。

若是具有這類弱點的演算法,也就不能稱為牢靠的演算法,當然也就不能使用。

Page 10: 資訊安全─入門手冊

圖 12-1 基本的加密運算方式

Page 11: 資訊安全─入門手冊

暴力( Brute-force )攻擊是企圖利用所有可能的金鑰,企圖將密文還原成原文。

利用系統周遭的缺點是最後一種攻擊方式。在討論加密的內容時,一般都不太會探討這種問題。

攻擊系統周遭的缺陷會比攻擊加密演算法來得容易。

Page 12: 資訊安全─入門手冊

12-2 認識私密金鑰加密

加密法可以分為『私密金鑰』與『公眾金鑰』兩大類。

使用私密金鑰加密時,只要經過授權並擁有相同金鑰的人,都可以讀取資訊的內容。

資訊的保護類型可簡化為金鑰的保護。 私密金鑰加密是使用相當廣泛的加密類型。

Page 13: 資訊安全─入門手冊

本節的內容如下: 12-2-1 什麼是私密鎖鑰加密? 12-2-2 替換式密碼 12-2-3 One-Time Pads 12-2-4 資料加密標準 12-2-5 Triple DES 12-2-6 密碼加密 12-2-7 AES:Rijndael 12-2-8 其它私密金鑰演算法

Page 14: 資訊安全─入門手冊

12-2-1 什麼是私密鎖鑰加密?

由於加密/解密使用相同的金鑰,因此私密金鑰加密也稱為對稱式金鑰加密。

圖 12-2 是私密金鑰加密的基本功能。 在經過對稱式加密之後,可以確保資訊的機密

性。 只有金鑰的擁有人,才可以解密訊息。 在傳輸的過程中,訊息發生任何變化都會造成

解密失敗,因此可以得知訊息是否遭到修改。

Page 15: 資訊安全─入門手冊

私密金鑰加密無法確認建立金鑰、加密和傳送有效訊息的人。

建立私密金鑰加密的速度相當快,而且很容易利用軟體或硬體建置私密金鑰。

Page 16: 資訊安全─入門手冊

圖 12-2 私密金鑰加密

Page 17: 資訊安全─入門手冊

12-2-2 替換式密碼

替換式密碼的存在,已經超過 2500年以上。 Atbash 密碼是最早的已知的最佳範例。 最早利用的範例是在西元 600年左右,內容是

以顛倒的希伯來文構成的。凱薩大帝( Julius Caesar )也曾經使用稱為

Caesar 密碼的替換式密碼。 如果攻繫者充分收集密文,即可破解替換式密

碼。

Page 18: 資訊安全─入門手冊

12-2-3 One-Time Pads

理論上來講, One-Time Pad ( OTP )是唯一無法破解的加密系統。

OTP 使用一連亂數排列的數字,對一段訊息進行編碼(詳見圖 12-3 )。

如果 OTP 真的全部都使用亂數、 OTP 只能使用一次, OTP 的長度比訊息長,那麼就沒有找不到密文中的原文的金鑰( OTP 本身),因此也就無法解出訊息內容。

Page 19: 資訊安全─入門手冊

OTP 還有一點必須特別注意的事項 - 只能使用一次。如果重複使用,就可能進行分析和破解。

現今某些加密系統號稱可以模擬 OTP 。或許這類系統可以提供充分的安全性,但可能也是很容易被破解的系統。一般來說, OTP 並不適用於高流量的環境。

Page 20: 資訊安全─入門手冊

圖 12-3 One-Time pad 運算方式

Page 21: 資訊安全─入門手冊

12-2-4 資料加密標準

資料加密標準( Data Encryption Standard , DES )是由 IBM 在 1970年代初期發展出來的演算法。

在經過 NSA審核、修正、認可之後,美國國家標準與技術協會( United States National Institute of Standards and Technology , NIST ),在 1977年正式採用並做為 DES 的加密標準。

在 1983 、 1988 、 1993 和 1999年,也再次認定這個標準。

Page 22: 資訊安全─入門手冊

DES 使用 56 位元金鑰,且使用 7 個 8 位元的位元組(每個位元組的第 8 個位元是做為同位元檢查)做為金鑰的內容。

DES屬於區塊式密碼( block chiper ),一次處理 64 位元明文(詳見圖 12-4 演算法的區塊方塊圖)。

DES 密碼共有 16 個循環,每個循環都使用不同的次金鑰( subkey ),且每一個金鑰都會透過自己的演算法取得 16 個次金鑰(詳見圖12-5 )。

Page 23: 資訊安全─入門手冊

圖 12-4 DES區塊演算法

Page 24: 資訊安全─入門手冊

圖 12-5 DES產生次金鑰演算法

Page 25: 資訊安全─入門手冊

在 DES 方塊圖之中,可以看到幾個重新排列的替換方塊。

標準也定義了重新排列每一次替換的特定位元。 相同的演算法也可用來產生次金鑰,而且也會

重新排列替換選項 1 和 2特定位元。 在圖 12-4 之中可以找到標示為『 f 』的函數。函數內含稱為『 S 』區塊,這是一個將 6 位元輸入轉換成 4 位元輸出的對照表(標準裡面也有定義)。

Page 26: 資訊安全─入門手冊

DES 四種運作模式如下: ECB ( Electronic code book ):這是最基本

的區塊加密法,原文和金鑰都視為產生密文的輸入。在這個模式下,相同的輸入會產生相同的輸出。

CBC ( Cipher Block Chaining ):在這個模式下,每一個區塊的加密法和 ECB 一樣,但是多加入一個從上一個區塊產生出來的因子。在這種情況下,相同的輸入(原文)不會產生相同的輸出結果。

Page 27: 資訊安全─入門手冊

CF ( Cipher feedback ):這個模式會將前一個區塊產生的密文做為 DES 的輸入,輸出結果是將原文組合成新的密文。

OF ( Output feedback ):輸出模式類似 CF ,但是使用 DES 的輸出而且也不含密文。

目前可以攻擊 DES 演算法的攻擊方法少之又少(密碼分析和線性密碼分析的差異;這種攻擊的詳細資訊請參考 http://www.rsasecurity.com/rsalabs/faq/ )。

Page 28: 資訊安全─入門手冊

12-2-5 Triple DES

在 1992年研究人員發現重複使用 DES 即可建立牢靠的加密法則。因而產生了 Triple DES ( TDES )。

圖 12-6 顯示了 TDES 運作的方式。 第二次運算才是真正的解密動作,這也就是為什麼 TDES 會比一般 DES 來得牢靠。

TDES 可以使用兩組或三組金鑰。如果僅僅使用二組金鑰,那麼 k3 和 k1 是一樣的而只有 k2不同。

Page 29: 資訊安全─入門手冊

和 DES 相較之下, TDES屬於相對快速的演算法,這是因為可以利用硬體建置 TDES 。

在運算的時候,所需的時間約略是 DES 的三倍,這是因為含有三次 DES 運算。

大多數的應用程式應該選用 TDES 取代 DES 。

目前已經發現兩種專門針對 TDES 的攻擊法(類似 DES )。不過,不容易在現實世界發現攻擊所需的資料。

Page 30: 資訊安全─入門手冊

圖 12-6 Triple DES 方塊圖

Page 31: 資訊安全─入門手冊

12-2-6 密碼加密

標準 UNIX 密碼加密機制是屬於 DES 的變形。雖然實際上是採用單向函數( one-way

function )做為密碼加密方式(也就是說,無法從密文解出原文),不過還是需要探討應用程式如何這種類型的 DES 。

每個使用者選擇一組密碼,該演算法使用密碼的前八個字元。

密碼加密或裁掉超過 8 個字元的密碼。

Page 32: 資訊安全─入門手冊

如果密碼長度少於 8 個位元,就會補足 8 個字元。

取用每個字元的前七個位元,因此密碼會轉換成 56 位數。

系統會依據系統時間選擇 12 位元數字,這個數字被稱為 salt 。

同時使用 salt 和密碼做為密碼加密函數的輸入資料(詳見 12-7 )。

Page 33: 資訊安全─入門手冊

salt依據 12 位元的 1補數產生 4096組不同的方式,修改 DES 演算法之中的一個排列表( E Permutation )。

起始原文是由 56 個 0 位元組成,而金鑰是來自密碼的 56 個位元。

演算法重複執行 25次,每一次都是以前一次的輸出做為輸入資料。

最後的輸出結果會轉換成 11 個字元,而 salt會轉換成 2 個字元並放在輸出資料的最前面。

Page 34: 資訊安全─入門手冊

圖 12-7 Unix 密碼演算法函式

Page 35: 資訊安全─入門手冊

這個系統主要的弱點在於密碼的選用。因為大部分使用者都會使用小寫字元做為密碼的內容,因此會產生 268 種可能的組合,這個數字遠小於 DES產生 255 金鑰的可能組合。

暴力破解 Unix 系統的密碼,會比 DES 來得容易許多。

基於前述的原因,大多數的 Unix 系統都提供使用 shadow 密碼檔案的選擇。如果很容易暴力破解加密之後的密碼,因此將密碼隱藏起來可以增加系統的安全性。不過和其他的系統一樣,如果 root選擇不夠牢靠的密碼或是密碼遭到破解,那麼使用者選用再好的密碼也於事無補。

Page 36: 資訊安全─入門手冊

12-2-7 AES:Rijndael

為了取代 DES , NIST 在 1997年公布 AES( Advanced Encryption Standard ,高等加密標準)徵選活動。

在 2000年底, NIST宣佈來自比利時的兩位密碼學家 - JoanDaemon-VincentRijmen ,他們提出的 Rijmen 演算法贏得這項競賽。

牢靠度、適用於高速網路、可在硬體設備建置等因素,都是這個演算法獲選的原因。

Rijmen 也是屬於區塊式密碼金鑰,區塊的大小為 128 、 192 和 256 位元。

Page 37: 資訊安全─入門手冊

截至目前為止,仍然沒有暴力破解金鑰長度的計算方法。

依據原文的區塊大小和金鑰的長度而定,演算法之中會包含 10 到 14 個循環。

圖 l2-8顯示了每個循環的計算方式。 在認可 Rijmen 演算法之後,許多系統已經開

始出現 Rijmen 演算法。而且也成了取代TDES 的最佳選擇。

Page 38: 資訊安全─入門手冊

圖 12-8 Rijndael 循環函式演算法

Page 39: 資訊安全─入門手冊

12-2-8 其它私密金鑰演算法

在安全系統上可以選用的私密金鑰演算法如下: IDEA ( International Data Encryption

Algorithm,國際資料加密演算法):是由瑞士發展出來的。 IDEA 使用 128 位元的金鑰,所以也可以用在 PGP ( Pretty Good Privacy )。

RC5 : RC5 是由MIT 的 Ron Rivest發展出來的。它允許變動金鑰的長度。

Skipjack : Skipjack 是由美國政府使用Clipper Chip發展出來的。它使用 80 位元金鑰長度,在可見的未來將會變得不夠牢靠。

Page 40: 資訊安全─入門手冊

Blowfish : Blowfish 允許使用的金鑰長度最長可達 448 位元,且在 32 位元處理器上執行會有最佳化的執行效率。

Twofish : Twofish 使用 128 位元區塊,且可使用 128 位元、 192 位元或 256 位元金鑰。

CAST-128 : CAST-128 使用 128 位元金鑰,且應用在較為新版的 PGP 之中。

GOST : GOST 用來回應 DES 的蘇聯標準,使用 256 位元金鑰。

Page 41: 資訊安全─入門手冊

12-3 認識公眾金鑰加密

和私密金鑰加密相較之下,公眾金鑰加密算是較新的發明。

兩者之間最大的不同點在於 - 用於運算的金鑰數量不同。

在私密金鑰加密之中,加密/解密使用相同的金鑰,但是公眾金鑰加密卻使用兩組不同的金鑰。其中一組金鑰是用於資訊加密,而另一組金鑰則是用於解密。

Page 42: 資訊安全─入門手冊

本節的內容如下: 12-3-1 什麼是公眾金鑰加密? 12-3-2 Diffie-Hellman 金鑰交換 12-3-3 RSA 12-3-4 其他公眾金鑰演算法

Page 43: 資訊安全─入門手冊

12-3-1 什麼是公眾金鑰加密?

圖 12-9 即為基本的公眾金鑰或非對稱加密。 發送端與接收端各有一組金鑰。兩組金鑰之間相互關聯(因而稱為金鑰組),但金鑰的內容不同。

在實務上,其中一組金鑰稱為公眾金鑰( public key ),另一把則稱為私密金鑰( private key )。

金鑰組的擁有人保管私密金鑰,並對外公開公眾金鑰。 公眾金鑰加密的另一個特色 - 即使擁有其中一組金鑰

也無法推算出另一組金鑰。

Page 44: 資訊安全─入門手冊

如果屬於機密性的需求時,資訊也可以使用公眾鎖鑰加密。

只有私密金鑰的擁有人才能對資訊解密。 只有公眾金鑰的擁有人才能對資訊解密(換句話說,私密金鑰的擁有人),且只有金鑰對的擁有人才能持有傳送過的資訊。

不論是利用哪一種金鑰都可以保護資訊的完整性。

Page 45: 資訊安全─入門手冊

圖 12-9 公眾金鑰加密

Page 46: 資訊安全─入門手冊

12-3-2 Diffie-Hellman 金鑰交換

Whitfield Diffie 和 Martin Hellman 在 1976年發展出公眾金鑰加密系統。

Diffie-Hellman 系統,是用來解決私密金鑰系統的金鑰配送問題。

Diffie-Hellman 並不能用於資訊的加密/解密。

Page 47: 資訊安全─入門手冊

Diffie-Hellman 演算法的運算方式: 1.假設兩個人需要安全的通訊,所以需要認可

加密金鑰。 2.P1 和 P2 認可整數 a 和 b ,所以產生 1<a<b 。 3.P1接著選擇隨機數值 a 並計算 I = ai mod b 。

P1 將 I 傳送給 P2 。 4.P2接著依據隨機數值 a產生隨機數值 j 並計

算 J = aj mod b 。 P2 將 J 傳送給 P1 。

Page 48: 資訊安全─入門手冊

5.P1 計算 k1 = Ji mod b 。 6.P2 計算 k2 = Ij mod b 。 7.結果就會產生 k1 = k2 = aij mod b ,且 k1 和 k2 可以

做為其他傳輸的金鑰。

在上述計算式之中,『 mod 』代表取餘數。舉例來說 12 mod 10結果為 2 。其中的結果 2 ,就是 12 除 10 之後剩下的餘數。

Page 49: 資訊安全─入門手冊

如果某人監聽線上的流量時,他們或許會得知a 、 b 、 I 和 J ,但是 i 和 j依舊安全無虞。

這個系統的安全性,主要是依據即使得知 I = ai mod b 也很難找到 i 。

這個問題稱為離散對數問題,因而數字越大也就越難算出結果(也就是說以現今的電腦能力也很難算出結果)。

必須非常小心選擇 a 和 b 。

Page 50: 資訊安全─入門手冊

許多使用 Diffie-Hellman 金鑰交換的安全系統,都是使用額外的流量來交換安全金鑰。

Diffie-Hellman 的弱點是圖 12-10 中間人攻擊( man-in-the-middle )。

如果攻擊者系統放在 P1 和 P2 之間的流量路徑並攔截所有通訊時,且分別假冒 P2 和 P1溝通以及假冒 P1 和 P2溝通。因此,在 P1 、攻擊者和 P2 之間,就會發生金鑰交換。

Page 51: 資訊安全─入門手冊

圖 12-10 Diffie-Hellman 中間人攻擊

Page 52: 資訊安全─入門手冊

12-3-3 RSA

Ron Rivest 、 Adi Shamir 和 Len Adleman 在1978年發表了 Rivest-Shamir-Adleman ( RSA )公眾金鑰演算法。

和 Diffle-Hellman 演算法不同, RSA 主要是依據難以找出最大公因數。

若數字很大時(大於等於 1024 位元),就會難以找出最大公因數。

Page 53: 資訊安全─入門手冊

針對機密性的基本加密演算法非常簡單: 密文 = ( 原文 )e mod n 原文 = ( 密文 ) d mod n 私密金鑰 = {d, n} 公眾金鑰 = {e, n}

上述算式的困難點在於 - 即使取得 e 和 n 也難以計算出 d 。

公式假設金鑰對的擁有人,保留私密金鑰而公開公眾金鑰。

Page 54: 資訊安全─入門手冊

值得一提的是 RSA 也可以逆向操作,即可確認資訊的來源。

演算法計算式如下: 密文 = ( 原文 )d mod n 原文 = ( 密文 ) e mod n 私密金鑰 = {d, n} 公眾金鑰 = {e, n}

Page 55: 資訊安全─入門手冊

只要私密金鑰非常安全,金鑰的擁有人就可以使用私密金鑰對資訊加密。

每個人都可以用公眾金鑰將資訊解密,如果驗證無誤,就可以確定這個資訊是由金鑰對的主人所發出的。

Page 56: 資訊安全─入門手冊

產生 RSA 金鑰

在產生RSA 金鑰的時候,請依據下列步驟小心、謹慎地產生RSA 金鑰: 1.選用相當安全的質數 p 和 q 。 2. 計算 n= pq 。 3. 計算 Φ(n) = (p-1)(q-1) 。 4.選擇 (n) 的相對質數 e 。 5.判斷 d 是否符合 (d)(e)=1 mod (n) 以及 d<(n) 。

數值 n必須大於等於 200 位數(十進位)。

記得在範例中,選用的數值純粹是做為範例展示用途。在實際應用時,應該選用較大的數值。

Page 57: 資訊安全─入門手冊

可用的 RSA範例

產生 RSA 金鑰的範例如下: 1.首先選用質數 p=11 和 q=13 。 2. 計算 n=(p)(q)結果等於 n=(11)(13)=143 。 3. 計算 Φ(n)=(p-1)(q-1)=(11-1)(13-1)=120 。 4.選擇 (n) 的相對質數 e ,所以 e 的值是 7 。 5.依據 (d)(e) = 1 mod (n) ,因此, (d)(7)=1

mod 120 ,所以 (d)必須小於 120 。接著找到 d=103 。( (103)(7) = 721 ,所以 721 mod 120 = 1 ,商數等於 6 )。

Page 58: 資訊安全─入門手冊

6. 私密金鑰 = {103, 143} 。 7. 公眾金鑰 = {7, 143} 。

解密的計算公式如下: 密文 = ( 原文 )e mod n 原文 = ( 密文 )d mod n

Page 59: 資訊安全─入門手冊

12-3-4 其他公眾金鑰演算法

還有其它幾種具有 Diffie-Hellman 和 RSA 相同效果的演算法。

三種較為流行的演算法如下: Elgamal 數位簽章演算法橢圓曲線加密

Page 60: 資訊安全─入門手冊

Elgamal

Taher Elgamal屬於 Diffie-Hellman 的變形。這個演算法強化了 Diffie-Hellman 系統,最後也具有加密的功能,且演算法之一還具有確認來源的能力。

Elgmal 並沒有專利權( RSA 有專利權),因此是一個較為省錢的選擇(不需要支付專利費用)。

這個演算法是以 Diffie-Hellman 為基礎,因此也是屬於離散對數的計算問題。

Page 61: 資訊安全─入門手冊

數位簽章演算法

數位簽章演算法( Digital Signature Algorithm ,DSA )是美國政府發展的數位簽章標準(詳見下一節數位簽章)。

這個演算法是 Elgamal 的變形,不過只能做為身份確認用途,且不能用於機密性資訊的保護用途。

Page 62: 資訊安全─入門手冊

橢圓曲線加密

在 1985年提出的橢圓曲線加密( Elliptic curves Encryption )構想。

一般認為, Elliptic Curve Cryptosystems ( ECC )有別於因式分解和離散對數的數學計算。

計算問題如下:假設橢圓曲線的兩個點 A 和 B ,產生的計算式為 A = kB ,因此很難找到整數 k 。

使用 ECC 的效益會比 RSA 或 Diffie-Hellman來得好。

Page 63: 資訊安全─入門手冊

在相同的安全等級情況下, ECC 的金鑰長度更短(這就是 ECC問題的困難點),計算速度也比較快。

在普遍接受 ECC 之前,還必須深入研究和調查,而且 ECC 也已具有許多專利。

Page 64: 資訊安全─入門手冊

12-4 認識數位簽章

數位簽章( Digital Signature )並不是手寫簽名的影像檔,數位簽章是一種提供身份確認的加密形式。

數位簽章逐漸流行,且是邁向無紙化環境的重要關鍵。

前美國總統柯林頓曾經簽署過,讓數位簽章具有法律效力的法案。

本節的內容如下: 12-4-1 什麼是數位簽章? 12-4-2 安全的雜湊函數

Page 65: 資訊安全─入門手冊

12-4-1 什麼是數位簽章?

數位簽章是一種利用電子資訊加密的身份確認法則。

如果可以使用某人的私密金鑰將資訊解密,也就可以確認資訊來源的私密金鑰擁有人。

如果資訊可以正確地解密,那也代表資訊的內容沒有修改過,因此也可提供完整性的保護。

有了數位簽章之後,我們會希望在接收資訊和解密之後,並利用數位簽章進一步保護資訊不會遭到竄改。

Page 66: 資訊安全─入門手冊

圖 12-11顯示如何達成的可能方式,首要的步驟是摘取或雜湊( hash )訊息的功能。

雜湊之後會產生訊息的檢查碼,再使用檢查碼做為私密金鑰加密的資料來源。

最後,將訊息和加密之後的檢查碼一起傳送給資訊的接收端。

在接收端取得資訊之後,可將檢查碼輸入到相同的雜湊函數之中。

Page 67: 資訊安全─入門手冊

接著利用公眾鎖鑰將加密之後的檢查碼解密,在比對兩者的檢查碼是否相同。

如果檢查的結果相同,表示資訊沒有遭到修改。 數位簽章實用性的關鍵因素如下:

使用者私密金鑰的保護方式 安全的雜湊函數

如果使用者沒有妥善保護自己的私密金鑰,也就無法確認私密金鑰的擁有人。最後,也就無法確認是否是使用者本人簽署的電子文件。

Page 68: 資訊安全─入門手冊

圖 12-11 數位簽章運算

Page 69: 資訊安全─入門手冊

12-4-2 安全的雜湊函數

安全的雜湊函數是數位簽章不可或缺的部分。安全的雜湊函數必須滿足下列條件:單向函數。也就是說,可以計算出訊息的檢查

碼,但是無法利用檢查碼建立訊息的內容。縱使提供相同的檢查碼,也很難建立相同的訊息。

檢查碼的長度比資訊短,才會便於簽章核、傳送和保存。

安全的雜湊函式也可以建立大於等於 12 位元檢查碼。

Page 70: 資訊安全─入門手冊

目前最常用的是可以產生 128 位元檢查碼的MD5 ,以及產生 160 位元的 SHA 。

目前,已經證實 MD5 可能遭到計算攻擊的缺點。這種攻擊會讓兩組不同的資訊產生相同的檢查碼。

由美國政府發展的 SHA ,目前仍是非常安全。大多數的安全軟體都允許選用 MD5 或 SHA雜湊函數。

Page 71: 資訊安全─入門手冊

12-5 認識金鑰管理

金鑰管理是所有加密系統的安全問題癥結點。 只要能夠取得金鑰,也就可以利用金鑰將加密

過的資訊解密,也就是說金鑰本身是最有價值的資訊。

在某些情況下,甚至也有可能成功取得金鑰。 金鑰管理不止是保護金鑰的使用方式而已,還包含了建立牢靠的金鑰、遠端使用者如何取得金鑰、如何認證金鑰的正確性、遭到破解或過期時如何註銷。

Page 72: 資訊安全─入門手冊

金鑰和適當的金鑰管理,會嚴重地影響組織使用的加密系統。

本節的內容如下: 12-5-1 建立金鑰 12-5-2 分送金鑰 12-5-3 金鑰憑證 12-5-4 保護金鑰 12-5-5 註銷金鑰

Page 73: 資訊安全─入門手冊

12-5-1 建立金鑰

某些金鑰的演算法,具有非常嚴重的安全性問題。

例如全部使用 0補數的金鑰,就算使用 DES也不能提供牢靠的安全性。

在使用 RSA 的時候,也必須非常謹慎地選用質數 p 和 q 。

大部分加密系統都具有金鑰的產生方式。

Page 74: 資訊安全─入門手冊

在某些情況下,會允許使用者利用密碼做為金鑰。在這種情況下,最好能引導使用者選用包含數字和特殊字元在內的密碼。

某些加密系統採用隨機產生金鑰。 真正的亂數產生器並不多,大多數都是屬於虛擬亂數( pseudo-random ,是指依據樣本產生的亂數,最後也會發生重複)。

如果亂數產生器不是產生真正的亂數,那麼攻擊者就有可能猜出下一個數字。

Page 75: 資訊安全─入門手冊

必須謹慎選擇金鑰的長度。 某些演算法使用固定的金鑰長度(例如 DES 使用 56

位元金鑰),某些則使用可變動的金鑰長度。 一般而言,金鑰長度越長代表『越安全』。 表 12-1 列出了不同演算法金鑰的相對安全等級。

資訊的金鑰長度和編寫時間有關。也就是說如果金鑰的長度越長,所需的編寫時間也越久。隨著時間的演進,數學運算速度越快的電腦所需的編寫時間也越短。

Page 76: 資訊安全─入門手冊

私密金鑰加密( DES , RC5)

公眾金鑰加密( RSA , Diffie-Hellman)

橢圓曲線加密

40位元 - -56位元 400位元 -64位元 512位元 -80位元 768位元 -90位元 1024位元 160位元120位元 2048位元 210位元128位元 2304位元 256位元

表 12-1 不同的金鑰長度牢靠度也不一樣

Page 77: 資訊安全─入門手冊

12-5-2 分送金鑰

金鑰產生之後,必須分送給不同的地點和設備使用。

如果沒有保護傳送中的金鑰,金鑰可能被複製或竊取而導致整個加密系統安全堪慮。

金鑰也可以透過其它通道分送。目前,有一些方法可以用來解決分送金鑰的問題。例如可以利用 Diffie-Hellman 來建立並分送許多交談金鑰(利用單一交談流量或小型流量的暫時性金鑰)。

Page 78: 資訊安全─入門手冊

任何長時間使用的金鑰也需要多加留意。例如Diffie-Hellman 金鑰交換演算法不適合用來配送 RSA 金鑰組。

在任何 RSA 金鑰組的案例中,一個金鑰必須小心保管,而另一個金鑰可以公開。

公眾金鑰公佈的方法必須防範他人竄改(詳見後續的金鑰憑證)。

Page 79: 資訊安全─入門手冊

如果金鑰組是由憑證中心產生的,那麼私密金鑰必須安全地送到擁有人手中。

如果金鑰對是由擁有人自行產生的,那麼公眾金鑰也必須安全地送達憑證中心。

如果是由憑證中心產生的金鑰組,且利用私密金鑰做為身份確認用途,或許就會發生問題。因此,在建立和分送私密金鑰時,必須特別留意。

Page 80: 資訊安全─入門手冊

12-5-3 金鑰憑證

如果利用某種方式將金鑰傳送到遠端,當接收端收到金鑰之後,必須立即檢查金鑰是否在傳輸過程之中曾經遭到修改。

檢查的動作可以透過人工處理或某種類型的數位簽章來檢查。

由於任何人皆可取得金鑰,因而必須利用憑證來證明金鑰組的擁有人。

Page 81: 資訊安全─入門手冊

只要透過憑證中心即可證明金鑰組的擁有人(一般稱為認證憑證或 CA )。

CA 提供公眾金鑰數位簽章, CA 並證明金鑰組擁有人的公眾金鑰(詳見圖 12-12 )。

金鑰組的擁有人和金鑰若是沒有適當的憑證,攻擊者即可將自己的金鑰送入系統之中,且將會導致傳輸過或認證過的所有資訊遭到侵害。

Page 82: 資訊安全─入門手冊

圖 12-12 由憑證中心認證的公眾金鑰

Page 83: 資訊安全─入門手冊

12-5-4 保護金鑰

公眾鎖鑰組的公眾金鑰,不需要受到機密性的保護,只需利用憑證即可確保公眾金鑰的完整性。

不管在任何情況下,隨時都需要保護公眾金鑰組的私密金鑰。

如果攻擊者取得私密金鑰的複本,即可讀取任何金鑰組擁有人定位的所有機密流量,且同樣可以假冒金鑰組擁有人簽署任何資訊。

包含所有複本在內,都是需要保護的私密金鑰。

Page 84: 資訊安全─入門手冊

除了需要保護含有私密金鑰的檔案之外,也需要保護所有含有私密金鑰檔案的備份磁帶。

大多數的系統皆以密碼保護私密金鑰檔案。雖然可以保護不受隨意窺探的侵害,但卻無法防範攻擊。保護金鑰的密碼必須謹慎選用,才能防範暴力攻擊。

私密金鑰系統的金鑰都需要受到保護。 如果檔案之中含有金鑰,那麼隨時都必須受到嚴密的保護(包含備份磁帶)。

Page 85: 資訊安全─入門手冊

如果記憶體之中含有金鑰,那麼應該防止未經授權的使用者或程序讀取記憶體的內容。

在傾倒核心( core dump )的案例中,只要含有金鑰的核心檔案都應該受到保護。

Page 86: 資訊安全─入門手冊

12-5-5 註銷金鑰

金鑰並非永久有效。交談金鑰可能存在於特定的交談之中。這是因為結束連線交談之後,就會自動刪除交談金鑰。因此,並不需要特別制訂註銷金鑰的程序。

但是,某些具有憑證的金鑰會有時效的限制。 一般而言,公眾金鑰組憑證的有效期限約略是

一到二年,而認證過的公眾金鑰會確認有效期限。

Page 87: 資訊安全─入門手冊

如果電腦系統讀取到超過有效期限的金鑰時,就會自動註銷金鑰,所以也就無須特別制訂註銷金鑰的程序。

如果遺失金鑰或金鑰遭到破解,金鑰的擁有人必須通知其他使用者並註銷金鑰。

在私密金鑰加密系統的案例中,若是金鑰遭到侵害(或是系統的使用者得知這種情況),就必須通知所有持有金鑰的人並啟用新的金鑰。

Page 88: 資訊安全─入門手冊

公眾金鑰的案例會有些微的不同之處。如果金鑰遭到破解且在註銷之後,沒有任何明確的方式可以通知所有公眾金鑰的持有人,並告知現有的公眾金鑰已經作廢。

定期和金鑰伺服器溝通,並查看金鑰是否仍然有效,而金鑰的擁有人必須通知所有金鑰伺服器金鑰註銷的資訊。

金鑰伺服器必須持續保留金鑰註銷的資訊,直到金鑰過期為止。

Page 89: 資訊安全─入門手冊

12-6 認識可信任的系統

信任的觀念是所有安全與特定加密的底層概念。 針對能夠加密正常運作的部分,就必須相信金

鑰沒有遭到破解,而且相信使用相當牢靠的演算法。

對於來源確認和數位簽章的部分,必須相信使用公眾金鑰的人確實擁有公眾金鑰。

Page 90: 資訊安全─入門手冊

或許信任最大的問題就是如何建立和維護。目前可做為信任公眾金鑰環境的兩種主要模型

分別是:階層( hierarchy )網狀( web )

Page 91: 資訊安全─入門手冊

階層( hierarchy )

最容易瞭解的就是階層信任模型。簡單的說,信任某人是因為信任上一階層信任的任何人。

圖 12-13更清楚地顯示這個模型。

Page 92: 資訊安全─入門手冊

圖 12-13 階層信任模型

Page 93: 資訊安全─入門手冊

如果『使用者 1 』希望證明來自『使用者 3 』的資訊,這時候就會變得比較困難。

CA1 並不認識『使用者 3 』,因此『使用者2 』也是一樣的情形。

『使用者 1 』並不是 CA2 的下層,所以也就不信任 CA2 。

再往上一層就是 CA4 。『使用者 1 』會透過CA4 檢查來自『使用者 3 』的資訊,關係如下:

Page 94: 資訊安全─入門手冊

1. 『使用者 1 』找尋由 CA2發給『使用者 3 』的憑證。

2. 『使用者 1 』取得由 CA4發給 CA2 的憑證。 3. 一旦『使用者 1 』信任 CA4 之後,就可以利

用 CA4 的公眾金鑰來驗證 CA2 的憑證。 4. 在驗證 CA2 的憑證之後,『使用者 1 』即可驗證『使用者 3 』的憑證。

5. 在驗證『使用者 3 』的憑證之後,『使用者1 』就可以使用『使用者 3 』的公眾金鑰來驗證資訊。

Page 95: 資訊安全─入門手冊

階層驗證的架構會越來越複雜。 理論上看來似乎是一種不錯的方式,但在實務上並非如此!。原因之一是因為目前沒有根層( root-level ) CA 。根層 CA 是整個階層架構的最上層節點。

Page 96: 資訊安全─入門手冊

設立 CA

某些組織覺得建立內部 CA (和公眾金鑰基礎建設結合),對組織的商務非常重要。如果是這樣的情形時,必須先處理下列的問題:必須建立 CA 公眾金鑰組。金鑰必須大於安全

的有效期限(一般是一年到二年)。由自己的 CA 或更高層的 CA 來認證 CA 公眾金

鑰。如果使用外部組織提供的 CA 時,必須額外付費。

在金鑰的有效期限內,必須自行保護 CA 私密金鑰。如果曾經遭到侵害時,必須重建整個組織的基礎建設。

Page 97: 資訊安全─入門手冊

為了簽發最底層的憑證,因而必須制訂相關的政策和程序。

為了讓每個底層之間能夠互驗彼此的憑證,因此必須建立一套機制。

設計 CA 提供的數量確實是一大挑戰。 如果組織規模非常大或底層實體(使用者)非常多,管

理使用者憑證的工作絕非易事。

CA 和 CA 認證使用的系統 - 其中最特別的還是 CA 私密金鑰,必須要求高規格的安全性,否則 CA 系統很容易受到傷害統。而且發展用來保護 CA 私密金鑰的程序,通常也都需要二人共同開啟私密金鑰。

Page 98: 資訊安全─入門手冊

在簽發憑證之前必須確實驗證每個個體的身份,憑證過期和新的憑證也都是問題,而且還會發生必須註銷某個憑證的問題。

Page 99: 資訊安全─入門手冊

註銷憑證

註銷憑證可能是 CA 最大的問題之一。註銷憑證資訊必須適時地通知所有可能使用憑證的個體。

如果組織內只有一個 CA 的話,問題還不算大,不過必須強迫 CA隨時可提供服務。如果 cA的階層非常龐大(詳見圖 12-13 ),問題就會非常複雜。

Page 100: 資訊安全─入門手冊

網狀( web )

網狀架構的信任是另外一種信任模型,是由POP ( Pretty Good Privacy )首先利用這個概念。

這個概念的意思是說,每個使用者驗證自己的憑證,並將憑證告知所有已知的相關人員。

認識憑證擁有人的相關人員,可以自行選擇是否信任這份憑證(詳見圖 12-14 )。

Page 101: 資訊安全─入門手冊

圖 12-14 網狀信任模型

Page 102: 資訊安全─入門手冊

這種信任模型無需憑證中心。 規模太小或許是網狀架構的主要問題。網狀是採用點對點的關聯架構,每個使用者需

要具有幾個網狀架構關聯點的信任。 在實務上來說,由於大多數使用者只和少部分

的關聯點通訊,而且只有某些時候才會跨越多個使用者,因此這個問題可能並不存在。

網狀模型最大的優勢,就是不需要投資龐大的基礎建設。

Page 103: 資訊安全─入門手冊

每個使用者負責自已和他人的憑證,而組織可以自行決定是否提供憑證和註銷通知的集中儲存處。

Page 104: 資訊安全─入門手冊

專案實作 12 :設計加密系統

本專案主要是希望顯示系統如何利用加密,來提供身份確認、機密性和完整性的目標。

假設會使用私密金鑰( AES )和公眾金鑰( RSA 或 Diffie-Hellman )加密系統。您服務的組織需要接受夥伴的交易資料。

非常遺憾,組織並不允許內部系統使用商用VPN ,因此組織慣於應用自己建立的加密系統。

您的工作就是要提供加密系統該如何運作的建議。

Page 105: 資訊安全─入門手冊

在目前的狀況下,交易系統會接受來自夥伴的TCP連線、評估資訊,並提供資料庫適當的入口,接著伺服器會透過相同的連線回送確認訊息。

此時,必須保護傳輸中的機密資訊,並避免資訊遭到未經授權的竄改。

在夥伴的單一系統獲得認證並初始交易時,伺服器必須確認原始交易的真實性。

Page 106: 資訊安全─入門手冊

專案實作 12 :步驟

1.判斷特殊的加密需求:需要維持哪些資訊的機密性、如何保護未經授權的竄改,以及如何確認連線的系統?

2. 確認每一種需求所需的加密的類型(公眾金鑰或私密金鑰)。

3.判斷必須採用加密和解密的地方。 4.判斷金鑰管理系統的需求:如何建立、分送、驗證和註銷金鑰?

5. 在開始設計之後,調查設計範圍的缺點。這些缺點範圍是否會讓入侵者取得存取權?系統是否因此遭到侵害?

Page 107: 資訊安全─入門手冊

6. 從可用性的論點調查系統。那麼,是否可以在現實世界使用這個系統?

7. 其他系統以及組織的政策和程序,是否會需要使用加密?

Page 108: 資訊安全─入門手冊

專案摘要

選用加密的類型會是容易的部份。千萬記得可以確認來源的兩種加密類型,但是

利用私密金鑰確認來源的部分會有些限制。 金鑰管理系統可能會非常複雜。同時也要記得

設計單一系統的需求。而且也不需要立即擴展系統和系統的規模。

不要害怕找尋其他可用的系統。切記一點 - 加密並不是萬靈丹,即使在使用

加密之後,也可能增加其他需要解決的安全問題。