簡單小結密碼學入門知識點

1、密碼的定義算法

  密碼,最初的目的是用於對信息加密,計算機領域的密碼技術種類繁多。但隨着密碼學的運用,密碼還被用於身份認證、防止否定等功能上。密碼是通訊雙方按約定的法則進行信息特殊變換的一種重要保密手段。依照這些法則,變明文爲密文,稱爲加密變換;變密文爲明文,稱爲脫密變換。密碼在早期僅對文字或數碼進行加、脫密變換,隨着通訊技術的發展,對語音、圖像、數據等均可實施加、脫密變換。數據庫

2、密碼的分類安全

  最基本的分類是:信息加解密分爲對稱加密(Sysmmetric Cryptography)和非對稱加密(Public-Key Cryptography,Asymmetric Cryptography),這二者的區別是是否使用了相同的密鑰。網絡

除了信息的加解密,還有用於確認數據完整性(Integrity)的單向散列(One-Way Hash Function)技術,又稱密碼檢驗(Cryptographic Checksum)、指紋 (Fingerprint)、消息摘要 (Message Digest)。函數

  信息的加解密與信息的單向散列的區別是,對稱與非對稱加密是能夠經過密鑰解出明文,而單向散列是不可逆的。信息的加解密,密文一定是不定長的,而單向散列能夠是定長的。性能

  結合密碼學的加解密技術和單向散列技術,又有了用於防止篡改的消息認證碼技術,防止假裝的數字簽名技術以及認證證書編碼

3、密碼問題的應對策略加密

威脅問題 特徵 對應技術
竊聽 機密性 對稱、非對稱加密
篡改 完整性 單向散列、消息認證碼、數字簽名
假裝 身份認證 消息認證、數字簽名
否定 不能否認 數字簽名

 

4、信息的加密手段spa

(1)對稱密碼

  須要對加密和解密使用相同密鑰的加密算法。因爲其速度快,對稱性加密一般在消息發送方須要加密大量數據時使用。對稱性加密也稱爲密鑰加密。
  所謂對稱,就是採用這種加密方法的雙方使用方式用一樣的密鑰進行加密和解密。密鑰是控制加密及解密過程的指令。算法是一組規則,規定如何進行加密和解密。
  舉個例子來簡要說明一下對稱加密的工做過程。甲和乙是一對生意搭檔,他們住在不一樣的城市。因爲生意上的須要,他們常常會相互之間郵寄重要的貨物。爲了保證貨物的安全,他們商定製做一個保險盒,將物品放入其中。他們打造了兩把相同的鑰匙分別保管,以便在收到包裹時用這個鑰匙打開保險盒,以及在郵寄貨物前用這把鑰匙鎖上保險盒。
  所以加密的安全性不只取決於加密算法自己,密鑰管理的安全性更是重要。由於加密和解密都使用同一個密鑰,如何把密鑰安全地傳遞到解密者手上就成了必需要解決的問題。

  1.DES(Data Encryption Standard)

  DES全稱爲Data Encryption Standard,即數據加密標準,是一種使用密鑰加密的塊算法,1977年被美國聯邦政府的國家標準局肯定爲聯邦資料處理標準(FIPS),並受權在非密級政府通訊中使用,隨後該算法在國際上普遍流傳開來。須要注意的是,在某些文獻中,做爲算法的DES稱爲數據加密算法(Data Encryption Algorithm,DEA),已與做爲標準的DES區分開來。計算機網絡

  DES 算法是以 64 bits 明文爲一個單位(每隔 7 bits 會有一個 checksum bit,所以實際有效爲 56 bits),分組對明文進行加密的,是一種分組密碼(Block Cipher)算法。DES 算法原理是經過一個稱爲 Feistel 網絡,並通過 N 輪的輪函數的計算實現的。

  DES算法的入口參數有三個:Key、Data、Mode。其中Key爲7個字節共56位,是DES算法的工做密鑰;Data爲8個字節64位,是要被加密或被解密的數據;Mode爲DES的工做方式,有兩種:加密或解密。

  DES設計中使用了分組密碼設計的兩個原則:混淆(confusion)和擴散(diffusion),其目的是抗擊敵手對密碼系統的統計分析。混淆是使密文的統計特性與密鑰的取值之間的關係儘量複雜化,以使密鑰和明文以及密文之間的依賴性對密碼分析者來講是沒法利用的。擴散的做用就是將每一位明文的影響儘量迅速地做用到較多的輸出密文位中,以便在大量的密文中消除明文的統計結構,而且使每一位密鑰的影響儘量迅速地擴展到較多的密文位中,以防對密鑰進行逐段破譯。

 

  DES算法把64位的明文輸入塊變爲64位的密文輸出塊,它所使用的密鑰也是64位(實際用到了56位,第八、1六、2四、3二、40、4八、5六、64位是校驗位, 使得每一個密鑰都有奇數個1),其算法主要分爲兩步:

  ①初始置換:
  其功能是把輸入的64位數據塊按位從新組合,並把輸出分爲L0、R0兩部分,每部分各長32位,其置換規則爲將輸入的第58位換到第一位,第50位換到第2位……依此類推,最後一位是原來的第7位。L0、R0則是換位輸出後的兩部分,L0是輸出的左32位,R0是右32位,例:設置換前的輸入值爲D1D2D3……D64,則通過初始置換後的結果爲:L0=D58D50……D8;R0=D57D49……D7。
其置換規則見下表:
58,50,42,34,26,18,10,2,
60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,
64,56,48,40,32,24,16,8,
57,49,41,33,25,17,9,1,
59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,
63,55,47,39,31,23,15,7,
  ②逆置換
  通過16次迭代運算後,獲得L1六、R16,將此做爲輸入,進行逆置換,逆置換正好是初始置換的逆運算,由此即獲得密文輸出。
 
  注意:此算法是對稱加密算法體系中的表明,在計算機網絡系統中普遍使用。DES 於 1977 年公佈,現已被破解。

  2.三重 DES(Triple-DES)

  DES(即Triple DES)又稱爲 TDEA(Triple Data Encryption Algorithm)或 3DES。是DES向AES過渡的加密算法,它使用3條56位的密鑰對數據進行三次加密。是DES的一個更安全的變形。它以DES爲基本模塊,經過組合分組方法設計出分組加密算法。比起最初的DES,3DES更爲安全。
  該方法使用兩個密鑰,執行三次DES算法,加密的過程是加密-解密-加密,解密的過程是解密-加密-解密。
    3DES加密過程爲:C=Ek3(Dk2(Ek1(P)))
    3DES解密過程爲:P=Dk1(EK2(Dk3(C)))
  採用兩個密鑰進行三重加密的好處有:
    ①兩個密鑰合起來有效密鑰長度有112bit,能夠知足商業應用的須要,若採用總長爲168bit的三個密鑰,會產生沒必要要的開銷。
    ②加密時採用加密-解密-加密,而不是加密-加密-加密的形式,這樣有效的實現了與現有DES系統的向後兼容問題。由於當K1=K2時,三重DES的效果就和原來的DES同樣,有助於逐漸推廣三重  DES。
    ③三重DES具備足夠的安全性,目前尚未關於攻破3DES的報道。

  3.AES(Advanced Encryption Standard)

  AES 是於 2000 年被採用的最新的對稱加密標準,採用了 Rijndael 算法。

  Rijndael 算法也是一種分組算法,密鑰長度規定爲 128 bits,192 bits, 256 bits 三種規格。與 DES 不一樣,Rijndael 算法沒有采用 Feistel 網絡,而是採用 SPN 結構,並經過多個輪函數實現的。

  SPN 結構和輪函數此處再也不展開,簡單的說,就是對明文數據分組,而後輪函數是進行一系列的平移、翻轉、位之間的交換等操做。具體能夠參考 Advanced Encryption Standard, Wikipedia

  Rijndael密碼的設計力求知足如下3條標準:
    ① 抵抗全部已知的攻擊。
    ② 在多個平臺上速度快,編碼緊湊。
    ③ 設計簡單。
  當前的大多數分組密碼,其輪函數是Feistel結構。 Rijndael沒有這種結構。 Rijndael輪函數是由3個不一樣的可逆均勻變換。
 
Rijndael (State, ExpandedKey) { AddRoundKey (State, ExpandedKey); for (i=1; i <Nr; i ++) Round (State, ExpandedKey+Nb* i); FinalRound (State, ExpandedKey+Nb*Nr) } Round (State, RoundKey) { ByteSub (State); ShiftRow (State); MixColumn (State); AddRoundKey (State, RoundKey) } FinalRound (State, RoundKey) { ByteSub (State); ShiftRow (State); AddRoundKey (State, RoundKey) }

 

  Rijindael 算法,可自由無償使用,安全、快速,暫未被破解。推薦使用。

 

(2)非對稱密碼

  非對稱加密能夠用於解決密鑰配送問題。

  相對於對稱密碼加解密採用相同的密碼,非對稱密碼加解密採用的是不一樣的密鑰,公鑰和私鑰成對,公鑰加密的信息,只有相應的私鑰纔可解密。

    •   對稱加密比如你們都用相同的鎖對信息加密,加解密雙方都擁有相同的鑰匙,鑰匙(密鑰)丟了,鎖(明文信息)就開了。
    •   非對稱加密,則是向你們派發鎖(公鑰),你們能夠經過鎖,對信息加密。鎖是公開的,丟了也無所謂。但鑰匙(私鑰)只有一把,歸信息的接受者全部。

  非對稱加密流程

    1.   接收方生成公私鑰對,私鑰由接收方保管
    2.   接收方將公鑰發送給發送方
    3.   發送方經過公鑰對明文加密,獲得密文
    4.   發送方向接收方發送密文
    5.   接收方經過私鑰解密密文,獲得明文

  沒法解決公鑰認證的問題,可能被中間人僞造公鑰。

 

  1.RSA(Rivest-Shamir-Adleman)

  首先這個加密算法的命名,它實際上是三我的的名字.早在1977年由麻省理工學院的三位數學家Rivest、Shamir 和 Adleman一塊兒提出了這個加密算法,而且用他們三我的姓氏開頭字母命名.
  RSA加密算法是一種非對稱加密算法,其玩法打破了以往全部加密算法的規則.在RSA出現以前,全部的加密方法都是同一種模式:加密解密的規則使用同一種方式.這種長達幾個世紀的加密方案有一個致命的缺陷.在傳遞加密信息時,必須讓對方拿到解密的規則才能正常解密.因爲加密解密的規則一致,因此保存和傳遞"密鑰",就成了最頭疼的問題。

  RSA加密/解密

    •   使用公鑰加密的數據,利用私鑰進行解密
    •   使用私鑰加密的數據,利用公鑰進行解密

  沒錯,RSA加密使用了"一對"密鑰.分別是公鑰私鑰,這個公鑰和私鑰其實就是一組數字!其二進制位長度能夠是1024位或者2048位.長度越長其加密強度越大,目前爲止公之於衆的能破解的最大長度爲768位密鑰,只要高於768位,相對就比較安全.因此目前爲止,這種加密算法一直被普遍使用.

  強度比較

  密碼強度,默認的 RSA 長度爲 2048 bit

AES(bit) RSA(bit)
128 3072
192 7680
256 15360

 

  RSA的弊端

  1. 效率慢,所以工業場景下,每每是經過非對稱加密配送密鑰,對稱加密加密明文的混合加密方式,最著名的如 SSL
  2. 公鑰認證問題難。消息發送方沒法確認公鑰的身份問題,應該收到甲的公鑰,卻收到了乙的。
  3. 沒法避免中間人攻擊。可能被人於中間劫持後,發送一個僞造的公鑰,此公鑰加密後的密文,能夠被劫持者解密,以後全部的密文都對劫持者透明瞭。
  4. 選擇密文攻擊,即經過不斷的發送請求,分析請求的反饋,猜想密鑰和明文。有改良算法 RSA-OAEP (Optimal Asymmetric Encryption Padding)最優非對稱加密填充,該算法是經過對明文前加入認證信息頭,若信息頭校驗失敗,則拒絕請求。
  5. 密碼劣化,隨着算力的提高,密碼的安全性降低。

 

  2.其它非對稱加密

    •   ECC(Elloptic Curve Cryptography) 橢圓曲線密碼
    •   EIGamal
    •   Rabin

 

(3)混合密碼系統

  混合加密就是對稱加密與非對稱加密的結合。因爲對稱加密算法速度快,強度高,而非對稱加密算法效率低,但能解決密鑰配送問題。所以能夠經過非對稱加密配送對稱密鑰,再採用對稱密鑰用來加密的方式,實現網絡的密鑰配送與通訊加密。

  通常實踐中,公鑰經過證書認證配送,而對稱加密用的密鑰是每次隨機產生。所以公鑰密碼的強度應該高於對稱密碼,由於對稱密碼只對當前一條信息負責,而非對稱密碼會影響到過完與將來全部的通訊。

 

(4)分組密碼加密模式

  加密模式是針對密碼分組或流加密所採用的迭代模式。

    •   分組密碼:Block Cipher,每次只能處理特定長度的數據的密碼算法
    •   流密碼:對數據流進行連續處理的一類密碼算法。須要保持內部狀態

  不一樣的分組加密方式,就有不一樣的加密模式:

    •   ECB 模式:Electronic CodeBlock mode 電子密碼本模式。將明文分組加密後的結果,直接成爲密文分組。最爲簡單直接,但有安全漏洞。由於分組規律簡單,所以能夠直接操做密文的分組後的順序來修改明文的順序,實現明文內容的修改。
    •   CBC 模式:Cipher Block Chaining mode 密碼分組連接模式。首先將明文分組與前一個密文分組進行 XOR 異或運算,而後加密。因爲第一個分組不存在前一個密文,所以須要提供一個分組長度的序列,稱爲初始化向量 Initialization Vector,縮寫爲 IV
    •   CTS 模式:Cipher Text Stealing。
    •   CFB 模式:Cipher FeedBack mode 密文反饋模式。前一組密文被送回密碼算法的輸入端
    •   OFB 模式:Output FeedBack mode 輸出反饋模式。密碼算法的輸出會反饋到密碼算法的輸入中的流密碼
    •   CTR 模式:CountTeR mode 計數器模式。CTR 模式是一種經過將逐次累加的計數器進行加密來生成密鑰流的流密碼

(5)單向散列

  單向散列技術是爲了保證信息的完整性,防止信息被篡改的一項技術。

  特色:

  1. 不管消息長度,計算出的長度永遠不變
  2. 快速計算
  3. 消息不一樣,散列值不一樣,須要具備抗碰撞性 Collision Resistance具備單向性 one-way,不可由散列值推出原消息
    • 弱抗碰撞性:給定散列值,找到和該消息具備相同散列值的另外一條消息是困難的
    • 強抗碰撞性:任意散列值,找到散列值相同的兩條不一樣的消息是困難的
  4. 具備單向性 one-way,不可由散列值推出原消息

 

  單向散列算法:

  ①MD(Message Digest)

    MD 散列算法分爲 MD4, MD5 兩套算法,均可計算出 128 bits 的散列。MD 系列算法已經被中國科學家王小云破解(可於有限時間內找出碰撞)。

 

  ②SHA(Secure Hash Algorithm)

    SHA 是單向散列算法的一個標準的統稱,其下又分爲 SHA-1, SHA-2, SHA-3 三套算法。

    其中 SHA-1 可生成 160 bit 散列值,已被攻破,不推薦使用。

    SHA-2 可生成不一樣長度的散列,如 256 bits (SHA-256), 384 bits (SHA-384), 512 bits (SHA-512),同時對輸入的消息長度存在必定限制,SHA-256 上限接近於 2^64-1 比特,SHA-38四、SHA512 則接近於 2^128-1比特。

    SHA-3,是 2012 年被採用的最新標準,採用了 Keccak 算法。

 

    Keccak 算法的優勢:

    1.   採用與 SHA2 徹底不一樣的結構
    2.   結構清晰,易於分析
    3.   適用於各類硬件,性能優越
    4.   可生成任意長度
    5.   對消息長度無限制
    6.   可採用雙工結構,輸入同時輸出,提高效率

    MD4,5, RIPEMD, RIPEMD-160, SHA-1, SHA-2 均採用 MD 結構(Merkle-Damgard construction)

    SHA-3 採用海綿結構

算法 散列長度,bit 輸入長度  
MD4 (Message Digest 4) 128   已破解
MD5 128   已破解
SHA-1 160 2^64 = 2048  謹慎使用,不推薦
SHA2 (SHA-224) 224 (32*8 - 32) 2^64  - 32 表示截去 32 bit,下同
SHA2 (SHA-256) 256 (32*8) 2^64
 
SHA2 (SHA-512/224) 224 (64*8 - 288) 2^64
 
SHA2 (SHA-512/256) 256 (64*8 - 256) 2^64
 
SHA2 (SHA-384) 384 (64*8 - 128) 2^128  
SHA2 (SHA-512) 512 2^128
 
SHA-3   無限制  
RIPEMD-128     已破解
RIPEMD-160     謹慎使用,是比特幣採用的
RIPEMD-256      
RIPEMD-320      

  對散列的攻擊

    •   暴力破解,冗餘碰撞
    •   生日攻擊,針對強抗碰撞性

    哈希碰撞是什麼

    所謂哈希(hash),就是將不一樣的輸入映射成獨一無二的、固定長度的值(又稱"哈希值")。它是最多見的軟件運算之一。

    若是不一樣的輸入獲得了同一個哈希值,就發生了"哈希碰撞"(collision)。

    黑客攻擊的一種方法,就是設法制造"哈希碰撞",而後入侵系統,竊取信息。

    如何防止哈希碰撞?

    防止哈希碰撞的最有效方法,就是擴大哈希值的取值空間。

    16個二進制位的哈希值,產生碰撞的可能性是 65536 分之一。也就是說,若是有65537個用戶,就必定會產生碰撞。哈希值的長度擴大到32個二進制位,碰撞的可能性就會降低到 4,294,967,296 分之一。

    更長的哈希值意味着更大的存儲空間、更多的計算,將影響性能和成本。開發者必須作出抉擇,在安全與成本之間找到平衡。

    生日攻擊

    哈希碰撞的機率取決於兩個因素(假設哈希函數是可靠的,每一個值的生成機率都相同)。

      •     取值空間的大小(即哈希值的長度)
      •     整個生命週期中,哈希值的計算次數

    這個問題在數學上早有原型,叫作"生日問題"(birthday problem):一個班級須要有多少人,才能保證每一個同窗的生日都不同?

    答案很出人意料。若是至少兩個同窗生日相同的機率不超過5%,那麼這個班只能有7我的。事實上,一個23人的班級有50%的機率,至少兩個同窗生日相同;50人班級有97%的機率,70人的班級則是99.9%的機率(計算方法見後文)。

    這意味着,若是哈希值的取值空間是365,只要計算23個哈希值,就有50%的可能產生碰撞。也就是說,哈希碰撞的可能性,遠比想象的高。實際上,有一個近似的公式。

             

    上面公式能夠算出,50% 的哈希碰撞機率所須要的計算次數,N 表示哈希的取值空間。生日問題的 N 就是365,算出來是 23.9。這個公式告訴咱們,哈希碰撞所需耗費的計算次數,跟取值空間的平方根是一個數量級。

    這種利用哈希空間不足夠大,而製造碰撞的攻擊方法,就被稱爲生日攻擊(birthday attack)。

    

    給出生日攻擊的數學推導。

    至少兩我的生日相同的機率,能夠先算出全部人生日互不相同的機率,再用 1 減去這個機率。

    咱們把這個問題設想成,每一個人排隊依次進入一個房間。第一個進入房間的人,與房間裏已有的人(0人),生日都不相同的機率是365/365;第二個進入房間的人,生日獨一無二的機率是364/365;第三我的是363/365,以此類推。

    所以,全部人的生日都不相同的機率,就是下面的公式。

          

    上面公式的 n 表示進入房間的人數。能夠看出,進入房間的人越多,生日互不相同的機率就越小。

    這個公式能夠推導成下面的形式。

          

    那麼,至少有兩我的生日相同的機率,就是 1 減去上面的公式。

           

    哈希碰撞的公式

    上面的公式,能夠進一步推導成通常性的、便於計算的形式。

    根據泰勒公式,指數函數 ex 能夠用多項式展開。

          

    若是 x 是一個極小的值,那麼上面的公式近似等於下面的形式。

       

    如今把生日問題的1/365代入。

         

    所以,生日問題的機率公式,變成下面這樣。

        

    假設 d 爲取值空間(生日問題裏是 365),就獲得了通常化公式。

         

    上面就是哈希碰撞機率的公式。

 

(6)消息認證碼 MAC

  單向散列能夠解決篡改的問題,但消息是來自可信一方,仍是來自假裝者,卻沒法解決。假裝者徹底能夠發送有害的信息和該信息的散列,而接受者卻沒法分辨。消息認證碼技術能夠解決此類問題。

  消息認證碼(Message Authentication Code),簡寫爲 MAC。經過發送方與接收方共享密鑰,經過該共享密鑰對計算 MAC 值。

 

  MAC 使用步驟

  消息認證碼使用步驟:

    1.   發送方 A 與接收方 B 共享密鑰
    2.   發送方 A 經過密鑰計算 MAC 值 = MAC-A
    3.   發送方 A 發送原消息 + MAC-A
    4.   接收方 B 對原消息經過密鑰計算 MAC 值 = MAC-B
    5.   接收方 B 比較 MAC-A 與 MAC-B,若一致則成功。

 

  MAC 實現

  MAC 實現的關鍵,是得到一串須要與共享密鑰相關並且足夠有區分度的串

  所以,能夠經過多種方式得到 MAC 值,如單向散列、分組密碼截取最後一組做爲 MAC 值、流密碼、非對稱加密等。

 

  針對 MAC 的問題

  1. 密鑰配送的問題,由於 MAC 須要發送者與接收者使用相同的密鑰
  2. 重放攻擊,竊取某一次通訊中的正確的 MAC,而後攻擊者重複屢次發送相同的信息。因爲信息與 MAC 能夠匹配,在不知道密鑰的狀況下,攻擊者就能夠完成攻擊。如下方法能夠避免:暴力破解
    • 序號,約定信息中帶上遞增序號,MAC 值爲加上序號的 MAC。
    • 時間戳,約定信息中帶上時間戳
    • 隨機數 nonce,每次傳遞前,先發送隨機數 nonce,通訊是帶上 nonce
  3. 沒法防止否定,由於密鑰是共享的,接收者能夠僞造對發送者不利的信息。

 

(7)數字簽名

  因爲 MAC 沒法解決否定的問題是因爲採用的相同的密鑰,那麼採用公私鑰對就能夠解決啦~

  採用非對稱加密的消息認證碼的技術,就是數字簽名。

    •   在非對稱加密中,私鑰用來解密,公鑰用來加密
    •   在數字簽名技術中,私鑰用來加密,公鑰用來解密

 

  數字簽名步驟

  1. 簽名方 A 生成非對稱公私鑰對 public-key、private-key
  2. A 向消息接收方 B 發送公鑰 publi-key
  3. A 採用 private-key 加密(通常是對消息的散列值進行加密),生成數字簽名
  4. A 將消息與數字簽名發往 B
  5. B 採用 public-key 解密數字簽名
  6. B 驗證數字簽名

  因爲用於解密的是公鑰,是公開的。所以任何人均可以驗證數字簽名。

 

  數字簽名實現

  數字簽名的核心,就是非對稱加密,在前文已經介紹了一些非對稱加密算法,都可用於數字簽名之中。

  常見的有以下幾種:

    •   RSA
    •   ElGamal
    •   DSA
    •   ECDSA(Elliptic Curve Signature Algorithm),結合橢圓曲線算法的數字簽名技術
    •   Rabin

 

  數字簽名的問題

  數字簽名因爲採用了非對稱加密,所以能夠防止否定。但發送方怎麼能知道所收到的公鑰就是接收方私鑰所對應的公鑰呢?若是不當心採用了攻擊者的公鑰,而後接收了攻擊者私鑰簽名的信息,公私鑰徹底匹配,因而信息就被接受了,那麼就 GG 了。

  所以,業界便推出了證書。由權威機構頒佈,認證公鑰的合法性,那麼就 OK 啦~

 

(8)證書

  對數字簽名所發佈的公鑰進行權威的認證,即是證書。證書能夠有效地避免中間人攻擊的問題。

    •   PKC:Public-Key Certificate,公鑰證書,簡稱證書。
    •   CA:Certification Authority,認證機構。對證書進行管理,負責 1.生成密鑰對、2. 註冊公鑰時對身份進行認證、3. 頒發證書、4. 做廢證書。其中負責註冊公鑰和身份認證的,稱爲 RA(Registration Authority 註冊機構)
    •   PKI:Public-Key Infrastructure,公鑰基礎設施,是爲了更高效地運用公鑰而制定的一系列規範和規格的總稱。比較著名的有PKCS(Public-Key Cryptography Standards,公鑰密碼標準,由 RSA 公司制定)、X.509 等。PKI 是由使用者、認證機構 CA、倉庫(保存證書的數據庫)組成。
    •   CRL:Certificate Revocation List 證書做廢清單,是 CA 宣佈做廢的證書一覽表,會帶有 CA 的數字簽名。通常由處理證書的軟件更新 CRL 表,並查詢證書是否有效。

 

  證書使用步驟

    下圖比較詳細的闡述了證書的使用步驟

 
  
 

  證書的層級

    對於認證機構的公鑰,能夠由其它的認證機構施加數字簽名,從而對認證機構的公鑰進行驗證,即生成一張認證機構的公鑰證書,這樣的關係能夠迭代好幾層,一直到最高一層的認證機構時該認證機構就稱爲根CA,根CA會對本身的公鑰進行數字簽名叫作自簽名

 

  針對證書的問題

  1. 公鑰註冊前進行攻擊
  2. 註冊類似信息進行攻擊,例如 Bob 和 BOB,一旦沒看清,就會泄露信息
  3. 竊取 CA 的私鑰進行攻擊,CA 的私鑰一旦被泄露,須要經過 CRL 通知客戶
  4. 假裝成 CA 進行攻擊,通常證書處理軟件只採納有限的根 CA
  5. 利用 CRL 發佈時間差,私鑰被盜-通知 CA-發佈 CRL,均存在時間差,攻擊者能夠利用此時間差進行攻擊
  6. 利用 CRL 發佈時間差否定信息。發佈有害信息-通知 CA 做廢證書-發佈 CRL,因爲存在時間差,惡意消息的發佈者徹底能夠否定惡意消息是由其發出的。
相關文章
相關標籤/搜索