加密技術是為了保護敏感數據在網絡傳輸中的安全,就像日常生活中使用的淘寶、支付寶、微信等等軟件,如果涉及到金額的數據在網絡中不加密傳輸,那是極易被別人竊取、篡改的,通信中的數據加密技術就顯得尤為重要。各類加密工具的原理都是大同小異,這里對常見加密原理進行解讀。
一、對稱加密
加密數據與解密數據使用相同的密鑰,這種加密方法稱為對稱加密
- 特點
- 加密與解密使用相同密鑰,加密解密速度快
- 將原始數據進行切塊,逐個進行加密。
- 缺點
- 每一個通信的對象都有一把密鑰,如果通信對象過多導致密鑰過多。
- 密鑰分發問題,如何保證密鑰不被竊取
二、非對稱加密
加密數據與解密數據使用一堆不相同的密鑰,公鑰公開給所有人,私鑰自己保存。使用公鑰加密的數據只有自己的私鑰可以解開。
- 特點
- 用公鑰加密數據,只能使用配對的私鑰進行解密。
- 用私鑰加密的數據,只能使用配對的私鑰進行解密
- 缺點
- 加密解密速度慢、時間長,不適用於對大數據進行加密解密。
三、單項散列
單項散列又稱為hash算法,把任意長度的數據、字符加密后得到一個固定長度的特征碼。
-
特點
- 加密后輸出的特征碼長度固定
- 加密后的特征碼只跟數據內容有關,與數據名稱無關
- 可以用作數據的指紋
- 得到數據的特征碼無法推算出原數據的內容
-
缺點
- 相同內容的文件加密后的結果相同
- 通常隨數據一同發出,極易被竊取
四、加密通信的綜合應用
以上三種如果單獨使用任何一種對數據進行數據加密的話都是不安全的,那么現在在互聯網中的數據時如何傳輸的呢?其實數據在互聯網中並不會使用單一加密技術,往往都是各類技術混合使用,互補優缺點使數據的傳輸更加安全。
- 首先通過TCP三次握手進行連接,然后客戶端發送hello包到服務端,服務端回應一個hello包,如果客戶端需要再次發送數字證書, 則發送數字證書到客戶端。
- 客戶端得到服務器的證書后通過CA服務驗證真偽、驗證證書的主體與訪問的主體是否一致,驗證證書是否在吊銷證書列表中。如果全部通過驗證則與服務器端進行加密算法的協商。
- 然后是用證書中服務器的公鑰加密【對稱秘鑰】發送給服務器端,【對稱秘鑰】只能用服務器的私鑰進行解密,當服務器通過私鑰解密【對稱秘鑰】后。使用對稱秘鑰將客戶端請求的數據發送到客戶端,客戶端在用對稱秘鑰進行解密,從而得到想要的數據。
注:對稱秘鑰非長期有效,每隔一段時間甚至每一次數據的傳輸都使用不同的對稱秘鑰。