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)其特性歸類如下:
秘密鑰匙密碼系統是資訊安全最基本的工具之一,但它究竟是專門的研究領域,本書將以最簡潔的方式,讓讀者了解密碼系統的特性及功能,並於第二、三章介紹幾個較常用的秘密鑰匙系統。 【公開鑰匙系統】 『公開鑰匙密碼系統』(Public-Key Cryptosystem,或簡稱為公開金鑰系統、公鑰系統)表示系統(或使用者)中的鑰匙是成雙成對的,一把為『公開鑰匙』(Public Key,或稱公開金鑰),它可以在網站或公開目錄上(如電話簿功能)公佈給他人知道,甚至愈多人知道愈好;另一把為『私有鑰匙』(Private Key,或稱私有金鑰),持有人必須完全隱藏著這把鑰匙,絕對不可洩漏給他人知道。兩把鑰匙互為加/解密功能,亦即,如果利用公開鑰匙向資料加密,則必須利用相對應的私有鑰匙才可以解密,反之亦然。因為加密與解密鑰匙不相同,此系統又稱為『非對稱式密碼系統』(Asymmetric Cryptosystem)或『雙鑰匙密碼系統』(Two-Key Cryptosystem)。 我們將公開鑰匙密碼系統的特性歸類如下:
公開鑰匙密碼系統已不再採用傳統式的移位與取代技巧,而是以數論(Number Theory)理論中的指數同餘運算,來推演出加密演算法,因此,又稱為『現代密碼學』(Modern Cryptosystem)。本書將在第四章提出幾個較常用的演算法,說明公開鑰匙系統的基本原理。 1-2-2 雜湊函數 除了密碼系統之外,『雜湊函數』(Hash Function)乃是資訊安全中不可或缺的工具。雜湊函數是將一個不定長度的訊息,轉換成一個固定長度的雜湊碼(如圖 1-3 所示)。而此雜湊碼可以代表著原來訊息,進一步亦可作為完整性檢查或數位簽章使用。雜湊碼是由訊息的內容演算而來的,一般又稱為『訊息摘要』(Message Digest, MD)。我們以 M 表示輸入的訊息、H 表示雜湊函數、h 表示演算後的雜湊碼,其關係為: h = H(M) 我期望輸出的雜湊碼 h,能隨輸入訊息 M 而改變,並且該值是無法仿冒的,類似人類『指紋』的功能一樣,當然要達到這個功能,主要關鍵在於雜湊函數的複雜度。因此,雜湊函數必須具備下列功能:
圖 1-3 雜湊函數的功能圖 基本上,我們要求每一筆訊息都有一個獨立的雜湊碼。亦即,不同訊息之間極不可能產生相同的雜湊碼,因此,有『數位指紋』(Digital Fingerprint)之稱。研究雜湊演算法是一個非常有趣的課題,我們在第五章將會介紹到它。 1-2-3 亂數產生 在資訊安全領域中,『亂數』(Random Number,或稱 Nonce)扮演著很重要的角色;簡單的說,亂數就是系統產生一個不可預測的數值,而且每次擷取時都會是不一樣的值。常使用到亂數的情況有:
由此可見,所產生的亂數必須是『不可預測性』,並且需要『隨機性』;否則所產生的亂數如被猜測出來,再好的演算法都是無用武之地。本書將於第五章介紹如何來產生可靠的亂數。
|
翻轉工作室:粘添壽
資訊與網路安全技術
翻轉電子書系列:
|
|