740 likes | 1.59k Views
第五章 密碼學概論. 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之 80% )以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。. 第五章 密碼學概論.
E N D
第五章 密碼學概論 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
第五章 密碼學概論 本章介紹密碼學相關背景知識,包含其原理以及運用,從古典密碼學到現代密碼演算法,並舉出範例說明密碼系統的操作流程,使學習者能從範例中體驗密碼系統運算原理;我們也舉例說明常見的密碼技術應用。本章包含: 簡介 密碼演算法 加密系統分類 古典密碼演算法 現代密碼演算法 雜湊函數 密碼技術應用
5.1簡介 加密方法 (Ciphering) 是利用特定的轉換 (Transformation) 方法,將明文 ( Plaintext ) 轉換成為密文 ( Ciphertext ),隱蔽明文真正的內容,用以預防在傳遞資訊或通訊時,資訊內容的隱密性遭受洩漏或破壞。
5.1簡介 最早的加密應用,約在西元前400多年古希臘時期,當時就知道將皮革纏繞在棍棒上,書寫明文在纏繞布條上,並將棍棒取出,皮革上的訊息已經重新編碼打亂順序,而解開的皮革上之符號就變成密文。然後,將皮革與棍棒分開傳送給對方。 若要解開密文,則需要相同尺寸之棍棒,否則無法解出原來的明文。如此,棍棒可說是解密的重要『機密』,在術語上我們稱呼此棍棒為『金鑰』 ( Key )。 圖 5.1 最早的加密機制
5.1簡介 研究加密相關的知識,我們稱之為密碼學 (Cryptograph),源自於希臘語kryptós,“隱藏的”,和gráphein,“書寫”,此兩字的結合。將明文轉換為密文的過程稱為『加密』 (Encryption);而將密文轉換為明文的過程稱為『解密』 (Decryption),此即是加密、解密的基本觀念。加密與解密可利用一個簡單模型加以解釋,通過加密程式,明文和金鑰進行加密運算變成密文,此過程稱為加密過程 (Enciphering)。相反地,通過解密程式,密文和金鑰進行解密運算變成明文,此過程稱為解密過程 (Deciphering)。 西元前5世紀,古希臘出現最原始的加密器,用一條皮革纏繞在一根木棍上,這是最早的換位密碼術。西元前1世紀,著名的凱撒 (Caesar) 加密法被用於高盧戰爭中,這是一種簡單的單字母代換的密碼系統。近代,第二次世界大戰,德國使用著名的加密器『Enigma』在戰役中,然而,後來被盟軍所破譯。
5.1簡介 1975年,美國國家標準局頒布國家標準─DES (Data Encryption Standard)加密標準,作為計算機系統和網路應用的資料加密標準。DES加密標準,在全世界使用了30年之後,由於安全性的考量,漸漸被美國新一代加密標準AES (Advanced Encryption Standard) 所取代。 圖 5.2 加密系統模型
5.2加密系統分類 現代由於計算機發明,已發展出許多加密技術方法,而加解密之方法稱為演算法,依加密與解密演算法使用金鑰來分類。 對稱金鑰加密系統:加密與解密所使用之金鑰相同,稱為對稱金鑰加密系統或單一金鑰 ( Single-key ) 加密系統,此種加密演算法如 DES ( Data Encryption Standard) 或 AES ( Advanced Encryption Standard ) 等。對稱式加密 公開金鑰加密系統:此為非對稱式加密系統,加密與解密使用不同的金鑰,系統使用前,需要產生兩組特殊字串作為金鑰,分別為公開金鑰 ( Public Key) 和 私密金鑰 ( Private Key) 兩組金鑰。
5.2加密系統分類 用公開金鑰加密之密文,可以使用私密金鑰解開,還原為原來的明文,此種加密演算法如RSA (Rivest-Shmir-Adleman) 、 ElGamal 或橢圓曲線加密 (ECC, Elliptic Curve Cryptography) 等。 加密系統使用於資訊加密傳遞時,資訊傳送者將明文與金鑰A用加密演算法將資料加密成為密文,此時的密文在形式上為亂碼,看起來像是無意義的資訊。然後,將密文經由通訊通道傳至資訊接收者。相反地,資訊接收者將密文與金鑰 B經解密演算法,將密文解密還原出明文。 在加密與解密中,使用金鑰A 與金鑰B,若為相同的字串,則此系統為對稱金鑰加密系統;反之,若金鑰A與金鑰B為不相同的字串,則此系統稱為公開金鑰加密系統。
5.2加密系統分類 圖 5.4 資訊加密傳遞示意圖
5.3 對稱式加密 對稱式加密演算法的設計,利用混淆 (Confusion) 與擴散 (Diffusion) 的概念增加演算法複雜度,使演算法更安全、不易破解,混淆與擴散的基本概念: 混淆 (Confusion):增加明文與金鑰之間的計算複雜度,使金鑰之內容均勻混入欲加密的訊息中,平均分布在密文訊息中。換言之,用以讓密文與加密鑰匙間的關係便得很複雜而難以用統計方法破解 擴散 (Diffusion):增加明文與金鑰之間的計算複雜度,使明文與密文之相關性低,由密文無法猜出明文內容。換言之,讓明文或金鑰中的一個位元能影響密文中越多位元越好,用以將明文的統計結構弄亂。
5.3 對稱式加密 基於以上兩種概念,在實現對稱式加密演算法,增加明文與金鑰計算之複雜度,主要有兩種加密基本元件: 替換 (Substitution):將明文中的字元替換為密文中的另一個字元,解密時,將密文替換回原來之明文字元。如在早期通訊時,使用通訊加密表,將明文字母,尋找相對替換密字元,再將密文字元傳出,即使資訊被攔截,也無法簡易猜出原來之明文。 重排 (Transposition):將明文字串,依一定之規則重新排列,所得到之密文字串與明文字串一樣長,但其字元之次序已經被打亂。
5.3 對稱式加密 早期資料傳送時,所採用的加密方式是不公開的,唯有送收雙方知道加解密演算法及解密金鑰,但是這種方式無法廣泛被應用。 現代加密系統的特性之一為:加解密演算法完全是公開的,唯一不公開的是解密金鑰。現代加解密演算法,也是利用替換與重排兩種加密基本元件的交互運用,並重複許多回合,以增加破解密文的困難度。
5.4 古典密碼演算法5.4.1.凱薩(Caesar)加密 凱薩大帝在高盧戰役中,使用了替換加密技術到軍事應用上,稱為凱薩加密法 (Caesar Cipher)。凱薩加密演算法非常單純,只是將每一個明文字母,依照字母順序向右位移3個位置。
5.4.2. 柵欄(Rail Fence)演算法 柵欄加密 (Rail Fence) 演算法改變字元排列的次序,是一種利用重排加密的例子。 首先,將明文字串依橫列的順序,由左向右書寫。然後,依照直行順序由上而下依序取出字串,則輸出的密文字串為[ RELEA OCIENRLN Y CAPFRNTAYDINP OCTDN ]。柵欄加密演算法輸出字串與原來明文字串,具有一樣得長度,唯有字母順序已經改變了。
5.5 現代密碼演算法5.5.1 DES 演算法 • DES 演算法是源自 1970 年代 IBM 公司發展之對稱加密演算法 LUCIFER 經過修改,於1977 年被採用為聯邦資訊處理標準 FIPS PUB 46-2,為世界廣泛採用之加密演算法之一。 • DES 加密資料區塊 ( Data Block ) 為 64 bits,即每一次加密是 64 bits 明文資料,產出 64 bits 的密文資料。金鑰長度是 64 bits,其中每位元的第 8 bit 是同位檢查用來偵錯,有效位元是 56 bits,經過16 回合的運算,完成加密或解密,每一回合運算將資料混淆與擴散。
5.5.1 DES 演算法 • 如圖 5-7,3DES 是明文資料使用DES 加密、解密、與加密,經過 DES 3次運算,分別使用金鑰 1、金鑰 2、與金鑰 3。 圖 5-7 3DES 加密程序
5.5.1 DES 演算法 • 如圖 5-8,解密程序為反向程序,密文經過解密、加密、與解密,而使用金鑰分別為金鑰 3、金鑰 2 與金鑰 1。 圖 5-8 3DES 解密演算法
5.5.1 DES 演算法 圖 5-9 3DES 運算範例
5.5.2. AES 加密演算法 近年來,因為電腦技術快速進步,DES ( Data Encryption Standard ) 加密演算法標準密碼已經無法符合安全性需求;縱使發展過度時期的3-DES (Triple DES), 但仍然無法滿足複雜與大量資料的加密要求。 美國國家標準與技術研究院( NIST )於2001年發佈於AES ( Advanced Encryption Standard ) 加密演算法,文件編號為FIPS PUB 197 標準,並在2002年正式實施此標準。 AES可以支援128 bits資料區塊 ( Data Block ), 並支援128、192 與 256 bits金鑰長度 ( Key Size ),提高安全性,AES 的加解密包含十個以上的回合數 ( Round Number),每個回合包含四個主要基本單元。
5.5.2. AES 加密演算法 Add Round Key:區塊中的每一個位元都與子金鑰 (Subkey) 做XOR運算;而每個子金鑰由金鑰產生,增加系統混淆 (Confusion) 程度。 SubBytes : 使用替換區塊,將字元組用查表 (Table Look-up) 的方式把每個位元組替換成對應的位元組,也就是使用替代加密原理。 Shift Rows : 將區塊中的每個橫列進行循環式移位 (Cyclic Shift),也就是利用重排加密原理。 Mix Columns :為了充分混合區塊中各個直行的操作,以增加資料擴散程度。
5.5.2簡易AES 加密演算法範例 簡易 AES ( Simple AES,S-AES ) 是為使初學者容易了解 AES 運作原理與設計,其架構與AES 相同,但運算明文區塊與金鑰比較短,金鑰只有 16 bits,( AES 金鑰在 128 bits 以上),只有運算兩個回合,其架構如圖
5.5.2 AES 加密演算法範例 圖 5-11 AES加密範例
5.5.3 RSA加密演算法 公開金鑰加密演算法又稱為非對稱加密演算法,其加密演算法常用的有 Diffie-Hellman 金鑰交換演算法 (Key Agreement)、DSA 數位簽章演算法(Digital Signature)、RSA 演算法、ECC演算法等等…。Diffie-Hellman 金鑰交換演算法是最早於1976 年提出的公開鑰匙架構,也引出了公開鑰匙加密的概念。 RSA 加密演算法,近年來被廣泛運用於電子商務,在1977年由Rivest、 Shamir 與Adleman 三人一起提出,取其姓氏之第一個字,命名『RSA』。 RSA 是公開金鑰加密演算法,其安全度是建立在將一個大整數分解為兩個質因數乘積的難題上 (Factoring Problem)。質因數分解的問題,當數字小的時候非常容易,然而,要將一個大數分解成兩個質因數的乘積,用最快速的計算機計算,也需要很長的時間。所以, RSA 公開金鑰加密法在目前雖然稱不上絕對安全 (Unconditionally Secure),但算是夠安全了 (Computationally Secure)。
5.5.3 RSA加密演算法 RSA加密演算法主要分為3個操作程序:金鑰對產生 (Key Pair Generation)、加密訊息 (Encryption)、與解密訊息 (Decryption)。 金鑰對產生 假設 Alice 與 Bob 要進行秘密通訊,由Ailce 這一方來看,她希望Bob傳給她的資料都經過加密,以防止資料內容外洩。 Alice 可使用 RSA 加密演算法,首先,執行金鑰對產生程序: 1. 随意選取兩個大質數p和q,p不等於q,計算N=p*q。 2. 選擇一個整数e為公開金鑰與(p-1)*(q-1)互質, 且e小於(p-1)*(q-1)。 3. 計算私密金鑰 d, e* d = 1 (mod (p-1)(q-1)). (註: mod計算是取其餘數) Alice 將 N與 e傳給 Bob,Alice 要妥善地保存私密金鑰 d.
5.5.3 RSA加密演算法 加密訊息 Bob 要傳資料 m給 Alice時,Bob 可以利用Alice的公開金鑰 e來加密訊息,將資料 m加密:me= c ( mod N )c為加密後之密文,Bob 可以將密文 c送給Alice。 解密訊息 Alice 接收訊息 c ,使用自己的私密金鑰 d來解密,解出明文資料:cd = m ( mod N )m為 Bob 要傳送給 Alice 的明文資料。
5.5.3. 簡易RSA 範例 我們使用小數目之RSA 加密演算法做為範例,使讀者了解 RSA 加密與解密之過程。 依上面之範例,如圖 5-7。Alice 選取兩質數 p = 5 和 q = 7,則得到 N = 7*5 = 35,選取e作為公開金鑰,並計算私密金鑰 d 金鑰對產生e*d mod (p-1)(q-1)= 5 * 29 = 145 (mod (5-1)(7-1))= 145 mod 24= 1所以,私密金鑰 d = 29;Alice 將 35 和 5 傳給 Bob。
5.5.3. 簡易RSA 範例 加密訊息 Bob 加密訊息 m = 33me mod N= 335 mod 35= 39135393 mod 35= 3加密訊息 c = 3,傳給 Alice。 解密訊息 Alice 接收訊息解密 c = 3cd mod N= 329 mod 35= 68630377364883 mod 35= 33Alice 解出訊息為 33,為 Bob 傳給 Alice 之資料 圖 5-13 RSA 簡易範例
5.6. 雜湊函數(Hash Functions) 雜湊函數 (Hash Functions) 是密碼學的一個非常重要基本元件,雜湊函數可以將一個任意長度的資料,計算出一小段的資料特徵來,作為原資料的標識,以驗證它的完整性。如圖5-14,不同長度之訊息,經過雜湊函數運算後,皆得到相同長度的訊息摘要(Message Digest, Message Fingerprint, Message Abstract),在應用上,雜湊函數可用來驗證文件的完整性 (Integrity)。 圖 5-13 雜湊函數示意圖
5.5. 雜湊函數(Hash Functions) 雜湊函數計算出一個任意長度的訊息或檔案的雜湊值,且輸出長度固定的字串,稱為訊息摘要或訊息指紋;且若輸入不同資訊,它們得到不同字串輸出的機率很高。美國國家標準局(NIST )認證之雜湊函數有 SHA-1 和 SHA-2雜湊演算法,SHA-2 包含 SHA-224、 SHA-256、 SHA-384 和 SHA-512等演算法。這些演演算法之所以稱作「安全」是基於以下兩點 從理論上,由訊息摘要反推原輸入訊息是很困難 從理論上,要找到兩組不同的訊息對應到相同的訊息摘要很困難 雜湊函數是從大量資料計算出固定長度之訊息摘要,訊息摘要的長度要足夠長,使得要從不同的訊息計算得到相同之訊息摘要 (稱為碰撞,Collision) 的機率非常低。SHA-1 訊息摘要長度有160 bits,SHA-2 訊息摘要更長。
5.7.密碼技術應用 密碼技術在計算機運作上,分為四個階層 (圖 5-14),最底層是數學運算方法,由於密碼技術使用複雜與快速運算才可以達成,數學計算基礎非常重要。往上一層是加密演算法,是計算加解密的核心。再上一層是標準格式,因密碼運算的結果與功能發揮,需要有利於互相交換訊息,若格式不相容,則無法廣泛交換訊息。最上層為應用系統,例如SSL ( Secure Socket Layer) 是廣泛應用於網頁加密的傳輸協定,我們使用安全網頁協定 HTTPS,其底層即為 SSL 加密機制。 現代電腦與網路發達,尤其電子商務應用的普及,密碼技術將廣泛使用於生活中。今日社會資訊傳輸頻繁,要確認通訊者的身份 (Authentication),或通訊內容的完整性 (Integrity),甚至要保護資訊的隱密性 (Confidentiality),密碼技術都提供良好解決方案。 圖 5-14 密碼技術應用層次
5.7.1.雜湊函數保護密碼檔 使用計算機系統的用戶都知道權限管理,權限管理常使用 User Name 與 Password 之組合,以便登入系統。但計算機管理系統如果保存每一個用戶的帳號與密碼在檔案中,如圖5-15所示,作為登入系統的密碼比對依據,這樣是相當危險的,因為會被系統管理人員或其他人窺視密碼,甚至冒用合法用戶的帳號與密碼。 圖 5-15 密碼存放檔案
5.7.1.雜湊函數保護密碼檔 使用密碼技術及雜湊函數,可以解決此問題。採用這種方法,即使儲存密碼的檔案被窺視,非法者也無法冒用帳號與密碼。如圖 5-16架構,建立使用者帳號時,將使用者的 User Name 寫入檔案,再寫入建立帳號時之參數 (如建立帳號、日期等資料 ) ,並計算帳號、參數與密碼等資料的訊息摘要,寫入檔案中。 使用者登入時,系統比對User Name 以及其對應的訊息摘要,若比對符合,則登入成功;否則,登入失敗。即使此檔案被窺視或竊取,單從訊息摘要,並無法猜出正確的密碼,因此無法成功登入系統。 圖 5-16 採用雜湊函數保護密碼檔的架構圖
5.7.2. 數位簽章 數位簽章 (Digital Signature) 廣泛被應用於電腦網路以及電子商務,作為訊息完整性驗證的工具。數位簽章的計算,首先,對訊息的內容使用湊雜函數計算產生其訊息摘要。接著,要傳送訊息的人使用其私密金鑰 (Private Key) 將此訊息摘要進行加密 (圖 5-18),即得到此訊息的數位簽章。送訊者,將數值簽章與訊息本文一起送給收訊者。此時,此數位簽章僅能被相對應的公開金鑰 (Public Key) 所解開。 當收訊者收到數位簽章與訊息本文之後,利用送訊者的公開金鑰可以將數位簽章解開,還原得到舊的訊息摘要。另一方面,他也對訊息本文計算出新的訊息摘要。此時,他把新訊息摘將與舊的訊息摘要進行比對,若兩者相同,則代表訊息未遭受竄改,具有完整性。 傳送訊息者的公開金鑰被用來解開其數位簽章,所以,訊息的內容一定經過傳訊者之私密金鑰的加密動作。
5.7.2. 數位簽章 圖 5-17 數位簽章流程示意圖
5.7.3. 數位信封 公開金鑰加密技術由於使用不同的加密與解密金鑰,由於其演算法一般較對稱式加密技術複雜,所以,加解密需要花費較多計算時間。因此,在實際應用上綜合這兩種加密技術的優點─採用對稱加密來加密檔案,並應用非對稱加密來傳送其加密金鑰。 數位信封 (Digital Envelop) 的觀念就是結合兩種加密技術的優點。首先產生一把對稱式機密金鑰 (Secret Key),利用對稱式加密處理速度較快的優點,來對訊息本文加密。再將此一把對稱式機密金鑰,利用公開金鑰加密技術來加密,如此可以提高訊息本文加密處理的效率 (圖 5-18)。 圖 5-18 數位信封處理流程
5.7.3. 數位信封 數位信封包含加密文件和經過加密的機密金鑰。解開數位信封,分成兩個動作:先用收訊者的私密金鑰解開數位信封得到機密金鑰,接著再用此機密金鑰,解開被加密的文件 (圖 5-19)。 圖 5-19 解開數位信封流程
5.7.4.數位憑證 數位憑證 (Digital Certificate),用來辨識使用者身分,數位憑證內含有憑證持有者的公開金鑰。憑證持有者另外擁有相對的私密金鑰,而私密金鑰以密碼保護。 數位憑證是一份編碼檔案,在個人電腦上檢視如圖 5-20所示,這些資訊是可以公開的,紀錄持有者的公開金鑰對,一般公告於公正第三者─憑證機構 ( CA,Certification Authority )。網路上其他人要傳遞資料或檔案給憑證持有人,可以使用其憑證內之公開金鑰,使用數位信封技術,將檔案製成數位信封,然後傳送。接收者若非憑証持有人,無法解開數位信封。因此,可以達到資料或檔案機密傳輸的目的。與憑證內公開金鑰相對應的私密金鑰,可以儲存為檔案或儲存在IC 卡中,一般使用密碼保護之。 圖 5-20 憑證資訊瀏覽
5.6.4.數位憑證 表 5-1 憑證內容
5.7.5.安全套接層(SSL)加密傳輸 網頁伺服器和瀏覽器之間的溝通為明文傳輸,目前網頁瀏覽應用於電子商務非常盛行。傳輸資訊中,若包含有機密或敏感性資訊,如身分証號碼、信用卡號碼等資訊,網頁傳輸需要加密,以確保在伺服器與瀏覽器之間傳輸過程的安全。為了保護傳輸資料的私密性與完整性,採用SSL ( Secure Socket Layer) 作為安全的通訊協定標準。 網際網路傳輸上,主要分為四層架構─網路存取層 (Network Access),網際網路層 (IP Internet)、傳輸層 (TCP Transport)、與應用層 (Application)。SSL 加密是建置在系統傳輸之傳輸層之上、應用層之下,如圖5-22所示。 在 SSL 被啟動時,傳輸將網頁加密,使用的協定是 HTTPS,如一般所見的 http://aaa.bbb.edu.tw的樣式,同時,在網頁右下方,會出現有上鎖圖樣,如圖 5-23所示。 圖 5-22 網際網路階層與 SSL 關係 圖 5-23 SSL 啟動時,瀏覽器右下方顯示上鎖圖樣