1.加密概念算法
加密要解決三個問題:
安全
機密性(不可破解)服務器
完整性(不可篡改)網絡
肯定性(不可冒充)
ide
1.1.加密技術函數
網絡傳輸給生活和工做帶來極大的方便,同時這個方便又不能讓咱們不得不防止別有企圖者的網站
別有用心,因而加密成爲關鍵。這裏暫不談加密算法的問題,就聊聊一個實現的過程原理。
加密
加密技術簡介:
spa
對稱加密 ------ 加密速度快,能更好的迎合實時溝通,缺點是密鑰的傳輸須要祕密完3d
成。因而生成了一個遞歸困局。
非對稱加密 ------ 加密速度相對較慢,優點在於甲方須要接受密文時,乙方只須要發佈公鑰
公開傳輸。
單向加密 ------ 加密過程不可逆,密文具備惟一性,並且密文格式固定。能夠用來惟一認證被加密對象。
舉例子來講明:
場景介紹,某機構在西安跟芝加哥有兩個獨立運營的機構。由於業務緣由,西安方面須要
跟芝加哥那邊溝通一些機密事宜。
這是,芝加哥那邊可使用非對稱加密技術把公鑰發送給西安方面,因而西安方面使用公
鑰對「對稱加密」的密鑰進行加密發送。這樣雙方可使用對稱加密的方式進行比較安全的溝
通。
1.2.數據完整性
單向加密就能夠很好地保證傳輸文件的完整性。
1.3.加密模型
通信方式
通信雙方A B。私鑰S,公鑰G。
一、雙方使用對稱加密相互通信;
騎個「自行車」把密鑰給送過去,完成密鑰交換。(Diffie-Hellman密鑰交換)
二、雙方使用非對稱加密相互通信;
這個過程叫作公共密鑰交換,而後各自發送信息時使用對方公鑰加密後傳送;接受的信息使用自
己的私鑰解密。
密鑰交換
Diffie-Hellman密鑰交換
經過該方法,協議雙方在必定程度上能夠獲取一個安全的對稱密鑰。
經過非對稱加密交換一把對稱加密的密鑰
雙方使用任意一方的公鑰交換一把私鑰,而後使用對稱私鑰加密交換信息;繼而能夠更換對稱密鑰,達到與多個通信對象的安全傳輸。
1.4.身份惟一性
通信的雙方,使用非對稱加密的私鑰加密文件,傳輸給對方。對方使用其公鑰能夠解密時,那麼表明其身份是能夠惟一肯定的。
用公鑰解密,就沒法保證數據的機密性。再加上,其加密效率問題(速度太慢),非對稱加密就用來作身份驗證。
1.5.認證機制
認證的必要性
* 請思考一個問題,Diffie-Hellman密鑰交換時,怎麼肯定對方就是本身要通信的真實對象呢。
就用非對稱加密的特性完成身份驗證。從而確保,通信方的身份是惟1、肯定的。
* 請思考一個問題,若是我是那個別有用心之人,我該作什麼呢?
那麼就是冒充甲方,由於人人都能取得非對稱加密的公鑰,我不就能夠冒充了,……
一、C冒充A,給B發佈本身的公鑰
二、C一樣冒充任意一方,與之交換對稱密鑰;同時竊取雙方的加密信息。
「身份驗證」……
通信雙方,須要互相驗證對方的身份。
認證過程
基於公鑰冒充的問題,那就請第三方機構認證公鑰。經過提交本身的公鑰交給認證機構,通過認證後,肯定下私鑰擁有者的合法身份信息。
這個時候,通信雙方就能互相信任對方身份的真實存在。拿着本身獲取對方的證書,去第三方機構驗證公鑰的合法性。相互驗證身份結束。
身份驗證時,經過了第三方的認證,能夠解決身份驗證問題是個好事情。問題是該項服務是個付費項目。客戶端訪問服務器,網站能夠花費一筆費用去驗證自身的身份,客戶呢,費用巨大……。在網絡交易時,站點提供有償服務時,怎麼肯定能在提供服務後,獲取客戶端用戶的報酬呢?
1.6.安全通道
經過一個可信任的第三方認證機構,實現身份認證。認證後也能夠經過加密手段實現通信的機密性,使用單向加密把傳輸的信息再次確認,排除掉由於可能存在的傳輸質量等問題引發的數據缺失、惡意修改。假如存在惡意修改,雖然修改者不必定能解密得到數據信息,可是卻能起到必定破壞做用,即便破環在數據完整性檢測下會丟棄。但是不堪其擾也毫不是一件該忍受的事情。
加密方法:
對稱加密,加密和解密使用同一個密鑰。
公鑰加密,一對密鑰(私鑰、公鑰)。
單向加密、散列加密,計算數據特徵碼。
單向加密的特徵: ①雪崩效應 ②定長輸出 MD5: 128位 SHA1: 160位 |
2.加密算法
Hash算法
又稱單向散列算法,是一個將任意長度的消息通過各類處理返回必定長度的消息摘要算法;
Hash算法是不可逆的。因爲不可逆特色,不能用於加密;只能用於數字簽名、數據的完成性校驗。
對稱算法
又稱傳統算法(或是單密鑰算法),就是加密密鑰能從解密密鑰中推算出來;反之也成立,
其實也就是加密密鑰和解密密鑰是同一個密鑰。
公開密鑰算法
公開密鑰算法是非對稱的,而且它使用兩個密鑰;基於數學函數,而非基於替換和置換。
Hash算法
CRC32 循環冗餘校驗
MD5 消息摘要算法
SHA 安全散列算法
對稱算法
DES 數據加密標準(分組算法)
(雙重DES、三重DES)
AES 高級加密標準
(DES的替代算法)
公開密鑰算法
RSA
EIGamal
RSA:是一個比較完善的公開密鑰算法,既能用於加密,也能用於數字簽名。
RSA的安全性基於整數因子分解問題的困難性,公鑰和私鑰是一對大素書的函數。
從一個公開密鑰和密文中恢復出明文的難度等價於分解兩個大素數之積。
公鑰:加密 認證 (做用)
私鑰:解密 簽名
3.SSL/TLS
SSL 安全套接字層/在TCP和使用TCP的應用之間提供安全服務
TLS 傳輸層安全協議
DSA 數字簽名算法
SSL的主要目標是爲兩個通訊主體提供保密、可靠的信道。創建在可靠的傳輸層之上,與應用層
的具體協議無關;加密算法、通訊密鑰的協商以及服務器的認證都是由SSL自動地完成的。在 SSL
的鏈接創建以後,應用層不須要進行任何干預,通訊中的全部數據都會被SSL自動加密。
什麼是SSL?
是一種用於確保應用程序間數據傳輸的機密性和可靠的internet傳輸層協議;
使各應用程序能夠經過公鑰和私鑰相互驗證身份;
使用密鑰加密和數字簽名爲應用程序間交換的數字加密;
多是單向的,即服務器向客戶端驗證身份;也多是雙向的……
在初次創建鏈接時須要握手。
4.數字簽名
基於安全的考慮,須要對信息進行加密。因而出現了加密算法。因爲信息是須要傳遞的,爲了可以解密,須要交換密鑰。因而,又出現了非對稱加密,用來交換對稱加密的密鑰。到了這裏,僅僅解決了「機密性」,仍然存在風險可能會面對「完整性」(被篡改)。終於,解決「完整性」出現了單向加密技術,如今只須要發送單向加密的特徵碼既能夠驗證信息的完整性。信息是安全的,完整的,就剩下最後一個問題,就是「肯定性」。最後,爲了實現信息傳遞「肯定性」出現了數字簽名技術。到此爲止,加密模型創建完畢,信息是安全的,具備了機密、完整、肯定的特性。
數字簽名,用私鑰把信息的特徵碼進行加密後獲得就是簽名。
這麼個加密模型已經很完善了,是否就必定是安全的?答案是否認的,中間人***。***者發送本身取得的兩個公鑰分別發送給信息的雙方……
因此,數字簽名實現了肯定的身份,這個身份還須要進一步獲得公信機構的確認。你們都信任一個公信機構,該機構給數字簽名作公正。這麼一來,信息發送的雙方就真實的確認了雙方的身份。
5.CA證書
加密模型中公信機構,又叫「證書頒發機構」,該機構頒發的證書用來完成身份驗證。
SSL證書
證書包括:
組織的名稱和ip地址;
組織的公鑰;
證書頒發機構名稱,及機構的數字簽名。
用途:
加密全部使用SSL協議傳輸的數據。
SSL證書鏈 (一些列的證書)
每一個證書都包含該證書的簽發者的名稱,即鏈中下一個證書的請求者名稱;
每一個證書都使用其頒發者的私鑰來簽名,該簽名可使用證書鏈中下一個證書頒發者的公鑰
進行驗證;
根證書頒發機構的證書是自簽名證書。
* 首先須要生成一個主證書(頂級CA),而後使用這個主證書來簽發服務器證書和客戶端證
書。
CA(證書頒佈機構)
受信任的第三方;
對被頒發者的真實性負責;
向申請機構簽發 數字證書(公鑰);該證書使用CA的私鑰簽署;
CA的公鑰普遍發佈。
SSL握手
SSL握手順序
●肯定加密算法、密鑰交換方式
●創建、互換會話密鑰
●驗證服務端證書
●驗證客戶端證書