數(shù)字簽名 與 數(shù)字證書

1、數(shù)字簽名

數(shù)字簽名的核心目標是驗證信息的完整性(Integrity)、認證發(fā)送方身份(Authentication)和不可否認性(Non-Repudiation)。它并不為了加密信息內(nèi)容本身。

其基本原理是:發(fā)送方用只有自己才有的私鑰對信息的“摘要”進行加密,生成簽名;接收方用發(fā)送方公開的公鑰解密這個簽名,得到摘要A,再對接收到的信息計算得出摘要B,最后對比摘要A和摘要B是否一致。

整個流程可以分為兩大步:發(fā)送方簽名接收方驗簽。


第一步:發(fā)送方簽名流程

假設發(fā)送方是 Alice,要發(fā)送一份重要合同給 Bob,并需要簽名。

  1. 原始信息(Message)

    • Alice 擁有她想要發(fā)送的原始信息 M(例如:"我同意以100萬元購買此設備。Alice")。
  2. 哈希運算(Hash Function)

    • Alice 的電腦使用一個公開的密碼學哈希函數(shù)(如 SHA-256)對原始信息 M 進行計算。
    • 生成一個固定長度、唯一的“信息摘要”(Digest),也稱為哈希值(Hash Value)。
    • 特點:任何對信息 M 的微小改動,都會產(chǎn)生一個完全不同的摘要。這是一個不可逆的過程。
  3. 簽名生成(Signing with Private Key)

    • Alice 的電腦使用她自己的私鑰(Private Key) 對這個信息摘要進行加密。
    • 加密后的摘要,就是所謂的數(shù)字簽名(Digital Signature)
    • 關(guān)鍵點:私鑰是絕對保密且只有 Alice 自己擁有的。因此,能用Alice公鑰解開的簽名,必定是由Alice的私鑰生成的。
  4. 發(fā)送(Transmission)

    • Alice 將 原始信息 M 和 數(shù)字簽名 一起發(fā)送給 Bob。
    • 注意:原始信息 M 本身可以是明文的,也可以是加密的。數(shù)字簽名不關(guān)心信息內(nèi)容是否保密,只關(guān)心身份和完整性。如果需要保密,則需要再用Bob的公鑰對“信息+簽名”整體進行加密,這是另一個流程(數(shù)字信封)。

第二步:接收方驗簽流程

Bob 收到了來自 Alice 的信息和簽名。

  1. 接收信息

    • Bob 收到了兩份東西:原始信息 M' 和 數(shù)字簽名。(這里用 M' 表示Bob收到的信息,因為它可能在傳輸中被篡改過)
  2. 解密簽名(Decrypting the Signature with Public Key)

    • Bob 使用 Alice 公鑰(Public Key) 解密收到的數(shù)字簽名。
    • 如果解密成功,就能得到一個摘要A。
    • 意義:能成功用Alice的公鑰解密,證明這個簽名最初一定是用Alice的私鑰加密的。這就完成了身份認證。
  3. 計算信息摘要(Recomputing the Hash)

    • 同時,Bob 使用與 Alice 相同的哈希函數(shù)(如 SHA-256),對他收到的原始信息 M' 進行計算,生成一個新的摘要B。
  4. 對比驗證(Comparison)

    • Bob 將第 2 步解密得到的 摘要A 與第 3 步計算出的 摘要B 進行比對。
    • 若相等,說明信息傳輸過程沒有篡改,是由Alice發(fā)出,Alice 事后無法否。
    • 若不想等,說明信息在傳輸中被篡改,或者這個簽名根本不是用Alice的私鑰生成的。

流程總結(jié)圖
[發(fā)送方:Alice]
原始信息 M --> [哈希函數(shù)] --> 信息摘要 --> [用Alice的私鑰加密] --> 數(shù)字簽名
                                                              |
                                                              ↓
                                                將 [M] 和 [簽名] 一起發(fā)送

[接收方:Bob]
收到 [M'] 和 [簽名] --> 兩條路徑:
       |
       |--> [用Alice的公鑰解密簽名] --> 得到摘要A
       |
       |--> [對M'進行哈希計算] --> 得到摘要B
                               |
                               ↓
                         [對比摘要A和摘要B] --> 相同則驗證成功,不同則失敗

簡單來說:

  • 數(shù)字簽名是一種技術(shù),用于驗證數(shù)據(jù)的完整性和簽名者的身份。
  • 數(shù)字證書是一種數(shù)字文件,它像一本護照,用來安全地綁定一個公鑰和其所有者的身份,而這個綁定關(guān)系本身又由一個受信任的第三方(CA)進行了數(shù)字簽名。

2、數(shù)字證書

數(shù)字證書,也稱為公鑰證書或身份證書,其核心作用是解決公鑰的信任問題。

回想一下數(shù)字簽名流程:接收方(Bob)需要用發(fā)送方(Alice)的公鑰來驗證簽名。但這里存在一個關(guān)鍵問題:Bob 如何確信他拿到的公鑰真的屬于 Alice,而不是一個冒充者提供的?

數(shù)字證書就是為了回答這個問題而誕生的。

數(shù)字證書可以理解為一本由官方認證機構(gòu)頒發(fā)的“數(shù)字護照”,它包含以下關(guān)鍵信息:

  1. 證書所有者的身份信息:如姓名、組織、電子郵件地址等。
  2. 證書所有者的公鑰:這是證書最核心的內(nèi)容之一。
  3. 證書頒發(fā)者(CA)的信息:是哪個機構(gòu)頒發(fā)的這個證書。
  4. 有效期:證書的生效日期和過期日期。
  5. 數(shù)字簽名:由證書頒發(fā)機構(gòu)(CA)對上述所有信息進行哈希并用CA的私鑰加密后生成的簽名。這是整個證書可信的根源。

證書頒發(fā)機構(gòu)(CA) 是一個受信任的第三方組織,它的核心職責就是核實實體(個人、網(wǎng)站、公司)的身份,然后為其簽發(fā)數(shù)字證書。操作系統(tǒng)和瀏覽器都預裝了大量受信任的根CA的證書(包含它們的公鑰)。


3、數(shù)字簽名 與 數(shù)字證書 的關(guān)聯(lián)

兩者的關(guān)系可以概括為:數(shù)字證書利用數(shù)字簽名技術(shù)來建立其自身的可信度,從而為數(shù)字簽名流程中的公鑰分發(fā)提供信任基礎。

這是一個層層嵌套的信任鏈:

  1. CA使用數(shù)字簽名來簽署證書

    • CA在頒發(fā)證書給Alice時,會將Alice的身份信息和她的公鑰等數(shù)據(jù)打包,并計算哈希值。
    • CA然后用它自己的私鑰對這個哈希值進行加密,生成一個數(shù)字簽名,并將這個簽名附加到證書文件中。
    • 現(xiàn)在,Alice擁有了一個包含她公鑰和CA簽名的數(shù)字證書。
  2. 用戶使用數(shù)字簽名來驗證證書

    • 當Bob收到Alice的數(shù)字證書時,他需要驗證這個證書是否可信。
    • Bob的電腦(瀏覽器/操作系統(tǒng))里預存了受信任的根CA的公鑰。
    • Bob的電腦會:
      • 用CA的公鑰去解密證書中的CA簽名,得到摘要A
      • 對證書中Alice的身份信息、公鑰等數(shù)據(jù)重新計算哈希,得到摘要B。
      • 對比摘要A和摘要B。如果匹配,則證明:
        • 這個證書的內(nèi)容是完整的,未被篡改。
        • 這個證書確實是由那個受信任的CA頒發(fā)的。
      • 至此,Bob就可以信任這本“數(shù)字護照”,進而信任里面包含的Alice的公鑰。
  3. 使用可信的公鑰進行數(shù)字簽名驗證

    • 現(xiàn)在Bob確信了證書里的公鑰屬于Alice,他就可以用這個公鑰去驗證Alice發(fā)送來的信息的數(shù)字簽名了。

總結(jié)與類比

特性 數(shù)字簽名 數(shù)字證書
是什么 一種技術(shù)流程 一種數(shù)字文件憑證
目的 驗證數(shù)據(jù)/信息的完整性、身份和不可否認性 驗證公鑰所屬者的真實身份,建立公鑰信任
核心操作 發(fā)送方私鑰加密信息的摘要 CA私鑰加密證書內(nèi)容的摘要
驗證方式 發(fā)送方公鑰解密簽名并對比摘要 CA公鑰解密簽名并對比摘要
依賴關(guān)系 依賴數(shù)字證書來安全地獲取可信的公鑰 依賴數(shù)字簽名技術(shù)來保證自身內(nèi)容的可信度

一個簡單的比喻:

  • 數(shù)字簽名 就像一個人在合同上的親筆簽名
  • 數(shù)字證書 就像這個人的護照,由官方機構(gòu)(CA)簽發(fā)。護照上包含了他的照片(身份)、簽名樣本(公鑰),并且護照本身有官方的防偽印章(CA的數(shù)字簽名)。
  • 驗證過程:你首先檢查他的護照(數(shù)字證書)是不是真的(用官方印章的樣本來核對防偽印章),確保證件本身是真的。確認后,你相信護照里的信息(包括簽名樣本)是真實的。最后,你拿出護照里的簽名樣本(公鑰)去核對合同上的親筆簽名(數(shù)字簽名)是否一致。

所以,數(shù)字證書是數(shù)字簽名能夠大規(guī)模安全應用的基礎設施。沒有數(shù)字證書,公鑰分發(fā)環(huán)節(jié)就存在巨大風險,數(shù)字簽名的身份認證功能也就無從談起。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容