資訊與網路安全技術 第一章 安全性資訊系統簡介  上一頁      下一頁

 

1-2 安全性工具

內容:

既然安全性系統須達到隱密性與不可否認性等等功能,則須密碼學相關工具輔助才能達成,以下將簡略介紹之。

1-2-1 密碼系統

無論介紹何種安全性系統環境,『密碼學』(Cryptographic[88, 129, 133, 136]總是離不開的課題。『密碼系統』(Cryptosystem)即是利用密碼學理論發展出來的資訊安全工具。密碼系統將明文編碼成一些沒有意義的文字或數字的密文之後,再傳送給接收端;接收端再依據原來雙方協議好的編碼方式,將密文解碼回原來的明文。攻擊者不知道編碼技巧(或編碼鑰匙,Key),則無法得知盜取訊息中的傳輸內容。如此達到隱密性的傳輸功能,但它的功能並非僅如此而已,其他功能本書還會陸續介紹。利用密碼學製作出來的隱密性功能的運作如下表示:

明文(Plaintext):M

密文(Ciphertext):C

加密編碼(Encryption):E

解密編碼(Decryption):D

加密鑰匙(Encryption Key): K1

解密鑰匙(Decryption Key): K2

編碼與解碼的過程如下:

加密過程:C = EK1(M)

解密過程:M = DK2(C) = DK2(EK1(M))

1-2 典型密碼系統的功能圖

然而,發送與接收兩者之間所採用的加密/解密編碼技巧必須是互相搭配的,鑰匙的規格也必須是一致的。因此,隨著不同應用系統的需求,『密碼系統』(Cryptosystem)主要可區分為下列兩大類。

【秘密鑰匙系統】

秘密鑰匙密碼系統』(Secret Key Cryptosystem,或稱為秘密金鑰系統或密鑰系統)表示加密與解密是使用同一把鑰匙(如圖 1-2 K1 = K2),而這把鑰匙必須隱密地分送給通訊雙方;參與通訊者必須安全的保護這把鑰匙,絕不可洩漏給其他不相干的人,故而稱之。然因為加密與解密是採用同一把鑰匙,又可稱為『對稱式密碼系統』(Symmetric Cryptosystem)或『單一鑰匙密碼系統』(One-Key Cryptosystem);然而秘密鑰匙密碼系統係採用傳統式的替代與移位技術來組成,此系統又稱為『傳統密碼系統』(Conventional Cryptosystem)其特性歸類如下:

  • 訊息隱密性:此系統主要用於資料加密使用,以達到訊息隱密性功能。

  • 鑰匙隱密性:此系統的鑰匙絕不可以洩漏給他人知道,否則便失去隱密性功能。

  • 鑰匙長度短:雖然鑰匙的長度越長安全性越高,但為了提高加密與解密演算法效益,一般都不會採用太長的鑰匙長度。

  • 鑰匙分配困難:欲將秘密鑰匙傳送給通訊的對方,是一件非常困難的事,必須仰賴其他裝置或協定運作才可達成。

  • 訊息確認的功能:在雙方共享一把秘密鑰匙的情況下,可確認訊息的完整性與鑑定性,但無法達到不可否認性。

  • 常見的演算法:DESDESXTriple-DESBlowfishIDESRC2RC4RC5 AES

秘密鑰匙密碼系統是資訊安全最基本的工具之一,但它究竟是專門的研究領域,本書將以最簡潔的方式,讓讀者了解密碼系統的特性及功能,並於第二、三章介紹幾個較常用的秘密鑰匙系統。

【公開鑰匙系統】

公開鑰匙密碼系統』(Public-Key Cryptosystem,或簡稱為公開金鑰系統、公鑰系統)表示系統(或使用者)中的鑰匙是成雙成對的,一把為『公開鑰匙』(Public Key,或稱公開金鑰),它可以在網站或公開目錄上(如電話簿功能)公佈給他人知道,甚至愈多人知道愈好;另一把為『私有鑰匙』(Private Key,或稱私有金鑰),持有人必須完全隱藏著這把鑰匙,絕對不可洩漏給他人知道。兩把鑰匙互為加/解密功能,亦即,如果利用公開鑰匙向資料加密,則必須利用相對應的私有鑰匙才可以解密,反之亦然。因為加密與解密鑰匙不相同,此系統又稱為『非對稱式密碼系統』(Asymmetric Cryptosystem)或『雙鑰匙密碼系統』(Two-Key Cryptosystem)。

我們將公開鑰匙密碼系統的特性歸類如下:

  • 資料隱密性功能:可以使用公開或私有鑰匙對資料加密,再利用相對應的公開或私有鑰匙解密;但因鑰匙長度較長,加密與解密的時間較長,因此僅限制於對短訊息加密使用。

  • 鑰匙長度較長:一般在公鑰系統的應用之下,明文、密文、密碼演算法、以及公開鑰匙都是長時間暴露於公眾之下;為了克服暴力攻擊,鑰匙長度不得不較長一點。

  • 鑰匙分配容易:鑰匙持有人必須將公開鑰匙公佈出來,任何人都可以索取所欲通訊對象的公開鑰匙,因此,鑰匙分配問題較為容易。

  • 可達到不可否認性的功能:這也是公鑰系統最主要的應用之一,可利用公鑰系統來簽署數位簽章,達成訊息的完整性與不可否認性。

  • 常見的密碼系統:RSA 演算法、Diffie-Hellman 鑰匙交換演算法、DSA 演算法、ElGamal DSS 演算法等等。

公開鑰匙密碼系統已不再採用傳統式的移位與取代技巧,而是以數論(Number Theory)理論中的指數同餘運算,來推演出加密演算法,因此,又稱為『現代密碼學』(Modern Cryptosystem)。本書將在第四章提出幾個較常用的演算法,說明公開鑰匙系統的基本原理。

1-2-2 雜湊函數

除了密碼系統之外,『雜湊函數』(Hash Function)乃是資訊安全中不可或缺的工具。雜湊函數是將一個不定長度的訊息,轉換成一個固定長度的雜湊碼(如圖 1-3 所示)。而此雜湊碼可以代表著原來訊息,進一步亦可作為完整性檢查或數位簽章使用。雜湊碼是由訊息的內容演算而來的,一般又稱為『訊息摘要』(Message Digest, MD)。我們以 M 表示輸入的訊息、H 表示雜湊函數、h 表示演算後的雜湊碼,其關係為:

 h = H(M)

我期望輸出的雜湊碼 h,能隨輸入訊息 M 而改變,並且該值是無法仿冒的,類似人類『指紋』的功能一樣,當然要達到這個功能,主要關鍵在於雜湊函數的複雜度。因此,雜湊函數必須具備下列功能:

  • 固定長度輸出:雜湊函數必須對任意長度的訊息,產生固定長度的雜湊碼。

  • 單向雜湊:如果給予雜湊碼 h,在計算上無法找出一個訊息 M,使其符合 h = H(M);此特性稱之為『單向雜湊』(One-way Hash)。即是訊息可經由雜湊函數計算出雜湊值,但無法由雜湊值反向推算出原訊息。

  • 雜湊碼碰撞率低:對於一個訊息 M1,在計算上是無法找出另一個訊息 M2 M1,使其 H(M1) = H(M2),亦即,不同訊息之間產生相同雜湊碼的碰撞率要很低。

  • 常見的演算法MD4MD5SHA-1等等。

1-3 雜湊函數的功能圖

基本上,我們要求每一筆訊息都有一個獨立的雜湊碼。亦即,不同訊息之間極不可能產生相同的雜湊碼,因此,有『數位指紋』(Digital Fingerprint)之稱。研究雜湊演算法是一個非常有趣的課題,我們在第五章將會介紹到它。

1-2-3 亂數產生

在資訊安全領域中,『亂數』(Random Number,或稱 Nonce)扮演著很重要的角色;簡單的說,亂數就是系統產生一個不可預測的數值,而且每次擷取時都會是不一樣的值。常使用到亂數的情況有:

  • 交叉確認:通訊連線當中,某一方將一個亂數加密後傳送給對方,對方解密後將亂數加一,再加密後回傳給發送端,以確認雙方所握的鑰匙是否相同。

  • 防止重播攻擊:訊息中加入一個亂數作為序號,每傳送一次便累計加一;如果收到重複的序號表示是重複攻擊。

  • 產生通訊鑰匙:雙方確認身份之後(公鑰演算技巧),即可產生一個亂數作為通訊鑰匙(密鑰演算技巧)。

  • 產生鑰匙參數:通訊雙方交換亂數(Nonce)來產生一個通訊鑰匙,例如 Diffie-Hellman 演算法。

  • 計算鑰匙參數:許多演算法都利用亂數來產生鑰匙,譬如 RSA 演算法係利用亂數來產生公開與私有鑰匙。

由此可見,所產生的亂數必須是『不可預測性』,並且需要『隨機性』;否則所產生的亂數如被猜測出來,再好的演算法都是無用武之地。本書將於第五章介紹如何來產生可靠的亂數。

 

主講人:粘添壽博士

 

資訊與網路安全技術