1 / 82

密碼系統

密碼系統. 王振生彙編. 簡介. 加密方法 (Ciphering) 是利用特定的轉換 (Transformation) 方法,將 明文 ( Plaintext ) 轉換成為 密文 ( Ciphertext ) ,隱蔽明文真正的內容,用以預防在傳遞資訊或通訊時,資訊內容的隱密性遭受洩漏或破壞。 只有獲得授權的人,才能看到資訊的內容, 『 獲得授權的人 』 是指擁有 解密金鑰( key ) 的人。 沒有獲得授權的人,即使 得知加密系統所使用的加密演算法,但沒有金鑰,也就無從得知資訊的內容 。. 2. 簡介.

vianca
Download Presentation

密碼系統

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. 密碼系統 王振生彙編

  2. 簡介 加密方法 (Ciphering) 是利用特定的轉換 (Transformation) 方法,將明文 ( Plaintext )轉換成為密文 ( Ciphertext ),隱蔽明文真正的內容,用以預防在傳遞資訊或通訊時,資訊內容的隱密性遭受洩漏或破壞。 只有獲得授權的人,才能看到資訊的內容,『獲得授權的人』是指擁有解密金鑰(key)的人。 沒有獲得授權的人,即使得知加密系統所使用的加密演算法,但沒有金鑰,也就無從得知資訊的內容。 2

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

  4. 簡介 研究加密相關的知識,我們稱之為密碼學 (Cryptograph),源自於希臘語kryptós,“隱藏的”,和gráphein,“書寫”,此兩字的結合。將明文轉換為密文的過程稱為『加密』 (Encryption);而將密文轉換為明文的過程稱為『解密』 (Decryption),此即是加密、解密的基本觀念。加密與解密可利用一個簡單模型加以解釋,通過加密程式,明文和金鑰進行加密運算變成密文,此過程稱為加密過程 (Enciphering)。相反地,通過解密程式,密文和金鑰進行解密運算變成明文,此過程稱為解密過程 (Deciphering)。 4

  5. 簡介 • 西元前5世紀,古希臘出現最原始的加密器,用一條皮革纏繞在一根木棍上,這是最早的換位密碼術。西元前1世紀,著名的凱撒 (Caesar) 加密法被用於高盧戰爭中,這是一種簡單的單字母代換的密碼系統。近代,第二次世界大戰,德國使用著名的加密器『Enigma』在戰役中,然而,後來被盟軍所破譯。 • 1975年,美國國家標準局頒布國家標準─DES (Data Encryption Standard)加密標準,作為計算機系統和網路應用的資料加密標準。DES加密標準,在全世界使用了30年之後,由於安全性的考量,漸漸被美國新一代加密標準AES (Advanced Encryption Standard)所取代。 5

  6. 密碼系統的功能 • 透過密碼系統可以提供下列三種安全服務: • 機密性(confidentiality):不論是在傳輸或儲存設備之中,都可以利用加密隱藏資訊。 • 完整性(integrity):不論是在傳輸或儲存設備之中,都可以利用確認資訊的完整性(沒有被篡改)。 • 可說明性(accountability)/不可否認性(Non-repudiation):加密可以用來確認資訊的來源,且可讓資訊的來源無法否認資訊的出處。

  7. 密碼學的專有名詞 • 加密運作模式專有名詞如下: • 原文(plaintext):資訊的原始格式。 • 密文(ciphertext):透過加密演算法輸出的資訊。 • 演算法(algorithm):將原文處理成密文的運算法則。 • 金鑰(key):一個與原文無關的數值,其可將原文轉成密 文或將密文轉成原文的過程中,一種用來協 助演算法計算的資料。 • 加密(encryption):將原文經加密運算轉成密文的程序。 • 解密(decryption):為加密的逆運算,將密文轉成原文的 程序。

  8. 密碼學的專有名詞 • 密碼學(cryptography):研究加密的原理與方法。 • 密碼破解(cryptanalysis):在不知道金鑰的情況下,分 析密碼學演算法並嘗試找出 缺陷。 • 密碼技術 (cryptology):整合密碼學與密碼破解這兩個 領域。

  9. 密碼學的分類 密碼學(cryptograph) • 依下列三種不同的觀點來分類: • 加密的方法 • 取代(substitution):明文中的每一元素都被對應到另一個元素 • 置換(transportation):明文中的每一元素都被重新排列 • 前兩者混用(mixed):絕大部分的系統都同時引用好幾回的取代與置換,以強化加密的安全性 • 金鑰個數 • 單一金鑰或私密金鑰:傳送與接收者都持有一把相同的金鑰 • 雙金鑰或公開金鑰:傳送與接收雙方使用不同的金鑰 • 明文的處理方式 • 區段加密(block cipher):一次處理一大段元素,根據輸入的區段產生輸出的區段 • 資料流加密(stream cipher):讀入連續的元素,但一次只輸出一個元素,直到所有讀入的元素都處理完畢為止

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

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

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

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

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

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

  16. 圖 2.3 英文字元的出現頻率統計 字元的使用頻率 資料來源:摘自W. Stalling: Cryptography and Network Security

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

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

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

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

  21. DES 演算法

  22. Openssl常用的指令選項 • Openssl常用指令選項: • in:密文或明文的輸入路徑。 • out:密文或明文的輸出路徑。 • inkey:密鑰的輸入路徑。 • pubin、pubout:輸入(出)的密鑰路徑。 • d:解密。 • e:加密。 • des3:3DES對稱加密演算法。 • genrsa:rsa非對稱加密演算法,產生金鑰時使用。 • rsautl:rsa非對稱加密演算法,加解密時使用。 • dgst:執行摘要運算,通常還需指定使用何種雜湊函數。 • md5、sha:MD5或SHA雜湊函數。

  23. 以DES對稱式密碼系統加密檔案

  24. 區塊密碼演算法模式 • 電子碼冊模式(ECB) • 密碼區塊鏈結模式(CBC) • 密碼回饋(CFB) • 輸出回饋(OFB)

  25. 區塊密碼演算法模式-ECB • ECB Electronic Code Book • 通常以64位元為區塊大小 • 全部區塊使用單一金鑰,無法避免重複區塊的問題

  26. 區塊密碼演算法模式-CBC • CBC Cipher Block Chaining • IV: Initialization Vector可以不需要保密,但是保密最理想 • 使用回饋機制避免重複區塊問題

  27. 區塊密碼演算法模式-CFB

  28. 區塊密碼演算法模式-OFB

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

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

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

  32. AES 加密演算法範例 32

  33. 私密(對稱式)金鑰密碼系統 由於加密/解密使用相同的金鑰,因此私密金鑰加密也稱為對稱式金鑰加密。 在經過對稱式加密之後,可以確保資訊的機密性。只有金鑰的擁有人(key owner),才可以解密訊息。 在傳輸的過程中,訊息發生任何變化,都會造成解密失敗,因此可以得知訊息是否遭到修改。 私密金鑰加密的缺點為無法確認建立金鑰、加密和傳送有效訊息的人。(相關的人可能有此私密金鑰) 建立私密金鑰加密的優點為速度相當快,而且很容易利用軟體或硬體複建置私密金鑰。

  34. 私密金鑰加密法的特點

  35. 私密金鑰加密法的特點

  36. 私密金鑰加密法的特點

  37. 私密金鑰加密法的缺點 • 傳統 私密/單一 金鑰加密法只用一把金鑰,傳送者與接收者共用這把金鑰,也稱為對稱式加密。 • 如果這把金鑰被破解,那麼通訊安全就岌岌可危。 • 對稱式加密法的缺點: • 無法確認資訊傳送者 • 接收者可以偽造訊息並宣稱是由傳送者所送出的

  38. 為什麼需要公開金鑰加密法? • 因為下列兩項關鍵議題才發展出來的: • 金鑰分送–如何在不需要 KDC (Key distribution center) 的情況下,建立安全的通訊 • 數位簽章–如何驗證訊息是否為傳送者所送出的 • 公開金鑰加密法的概念是 Whitfield Diffie 與 Martin Hellman 於 1976 年在 Stanford 大學所提出 • 其實在這之前,某些社群內已發現了這個方法

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

  40. 密碼學的安全定義 密碼學的安全定義 • 理論安全(Theoretical Security) • 破解花費的時間等於直接去猜測明文的時間。 • 實際安全(Physically Security) • 在計算能力有限的情況下,於合理的時間內,無法破解此密文。

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

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

  43. 簡易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。 43

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

  45. 產生公開金鑰加密法的私密金鑰

  46. 利用私密金鑰產生公開金鑰

  47. 公開金鑰加密法的應用 • 公開金鑰加密法的應用可分為三類: • 加密/解密(提供機密性)(下圖(a)) • 數位簽章(提供不可否認性) (下圖(b)) • 金鑰交換(針對通訊金鑰) • 有些演算法適用於三種的應用,某些方法則只適用三種中的一種或兩種。

  48. 公開金鑰加密法的應用

  49. 公開金鑰加密法的應用

  50. SSL運作流程

More Related