您好,欢迎访问三七文档
資訊安全─入門手冊第12章加密第12章加密『良好的加密是安全的不二法門』。如果可以利用加密來保護資訊,也就沒有人可以看得到內容或修改內容。如果使用加密,也可以確認交談對象的身份。加密確實是非常重要的安全工具、加密機制可以協助確認資訊的來源,但是加密本身並不是最後的答案。在安全計畫之中廣泛地使用加密機制,只是因為加密機制可以協助資訊的機密性、完整性和可說明性。12-1認識加密的基本概念加密就是利用某種方式將資訊打散,避免無權檢視資訊內容的人看到資訊的內容,而且允許真正獲得授權的人才能看到資訊的內容。『獲得授權的人』是指擁有解密金鑰(key)的人。加密是讓毫無相干的人員難以讀取資訊的內容。即使得知加密系統所使用的加密演算法,但沒有金鑰也就無從得知資訊的內容。透過加密可以提供下列三種安全服務:機密性:不論是在傳輸或儲存設備之中,都可以利用加密隱藏資訊。完整性:不論是在傳輸或儲存設備之中,都可以利用加密確認資訊的完整性。可說明性:加密可以用來確認資訊的來源,且可讓資訊的來源無法否認資訊的出處。12-1-2針對加密的攻擊加密系統可能遭到下列三種攻擊:透過演算法的缺點暴力破解金鑰透過系統週遭的弱點當演算法受到攻擊時,分解員會找尋將原文轉成密文的演算法缺點,且在沒有金鑰的情況下快速還原資訊的原文。若是具有這類弱點的演算法,也就不能稱為牢靠的演算法,當然也就不能使用。圖12-1基本的加密運算方式暴力攻擊是企圖利用所有可能的金鑰,企圖將密文還原成原文。利用系統周遭的缺點是最後一種攻擊方式。在討論加密的內容時,一般都不太會探討這種問題。攻擊系統周遭的缺陷會比攻擊加密演算法來得容易。12-2認識私密金鑰加密加密法可以分為『私密金鑰』與『公眾金鑰』兩大類。使用私密金鑰加密時,只要經過授權並擁有相同金鑰的人,都可以讀取資訊的內容。資訊的保護類型可簡化為金鑰的保護。私密金鑰加密是使用相當廣泛的加密類型。什麼是私密鎖鑰加密?由於加密/解密使用相同的金鑰,因此私密金鑰加密也稱為對稱式金鑰加密。只有金鑰的擁有人,才可以解密訊息。在傳輸的過程中,訊息發生任何變化都會造成解密失敗,因此可以得知訊息是否遭到修改。私密金鑰加密無法確認建立金鑰、加密和傳送有效訊息的人。建立私密金鑰加密的速度相當快,而且很容易利用軟體或硬體建置私密金鑰。圖12-2私密金鑰加密同樣KEY12-2-2替換式密碼替換式密碼的存在,已經超過2500年以上。最早利用的範例是在西元600年左右,內容是以顛倒的希伯來文構成的。凱薩大帝(JuliusCaesar)也曾經使用稱為Caesar密碼的替換式密碼。如果攻繫者充分收集密文,即可破解替換式密碼。12-2-3One-TimePads理論上來講,One-TimePad(OTP)是唯一無法破解的加密系統。OTP使用一連亂數排列的數字,對一段訊息進行編碼(詳見圖12-3)。如果OTP真的全部都使用亂數、OTP只能使用一次,OTP的長度比訊息長,那麼就因為找不出密文中的金鑰(OTP本身),因此也就無法解出訊息內容。OTP還有一點必須特別注意的事項-只能使用一次。如果重複使用,就可能進行分析和破解。圖12-3One-Timepad運算方式12-2-4資料加密標準資料加密標準(DataEncryptionStandard,DES)是由IBM在1970年代初期發展出來的演算法。在經過NSA審核、修正、認可之後,美國國家標準與技術協會(UnitedStatesNationalInstituteofStandardsandTechnology,NIST),在1977年正式採用並做為DES的加密標準。在1983、1988、1993和1999年,也再次認定這個標準。DES使用56位元金鑰,且使用7個8位元的位元組(每個位元組的第8個位元是做為同位元檢查)做為金鑰的內容。DES屬於區塊式密碼(blockchiper),一次處理64位元明文(詳見圖12-4演算法的區塊方塊圖)。DES密碼共有16個循環,每個循環都使用不同的次金鑰(subkey),且每一個金鑰都會透過自己的演算法取得16個次金鑰(詳見圖12-5)。圖12-4DES區塊演算法圖12-5DES產生次金鑰演算法在DES方塊圖之中,可以看到幾個重新排列的替換方塊。標準也定義了重新排列每一次替換的特定位元。相同的演算法也可用來產生次金鑰,而且也會重新排列替換選項1和2特定位元。在圖12-4之中可以找到標示為『f』的函數。函數內含稱為『S』區塊,這是一個將6位元輸入轉換成4位元輸出的對照表(標準裡面也有定義)。12-2-5TripleDES在1992年研究人員發現重複使用DES即可建立牢靠的加密法則。因而產生了TripleDES(TDES)。在運算的時候,TDES所需的時間約略是DES的三倍,這是因為含有三次DES運算。大多數的應用程式已選用TDES取代DES。圖12-6TripleDES方塊圖12-2-6密碼加密標準UNIX密碼加密機制是屬於DES的變形。雖然實際上是採用單向函數(one-wayfunction)做為密碼加密方式(也就是說,無法從密文解出原文),不過還是需要探討應用程式如何這種類型的DES。每個使用者選擇一組密碼,該演算法使用密碼的前八個字元。密碼加密或裁掉超過8個字元的密碼。如果密碼長度少於8個位元,會補足8個字元。取用每個字元的前七個位元,因此密碼會轉換成56位數。系統會依據系統時間選擇12位元數字,這個數字被稱為salt。同時使用salt和密碼做為密碼加密函數的輸入資料(詳見12-7)。salt依據12位元的1補數產生4096組不同的方式,修改DES演算法之中的一個排列表(EPermutation)。起始原文是由56個0位元組成,而金鑰是來自密碼的56個位元。演算法重複執行25次,每一次都是以前一次的輸出做為輸入資料。最後的輸出結果會轉換成11個字元,而salt會轉換成2個字元並放在輸出資料的最前面。圖12-7Unix密碼演算法函式這個系統主要的弱點在於密碼的選用。因為大部分使用者都會使用小寫字元做為密碼的內容,因此會產生268種可能的組合,這個數字遠小於DES產生255金鑰的可能組合。暴力破解Unix系統的密碼,會比DES來得容易許多。基於前述的原因,大多數的Unix系統都提供使用shadow密碼檔案的選擇。如果很容易暴力破解加密之後的密碼,因此將密碼隱藏起來可以增加系統的安全性。不過和其他的系統一樣,如果root選擇不夠牢靠的密碼或是密碼遭到破解,那麼使用者選用再好的密碼也於事無補。12-2-7AES:Rijndael為了取代DES,NIST在1997年公布AES(AdvancedEncryptionStandard,高等加密標準)徵選活動。在2000年底,NIST宣佈來自比利時的兩位密碼學家-JoanDaemon-VincentRijmen,他們提出的Rijmen演算法贏得這項競賽。牢靠度、適用於高速網路、可在硬體設備建置等因素,都是這個演算法獲選的原因。Rijmen也是屬於區塊式密碼金鑰,區塊的大小為128、192和256位元。截至目前為止,仍然沒有暴力破解金鑰長度的計算方法。依據原文的區塊大小和金鑰的長度而定,演算法之中會包含10到14個循環。圖l2-8顯示了每個循環的計算方式。在認可Rijmen演算法之後,許多系統已經開始出現Rijmen演算法。而且也成了取代TDES的最佳選擇。12-2-8其它私密金鑰演算法在安全系統上可以選用的私密金鑰演算法如下:IDEA(InternationalDataEncryptionAlgorithm,國際資料加密演算法):是由瑞士發展出來的。IDEA使用128位元的金鑰,所以也可以用在PGP(PrettyGoodPrivacy)。RC5:RC5是由MIT的RonRivest發展出來的。它允許變動金鑰的長度。Skipjack:Skipjack是由美國政府使用ClipperChip發展出來的。它使用80位元金鑰長度,在可見的未來將會變得不夠牢靠。Blowfish:Blowfish允許使用的金鑰長度最長可達448位元,且在32位元處理器上執行會有最佳化的執行效率。Twofish:Twofish使用128位元區塊,且可使用128位元、192位元或256位元金鑰。CAST-128:CAST-128使用128位元金鑰,且應用在較為新版的PGP之中。GOST:GOST用來回應DES的蘇聯標準,使用256位元金鑰。12-3認識公眾金鑰加密和私密金鑰加密相較之下,公眾金鑰加密算是較新的發明。兩者之間最大的不同點在於-用於運算的金鑰數量不同。在私密金鑰加密之中,加密/解密使用相同的金鑰,但是公眾金鑰加密卻使用兩組不同的金鑰。其中一組金鑰是用於資訊加密,而另一組金鑰則是用於解密。什麼是公眾金鑰加密?發送端與接收端各有一組金鑰。兩組金鑰之間相互關聯(因而稱為金鑰組),但金鑰的內容不同。在實務上,其中一組金鑰稱為公眾金鑰(publickey),另一把則稱為私密金鑰(privatekey)。金鑰組的擁有人保管私密金鑰,並對外公開公眾金鑰。公眾金鑰加密的另一個特色-即使擁有其中一組金鑰也無法推算出另一組金鑰。如果屬於機密性的需求時,資訊也可以使用公眾鎖鑰加密。只有私密金鑰的擁有人才能對資訊解密。只有公眾金鑰的擁有人才能對資訊解密(換句話說,私密金鑰的擁有人),且只有金鑰對的擁有人才能持有傳送過的資訊。不論是利用哪一種金鑰都可以保護資訊的完整性。圖12-9公眾金鑰加密不同KEY12-3-2Diffie-Hellman金鑰交換WhitfieldDiffie和MartinHellman在1976年發展出公眾金鑰加密系統。Diffie-Hellman系統,是用來解決私密金鑰系統的金鑰配送問題。Diffie-Hellman並不能用於資訊的加密/解密。Diffie-Hellman演算法的運算方式:1.假設兩個人需要安全的通訊,所以需要認可加密金鑰。2.P1和P2認可整數a和b,所以產生1ab。3.P1接著選擇隨機數值a並計算I=aimodb。P1將I傳送給P2。4.P2接著依據隨機數值a產生隨機數值j並計算J=ajmodb。P2將J傳送給P1。5.P1計算k1=Jimodb。6.P2計算k2=Ijmodb。7.結果就會產生k1=k2=aijmodb,且k1和k2可以做為其他傳輸的金鑰。如果某人監聽線上的流量時,他們或許會得知a、b、I和J,但是i和j依舊安全無虞。這個系統的安全性,主要是依據即使得知I=aimodb也很難找到i。這個問題稱為離散對數問題,因而數字越大也就越難算出結果(也就是說以現今的電腦能力也很難算出結果)。必須非常小心選擇a和b。許多使用Diffie-Hellman金鑰交換的安全系統,都是使用額外的流量來交換安全金鑰。Diffie-Hellman的弱點是圖12-10中間人攻擊(man-in-the-middle)。如果攻擊者系統放在P1和P2之間的流量路徑並攔截所有通訊時,且分別假冒P2和P1溝通以及假冒P1和P2溝通。因此,在P1、攻擊者和P2之間,就會發生金鑰交換。圖12-10Diffie-Hellman中間人攻擊12-3-3RSARonRivest、AdiShamir和LenAdleman在1978年發表了Rivest-Shamir-Adleman(RSA)公眾金鑰演算法。和Diffle-Hellman演算法不同,RSA主要是依據難以找出最大公因數。若數字很大時(大於等於1024位元),就會難以找出最大公因數。針對機密性的基本加密演算法非常簡單:密文=(原文)emodn原文=(密文)dmodn私密金鑰={d,n}公眾金鑰={e,n}上述算式的困難點在於-即使取得e和n也難以計算出d。公式假設金鑰對的擁有人,保留私密金
本文标题:资讯安全—入门手册
链接地址:https://www.777doc.com/doc-1269528 .html