http學習 數字簽名

2022-09-20 19:30:11 字數 2278 閱讀 6290

對稱加密和非對稱加密只能解決通訊過程中的對話安全問題,但是僅有機密性,是不夠的。

黑客雖然拿不到會話金鑰,無法破解密文,但可以通過竊聽收集到足夠多的密文,再嘗試著修改、重組後發給**。因為沒有完整性保證,伺服器只能「照單全收」,然後他就可以通過伺服器的響應獲取進一步的線索,最終就會破解出明文。

ps:這裡涉及到重放和篡改的問題,黑客是解不開秘文,但是可以重**送,需要時間戳和隨機數再合起來做乙個不可逆的簽名,服務端收到重複的就丟棄。這就是nonce(number once的縮寫,在密碼學中nonce是乙個只被使用一次的任意或非重複的隨機數值)。

所以,在機密性的基礎上還必須加上完整性、身份認證等特性,才能實現真正的安全。

實現完整性的手段主要是摘要演算法(digest algorithm),也就是常說的雜湊函式、雜湊函式(hash function)。

可以把摘要演算法理解成特殊的「單向」加密演算法,它只有演算法,沒有金鑰,加密後的資料無法解密,不能從摘要逆推出原文。

即使保證了訊息不被破解和篡改,但是我們無法保證通訊的端點。也就是說,你不能保證好你聊天的『小明』就是你想聊天的『小明』。

因此需要證明自己的身份

非對稱加密裡的「私鑰」,使用私鑰再加上摘要演算法,就能夠實現「數字簽名」,同時實現「身份認證」和「不可否認」。

數字簽名的原理其實很簡單,就是把公鑰私鑰的用法反過來,之前是公鑰加密、私鑰解密,現在是私鑰加密、公鑰解密。

但又因為非對稱加密效率太低,所以私鑰只加密原文的摘要,這樣運算量就小的多,而且得到的數字簽名也很小,方便保管和傳輸。

簽名和公鑰一樣完全公開,任何人都可以獲取。但這個簽名只有用私鑰對應的公鑰才能解開,拿到摘要後,再比對原文驗證完整性,就可以像簽署檔案一樣證明訊息確實是你發的。

通過混合加密演算法,解決了資訊傳輸中的訊息的機密性;

通過摘要演算法,保證了資訊的完整性

通過數字簽名,解決了身份認證和不可否認性。

但是,還有乙個「公鑰的信任」問題。因為誰都可以發布公鑰,我們還缺少防止黑客偽造公鑰的手段,也就是說,怎麼來判斷這個公鑰就是你或者某寶的公鑰呢?

我們可以用類似金鑰交換的方法來解決公鑰認證問題,用別的私鑰來給公鑰簽名,顯然,這又會陷入「無窮遞迴」。

但這次實在是「沒招」了,要終結這個「死迴圈」,就必須引入「外力」,找乙個公認的可信第三方,讓它作為「信任的起點,遞迴的終點」,構建起公鑰的信任鏈。

這個「第三方」就是我們常說的ca(certificate authority,證書認證機構)。它就像網路世界裡的公安局、教育部、公證中心,具有極高的可信度,由它來給各個公鑰簽名,用自身的信譽來保證公鑰無法偽造,是可信的。

ca 對公鑰的簽名認證也是有格式的,不是簡單地把公鑰繫結在持有者身份上就完事了,還要包含序列號、用途、頒發者、有效時間等等,把這些打成乙個包再簽名,完整地證明公鑰關聯的各種資訊,形成「數字證書」(certificate)。

乙個新的問題又出現了,ca怎麼證明自己呢?

這還是信任鏈的問題。小一點的 ca 可以讓大 ca 簽名認證,但鏈條的最後,也就是 root ca,就只能自己證明自己了,這個就叫「自簽名證書」(self-signed certificate)或者「根證書」(root certificate)。你必須相信,否則整個證書信任鏈就走不下去了。

證書體系(pki,public key infrastructure)雖然是目前整個網路世界的安全基礎設施,但絕對的安全是不存在的,它也有弱點,還是關鍵的「信任」二字。

如果 ca 失誤或者被欺騙,簽發了錯誤的證書,雖然證書是真的,可它代表的**卻是假的。

還有一種更危險的情況,ca 被黑客攻陷,或者 ca 有惡意,因為它(即根證書)是信任的源頭,整個信任鏈裡的所有證書也就都不可信了。這兩種事情並不是「聳人聽聞」,都曾經實際出現過。

所以,需要再給證書體系打上一些補丁。

對於第二種,因為涉及的證書太多,就只能作業系統或者瀏覽器從根上「下狠手」了,撤銷對 ca 的信任,列入「黑名單」,這樣它頒發的所有證書就都會被認為是不安全的。

1、為什麼公鑰能夠建立信任鏈,用對稱加密演算法裡的對稱金鑰行不行呢?

答:非加密演算法需要公開公鑰從而讓客戶端能解密。如果用對稱加密,加密秘鑰公開,就達不到加密效果了

2、假設有乙個**的證書體系(root ca=> 一級 ca=> 二級 ca),你能詳細解釋一下證書信任鏈的驗證過程嗎?

答:客戶端發現當前**的證書是二級ca,在可信任簽發機構中找不到,就會去拿二級ca的數字證書的簽發機構去做檢查,發現它是一級ca,也不在可信任簽發機構中,再找一級ca的數字證書的簽發機構,發現是受信任的root ca,至此完成驗證。如果到最後一層ca都不受信任,就會警告使用者

數字簽名簽名概述

數字簽名的技術流程描述 1 傳送者使用摘要演算法對傳送資訊產生資訊摘要 2 傳送者使用自己的私鑰對資訊摘要進行簽名 3 傳送者將資訊本身和已簽名的摘要一起傳送出去 4 接收者使用相同的摘要演算法對資訊本身計算資訊摘要 5 接收者使用傳送者的公鑰對簽名的摘要就行驗籤,獲得資訊傳送者的資訊摘要 6 接收...

數字信封 數字簽名

2019 08 06 19 51 51 數字簽名是用來表明資料傳送者身份的,有了簽名就說明這個資料是傳送都發出來的。為什麼?因為可以用你的公鑰開啟你的簽名資訊,獲取明文的hash值。數字信封,被公鑰加密後的對稱密碼被稱為數字信封,用於對稱金鑰的交換。數字證書,用來證明資料傳送者的身份的。為什麼能證明...

數字簽名技術

在當今高速發展的網路資訊化時代,人們越來越重視資訊的安全性問題,電子資訊內容的安全已經成為倍受關注的問題,數字簽名技術作為資訊保安領域的一項重要技術,應用日益廣泛。論述了數字簽名的作用及實現方法技術,並介紹了當前數字簽名的幾種新技術,展望了這一領域的發展前景。1數字簽名的作用 該技術在具體工作時,首...