1 / 39

第五章 密碼學概論

第五章 密碼學概論. 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之 80% )以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。. 第五章 密碼學概論.

keaira
Télécharger la présentation

第五章 密碼學概論

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章 密碼學概論 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。

  2. 第五章 密碼學概論 本章介紹密碼學相關背景知識,包含其原理以及運用,從古典密碼學到現代密碼演算法,並舉出範例說明密碼系統的操作流程,使學習者能從範例中體驗密碼系統運算原理;我們也舉例說明常見的密碼技術應用。本章包含: 簡介 密碼演算法 加密系統分類 古典密碼演算法 現代密碼演算法 雜湊函數 密碼技術應用

  3. 5.1簡介 加密方法 (Ciphering) 是利用特定的轉換 (Transformation) 方法,將明文 ( Plaintext ) 轉換成為密文 ( Ciphertext ),隱蔽明文真正的內容,用以預防在傳遞資訊或通訊時,資訊內容的隱密性遭受洩漏或破壞。

  4. 5.1簡介 最早的加密應用,約在西元前400多年古希臘時期,當時就知道將皮革纏繞在棍棒上,書寫明文在纏繞布條上,並將棍棒取出,皮革上的訊息已經重新編碼打亂順序,而解開的皮革上之符號就變成密文。然後,將皮革與棍棒分開傳送給對方。 若要解開密文,則需要相同尺寸之棍棒,否則無法解出原來的明文。如此,棍棒可說是解密的重要『機密』,在術語上我們稱呼此棍棒為『金鑰』 ( Key )。 圖 5.1 最早的加密機制

  5. 5.1簡介 研究加密相關的知識,我們稱之為密碼學 (Cryptograph),源自於希臘語kryptós,“隱藏的”,和gráphein,“書寫”,此兩字的結合。將明文轉換為密文的過程稱為『加密』 (Encryption);而將密文轉換為明文的過程稱為『解密』 (Decryption),此即是加密、解密的基本觀念。加密與解密可利用一個簡單模型加以解釋,通過加密程式,明文和金鑰進行加密運算變成密文,此過程稱為加密過程 (Enciphering)。相反地,通過解密程式,密文和金鑰進行解密運算變成明文,此過程稱為解密過程 (Deciphering)。 西元前5世紀,古希臘出現最原始的加密器,用一條皮革纏繞在一根木棍上,這是最早的換位密碼術。西元前1世紀,著名的凱撒 (Caesar) 加密法被用於高盧戰爭中,這是一種簡單的單字母代換的密碼系統。近代,第二次世界大戰,德國使用著名的加密器『Enigma』在戰役中,然而,後來被盟軍所破譯。

  6. 5.1簡介 1975年,美國國家標準局頒布國家標準─DES (Data Encryption Standard)加密標準,作為計算機系統和網路應用的資料加密標準。DES加密標準,在全世界使用了30年之後,由於安全性的考量,漸漸被美國新一代加密標準AES (Advanced Encryption Standard) 所取代。 圖 5.2 加密系統模型

  7. 5.2加密系統分類 現代由於計算機發明,已發展出許多加密技術方法,而加解密之方法稱為演算法,依加密與解密演算法使用金鑰來分類。 對稱金鑰加密系統:加密與解密所使用之金鑰相同,稱為對稱金鑰加密系統或單一金鑰 ( Single-key ) 加密系統,此種加密演算法如 DES ( Data Encryption Standard) 或 AES ( Advanced Encryption Standard ) 等。對稱式加密 公開金鑰加密系統:此為非對稱式加密系統,加密與解密使用不同的金鑰,系統使用前,需要產生兩組特殊字串作為金鑰,分別為公開金鑰 ( Public Key) 和 私密金鑰 ( Private Key) 兩組金鑰。

  8. 5.2加密系統分類 用公開金鑰加密之密文,可以使用私密金鑰解開,還原為原來的明文,此種加密演算法如RSA (Rivest-Shmir-Adleman) 、 ElGamal 或橢圓曲線加密 (ECC, Elliptic Curve Cryptography) 等。 加密系統使用於資訊加密傳遞時,資訊傳送者將明文與金鑰A用加密演算法將資料加密成為密文,此時的密文在形式上為亂碼,看起來像是無意義的資訊。然後,將密文經由通訊通道傳至資訊接收者。相反地,資訊接收者將密文與金鑰 B經解密演算法,將密文解密還原出明文。 在加密與解密中,使用金鑰A 與金鑰B,若為相同的字串,則此系統為對稱金鑰加密系統;反之,若金鑰A與金鑰B為不相同的字串,則此系統稱為公開金鑰加密系統。

  9. 5.2加密系統分類 圖 5.4 資訊加密傳遞示意圖

  10. 5.3 對稱式加密 對稱式加密演算法的設計,利用混淆 (Confusion) 與擴散 (Diffusion) 的概念增加演算法複雜度,使演算法更安全、不易破解,混淆與擴散的基本概念: 混淆 (Confusion):增加明文與金鑰之間的計算複雜度,使金鑰之內容均勻混入欲加密的訊息中,平均分布在密文訊息中。換言之,用以讓密文與加密鑰匙間的關係便得很複雜而難以用統計方法破解 擴散 (Diffusion):增加明文與金鑰之間的計算複雜度,使明文與密文之相關性低,由密文無法猜出明文內容。換言之,讓明文或金鑰中的一個位元能影響密文中越多位元越好,用以將明文的統計結構弄亂。

  11. 5.3 對稱式加密 基於以上兩種概念,在實現對稱式加密演算法,增加明文與金鑰計算之複雜度,主要有兩種加密基本元件: 替換 (Substitution):將明文中的字元替換為密文中的另一個字元,解密時,將密文替換回原來之明文字元。如在早期通訊時,使用通訊加密表,將明文字母,尋找相對替換密字元,再將密文字元傳出,即使資訊被攔截,也無法簡易猜出原來之明文。 重排 (Transposition):將明文字串,依一定之規則重新排列,所得到之密文字串與明文字串一樣長,但其字元之次序已經被打亂。

  12. 5.3 對稱式加密 早期資料傳送時,所採用的加密方式是不公開的,唯有送收雙方知道加解密演算法及解密金鑰,但是這種方式無法廣泛被應用。 現代加密系統的特性之一為:加解密演算法完全是公開的,唯一不公開的是解密金鑰。現代加解密演算法,也是利用替換與重排兩種加密基本元件的交互運用,並重複許多回合,以增加破解密文的困難度。

  13. 5.4 古典密碼演算法5.4.1.凱薩(Caesar)加密 凱薩大帝在高盧戰役中,使用了替換加密技術到軍事應用上,稱為凱薩加密法 (Caesar Cipher)。凱薩加密演算法非常單純,只是將每一個明文字母,依照字母順序向右位移3個位置。

  14. 5.4.2. 柵欄(Rail Fence)演算法 柵欄加密 (Rail Fence) 演算法改變字元排列的次序,是一種利用重排加密的例子。 首先,將明文字串依橫列的順序,由左向右書寫。然後,依照直行順序由上而下依序取出字串,則輸出的密文字串為[ RELEA OCIENRLN Y CAPFRNTAYDINP OCTDN ]。柵欄加密演算法輸出字串與原來明文字串,具有一樣得長度,唯有字母順序已經改變了。

  15. 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 回合的運算,完成加密或解密,每一回合運算將資料混淆與擴散。

  16. 5.5.1 DES 演算法 • 如圖 5-7,3DES 是明文資料使用DES 加密、解密、與加密,經過 DES 3次運算,分別使用金鑰 1、金鑰 2、與金鑰 3。 圖 5-7 3DES 加密程序

  17. 5.5.1 DES 演算法 • 如圖 5-8,解密程序為反向程序,密文經過解密、加密、與解密,而使用金鑰分別為金鑰 3、金鑰 2 與金鑰 1。 圖 5-8 3DES 解密演算法

  18. 5.5.1 DES 演算法 圖 5-9 3DES 運算範例

  19. 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),每個回合包含四個主要基本單元。

  20. 5.5.2. AES 加密演算法 Add Round Key:區塊中的每一個位元都與子金鑰 (Subkey) 做XOR運算;而每個子金鑰由金鑰產生,增加系統混淆 (Confusion) 程度。 SubBytes : 使用替換區塊,將字元組用查表 (Table Look-up) 的方式把每個位元組替換成對應的位元組,也就是使用替代加密原理。 Shift Rows : 將區塊中的每個橫列進行循環式移位 (Cyclic Shift),也就是利用重排加密原理。 Mix Columns :為了充分混合區塊中各個直行的操作,以增加資料擴散程度。

  21. 5.5.2簡易AES 加密演算法範例 簡易 AES ( Simple AES,S-AES ) 是為使初學者容易了解 AES 運作原理與設計,其架構與AES 相同,但運算明文區塊與金鑰比較短,金鑰只有 16 bits,( AES 金鑰在 128 bits 以上),只有運算兩個回合,其架構如圖

  22. 5.5.2 AES 加密演算法範例 圖 5-11 AES加密範例

  23. 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)。

  24. 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.

  25. 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 的明文資料。

  26. 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。

  27. 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 簡易範例

  28. 5.6. 雜湊函數(Hash Functions) 雜湊函數 (Hash Functions) 是密碼學的一個非常重要基本元件,雜湊函數可以將一個任意長度的資料,計算出一小段的資料特徵來,作為原資料的標識,以驗證它的完整性。如圖5-14,不同長度之訊息,經過雜湊函數運算後,皆得到相同長度的訊息摘要(Message Digest, Message Fingerprint, Message Abstract),在應用上,雜湊函數可用來驗證文件的完整性 (Integrity)。 圖 5-13 雜湊函數示意圖

  29. 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 訊息摘要更長。

  30. 5.7.密碼技術應用 密碼技術在計算機運作上,分為四個階層 (圖 5-14),最底層是數學運算方法,由於密碼技術使用複雜與快速運算才可以達成,數學計算基礎非常重要。往上一層是加密演算法,是計算加解密的核心。再上一層是標準格式,因密碼運算的結果與功能發揮,需要有利於互相交換訊息,若格式不相容,則無法廣泛交換訊息。最上層為應用系統,例如SSL ( Secure Socket Layer) 是廣泛應用於網頁加密的傳輸協定,我們使用安全網頁協定 HTTPS,其底層即為 SSL 加密機制。 現代電腦與網路發達,尤其電子商務應用的普及,密碼技術將廣泛使用於生活中。今日社會資訊傳輸頻繁,要確認通訊者的身份 (Authentication),或通訊內容的完整性 (Integrity),甚至要保護資訊的隱密性 (Confidentiality),密碼技術都提供良好解決方案。 圖 5-14 密碼技術應用層次

  31. 5.7.1.雜湊函數保護密碼檔 使用計算機系統的用戶都知道權限管理,權限管理常使用 User Name 與 Password 之組合,以便登入系統。但計算機管理系統如果保存每一個用戶的帳號與密碼在檔案中,如圖5-15所示,作為登入系統的密碼比對依據,這樣是相當危險的,因為會被系統管理人員或其他人窺視密碼,甚至冒用合法用戶的帳號與密碼。 圖 5-15 密碼存放檔案

  32. 5.7.1.雜湊函數保護密碼檔 使用密碼技術及雜湊函數,可以解決此問題。採用這種方法,即使儲存密碼的檔案被窺視,非法者也無法冒用帳號與密碼。如圖 5-16架構,建立使用者帳號時,將使用者的 User Name 寫入檔案,再寫入建立帳號時之參數 (如建立帳號、日期等資料 ) ,並計算帳號、參數與密碼等資料的訊息摘要,寫入檔案中。 使用者登入時,系統比對User Name 以及其對應的訊息摘要,若比對符合,則登入成功;否則,登入失敗。即使此檔案被窺視或竊取,單從訊息摘要,並無法猜出正確的密碼,因此無法成功登入系統。 圖 5-16 採用雜湊函數保護密碼檔的架構圖

  33. 5.7.2. 數位簽章 數位簽章 (Digital Signature) 廣泛被應用於電腦網路以及電子商務,作為訊息完整性驗證的工具。數位簽章的計算,首先,對訊息的內容使用湊雜函數計算產生其訊息摘要。接著,要傳送訊息的人使用其私密金鑰 (Private Key) 將此訊息摘要進行加密 (圖 5-18),即得到此訊息的數位簽章。送訊者,將數值簽章與訊息本文一起送給收訊者。此時,此數位簽章僅能被相對應的公開金鑰 (Public Key) 所解開。 當收訊者收到數位簽章與訊息本文之後,利用送訊者的公開金鑰可以將數位簽章解開,還原得到舊的訊息摘要。另一方面,他也對訊息本文計算出新的訊息摘要。此時,他把新訊息摘將與舊的訊息摘要進行比對,若兩者相同,則代表訊息未遭受竄改,具有完整性。 傳送訊息者的公開金鑰被用來解開其數位簽章,所以,訊息的內容一定經過傳訊者之私密金鑰的加密動作。

  34. 5.7.2. 數位簽章 圖 5-17 數位簽章流程示意圖

  35. 5.7.3. 數位信封 公開金鑰加密技術由於使用不同的加密與解密金鑰,由於其演算法一般較對稱式加密技術複雜,所以,加解密需要花費較多計算時間。因此,在實際應用上綜合這兩種加密技術的優點─採用對稱加密來加密檔案,並應用非對稱加密來傳送其加密金鑰。 數位信封 (Digital Envelop) 的觀念就是結合兩種加密技術的優點。首先產生一把對稱式機密金鑰 (Secret Key),利用對稱式加密處理速度較快的優點,來對訊息本文加密。再將此一把對稱式機密金鑰,利用公開金鑰加密技術來加密,如此可以提高訊息本文加密處理的效率 (圖 5-18)。 圖 5-18 數位信封處理流程

  36. 5.7.3. 數位信封 數位信封包含加密文件和經過加密的機密金鑰。解開數位信封,分成兩個動作:先用收訊者的私密金鑰解開數位信封得到機密金鑰,接著再用此機密金鑰,解開被加密的文件 (圖 5-19)。 圖 5-19 解開數位信封流程

  37. 5.7.4.數位憑證 數位憑證 (Digital Certificate),用來辨識使用者身分,數位憑證內含有憑證持有者的公開金鑰。憑證持有者另外擁有相對的私密金鑰,而私密金鑰以密碼保護。 數位憑證是一份編碼檔案,在個人電腦上檢視如圖 5-20所示,這些資訊是可以公開的,紀錄持有者的公開金鑰對,一般公告於公正第三者─憑證機構 ( CA,Certification Authority )。網路上其他人要傳遞資料或檔案給憑證持有人,可以使用其憑證內之公開金鑰,使用數位信封技術,將檔案製成數位信封,然後傳送。接收者若非憑証持有人,無法解開數位信封。因此,可以達到資料或檔案機密傳輸的目的。與憑證內公開金鑰相對應的私密金鑰,可以儲存為檔案或儲存在IC 卡中,一般使用密碼保護之。 圖 5-20 憑證資訊瀏覽

  38. 5.6.4.數位憑證 表 5-1 憑證內容

  39. 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 啟動時,瀏覽器右下方顯示上鎖圖樣

More Related