公鑰密碼學問題 - 是私鑰還是公鑰用於簽名?哪個密鑰用於簽名和哪個用於加密之間的混淆
我對密碼學和區塊鏈比較陌生,正在學習公鑰密碼學的工作原理,以及它在比特幣環境中的應用。
我讀了兩篇不同的文章,第一篇很有道理,但第二篇讓我很困惑。
從第 1 篇文章(<https://www.blockchain-council.org/blockchain/how-does-blockchain-use-public-key-cryptography/>)中,我了解到發送者的私鑰用於簽署數字交易和發送者的公鑰被礦工/接收者用來驗證發送者的簽名。
但是,我閱讀的第二篇關於公鑰密碼學的文章(<https://www.ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.14/gtps7/s7pkey.html>)卻相反;先用公鑰,再用私鑰。我附上了第二個連結的圖片:
我理解錯了什麼?為什麼鍵的使用順序相反?
預先感謝您的輸入…
我理解錯了什麼?
您正在混淆密碼學的幾種不同用途,幾種不同的目的:
- 驗證
- 不可否認性
- 隱私
- 完整性證明
一般密碼學
目的
隱私
如果您想向某人發送私人消息,以一種攔截該消息的人都無法閱讀的方式,您通常使用對稱(密鑰)算法和新創建的密鑰對消息進行加密。然後,您使用預期收件人的公鑰加密密鑰。這確保只有預期的接收者可以使用他們的私鑰(其他人不知道)來解密消息的密鑰。解密密鑰後,預期接收者能夠使用對稱算法解密消息。
請注意,您只使用對稱算法來加密消息,因為此類算法比非對稱(公鑰)算法快得多。它主要是為了效率,而不是出於任何其他原因。
驗證
如果您想向某人發送消息並提供您發送消息的證據,則使用不同的程序。您使用散列算法創建消息的加密散列。然後,您使用您的私鑰(只有您知道)對該雜湊進行加密。加密雜湊隨消息一起發送。這種加密的散列稱為數字簽名。消息的接收者可以使用您的公鑰提取散列並將其與新計算的消息散列進行比較,如果散列匹配,則證明您發送了消息。
加密類型
不對稱的
不對稱意味著您使用不同的密鑰進行加密和解密。既有私鑰也有公鑰。因此得名“公鑰密碼學”。
對稱的
相比之下,對稱(非對稱)算法的一個範例是DES,它是一種對稱加密算法,因為只有一個密鑰,相同的密鑰用於加密和解密。密鑰是共享的“秘密密鑰”——因此稱為“秘密密鑰加密”或“共享密鑰加密”。
比特幣中的密碼學
據我所知,比特幣使用
注意 ECDSA 是不對稱的
另請注意,比特幣關心的是匿名性而不是隱私(區塊鍊是公共的而不是私有的)。因此,比特幣不會出於隱私目的使用加密。您的錢包軟體可能會使用加密將您的密鑰隱藏在密碼後面——但這不是比特幣規範的一部分。
參考
- 中本聰,比特幣白皮書。第 2 節和第 4 節。
- 比特幣維基,ECDSA