具有諷刺意味的是,加密並不是比特幣的重要組成部分(?)
上述陳述摘自我一直在閱讀的一本書:Mastering Bitcoin 2nd Edition。
…因為它的通信和交易數據沒有加密,也不需要加密來保護資金……
剛開始了解比特幣,翻閱第三章,當我遇到上述幾行時,我只是被一個問題所震驚,那就是,如果(對等方/錢包到比特幣網路)之間發生的通信沒有加密……然後我只是在想一個場景
X 正在向 Z 發送 BTC(顯然在 txn 中提到了 Z 的地址)
Y(壞人)切斷未加密的通信(根據上述閱讀)並篡改 X 已發送的交易(只需將他的地址放入受益人)
我的意思是,老實說,這是一個非常幼稚的場景,任何人都可以想到,我知道比特幣中會有一些東西(我不知道)可以防止這種情況發生,因此,澄清這種攻擊是如何發生的用比特幣處理或減輕對這篇文章很有幫助。
密碼學和加密
在更廣泛的世界中,密碼學用於各種與安全相關的目的:
- 身份驗證(身份證明或所有權證明)
- 不可否認性(作者以後不能否認數據的作者身份)
- 機密性(保密 - 第三方無法看到數據)
- 完整性(證明數據未被更改或篡改)
當我們在沒有進一步澄清的情況下說“加密”時,我們通常是在談論使用加密技術來確保機密性(數據的機密性,而不是發生傳輸的機密性——後者可能涉及隱寫術或私人通道等)。
比特幣的點對點協議不需要保密,但它確實需要一種由數字簽名提供的身份驗證和完整性證明。
傳統的數字簽名算法使用 RSA,它涉及加密數據的散列,但不加密數據本身。比特幣使用橢圓曲線加密技術,它可以在不涉及雜湊加密的情況下生成數字簽名。
所以作者或許是在指出,比特幣點對點協議發送的數據並沒有為了保密而加密,也不涉及加密。
術語
密碼學這個詞的字面意思是隱藏的寫作。使用橢圓曲線密碼學這個術語有一定的諷刺意味,它不能直接用於隱藏消息的文本——許多人所說的加密是指將普通可讀的*明文轉換為不可讀的密文*的過程。
標準交易使用私鑰進行數字簽名。如果中間人篡改交易,那麼數字簽名驗證將失敗,因為產生有效簽名的唯一方法是擁有原始私鑰。這將導致交易失敗,並且網路會將其視為無效而拒絕。
這種簽名算法稱為ECDSA,需要簽名驗證的常見地址類型是
P2SH(P2WPKH)
(Pay to Script Hash - Pay to Witness Public Key Hash)。此外,交易未加密也很重要,否則網路的其餘部分將無法驗證交易是否有效(並防止雙花等)。