天天看點

資料的加密和解密初識

加密是讓資料從明文變成密文,傳輸過程中是密文,傳送過去之後對方接收到的也是密文。

可以了解為密文就是亂碼,看不出内在的任何意義,通常也都是逐位對應的。

在接收方接收到密文之後隻有把它還原為原來的樣子才可以了解對方說的具體是什麼,此過程就叫做解密。

1.不同主機之間的程序間通信:Socket-pair,套接字對

  套接字Socket的三種類型:

    流套接字(Socket_Stream):基于TCP協定通信的套接字

    資料報套接字(Socket_Dgram):基于UDP協定通信的套接字

    裸套接字,原始套接字(Socket_Ram):基于底層協定通信的套接字

2.威脅安全的行為:

威脅機密性的攻擊行為:

  竊聽、嗅探、掃描、通信量分析

威脅完整性的攻擊:

  更改、僞裝、重放、否認

威脅可用性的攻擊:

  拒絕服務(DoS)

3.安全實作的目标:

  機密性:confidentiality,保證資訊不洩露

  完整性:integrity,保證資訊不被篡改

  可用性:availability,保證資訊内在價值

4.安全解決方案:

  技術:加密和解密

    傳統的加密方法:替代加密算法

    現代的加密方法:塊加密方法:

  服務:安全服務

    身份認證、通路控制機制

5.加密方案:

  加密算法和密鑰

  加密算法

  四種加密算法:

    對稱加密算法

    公鑰加密算法(非對稱加密)

    單向加密算法

    密鑰交換算法

    1)對稱加密算法:

    加密和解密使用同一密鑰

    特性:

      1.每對通信主機都需要保有一個相同的密鑰,用于加密和解密

      2.将原始的資料分隔成固定大小的塊,逐個加密

      3.加密和解密的速度比較快    

    缺陷:

      1.加密解密所需要保有的密鑰數量過多

      2.密鑰分發過于困難 

    主流加密算法:

      DES:Data Encryption Standard,資料加密标準

        56bit密鑰,64bit塊

        3DES:triple DES

      AES:Advanced Encryption Standard進階加密标準

        AES128bit,AES192bit,AES256bit

      Blowfish

      Twofish

      IDEA

      RC

      RC4,RC6

  2)公鑰加密算法:

    密鑰分為私鑰和私鑰抽取生成的公鑰組成

    私鑰:512bit,1024bit,2048bit,4096bit,8192bit,16384bit

    特點:

      1.使用密鑰對來加密和解密,使用私鑰加密的資料必須用從中抽取出的公鑰解密,同樣如果使用公鑰加密必須使用與之相對的私鑰進行解密

        私鑰:通過特定的工具建立生成,由使用者自己留存,務必保證其私密性,secret key,或者private key

        公鑰:從私鑰中提取産生,公鑰可以公開給所有人使用public key

      2.密鑰長度比較長,加密後的資料安全等級較高

      加密資料的時候,消耗的系統資源和時間都較多,很少用來加密大批量資料

    用途:

      數字簽名:主要用于讓接收方确認發送方的身份,使用發送方的私鑰發送資料,到了接收方之後,使用發送方的公鑰解密資料

      密鑰交換:發送資料的一方使用接受方的公鑰加密對稱密鑰,将加密後的對稱密鑰發送給對方 

      資料加密:通常用于加密小資料

    常用的公鑰加密算法:

      RSA:加密,數字簽名

      DSA:數字簽名算法,Digital signature Algorithm,數字簽名算法,隻能實作數字簽名的功能,有時候該算法被稱為DSS,Digital Signature Standard

      Elgamal:

  3)單項加密:

    隻能進行加密,不能進行解密,從已知資料中提取密碼指紋

      1.定長輸出

      2.雪崩效應

    功能:

      保證資料的完整性

    常用的算法:

      md5:massage digest version 5 ,資訊摘要算法的第五版

        128bit定長輸出

      sha系列:

        sha-1:secure hash algorithm,安全雜湊演算法,160bit定長輸出

        sha224

        ssh256

        ssh384

        ssh512

  4)密鑰交換算法:IKE(Internet key exchange)

    公鑰加密

    DH算法:deffie-hellman

  密鑰

國際标準化組織(ISO)定義了證書的結構和認證标準:X.509協定标準

證書裡面包括的:

  擁有者的名稱

  擁有者所送出的公鑰資訊

  有效期

  證書的版本号

  證書的序列号

  簽發算法ID

  簽發CA的名稱

  主體名稱

  簽發機構的唯一辨別

  簽發機構的數字簽名

  擴充資訊

PKI:public key infrastructure,公鑰基礎設施

  證書的簽證機構:CA

  注冊機構:RA

  證書吊銷清單:CRL,certification Revoke List

  證書存取庫:CAB,certification Access Base

CA如何發揮其作用:

  1.通信雙方互相交換證書,

  2.雙方協商加密算法

  3.雙方驗證證書的真僞

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

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

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

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

  SSL:Secure Socket Layer,安全的套接字層

TLS:Transport Layer Security,傳輸層安全

  IETF:Internet Engineering Task Force,網際網路工程項目小組

  分層設計:

    1.最底層:實作基礎算法的原語的實作,AES,md5,sha...

    2.向上一層:各種算法的基本實作

    3.再向上一層:各種算法組合實作的半成品

    4.最高層:各種元件拼裝而成的各種成品密碼學協定軟體

SSL/TLS的handshake(握手)的四個階段:

  1.用戶端向伺服器索要證書,并驗證證書是否合法

    Client Hello發送的資訊内容

      支援的協定版本,如:TLS V1.2

      用戶端生成一個随機數,稍後使用者生成會話密鑰

      支援的加密算法,如:AES,DES,RSA等

      支援的壓縮算法

  2.雙方協商生成會話密鑰

    Server Hello發送的資訊内容

      确認使用的加密協定的版本号,如 TLS V1.2

      伺服器生成一個随機數,稍後用于生成會話密鑰

      确認加密算法及壓縮算法

  3.雙方采用已經生成的會話密鑰進行安全加密的通信

    用戶端驗證伺服器證書,在确認無誤後取出其公鑰

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

      驗證發證機構(CA)

      驗證證書的完整性

      驗證證書的持有者資訊

      驗證證書的有效期

      驗證證書的吊銷清單

    用戶端發送資訊給伺服器端

      一個随機數,用于伺服器上的公鑰加密

      編碼格式變更的通知,表示随後的資訊都将用雙方已經協商好的加密算法和秘鑰進行加密發送 

    用戶端握手結束

  4.雙方互相通告握手結束的資訊

    伺服器收到用戶端發送來的此次握手階段的第三個随機數Pre-Master-key,計算生成本次會話所用到的會話密鑰,向用戶端發送相關資訊

      編碼變更通知,表示随後的資訊都将用雙方已經協商好的加密算法和密鑰進行加密發送,

    伺服器端握手結束

本文轉自 Runs_ 51CTO部落格,原文連結:http://blog.51cto.com/12667170/1953488,如需轉載請自行聯系原作者