1. 數據傳輸分類
在互聯網上數據傳輸有兩種:明文傳輸和加密傳輸。明文傳輸的協議有:ftp、http、smtp、telnet。
但是為了數據的完整性和安全性,所以后來引用了加密等相關手段來保證數據的安全和完整性。
2. 案例引入
我在外地出差,因工作需要,公司主管要發給我一份重要資料給我,怎么才能讓這個資料順利的傳到我的手上,
而且我懷疑有人會竊取這個重要資料,若是被誰竊取到那公司損失就大了!
3. 安全的特點
我能確定這個資料來來自公司 --- 數據來源認證
我能確保在通過因特網傳輸時沒有被修改過 --- 數據的完整性保護(傳輸的過程中是否被修改)
確寶沒有別人能夠看到這份資料 --- 數據私密性 (不能被別看到)
主管不能事后否認他曾經發送過那份資料本給我 ---(不可否認性)
4. 角色說明
互聯網 黑客 數據 加密 數據
5. 算法
(1). 密碼學算法主要分為兩個大類,對稱加密算法和非對稱加密算法,對稱加密算法技術已經存在了很長的時間。最早在埃及使用!
(2). 我們很快就能看到,對稱加密算法和非對稱加密算法各有所長和弱點,所以現代密碼系統都在努力做到適當地使用這兩類算法以利用它們的長處,同時又避開它們各自的缺點。
1. 對稱加密算法的加密和解密原理
1.對稱加密算法概念:使用相同密鑰與算法進行加解密運算的算法就叫做對稱加密算法
2.具體加密過程如下圖:
3.對稱加密算法的傳輸過程:
似乎很完美,但是有個大的Bug?
(1). 主管怎么把他加密使用的密鑰交給我呢?
(2). 難道你想說通過互聯網發給我?
(3). 有辦法了我坐飛機到上海來拿?
(4). 有腦子的人都知道這有個BUG?
下面我們得說一下密鑰是如何交換的,
密鑰交換(IKE)
密鑰交換的算法(IKE)過程如下,
主管和我:p 大素數,g 生成數
主管:x 、我:y
主管:g^x%p --> 我
我:g^y%p -->主管
主管: (g^y%p)^x=g^yx%p
我: (g^x%p)^y=g^xy%p
這個結果就是密鑰,在互聯網中傳輸的只有四個數,p g x y,這樣就能保證,密鑰安全!
4.下面我們總結一下對稱加密的優缺點,
優點:
-
-
速度快
-
加密相對安全
-
加密緊湊(不會發生加密前與加密后文件大小相關太大)
-
缺點:
-
-
隨着參與者數量的增加,密鑰數量急劇膨脹((n×(n-1))/2)(還說我們的案例,主管傳輸數據不止發給我一人)
-
因為密鑰數量過多,對密鑰的管理和存儲是一個很大的問題
-
不支持數字簽名和不可否認性(不能認證數據是否完整,不支持身份認證)
-
5.主流的對稱加密算法有:
-
DES(56位)
-
3DES (168位)
-
AES (128位)
AES 192 AES 256 AES 512 -
Blowfish
由上面可以看出,對稱加密能幫我們解決數據加密問題,但對稱加密不能幫我解決以上所有問題,那我們便看看非對稱加密能否幫我們解決問題?
2.非對稱加密算法原理
1.非對稱加密算法的概念
非對稱加密算法的主流協議為RSA,需要每一個參與者產生一對密鑰。共享公鑰到服務器,嚴格保障私鑰的安全性。根據這種操作的特點,也被稱作公共密鑰算法。
密鑰對:公鑰publickey私鑰scritekey,公鑰是來自於私鑰的。
2.具體過程如下
3.加密原理圖如下
4.非對稱加密的傳輸過程
這樣總能得到資料了吧,嘿嘿!看似上述的過程沒有問題,可是現在的黑客十分“下流”,他可能會先截取主管發的資料(雖然他打不開),然后他會用一個其它文件用我們的公鑰加密(因為公鑰是公開的任何人都能拿到),來替換主管發的資料,並發給我!由此可看,我們還是沒能拿到我們的資料,我們需要通過某種方式來認證資料確實是主管發的,而不是黑客發的!
5.下面總結一下非對稱加密的優缺點
優點:
-
-
安全,因為不必發送密鑰給接受者,所以非對稱加密不必擔心密鑰被中途截獲的問題
-
密鑰數目和參與者數目相同,沒有復雜的密鑰分發問題
-
在交換公鑰之前不需要預先建立某種信任關系
-
缺點:
-
-
加密速度很慢
-
密文會變長(案例:若1GB大小文件,加密后會變成1.5GB左右)
-
6.主流的非對稱加密算法有:
-
RSA 加密和簽名
-
DSA 簽名
-
ElGamal
由上面的優缺點分析,我們發現非對稱加密,又不適合加密,那有人會問了,那非對稱加密不什么用都沒有,我想說,不是的。在實際應用中非對稱加密是這樣應用的,還說我們上面說的那個案例,主管理現在要發一重要資料給我,主管先隨機生成一公鑰與私鑰,主管先把公鑰發給我,當然黑客可能也會拿到(畢竟是公開的嘛),然后用私鑰加密數據發給我,我用主管理的公鑰進行解密,若能看到數據那說明發送者是主管(其實就是進行身份認證)!
3.單向加密算法(散列函數)
1.概述:
散列函數也叫做HASH函數,主流的散列算法有MD5與SHA-1。散列函數的主要任務是驗證數據的完整性。通過散列函數計算得到的結果叫做散列值,這個散列值也常常被稱為數據的指紋(Fingerprint)也叫數字簽名。
2.特點:
-
輸入一樣,輸出必須相同
-
雪崩效應:輸入的微小改變,將會引起結果的巨大改變
-
定長輸出:無論原始數據是多大,結果大小都相同的
-
加密過程不可逆,無法根據特征碼還原原來的數據
3. 工作原理:
4.主流的單向加密算法:
-
Md4
-
Md5
-
SHA1
SHA192 SHA256 SHA384 -
CRC-32
4.最最理想方案
具過程如下,
(1). 主管的加密過程
-
主管用散列函數對將要發給我的重要資料進行一次特征碼提取,得到時數字簽名1 (數字簽名也叫特征碼,也叫摘要其實就是說法不一樣,意思相同,大家理解就行)
-
主管再用自己的私鑰加密數字簽名1,此時會得到加密的數字簽名1和重要資料
-
主管隨機生成一個對稱密鑰加密我們的數字簽名1和重要資料,但此時只有主管理能解密,所有我們還得在數字簽名1和重要資料后面加上主管隨機生成的密鑰
-
主管將用我的公鑰加密隨機生成的對稱密鑰,會得到加密的隨機對稱密鑰,那最終的數據會有這些,加密的隨機密鑰、加密的數字簽名1和重要資料
(2). 我的解密過程
-
首先我用自己的私鑰解密加密的隨機對稱密鑰,得到隨機的對稱密鑰
-
用得到的隨機對稱密鑰解密加密的數據簽名1和主要資料
-
用主管的公鑰解密數字簽名1
-
用散列函數對重要資料進行一次特征碼提取,得到數字簽名2
-
比較數字簽名1和數字簽名2是否一樣
具體分析,經過上述的加密解密過程我們可以看出,數據的加密,身份認證,數據完整性驗證,都得到了很好的體現,主管隨機生成的對稱密鑰對數據進行加密,我用主管的公鑰進行對主管的身份認證,通過數字簽名對數據進行完整性驗證,基本達到加密傳輸的要求,我們可以看到整個過程最核心的是依賴主管的公鑰,若黑客替換了主管理的公鑰怎么辦?
5.PKI (Public Key Infrastructure 公共密鑰基礎設施)
PKI(Public Key Infrastructure ) 即"公鑰基礎設施",是一種遵循既定標准的密鑰管理平台,它能夠為所有網絡應用提供加密和數字簽名等密碼服務及所必需的密鑰和證書管理體系,簡單來說,PKI就是利用公鑰理論和技術建立的提供安全服務的基礎設施。完整的PKI系統必須具有權威認證機構(CA)、數字證書庫、密鑰備份及恢復系統、證書作廢系統、應用接口(API)等基本構成部分,構建PKI也將圍繞着這五大系統來着手構建,其中最重要的就是CA認證機構!
CA認證標准是X.509標准,CA具體內容包括,
- 公鑰和證書的有效期
-
證書的合法擁有者
-
證書該如何使用
-
CA信息
-
CA簽名的檢驗碼
-
CRL 證書撤銷列表
總結,CA證書最主要的功能就是認證我們要訪問的服務器公鑰有權威性 (在我們的案例中就是認證主管的公鑰沒有被黑客修改過,嘿嘿)
PKI的兩種具休實現
(1). TSL/SSL 都符合 X.509標准(我們這里主要講SSL(安全的套接字層 Secure Socket Layer))
(2). OpenGPG
6.SSL 詳解
通過TCP/IP協議模型我們可以看出,SSL協議處於應用層與傳輸之間,下面我們主要說明https主要的實現過程,
具體說明:
-
Client 能互聯網下載CA的公鑰,用於驗證Server身份
-
Server 通過加密算法生成一對密鑰,將公鑰發給CA認證機構,做數字證書
-
CA 通過自己的私鑰加密 Server 公鑰並加上自己的數字簽名后,將生成的數字證書發給Server
-
Client 與 Server 通TCP的三次握手建立連接
-
Client 發出HTTP的報文請求,並和Server協商使用哪種算法加密
-
Server 響應報文並將公鑰(CA證書)發送給客戶端
-
Client 能通過CA的公鑰解密CA證書,得到Server的公鑰和數字簽名,Client 通過散列函數算出Server公鑰的數字簽名與得到的數字簽名對比,來驗證Server身份,驗證成功並發送數據請求
-
Server 處理請求,並根據Client請求的資源類型,來訪問相關資源做出響應報文,並記錄日志
-
Client 與 Server 通過TCP的四次揮手斷開連接,通信完成
原文:https://my.oschina.net/liting/blog/372488