數字簽名
#簡介
假設Alice需要向Bob借100萬元,不過,Alice和Bob離得很遠,無法直接見面。通過銀行匯款,Alice可以立刻從Bob那裡收到錢,但是Alice的借條應該怎樣傳送給Bob呢?可以用掛號寄過去,不過那樣需要花上一段時間,能不能用電子郵件來傳送借條呢?比如:
“Bob,我向你借款100萬元。-----Alice"
顯然,這樣的郵件無法代替借條,Bob看到這封郵件也不會輕易相信,因為電子郵件是很容易被偽造的。Alice寫的郵件可能被篡改,也有可能是有人偽裝成Alice傳送這封郵件,或者Alice也可以事後以”我不知道這張借條“為理由進行否認。
數字簽名就是用來解決這樣的問題,即識別篡改,偽裝和防止否認。在數字簽名總有兩種行為:
- 生成訊息簽名行為
- 驗證訊息簽名行為
生成訊息簽名是由訊息的傳送者Alice來完成的,也稱為“對訊息簽名”,生成簽名就是根據訊息內容計算數字簽名的值,這個行為意味著“我認可該訊息的內容”。
驗證簽名這一行為是由訊息的接收者Bob來完成的,但也可以由需要驗證訊息的第三方來完成,驗證簽名就是檢查該訊息的簽名是否真的屬於Alice,驗證的結果可以是成功或者失敗,成功以為著這個簽名是屬於Alice的,失敗則意味著這個簽名不是屬於Alice的。
數字簽名對簽名金鑰和驗證金鑰進行了區分,使用驗證金鑰是無法完成簽名的,簽名金鑰只能由簽名的人持有,而驗證金鑰則是任何需要驗證簽名的人都可以持有。實際上,數字簽名和公鑰密碼有著非常緊密的聯絡,數字簽名就是通過將公鑰密碼“反過來用”而實現的。
#公鑰密碼和數字簽名
#數字簽名例項
##直接對訊息簽名(DSA)
- Alice用自己的私鑰對詳細簽名
用私鑰加密得到的密文就是Alice對這條訊息的簽名,由於只有Alice才持有自己的私鑰,因此除了Alice以外,其他人是無法生成相同的簽名的。
- Alice將訊息和簽名傳送給Bob
- Bob用Alice的公鑰對收到的簽名進行解密
如果收到的簽名確實是用Alice的私鑰進行加密得到的密文(簽名),那麼用Alice的公鑰應該能正確的解密。如果接收到的簽名不是用Alice的私鑰進行加密得到的密文,那麼就無法用Alice的公鑰正確的解密
- Bob將簽名解密後得到的訊息與Alice直接傳送的訊息進行對比
如果兩者一致,則簽名驗證成功,如果兩者不一致,則簽名驗證失敗。
##對訊息雜湊值簽名(RSA,橢圓加密)
上面我們使用直接對訊息簽名的辦法,但這種方法需要對整個訊息進行加密,非常耗時,這是因為公鑰密碼演算法非常慢。所以我們可以求出訊息的雜湊值再對雜湊值加密。無論訊息有多長,雜湊值的長度是固定的,因此對雜湊值加密要快很多。
-
Alice用單向雜湊函式計算訊息的雜湊值。
-
Alice用自己的私鑰對雜湊值進行加密,用私鑰加密雜湊值所得到的密文就是Alice對這條雜湊值的簽名,由於只有Alice才持有自己的私鑰,因此除了Alice意外,其他人是無法生成相同的簽名的。
-
Alice將訊息和簽名傳送給Bob
-
Bob用Alice的公鑰對收到的簽名進行解密。如果收到的簽名確實是用Alice的私鑰進行加密而得到的密文,那麼用Alice的公鑰應該能夠正確解密,解密的結果應該等於訊息的雜湊值。如果收到的簽名不是用Alice的私鑰經i選哪個加密而得到的密文,那麼就無法用Alice的公鑰正確解密。
-
Bob將簽名解密後得到的雜湊值與Alice直接傳送的訊息的雜湊值進行對比。如果兩者一致,則簽名成功,否則簽名失敗。
學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928
清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980
相關文章
- 數字簽名原理
- 大話數字簽名
- Elgamal數字簽名原理GAM
- 加密與數字簽名加密
- 數字簽名(java) (轉)Java
- 數字簽名是什麼?
- applet數字簽名APP
- 給軟體數字簽名
- win10 如何禁用數字簽名 win10 關閉數字簽名方法Win10
- win10 禁止驗證數字簽名方法 win10 如何禁用數字簽名Win10
- 加減密和數字簽名
- 如何關閉win10的數字簽名_win10禁用數字簽名的方法Win10
- ActiveX控制元件數字簽名實踐(免費簽名)控制元件
- Java 操作PPT數字簽名(一):新增、檢測、刪除簽名Java
- Java 新增數字簽名到Excel以及檢測、刪除簽名JavaExcel
- win10如何永久禁用數字簽名_win10怎麼關閉禁用數字簽名Win10
- Android 安全加密:數字簽名和數字證書Android加密
- Android安全加密:數字簽名和數字證書Android加密
- Java 新增、驗證PDF 數字簽名Java
- 數字簽名的原理和應用
- 支付寶介面的數字簽名
- windows10怎麼關閉數字簽名 win10永久關閉數字簽名的方法WindowsWin10
- 深入理解加密、解密、數字簽名和數字證書加密解密
- exe軟體如何進行數字簽名
- 效能:驗證數字簽名導致卡死
- 用C++Builder建立數字簽名 (轉)C++UI
- Window 7 驅動數字簽名解決方案
- Java 獲取PDF數字簽名證照資訊Java
- 詳解數字簽名的含義及作用
- java使用RSA加密方式,實現數字簽名Java加密
- 公鑰加密、數字簽名、訊息認證加密
- 取消WindowsXP下驅動程式數字簽名(轉)Windows
- RSA加密解密及數字簽名Java實現加密解密Java
- 證書的數字簽名和認證 (轉)
- 使用者下載已簽名的軟體後 如何知道數字簽名是否可信
- 什麼是數字簽名?什麼是數字信封?他們如何使用
- 文件數字簽名工作原理是什麼?文件簽名有什麼好處?哪些行業使用文件簽名證書?行業
- 驅動沒有數字簽名的解決方案