--- title: Digital Signatures tags: crypto lang: zh_tw --- * [筆記總覽](https://hackmd.io/@LJP/rkerFdnqS) [TOC] # Digital Signatures 數位簽章 保密性已經由**非對稱加密演算法**提供 但驗證性(不可否認性)**非對稱加密演算法**尚未提供 簡單來說就是 Public/Private key pair 的確可以加解密 Client 與 Server 中間的通訊的確是有加密的, 中間人無法窺探 但 Client 無法知道 Server 是否的確是 Client 真正要溝通的 Server 也就是說無法驗證 Server 的身分 Signatures 就是為了這個問題而誕生 提供了完整性、驗證性、不可否認性 ## 運作方式 大致上的運作概念長這樣 先定義一些變數, 方便等下解釋 $M$: 欲傳送之 Message $S$: Signature $K_{pri}$: 私鑰 $K_{pub}$: 公鑰 - Server 端 1. 將 $M$ 以 $K_{pri}$ 加密起來變成 $S$ 2. 將 $M, S$ 一起傳送給 Client - Client 端 1. 收到 $M, S$ 後, 以 $K_{pub}$ 解密 $S$ 得到 $M^{'}$ 2. 比較 $M^{'}$ 與 $M$, 一樣就是對的 ## 完整性、驗證性、不可否認性 因為 $K_{pri}$ 只有真正的 Server 擁有 所以 $S$ 只有真正的 Server 能夠產生 如此就能確定這個訊息一定是此 Server 產生的 提供了驗證性、不可否認性 而驗章過程也會用到訊息 訊息若被修改,驗章也會失敗 提供完整性 ## 與非對稱加密演算法比較 **非對稱加密演算法**是用來提供保密性 以**公鑰**加密訊息 只有擁有**私鑰**的人可以看到正確的內容, 其他人無法窺探 提供了保密性 **數位簽章演算法**是用來提供驗證性 只有擁有**私鑰**的人可以算出對應訊息正確的簽章, 其他人沒有私鑰無法生產正確的簽章 所有人只要以**公鑰**解密簽章, 看看解密結果是否跟對應訊息相同來辨認簽章是否有效 提供了驗證性