加密和簽名證書

2021-06-17 23:36:28 字數 3203 閱讀 9285

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 加密分為兩種情況...