1.5、簽名和加密
我們說加密
,是指對某個內容加密,
加密後的內容還可以通過
解密進行還原。 比如我們把一封郵件進行加密,
加密後的內容在網路上進行傳輸,接收者在收到後,通過
解密可以還原郵件的真實內容。
這裡主要解釋一下簽名,
簽名就是在資訊的後面再加上一段內容,可以證明
資訊
沒有被修改過,怎麼樣可以達到這個效果呢?一般是對資訊做乙個hash計算得到乙個hash值,注意,這個過程是
不可逆的,也就是說無法通過hash值得出原來的資訊內容。在把資訊傳送出去時,把這個hash值加密後做為乙個
簽名和資訊一起發出去。 接收方在收到資訊後,會重新計算資訊的hash值,並和資訊所附帶的hash值(解密後)進行對比,如果一致,就說明資訊的內容沒有被修改過,
因為這裡hash計算可以保證不同的內容一定會得到不同的hash值
,所以只要內容一被修改,根據資訊內容計算的hash值就會變化。當然,不懷好意的人也可以修改
資訊
內容的同時也修改hash值,從而讓它們可以相匹配,為了防止這種情況,hash值一般都會加密後(也就是
簽名
)再和資訊
一起傳送,以保證這個hash值不被修改。至於如何讓別人可以解密這個
簽名,這個過程涉及到
數字證書
等概念,我們後面在說到
數字證書
時再詳細說明,這裡您先只需先理解
簽名的這個概念。
保證連線的伺服器是真的伺服器:
「客戶」->「伺服器」:你好
「伺服器」->「客戶」:你好,我是伺服器
「客戶」->「伺服器」:向我證明你就是伺服器
「伺服器」->「客戶」:你好,我是伺服器 [私鑰|rsa]
//
注
意這裡約定一下,{} 表示rsa加密後的內容,[ | ]表示用什麼金鑰和演算法進行加密,後面的示例中都用這種表示方式,例如上面的[私鑰
|rsa]就表示用
私鑰對「你好,我是伺服器」進行加密後的結果。
為了向「客戶」證明自己是「伺服器」, 「伺服器」把乙個字串用自己的
私鑰
加密,把明文
和加密後的
密文一起發給「客戶」。對於這裡的例子來說,就是把字串
「你好,我是伺服器」
和這個字串用私鑰加密後的內容
[私鑰|rsa
]發給客戶。
由於黑客伺服器沒有真服務其的私鑰,所以客戶端用伺服器的公鑰解開時,發現匹配不對。
由於大家都有伺服器公鑰,要防止黑客偽裝客戶端,從而洩漏了客戶端的資訊
「客戶」->「伺服器」:你好
「伺服器」->「客戶」:你好,我是伺服器
「客戶」->「伺服器」:向我證明你就是伺服器
「伺服器」->「客戶」:你好,我是伺服器 [私鑰|rsa]
「客戶」->「伺服器」:[公鑰|rsa]
「伺服器」->「客戶」:[私鑰|rsa]
注意上面的的資訊
[私鑰],
這個是「伺服器」用
私鑰加密後的內容,但是我們之前說了,
公鑰是發布出去的,因此所有的人都知道
公鑰,所以除了「客戶」,其它的人也可以用公鑰對
[私鑰]
進行解密。所以如果「伺服器」用
私鑰加密發給「客戶」,這個資訊是無法保密的,因為只要有
公鑰就可以解密這內容。然而「伺服器」也不能用
公鑰對傳送的內容進行加密,因為「客戶」沒有
私鑰,傳送個「客戶」也解密不了。
這樣問題就又來了,那又如何解決呢?在實際的應用過程,一般是通過引入對稱加密來解決這個問題,看下面的演示:
送乙個對稱加密的演算法和秘鑰給伺服器,用公鑰加秘,確保只有伺服器能解開
「客戶」->「伺服器」:你好
「伺服器」->「客戶」:你好,我是伺服器
「客戶」->「伺服器」:向我證明你就是伺服器
「伺服器」->「客戶」:你好,我是伺服器 [私鑰|rsa]
「客戶」->「伺服器」:[公鑰|rsa]
//藍色字型的部分是對稱加密的演算法和金鑰的具體內容,客戶把它們傳送給伺服器。
「伺服器」->「客戶」:[金鑰|對稱加密演算法]
「客戶」->「伺服器」:[金鑰|對稱加密演算法]
「伺服器」->「客戶」:[金鑰|對稱加密演算法]
在上面的通訊過程中,「客戶」在確認了「伺服器」的身份後,「客戶」自己選擇乙個
對稱加密演算法
和乙個金鑰
,把這個
對稱加密演算法和金鑰
一起用公鑰
加密後傳送給「伺服器」。注意,由於
對稱加密演算法和金鑰
是用公鑰
加密的,就算這個加密後的內容被「黑客」截獲了,由於沒有
私鑰,「黑客」也無從知道
對稱加密演算法和金鑰
的內容。
由於是用
公鑰加密的,只有
私鑰能夠解密,這樣就可以保證只有伺服器可以知道
對稱加密演算法和金鑰
,而其它人不可能知道(這個
對稱加密演算法和金鑰
是「客戶」自己選擇的,所以「客戶」自己當然知道如何解密加密)。這樣「伺服器」和「客戶」就可以用
對稱加密演算法和金鑰
來加密通訊的內容了。
簽名證書VS加密證書
從證書的用途來看,數字證書可以分為 簽名證書 主要用於對使用者資訊進行簽名,以保證資訊的不可否認性。加密證書 主要用於對使用者傳送資訊進行加密,以保證資訊的真實性和完整性。什麼是加密證書和簽名證書?數字證書可分為簽名證書和加密證書。簽名證書主要用於對使用者資訊進行簽名,以保證資訊的有效性和不可否認性...
加密 簽名 證書的區別和使用
在實際開發的過程中,我們經常會用到一些安全加密的手段,通常會用到加密 簽名 證書等等 而當提及他們的作用與區別時候,我們可能並不是十分理解。作者在最近的工作中也遇到了相關的需求,在查閱了相關的資料之後,覺得有必要做一些整理,留作日後查閱之用 也希望後來者讀到這篇文章時能有所收穫。通常,我們認為滿足資...
PKCS 加密,簽名和證書概念簡要介紹
午休時,想起自己以前做的乙個配置檔案簽名的例子.這裡簡單回顧一下幾個基本概念 1 非對稱金鑰指的是一對金鑰 私鑰和公鑰.私鑰和公鑰並無特別的區分,只是對外公布的金鑰稱為公鑰,自己保留的稱為私鑰.這對金鑰中,其中任何乙個用來加密,可以使用另乙個進行唯一解密.且相互之前無法推到得出.2 加密分為兩種情況...