В этой статье мы постараемся показать как можно уменьшить приватный ключ зная только утечку из списка «BLOCKCHAIN FOLBIT LEAKS» и публичный ключ из «UTXO».
В экспериментальной части мы воспользуемся скриптами 08ReducePrivateKey и восстановим Биткоин Кошелек.
Скалярное умножение на эллиптической кривой — это операция добавления точки P на кривую k раз.
Q=kP=P+P+P, k times
P — точка на эллиптической кривой, а k — большое натуральное число.
В любых примитивных реализациях ECC скалярное умножение является основной вычислительной операцией. Ключевым фактором повышения эффективности ECC является реализация быстрого скалярного умножения. Поэтому многие исследователи предлагали различные исследования ускоренного скалярного умножения.
Воспользуемся библиотекой ECPy
ECPy предоставляет:
подписи ECDSA
подписи Ed25519
подписи ECSchnorr
подписи Borromean
операции с точками
Во многих наших исследованиях мы используем библиотеку ECPy и Google Colab
Откроем [TerminalGoogleColab].
Воспользуемся репозиторием «08ReducePrivateKey».
git clone https://github.com/demining/CryptoDeepTools.git
cd CryptoDeepTools/08ReducePrivateKey/
ls
Установим библиотеку ECPy:
pip3 install ECPy
Python скрипт: maxwell.py , сохраним код и запустим в терминале Google Colab
Команда запуска:
python3 maxwell.py
Результат:
(0x3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63 , 0xc0c686408d517dfd67c2367651380d00d126e4229631fd03f8ff35eef1a61e3c)
Обратите внимание на координату x:
x value = 3b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63
0200000000000000000000003B78CE563F89A0ED9414F5AA28AD0D96D6795F9C63
Этот публичный ключ называют "Maxwell's vanity public key"
Установим все нужные модули:
bitcoin
ecdsa
utils
base58
pip2 install -r requirements.txt
С помощью скрипта breakECDSA.py мы узнаем публичные ключи для Биткоин Адресов
python2 breakECDSA.py
После запуска мы получаем публичные ключи на все три Биткоин Адреса.
Результат будет сохранен в файл: PublicKeys.txt
Откроем файл: PublicKeys.txt
cat PublicKeys.txt
PUBKEY = 04b3fdc0e84cd77cd018ced1fdd3ea4110d6beb942cfd38c0f6feaffc246e08b97fe779e87e4743f55168a476433100abd4cac064be5915cf828185319480b3fb4
PUBKEY = 04ea7c9e85d4fb089e0b2901cd5c77f3149aa4cf711ed29a3318a4e153a67ea9cd1a22c24c8e05b66eb122db74d26fddf2cb184033fb586743ea330e15eeb8240c
PUBKEY = 0480edda62d055008c28de19f4908cd052ccf63a10d708b5866b7a5b340bde49e2b5e7be50412afb83a6c774ed5b45fdf9ad5cbbd98b7f1964f1cb180b7bc6d56c
Сохраним точки координат (x,y) в файле: Coordinates.txt
BLOCKCHAIN FOLBIT LEAKS
Откроем список известных блокчейн утечек на 2019 год «BLOCKCHAIN FOLBIT LEAKS»
Скопируем значение:
dac19ec586ea8aa454fd2e7090e3244cdf75a73bdb1aa970d8b0878e75df3cae
Теперь проведем скалярное умножение по всем координатам точек (x,y) применив значение утечки: dac19ec586ea8aa454fd2e7090e3244cdf75a73bdb1aa970d8b0878e75df3cae
Изменим код maxwell.py и изменим название на scalarEC.py
Добавим with open("Coordinates.txt", "rt") as base:
Все новые координаты будут сохранены в файле: SaveBase.txt
B = 0xdac19ec586ea8aa454fd2e7090e3244cdf75a73bdb1aa970d8b0878e75df3cae
Добавим значение B из списка в код и сохраним как Python-скрипт: scalarEC.py
Теперь для поиска приватного ключа применим метод Pollard's Kangaroo
Ранее мы публиковали статью: "Pollard's Kangaroo находим решения дискретного логарифма secp256k1 PRIVATE KEY + NONCES в известном диапазоне"
Воспользуемся новым кодом Pollard's Kangaroo от Telariust Python-скрипт: kangaroo.py
Установим модуль gmpy2 по команде:
sudo apt install python-gmpy2
В итоге мы получим в терминале приватный ключ в формате HEX 38717b5161c2e817020a0933e1836dd0127bdef59732d77daca20ccfbf61a7ae
Откроем bitaddress и проверим:
ADDR: 1MjGyKiRLzq4WeuJKyFZMmkjAv7rH1TABm
WIF: 5JF9ME7zdGLDd3oyuMG7RfwgA1ByjZb2LbSwRMwM8ZKBADFLfCx
HEX: 38717b5161c2e817020a0933e1836dd0127bdef59732d77daca20ccfbf61a7ae
Приватный ключ найден!
Биткоин кошелек восстановлен!
Данный видеоматериал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN
Исходный код
Telegram: https://t.me/cryptodeeptech
Видеоматериал: https://youtu.be/zu2yiaZ_LOs
Источник: https://cryptodeep.ru/reduce-private-key