1. 程式人生 > >加密和解密基礎

加密和解密基礎

加密 解密 密鑰交換

1. 互聯網通信為什麽需要加密?

2. 加密算法

3. 加密協議


1. 互聯網通信為什麽需要加密?

??
互聯網通信的安全要求:
??通訊數據的保密性、可靠性、可用性。
影響互聯網通信安全性的攻擊:
??影響保密性:竊聽、通信量分析
??影響可靠性:更改、偽裝、重放(截取雙方通信的報文,並重復發送)、否認(發送報文,但是否認自己發送了)
??影響可用性:Dos、DDos
??
解決方案:通過技術和服務兩方面來實現
技術方面:
??加密解密
????傳統加密方法:替換加密、置換加密
????現代加密方法:塊加密。把整個數據切割成數個等大小的塊,前後塊之前還要建立起關聯關系(塊與塊之間做與運算後發送)。
服務方面:
??認證機制、訪問控制機制

??


2. 加密算法

一、 對稱加密:
??特點: 原始數據分割成為固定大小的塊(最後一個塊比前面塊小時,在結尾附加隨機數據以填充至相同大小),逐個進行加密;加密、解密時使用同一個密鑰;算法公開、計算量小、加密速度快、加密效率高。
??應用場景: 通常在消息發送方需要加密大量數據時使用。
??常用算法:
????DES(Data Encryption Standard)、3DES(Triple DES)、AES(Advanced Encryption Standard)、TDEA、Blowfish、Twofish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等
??缺點:

??由於加密和解密都使用同一個密鑰,如何把密鑰安全地傳遞到解密者手上就成了必須要解決的問題。
??在數據傳送前,發送方和接收方必須商定好秘鑰,然後使雙方都能保存好秘鑰。其次如果一方的秘鑰被泄露,那麽加密信息也就不安全了。每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的唯一秘鑰,這會使得收、發雙方所擁有的鑰匙數量巨大,密鑰管理成為雙方的負擔

二、 公鑰加密:
??公鑰:從私鑰中提取產生;可公開給所有人;pubkey
??私鑰:通過工具創建,使用者自己留存,必須保證其私密性;secret key
??特點:用公鑰加密的數據,只能使用與之配對兒的私鑰解密;反之亦然
??用途:
????1、 數字簽名:主要在於讓接收方確認發送方的身份

????2、 密鑰交換:發送方用對方公鑰加密一個對稱密鑰,並發送給對方
????3、 數據加密:私鑰擁有方對數據加密得到的結果就是數字簽名
??常用公鑰加密算法:
????RSA, DSA(Digital Signature Algorithm), ELGamal
三、單向加密
??即提出數據指紋(即特征碼)。只能加密,不能解密。
??功能:確定數據完整性
??特性:
????1、 定長輸出:無論文件大小,輸出的特征碼長度一定。
????2、 雪崩效應:只要文件內容有改變,輸出的特征碼就會變化。
??常用算法:
????md5:Message Digest 5, 128bits
????sha1:Secure Hash Algorithm 1, 160bits
????sha224, sha256, sha384, sha512

四、密鑰交換: IKE(Internet Key Exchange)
??實現方法常用的有兩種:
????1、 公鑰加密:用對方公鑰加密數據,對方收到後可以用私鑰解密。
????2、 DH(Deffie-Hellman): 可以讓雙方在完全沒有對方任何預先信息的條件下通過不安全信道建立起一個密鑰。這個密鑰可以在後續的通訊中作為對稱密鑰來加密通訊內容
五、密鑰交換過程:
??加密
????1、甲用單向加密方法計算出要傳輸數據的特征碼(用於數據完整性檢驗)
????2、甲用私鑰加密這段特征碼(數字簽名),並將結果附加在數據後面(身份驗證)
????3、甲生成一個臨時的對稱密鑰,並用密鑰加密整段數據(數據加密)
????4、甲獲取乙的公鑰,用此公鑰加密臨時的對稱密鑰,並附加在數據後面,發送給乙。
技術分享圖片
??解密:
????1、乙先用自己的私鑰解密對稱密鑰
????2、乙用對稱密鑰解密整段加密的內容
????3、乙用甲的公鑰去解密特征碼,能解密,甲的身份得到驗證
????4、乙用同樣的對稱加密算法,計算數據的特征碼,如果和解密得到的特征碼相同,數據的完整性得到保證。
????漏洞:如何可靠地獲取對方的公鑰


3. 加密協議

PKI:Public Key Infrastructure(公鑰基礎設施)
組成:
  簽證機構:CA
  註冊機構:RA
  證書吊銷列表:CRL
  證書存取庫:CB
證書的結構以及認證協議標準:由X.509v3定義,包括以下內容
  版本號
  序列號
  簽名算法ID
  發行者名稱:哪個CA給簽發證書
  有效期限
  主體名稱
  主體公鑰
  發行者的惟一標識
  主體的惟一標識
  擴展
  發行者的簽名
SSL:Secure sockets Layer
  Netscape於1994提出的基於 WEB 應用的安全協議。
  版本:V1.0(從未公開過), V2.0, V3.0 (91年發布)
  SSL是一個介於HTTP協議與TCP之間的一個可選層,其位置大致如下:
技術分享圖片
  SSL協議可分為兩層:
    SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供數據封裝、壓縮、加密等基本功能的支持
    SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。

TLS: Transport Layer Security傳輸層安全協議
  用於兩個應用程序之間提供保密性和數據完整性。
  TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任務組)制定的一種新的協議,它建立在SSL 3.0協議規範之上,是SSL 3.0的後續版本,可以理解為SSL 3.1,它是寫入了 RFC 的。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。較低的層為 TLS 記錄協議,位於某個可靠的傳輸協議(例如 TCP)上面。
  分層設計:
    1、最底層:基礎算法原語的實現,aes, rsa, md5
    2、向上一層:各種算法的實現;
    3、再向上一層:組合算法實現的半成品;
    4、用各種組件拼裝而成的各種成品密碼學協議軟件;

加密和解密基礎