R / S / Z / K 計算工具 - Bitcoin ECDSA R、S、Z、K 分析器
使用已知的 R、S、Z、K 數值分析 Bitcoin ECDSA 簽章資料,並依照 secp256k1 的數學關係進行計算。所有計算均使用 JavaScript BigInt 在瀏覽器本機執行。
Bitcoin ECDSA 簽章範例資料
本範例資料集用於學習 secp256k1 與 ECDSA 簽章資料, 展示題目編號、ECDSA 簽章中的 R、S、Z、K 數值、 公開金鑰、私鑰與 Nonce 之間的數學關係。
| No. | R Value | S Value | Z Value | Pubkey | Private Key | K Value(Secret Nonce) |
|---|---|---|---|---|---|---|
| 1 | 5546e2ea6259151ce2bc9040efd94f8019cc08c5524ca18a77f26dcd74deb10a | 3e94a32386348f863f6ec148077eb3ebddfd4c0333c5b2030187f6b8686fe98d | 339207a21f02059dcc8bfc47f62c9ec289f3c3037bdc24c8fee9174280f182a2 | 0230210c23b1a047bc9bdbb13448e67deddc108946de6de639bcc75d47c0216b1b | 1A838B13505B26867 | 68592d1aa72720ae7333beb3bd9d6a8e69c0567fb91720318c6289d48227c05d |
| 2 | 36729851ae5082e0d70786af455cd47fa29162c459f73c1041f2663c783842be | 39ecf6abb2c43d62bce1d9cf77d3bbabb5ccad0f87399990f6ba2a568236330c | fb3fbd8f0f59ee460024db999b97f475d9cc8cdbce21b3ee749810cd266b2c31 | 0290e6900a58d33393bc1097b5aed31f2e4e7cbd3e5466af958665bc0121248483 | 349B84B6431A6C4EF1 | 79577177c7a329a48d26bcf81b5db9e88b458bf8e76665f3a9ff4ab4f0cad08e |
| 3 | 1a35a0409ba510b8055ab7767a06952783f3ec175c7f089cbad402a682b0852d | 3ee9d3f06eeadc7ccae821ac4d9f16c0df1ac5e977c9d1bceac968ed9f05bcc4 | f88b9f85f645b62635765fc550ae8d29ec28737bff088baa33d34719fce25447 | 03726b574f193e374686d8e12bc6e4142adeb06770e0a2856f5e4ad89f66044755 | 4C5CE114686A1336E07 | 123503c481722a0b4161fc681b8c786425664c102101a649d665ca788da72e7f |
| 4 | 8317c7f43d629fbe025e8e05dbbe6946d5a490115fd2718b282b693ff5809d40 | 2a7c06856091c28f49f1dd3a5bf405cc6c5743eb7aa0b66c150336b48215b2d4 | 42b44688c7e5aa10eff0ec27922238d4f3e4cda094bb7a61bea7849caa7b39d9 | 037e1238f7b1ce757df94faa9a2eb261bf0aeb9f84dbf81212104e78931c2a19dc | EA1A5C66DCC11B5AD180 | 93c7e4ce32301e1676eeef686e851d3b84a0174f7e9f0c523df966c96a24e886 |
| 5 | 0d0272274f0778f4242d4ada44d4c9ca1959238336c4754111da12adaf71a427 | 766b5813b8f194a228331282914238b30fe7ca34afad27eecb01e602ae5ea4e7 | 4b0269284f3a12c5a0fe6fd247d116e777470de4d5762a2c6318273cc0a2e8a0 | 0329c4574a4fd8c810b7e42a4b398882b381bcd85e40c6883712912d167c83e73a | 11720C4F018D51B8CEBBA8 | 18fbd62747eb6a108af69ae775878af10075590fc534036710c2cb6121a24710 |
| 6 | 089214e780b1be83aca76593293e871159eb392090135759dc110667bfd72e36 | 73eb3423c444d9248d682de9670a1c48343e3554bd3eda0da070a8cd3f2ff7cc | b79f283cae2b07b53adb9773dde9b93edf91a99b9fdda83ba9c7f4e50d7c5c11 | 035c38bd9ae4b10e8a250857006f3cfd98ab15a6196d9f4dfd25bc7ecc77d788d5 | 2CE00BB2136A445C71E85BF | 0640c641a09b8b28b721f3c861916de8eb1fab230ad5fa33dd0e03739b4936c9 |
| 7 | df359e57f5e14b8dccf09daf6ec634f48cfc105658e0fc1bf53926af5494498a | 392816fdecd0122f306b96b68a863f338abb0e874657adf22bb685b2e38826ce | 6c44185598b9fd22ac7c8bd8349f5a5894c4e02da9bbd672fd59cd67ce2cfb8f | 02967a5905d6f3b420959a02789f96ab4c3223a2c4d2762f817b7895c5bc88a045 | 527A792B183C7F64A0E8B1F4 | b3591ed9fac56c96f20f13646c6d4a4371c1c34db9126ee203d9ecb823c46930 |
| 8 | 537b3babb66402cc0cbe8b4856e0172c087bd98ddfb43e293219c8cccf6c7fdc | 4fb4d9eecf4c6cd0efb567612993a085cfbeca1163633047e6dd0c4059b06d0c | 1ced6233a635419d1b20077c0e114510b00c3510baf322b1a236dccca3c13c82 | 03d2063d40402f030d4cc71331468827aa41a8a09bd6fd801ba77fb64f8e67e617 | AF55FC59C335C8EC67ED24826 | 1ac46997d73e24a7167fa8b9825927cb59d23528c69328ce71de3087a8c79c1f |
| 9 | 1e8ad3749c24db4ae05de85ee2ec33277688630f97f8ce4f883fa36c6e193d3a | 2f66ac26be1b44df871473a42c5e8e2cbc703465e415b064dc4854b1d8b3c99f | 9c4c95b28b34558365fbcc4168debafa430c0238a27d9185d4cea23f69cddb18 | 03bcf7ce887ffca5e62c9cabbdb7ffa71dc183c52c04ff4ee5ee82e0c55c39d77b | 16F14FC2054CD87EE6396B33DF3 | 0129543698812c5d61918bddd6b24712b0d757aecba20a21c7971a3b652142af |
| 10 | 2ce84174d77df3974453ed9ea7075a94adc333068e2b82427cf3bf685a99b860 | 3329eb238537ec29814802e5d19f1a34a25faac8092d41b431f10bbfa05717ed | 0573b73c3fe704730cee74e1878253b2cbd253650d10dcd2a418b98e8c04ae17 | 0309976ba5570966bf889196b7fdf5a0f9a1e9ab340556ec29f8bb60599616167d | 35C0D7234DF7DEB0F20CF7062444 | caf9bf64e2440011a0c52746068da91cb7f9b1e20b0a4ac0816babbb85c4bcba |
| 11 | 988f9aeafa9acd319281e757deffeb3e52160baf1096b73bababd55deb31f3f2 | 10c209729f42f3b531116c5650df090cbe934bd5a4fc556d60f143227b54c69a | 016cc9c96952b3460a847c7a831cc695ffe9289a41d5ded5aa9cb6ff3ab67f6b | 0248d313b0398d4923cdca73b8cfa6532b91b96703902fc8b32fd438a3b7cd7f55 | 60F4D11574F5DEEE49961D9609AC6 | 9dd8dc8f8073f11e60ac3dd7a371313c847366b5dff74f46c9fac279eb3a2fea |
Bitcoin ECDSA 簽章中的 R、S、Z、K 是什麼?
本文完整介紹 Bitcoin ECDSA 數位簽章中的 R、S、Z、K 四個重要數值,說明 secp256k1、訊息雜湊、Nonce 與私鑰 之間的關係,以及弱 Nonce 可能帶來的密碼學安全風險。
為什麼 Bitcoin 交易需要數位簽章?
Bitcoin 不使用傳統的使用者名稱與密碼來授權交易。 相反地,Bitcoin 使用密碼學數位簽章來證明交易是否 由持有相應私鑰的一方授權。
當使用者要花費由私鑰控制的 Bitcoin 時, 交易會使用橢圓曲線數位簽章演算法 Elliptic Curve Digital Signature Algorithm, 簡稱 ECDSA,產生數位簽章。
Bitcoin 歷史上廣泛使用 secp256k1 橢圓曲線進行 ECDSA 簽章。理解 R、S、Z、K, 有助於研究 Bitcoin 簽章格式與 Nonce 安全性。
Bitcoin ECDSA 的 4 個重要數值
ECDSA 簽章值 R
R 是 ECDSA 數位簽章中的重要組成元素之一。 它與簽章時使用的暫時性 Nonce K 以及橢圓曲線運算 有直接的數學關係。
ECDSA 簽章值 S
S 是 ECDSA 簽章中的另一個主要元素。 它與訊息雜湊 Z、私鑰以及 Nonce K 共同參與 ECDSA 簽章方程式的計算。
訊息雜湊 Z
Z 代表 ECDSA 簽章過程所使用的訊息雜湊值。 在 Bitcoin 中,它會根據對應的簽章雜湊規則, 從交易資料計算而來。
暫時性 Nonce K
K 是每次簽章使用的秘密暫時性 Nonce。 它不是設計成公開資訊的數值,因此必須以安全方式產生 並避免重複使用或遭到洩漏。
R、S、Z、K 之間有什麼關係?
ECDSA 簽章的基本數學關係可以概念化表示如下:
其中 d 代表私鑰, n 代表橢圓曲線群的階。 R、S、Z 與 K 並不是彼此獨立的隨機數值, 而是透過 ECDSA 簽章方程式產生數學關係。
在已知特定條件的研究或測試環境中, 上述方程式也可以進一步重新整理。
K 會公開在 Bitcoin 交易中嗎?
一般情況下,不會。
Bitcoin 的 ECDSA 簽章會公開必要的簽章資料, 但暫時性 Nonce K 本身不是交易中公開的秘密數值。 這也是為什麼 Nonce 的安全性在 ECDSA 實作中非常重要。
可以將幾個主要數值的公開程度簡單整理如下:
| 數值 | 通常可以確認嗎? | 主要作用 |
|---|---|---|
| R | 可以 | ECDSA 簽章組成元素 |
| S | 可以 | ECDSA 簽章組成元素 |
| Z | 可由交易資料推導 | 交易簽章使用的訊息雜湊 |
| K | 不應公開 | 秘密暫時性 Nonce |
| D | 不應公開 | 秘密簽章私鑰 |
為什麼弱 Nonce K 會造成安全風險?
在 ECDSA 中,Nonce K 的安全產生方式非常重要。 不只是要讓 K 難以預測,也需要避免不同簽章之間 意外使用相同的 K,並避免產生具有可利用統計偏差的 Nonce。
如果實作無法正確產生或保護 K, 不同簽章之間可能出現原本不應存在的數學關係。 在符合特定條件的情況下,這些關係可能造成私鑰相關資訊洩漏。
私鑰不需要直接出現在 Bitcoin 區塊鏈上才可能面臨風險。 如果簽章系統的 Nonce 產生機制存在嚴重弱點, 某些情況下可能從公開簽章資料中發現額外的數學資訊。 因此,安全的 Nonce 產生與管理是 ECDSA 實作的重要部分。
Nonce 重複使用:ECDSA 常見的安全問題
ECDSA 最著名的安全問題之一,是相同的 Nonce K 被錯誤地重複用於不同訊息的簽章。
假設兩筆不同訊息使用相同 K 產生簽章, 可以得到兩個具有相同 R 的 ECDSA 方程式:
因為兩個方程式使用相同的 K, 兩筆簽章之間會產生特殊的數學關係。 在滿足相應條件時,可以透過方程式差異分析 Nonce, 並進一步研究其對私鑰安全性的影響。
因此,在 Bitcoin 與其他使用 ECDSA 的系統中, 決定性 Nonce 或經過適當設計的密碼學安全亂數來源 都是非常重要的安全措施。
Nonce 產生失敗的其他原因
Nonce 重複使用並不是唯一的問題。 ECDSA 實作中還可能存在其他造成 Nonce 安全性下降的因素。
- Nonce 重複使用: 不同簽章錯誤地使用相同的 K。
- 可預測的 Nonce: K 使用可被外部推測的資訊來源產生。
- 亂數品質不足: 亂數產生器沒有提供足夠的熵。
- Nonce 偏差: K 的部分位元出現統計偏差,或缺乏足夠的隨機性。
- 實作錯誤: Nonce 產生、資料序列化或模運算處理存在程式錯誤。
- 側通道資訊洩漏: 時間差異、功耗、電磁輻射或其他實作層面的 側通道可能洩漏與 Nonce 有關的資訊。
只知道 R、S、Z 可以取得私鑰嗎?
在正常的 ECDSA 安全假設下,只知道 R、S、Z 並不足以直接取得私鑰。
ECDSA 的安全性建立在橢圓曲線離散對數問題的計算困難度上。 在正確實作且 Nonce 安全的情況下, 公開簽章資料不應該讓外部使用者直接計算出私鑰。
但如果取得了與 K 有關的額外資訊,情況可能有所不同。 例如 Nonce 重複使用、Nonce 可預測或特定的偏差, 都可能產生正常安全簽章不應該存在的數學關係。
R、S 通常屬於公開簽章資料,Z 則可以依照 Bitcoin 的簽章雜湊規則從交易資料推導。 K 則應保持秘密且不可預測。 ECDSA 的安全性除了依賴私鑰保護,也高度依賴 正確的 Nonce 產生與管理方式。
為什麼 Bitcoin 簽章系統適合密碼學研究?
Bitcoin 的交易資料可以在公開區塊鏈上進行驗證, 因此它提供了一個非常特殊的密碼學研究環境。
研究人員可以分析歷史交易與簽章資料, 依照正確的交易序列化方式計算訊息雜湊, 檢查簽章組成元素,並研究簽章資料之間是否存在 不符合安全 Nonce 產生預期的數學關係。
不過,發現簽章之間存在某種數學關係, 並不代表一定可以取得私鑰。 實際分析時仍必須正確處理簽章格式、 交易序列化方式、SIGHASH 類型、 簽章編碼方式以及相關數學條件。
用流程圖理解 Bitcoin ECDSA 安全性
Bitcoin 錢包開發者如何保護 Nonce K?
安全的錢包實作應將 Nonce 產生視為重要的密碼學處理流程, 並避免自行設計未經驗證的簽章機制。
- 使用經過充分審查與廣泛使用的密碼學函式庫。
- 使用安全亂數來源,或正確實作的決定性 Nonce 產生方式。
- 避免在不同訊息之間重複使用 ECDSA Nonce。
- 除非具有充分的密碼學工程理由, 否則不要自行從零實作橢圓曲線運算。
- 保護私鑰與暫時性秘密資料, 避免資料進入日誌、除錯輸出或其他非預期的公開位置。
- 使用已建立的密碼學測試向量驗證實作結果。
總結:理解 Bitcoin ECDSA 的 R、S、Z、K
R、S、Z、K 是理解 Bitcoin ECDSA 簽章機制時非常重要的四個概念。 R 與 S 是簽章的主要組成元素,Z 是簽章流程使用的訊息雜湊值, 而 K 則是簽章時使用的秘密暫時性 Nonce。
R 與 S 構成 ECDSA 簽章, Z 代表訊息雜湊, K 則必須保持秘密、不可預測, 並且不能在不安全的情況下重複使用。
Bitcoin ECDSA 的安全性並不只是保護私鑰這麼簡單。 簽章流程中的暫時性秘密資料同樣具有嚴格的安全要求。 Nonce 產生器、亂數品質、實作細節與側通道防護, 都可能影響整體簽章安全性。