網路安全之 (非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS及其他)
對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS等這些安全領域內的技術進行一番簡要的介紹,解釋他們之間的關係,同時補充一些周邊話題。
0. 概覽--常用安全技術及其之間的關聯
安全領域的技術眾多,但是歸根結底,他們都是為了保障如下三個方面:
1)認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器
2)加密資料以防止資料中途被竊取
3)維護資料的完整性,確保資料在傳輸過程中不被改變。
在我們正式開始對每一項技術進行介紹之前,讓我們先有一個巨集觀的認識,下圖羅列我們將要涉及的安全技術以及它們之間的關聯。
圖1.安全技術堆疊
1. 從非對稱金鑰加密與數字摘要技術談起。
1.1 什麼是“非對稱金鑰加解密”技術
對於一份資料,通過一種演算法,基於傳入的金鑰(一串由數字或字元組成的字串,也稱“key”),將明文資料轉換成了不可閱讀的密文,這是眾所周知的“加密”,同樣的,密文到達目的地後,需要再以相應的演算法,配合一個金鑰,將密文再解密成明文,這就是“解密”。如果加密和解密使用的是同一個金鑰,那麼這就是“對稱金鑰加解密”(最常見的對稱加密演算法是DES)。如果加密和解密使用的是兩個不同的金鑰,那麼這就是“非對稱金鑰加解密”(最常用的非對稱加密演算法是RSA)。這兩個不同的金鑰一個叫作公開金鑰(publickey)另一個叫私有金鑰(privatekey),公開金鑰對外公開,任何人均可獲取,而私有金鑰則由自己儲存,其實公鑰和私鑰並沒有什麼不同之處,公鑰之所以成為公鑰是因為它會被公開出來,產生任意份拷貝,供任何人獲取,而只有服務主機持有唯一的一份私鑰,從這種分發模式上看,我們不難看出其中的用意,這種分發模式實際上是Web站點多客戶端(瀏覽器)與單一伺服器的網路拓撲所決定的,多客戶端意味著金鑰能被複制和公開獲取,單一伺服器意味著金鑰被嚴格控制,只能由本伺服器持有,這實際上也是後面要提到的之所以能通過資料證書確定信任主機的重要原因之一。如果我們跳出web站點的拓撲環境,其實就沒有什麼公鑰與私鑰之分了,比如,對於那些使用以金鑰為身份認證的SSH主機,往往是為每一個使用者單獨生成一個私鑰分發給他們自己儲存,SSH主機會儲存一份公鑰,公鑰私鑰各有一份,都不會公開傳播。
1.2 什麼是“數字摘要“
這個非常簡單,我們在下載檔案的時候經常會看到有的下載站點也提供下載檔案的“數字摘要“,供下載者驗證下載後的檔案是否完整,或者說是否和伺服器上的檔案”一模一樣“。其實,數字摘要就是採用單項Hash函式將需要加密的明文“摘要”成一串固定長度(128位)的密文,這一串密文又稱為數字指紋,它有固定的長度,而且不同的明文摘要成密文,其結果總是不同的,兒同樣的明文其摘要必定一致。 因此,“數字摘要“叫”數字指紋“可能會更貼切一些。“數字摘要“是https能確保資料完整性和防篡改的根本原因。
2. 數字簽名--水到渠成的技術
讓我們來看看有了“非對稱金鑰加解密”和“數字摘要“兩項技術之後,我們能做些什麼呢?假如傳送方想把一份報文傳送給接收方,在傳送報文前,傳送方用一個雜湊函式從報文文字中生成報文摘要,然後用自己的私人金鑰對這個摘要進行加密,這個加密後的摘要將作為報文的”簽名“和報文一起傳送給接收方,接收方首先用與傳送方一樣的雜湊函式從接收到的原始報文中計算出報文摘要,接著再用傳送方的公用金鑰來對報文附加的數字簽名進行解密,如果這兩個摘要相同、那麼接收方就能確認報文是從傳送方傳送且沒有被遺漏和修改過!這就是結合“非對稱金鑰加解密”和“數字摘要“技術所能做的事情,這也就是人們所說的“數字簽名”技術。在這個過程中,對傳送資料生成摘要並使用私鑰進行加密地過程就是生成”數字簽名“的過程,經過加密的數字摘要,就是人們所說的”數字簽名“!
數字簽名技術就是對“非對稱金鑰加解密”和“數字摘要“兩項技術的應用,它將摘要資訊用傳送者的私鑰加密,與原文一起傳送給接收者。接收者只有用傳送者的公鑰才能解密被加密的摘要資訊,然後用HASH函式對收到的原文產生一個摘要資訊,與解密的摘要資訊對比。如果相同,則說明收到的資訊是完整的,在傳輸過程中沒有被修改,否則說明資訊被修改過,因此數字簽名能夠驗證資訊的完整性。(注意,數字簽名只能驗證資料的完整性,資料本身是否加密不屬於數字簽名的控制範圍)
綜上所述,數字簽名有兩種功效:一是能確定訊息確實是由傳送方簽名併發出來的,因為別人假冒不了傳送方的簽名。二是數字簽名能確定訊息的完整性。
3. 數字證書--值得信賴的公鑰
只從”準確認證傳送方身份“和”確保資料完整性“兩個安全方面來看,數字簽名似乎已經完全做到了,還有漏洞存在的可能麼?有,漏洞不在數字簽名技術本身,而在它所依賴的金鑰,只有金鑰是真實可靠的前提下,使用數字簽名才是安全有效的。考慮這種可能的情況:在上述傳送方向接收方傳送報文的例子中,如果傳送方所持有的公鑰來路有問題或是被替換了,那麼,持有對應私鑰的冒充接受方就有可能接收到傳送方傳送的報文。這裡的問題就是:對於請求方來說,它怎麼能確定它所得到的公鑰一定是從目標主機那裡釋出的,而且沒有被篡改過呢?亦或者請求的目標主機本本身就從事竊取使用者資訊的不正當行為呢?這時候,我們需要有一個權威的值得信賴的第三方機構(一般是由政府稽核並授權的機構)來統一對外發放主機機構的公鑰,只要請求方這種機構獲取公鑰,就避免了上述問題的發生。這種機構被稱為證書權威機構(Certificate Authority, CA),它們所發放的包含主機機構名稱、公鑰在內的檔案就是人們所說的“數字證書”。
數字證書的頒發過程一般為:使用者首先產生自己的金鑰對,並將公共金鑰及部分個人身份資訊傳送給認證中心。認證中心在核實身份後,將執行一些必要的步驟,以確信請求確實由使用者傳送而來,然後,認證中心將發給使用者一個數字證書,該證書內包含使用者的個人資訊和他的公鑰資訊,同時還附有認證中心的簽名信息。使用者就可以使用自己的數字證書進行相關的各種活動。數字證書由獨立的證書發行機構釋出。數字證書各不相同,每種證書可提供不同級別的可信度。可以從證書發行機構獲得您自己的數字證書。(本段摘自百度百科)
關於數字簽名與數字證書的解釋和差異,這裡有一篇非常優秀的文章,介紹得淺顯易懂:
中文譯文:http://www.cnblogs.com/heart-runner/archive/2012/01/30/2332020.html
英文原文:http://www.youdzone.com/signature.html
4. SSL
當所有上面提及的技術介紹完之後,我們需要把它們統一起來應用於實際的網路安全傳輸了,因此,人們制定了一套協議,來定義有關的方方面面,這個協議就是SSL。SSL建立通訊的過程分為兩個階段:握手階段和傳輸階段,關於握手機制,在此不再贅述,網上有非常細緻的介紹,此處僅貼出一張簡單的示意圖:
圖2.SSL握手階段示意圖
值得特別提出的是:SSL協議在握手階段使用的是非對稱加密,在傳輸階段使用的是對稱加密,也就是說在SSL上傳送的資料是使用對稱金鑰加密的!這並不奇怪,因為非對稱加密的速度緩慢,耗費資源。其實當客戶端和主機使用非對稱加密方式建立連線後,客戶端和主機已經決定好了在傳輸過程使用的對稱加密演算法和關鍵的對稱加密金鑰,由於這個過程本身是安全可靠的,也即對稱加密金鑰是不可能被竊取盜用的,因此,保證了在傳輸過程中對資料進行對稱加密也是安全可靠的,因為除了客戶端和主機之外,不可能有第三方竊取並解密出對稱加密金鑰!
4.1 SSL保證了哪些網路安全中的哪些方面?
SSL協議主要確保了以下安全問題:
1)認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器
2)加密資料以防止資料中途被竊取
3)維護資料的完整性,確保資料在傳輸過程中不被改變。
(關於SSL是如何確保資料完整性這一點,目前我還不清楚其具體是如何實現的,因為關於SSL在傳輸過程中是否使用了數字簽名,我目前還沒有找到確切的答案。)
5.HTTPS
如果我們是在一開始來講述HTTPS協議,那將會是一個很大的話題,但是講到這裡的時候,實現上所有關於HTTPS的內容,我們基本上已經講完了,它所有依賴的所有安全技術就是上面我們所提及的,就像大家所知道的那樣,HTTPS是由SSL+HTTP協議構建的可進行加密傳輸、身份認證(確認客戶端連線的目標主機是否是真實正確的主機)的網路協議。https所能實現的安全保證,正是SSL所能解決的安全問題,見上一節。
5.1 HTTPS的劣勢
https的主要缺點就是效能問題。造成https效能低於http的原因有兩個:
1.對資料進行加解密決定了它比http慢。
2.另外一個重要原因的是https禁用了快取。
相關測試資料表明使用HTTPS協議傳輸資料的工作效率只有使用HTTP協議傳輸的十分之一。因此對於一個網站來說,只有那對那些安全要求極高的的資料才會選擇使用https進行傳輸。
6.周邊話題
6.1 網路安全和應用程式的安全控制兩者之間有什麼關係?
網路安全和一個應用程式自身的安全控制之間並沒有太多直接的交集,應該說兩者的關注點不在一起,前者主要解決的是“傳輸過程”中的安全問題,即確認信任主機和防止洩密及篡改。而一個應用程式的安全控制是指在請求到達後,應用程式自身對請求進行的安全檢查,這種“檢查”主要涉及兩個方面:Authentication和Authorization,這也是所有應用程式安全控制方面要完成了兩個重要任務。關於Authentication和Authorization,詳細一點說,Authentication就是:
一.從訪問者提交的身份資訊中,確認當前的訪問者是否是本系統的合法的使用者,也就是對訪問者進行“身份認證”。說得更直白些就是,核實一下當前這個訪問者是不是我的使用者,是就讓他訪問,不是就拒絕。所以說,我們一般的系統登入過程就是一個“Authentication”的過程!
二.對使用者的訪問進行控制,也就是控制使用者可以執行哪些操作,不能執行哪些操作。對於一般的系統來說,也就是根據使用者的角色或許可權,確定使用者能訪問哪些頁面,不能訪問哪些頁面。
相關推薦
網路安全之 (非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS及其他)
對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS等這些安全領域內的技術進行一
【IoT】加密與安全:非對稱加密演算法 RSA 1024 公鑰、祕鑰、明文和密文長度
RSA 1024 是指公鑰及私鑰分別是 1024bit,也就是 1024/8 = 128Bytes。 RSA 演算法金鑰長度的選擇是安全性和程式效能平衡的結果,金鑰長度越長,安全性越好,加密解密所需時間越長。 1、非對稱加密演算法中 1024bit 金鑰的強度相當於對稱加
Java加密解密之非對稱加密
非對稱加密演算法需要兩個金鑰來進行加密和解密,這兩個祕鑰是公開金鑰(public key,簡稱公鑰)和私有金鑰(private key,簡稱私鑰)。使用公鑰加密的,要使用私鑰解密。反之,使用私鑰加密的,要使用公鑰解密。 和對稱加密的區別是: 對稱加密:加密和解密時使用的是
【IoT】加密與安全:非對稱加密演算法 ECC 公私鑰 DER 編碼示例解析
加密演算法的公私鑰一般使用 ASN.1 標準的 DER 編碼格式,本文先介紹 ASN.1( ASN.1 基礎) 相關的基礎知識,最後給出 ECC 公鑰 DER 格式的示例便於更好理解 DER 編碼。 1、ASN.1 簡介 ASN.1( Abstract Syntax No
和安全有關的那些事(非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS及其他)
本文原文連線:http://blog.csdn.net/bluishglc/article/details/7585965 對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對
和安全有關的那些事(非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS)
對於一般的開發人員來說,很少需要對安全領域內的基礎技術進行深入的研究,但是鑑於日常系統開發中遇到的各種安全相關的問題,熟悉和了解這些安全技術的基本原理和使用場景還是非常必要的。本文將對非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS等這些安全領域內的技術進行一番
程式設計師之網路安全系列(四):資料加密之非對稱祕鑰
系列目錄: 前文回顧 假如,明明和麗麗相互不認識,明明想給麗麗寫一封情書,讓隔壁老王送去 如何保證隔壁老王不能看到情書內容?(保密性) 如何保證隔壁老王不修改情書的內容?(完整性) 如何保證隔壁老王不冒充明明?(身份認證) 如何保證明明不能否認情書是自己寫的?(來源的不可否認) 但是上面的問題是明
和安全有關的那些事 非對稱加密 數字摘要 數字簽名 數字證書 SSL HTTPS及其他
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
第10章 網路安全(1)_對稱加密和非對稱加密
1 網路安全概述 1.1 計算機網路面臨的安全威協 (1)截獲:攻擊者從網路上竊聽他人的通訊內容,通常把這類攻擊稱為“截獲”。在被動攻擊中,攻擊者只是觀察和分析某一個協議資料單元(PDU)而不干擾資訊流。 (2)篡改:攻擊者篡改網路上傳遞的報文。這裡包括徹底中斷傳遞的報文,甚至把完
幾個例子理解對稱加密與非對稱加密、公鑰與私鑰、簽名與驗籤、數字證書、HTTPS加密方式
# 原創,轉載請留言聯絡 為什麼會出現這麼多加密啊,公鑰私鑰啊,簽名啊這些東西呢?說到底還是保證雙方通訊的安全性與完整性。例如小明發一封表白郵件給小紅,他總不希望給別人看見吧。而各種各樣的技術就是為了保障通訊的安全。(本文務必從上到下看) 1.對稱加密與非對稱加密 對稱加密: 對稱加密是
對稱加密和非對稱加密、數字簽名、數字證書的區別
之前在面試的時候被問到了HTTPS,SSL這樣的知識點,也沒答上來,這裡也簡單整理一下。 首先還是來解釋一下基礎的東東: 對稱加密: 加密和解密都是用同一個金鑰 非對稱加密: 加密用公開的金鑰,解密用私鑰 (私鑰只有自己知道
對稱加密、非對稱加密、數字簽名
一、密碼學演算法的分類 訊息編碼:Base64 訊息摘要:MD類、SHA類、MAC類 對稱密碼:DES、3DES、AES 非對稱密碼:RSA、DH金鑰交換 數字簽名:RSASignature、DSASignature 密碼學五元組: 明文、密文、加密演
【上】安全HTTPS-全面詳解對稱加密,非對稱加密,數字簽名,數字證書和HTTPS
此文章轉載來源於http://blog.csdn.net/tenfyguo/article/details/40922813點選開啟連結 一,對稱加密 所謂對稱加密,就是它們在編碼時使用的金鑰e和解碼時一樣d(e=d),我們就將其統稱為金鑰k。 對稱加解密的過
【下】安全HTTPS-全面詳解對稱加密,非對稱加密,數字簽名,數字證書和HTTPS
此文章轉載來源於http://blog.csdn.net/tenfyguo/article/details/40958727點選開啟連結 1. HTTPS 1.1. 什麼是HTTPS HTTPS(HypertextTransfer Protocol Secur
HTTPS演化過程(對稱加密、非對稱加密、公鑰、私鑰、數字簽名、數字證書)
主要感謝《碼農翻身》,還有網上的文章,大家可以看看這本書。 1.對稱資料加密 就像上圖所示, 這加密和解密演算法是公開的,那個金鑰是保密的, 只有兩人才知道, 這樣生成的加密訊息(密文) 別人就無法得知了。這叫對稱加密演算法,因為加密和解密用
理解對稱加密、非對稱加密、數字簽名、數字證書
對稱加密(資料保密性)演算法:DES 、 3DES 、 RC5、AES特點:加密和解密使用相同的金鑰 加密原文非對稱加密(資料保密性)演算法:DH、RSA特點:需要兩個祕鑰公鑰和私鑰 加密速度慢,只可用其加密小資料(如對稱金鑰、訊息摘要) 加密後
非對稱加密之公鑰、私鑰
非對稱加密需要公鑰和私鑰。 公鑰和私鑰可以互相解密,並且加密過程是不可逆的,即經公鑰加密後的檔案只有對應私鑰可解開,經私鑰加密的祕鑰也只有對應的公鑰才可以解開。 用私鑰加密可以證明檔案是出於原作者的由於只有擁有私鑰的簽名者能通過“解密”摘要生成簽名,因此具有安全和不可抵賴性
軟考之數字簽名 對稱加密 非對稱加密
/*如有不對 概不負責*/ 首先 對稱加密:是指加密解密使用的金鑰都是一樣的,對稱加密也稱為 私鑰密碼體制。大概在實際生活中就是 你有一個訊息要發給一個人類,你用對稱加密後發給他,然後你們事先肯定得約定好這個金鑰是什麼,然後他就用這個金鑰解開。這個金鑰肯定不能公開,所以
非對稱加密、數字摘要、數字簽名、數字證書、SSL、HTTPS及其他
一、 對稱加密和非對稱加密 對於一份資料,通過一種演算法,基於傳入的金鑰(一串由數字或字元組成的字串,也稱“key”),將明文資料轉換成了不可閱讀的密文,這是眾所周知的“加密”,同樣的,密文到達目的地後,需要再以相應的演算法,配合一個金鑰,將密文再解密
摘要演算法、對稱加密、非對稱加密、數字簽名、數字證書淺析
年前整理的關於摘要演算法、對稱加密、非對稱加密、數字簽名、數字證書的內容,當時是以 ppt 的形式整理的,不方便複製到 csdn部落格中,因此將其轉換為 png 圖片。文章僅代表個人觀點,如有不正之處,