天天看點

資料的加密和解密

 目前網絡環境中,資料的來往是十分密切,面對着海量的資訊集合,很少有人去考慮如何去保證,或者說資料是怎麼被保證安全的到達目的地的,在預設情況下,資料的發送是明文發送的,也就是說,資料的發送可以被除發送方和接收方的第三方所截獲,讀取資訊,或者通過長年累月的資料量分析得出發送方的某些重要資訊,這對于使用者來說都是不可接受的,是以随着網絡資料的不斷發展,人們不斷對資料加密進行更新換代,由一開始的傳統加密,通過替換的方式加密資訊,到後來的塊加密算法;

  現在的加密算法,如對稱加密,公鑰加密,作為一段時期的主要加密方式;對稱加密,通過雙方所擁有的相同的密鑰,進行比對,若相同則确認對方身份,同時利用這對密鑰進行加密解密,但這樣容易被第三方截獲這個密鑰并且冒充接收方進行接收;而公鑰加密,資料經過公鑰加密後,隻能由這個衍生出公鑰的私鑰進行解密,反之,資料經過私鑰加密後,隻能由其對應的公鑰進行解密;由于加密長度比較大,是以其安全級别也比較高;其加密的時候消耗的資源和時間都比較高,是以很少用于加密大批量的資料;公鑰加密常用于數字簽名,密鑰交換,資料加密等;在資料傳輸過程中,當發送方需要對資料加密,然後需要擷取接收方的公鑰,如果這時候擷取的公鑰不是接收方的,而是第三者的公鑰,資料就會被第三者的私鑰解密,那麼,如何去保證這類型資料傳輸的安全,就是我們要說的一個重點;

  數字簽名:發送方利用自己的私鑰加密資料,發送給接收方,接收方隻能使用發送方的公鑰進行解密操作,這個時候,就能知道是否為該發送方發送,相當于一個辨別;

  密鑰交換:發送方将對稱密鑰用接收方的公鑰加密,接受方就可以用它的私鑰解密,擷取對稱密鑰;

  資料加密:對小資料進行加密;

  單向加密算法:如md5,sha等,隻能進行加密,不能解密,可以通過單向加密雜湊演算法,擷取特征值,進行比對,檢視資料是否有出入;

  密鑰交換算法:

    公鑰算法

    DH算法:

      發送方具有p g,發送方對應的具有一個x值,x随機,第三方無法擷取x值,也就無法破譯,因      為結果不唯一,無法确定x值;

      接收方具有p g,接收方對應的具有一個y值,原理如上;

      發送方發送p^x%g給接收方,接收方再對其進行p^xy%g操作

      接受方發送p^y%g給發送方,發送方再對其進行p^xy%g操作

  這幾種加密方式就是目前比較常用的加密方式;在之前有講到的無法确定公鑰是否為接收方的問題,這個時候我們就需要有一個有公信力度的機構來為我們進行認證,這就是CA;

  有公信力度的CA,可以頒發證書,給接收方,發送方,當發送方或接受發需要檢查公鑰是否正确時,可以檢查由CA頒發的證書;證書裡面包含的内容有擁有者的名稱,擁有者所送出的公鑰,有效期,證書的版本号,證書的序列号,簽發算法ID,簽發CA的名稱,主體名稱,發證者的唯一辨別,發證者的數字簽名,擴充資訊等;發送方可以根據所擁有的CA機構的公鑰去解密證書的數字簽名,判斷其真假;而不論是哪一方,想要獲驗證書,就必須經過一段時間的等待,讓CA收集資訊進行判斷,這樣才能保證其公信力度;

  加密算法的聯合應用:

  通信雙方互換證書,并到信任的CA進行證書驗證;驗證正确後發送方将資料用對稱密鑰加密,使用單向加密的雜湊演算法加密出資料的特征值,特征值使用發送方的密鑰進行加密,發送給接收方,接收方先用發送方的公鑰對特征值進行解密,在使用單向加密雜湊演算法算出特征值,二者比對,若相同,則表示資料在發送過程中未被改動,則讀取資料,若改動,則丢棄資料,接收方用自己的私鑰解密對稱密鑰,再用對稱密鑰去解密資料,讀取資料内容;

  CA如何發揮其作用的:

  1.通信雙方交換證書;

  2.雙方協商加密算法;

  3.雙方驗證證書的真僞;

  4.用CA的公鑰解密證書中CA的簽名,能解密說明證書來源可靠;

  5.用通用的加密算法加密證書,取得特征值;與解密出來的特征值比較,如果相同,說明證書完整性   可靠;

  6.檢查證書的有效期是否在合法時間範圍,如果過期則證書不被認可;

  7.檢查證書的主體名稱和此次通信的目标是否能夠對應;

  用戶端與伺服器握手的四個階段:

   1.第一階段,擷取伺服器證書進行檢驗;用戶端打招呼,Cliect Hello,發送用戶端所支援的協定的版本,在hello階段,以免用戶端或伺服器無法使用對方的加密的方式;如用戶端隻能使用md5,伺服器隻能使用AES,DES等,要判斷是否能支援;伺服器将自己的證書發給用戶端,用戶端進行驗證,到CA核實證書資訊,若核實錯誤,則沒有後續操作;伺服器檢驗用戶端發送來的證書,使用用戶端的公鑰進行檢驗;

   2.第二階段,證書合法後,雙方協商生成會話密鑰,如用DH算法生成;Sever Hello,伺服器發送Hello,,确認加密算法版本号,生成一個随機數,用于生成會話密鑰;

   3.第三階段,利用已經生成的會話密鑰進行安全加密的通信;驗證服務證書後,取出公鑰,以便下次伺服器接收資料,能用自己的私鑰解除;

   用戶端發送一個資訊給伺服器;告訴伺服器,編碼是否變更,即加密方式,若無,則采用之前商量好的方式進行傳輸;生成一個随機數,用于伺服器端的公鑰加密;

   驗證伺服器證書需要驗證下述内容:

      驗證發證機構(CA); 

      驗證證書的完整性;

      驗證證書的持有者資訊;

      驗證證書的有效期;

      驗證證書的吊銷清單;

   4.第四階段,雙方互相通告握手結束,say goodbye;

本文轉自 wujunqi1996 51CTO部落格,原文連結:http://blog.51cto.com/12480612/1953696