среда, 29 июня 2022 г.

Как парсить транзакции Blockchain в папку Google Drive

 


В этой статье мы разберем транзакции биткоина и научимся очень быстро парсить RawTX из сети блокчейн в папку Google Drive все это поможет нам лучше понять, как работает транзакции биткоина и каково все её содержимое в сети блокчейн.
Для начала нам нужно знать, что все транзакции биткоина хранятся в [txid].

txid - это идентификатор транзакции, хранящиеся в блокчейне биткоина, RawTX хранится в форме двойного хеширования.

Это означает, что RawTX дважды прошла через алгоритм SHA256, чтобы получить хэш транзакции, который мы видим в блокчейне.

Например, транзакция с таким хешем: d76641afb4d0cc648a2f74db09f86ea264498341c49434a933ba8eef9352ab6f

Транзакции в блокчейне биткоина хранится в форме двойного хеширования:

SHA256(SHA256(0100000001f2068914e2fea859cacd8df990daf4008f11296b3cb953794051147a265d850a000000008b483045022043784344e1e0cb498c1d73b4cee970fb0f9adf38b7891d0b1310fdb9cbc23929022100a734f4e97a05bd169a9f0eb296fc841fa57f8753db09869f8f6f8cc1232616d4014104d6597d465408e6e11264c116dd98b539740e802dc756d7eb88741696e20dfe7d3588695d2e7ad23cbf0aa056d42afada63036d66a1d9b97070dd6bc0c87ceb0dffffffff0100b864d9450000001976a9142df31a60b02cce392822c9a87198753578ef7de888ac00000000) = d76641afb4d0cc648a2f74db09f86ea264498341c49434a933ba8eef9352ab6f

Чтобы получить RawTX нам просто нужно ввести идентификатор транзакции [txid],

https://blockchain.info/rawtx/[txid]?format=hex

далее мы получим сведения в HEX формате это и есть наш заветный RawTX.

https://blockchain.info/rawtx/d76641afb4d0cc648a2f74db09f86ea264498341c49434a933ba8eef9352ab6f?format=hex

но как мы знаем в одном Биткоин Адресе могут быть очень много транзакции [txid] и это является основной проблемой на поиск которой уходит много времени, нагружает наш ПК и занимает много места на диске.

Чтобы решить эту проблему достаточно воспользоваться API сайта https://chain.so/api/

И так, мы указываем один Биткоин Адрес в bash-скрипт: getrawtx.sh «address» и дальше извлекаем весь предыдущий выходной хэш — все входы ссылаются на выход (UTXO)

UTXO - это (неизрасходованный выход транзакции) который будет потрачен на новом входе. Хэш-значение этого UTXO сохраняется в обратном порядке.

В результате весь неизрасходованный выход транзакции будет сохранен в файле: «RawTX.json»

Чтобы получить RawTX из Биткоин Адреса воспользуемся Bash-скриптом: getrawtx.sh

Parsing Blockchain in Google Drive
Parsing Blockchain in Google Drive

Как же парсить в папку Google Drive?

Для этого можно воспользоваться Терминалом для Google Colab [TerminalGoogleColab]

Ранее я записывал видеоинструкцию: «TERMINAL в Google Colab создаем все удобства для работ в GITHUB»

Давайте разберем в детали работу Bash-скрипта: getrawtx.sh

Bash-скрипт: getrawtx.sh
Bash-скрипт: getrawtx.sh

./getrawtx.sh 12ib7dApVFvg82TXKycWBNpN8kFyiAN1dr

Биткоин Адрес которую мы указываем для команды утилиты wget

все содержимое сохраняется в файл: index.json
все содержимое сохраняется в файл: index.json

https://chain.so/api/v2/get_tx_spent/BTC/12ib7dApVFvg82TXKycWBNpN8kFyiAN1dr

Утилита grep  сохраняет все идентификаторы транзакции "txid"  в один общий файл index2.json
Утилита grep сохраняет все идентификаторы транзакции "txid" в один общий файл index2.json
все содержимое сохраняется в файл: index2.json
все содержимое сохраняется в файл: index2.json
Удаляем index.json
Удаляем index.json
С помощью утилиты sed убираем префикс  "txid" и кавычки запятые
С помощью утилиты sed убираем префикс "txid" и кавычки запятые
Итоговый результат  в файле: index2.json
Итоговый результат в файле: index2.json
Создаем Python-скрипт используя утилиты echo
Создаем Python-скрипт используя утилиты echo
Запускаем Python-скрипт fileopen.py
Запускаем Python-скрипт fileopen.py
После запуска Python-скрипта fileopen.py создается Bash-скрипт rawscript.sh
После запуска Python-скрипта fileopen.py создается Bash-скрипт rawscript.sh
Удаляем index2.json
Удаляем index2.json
Получаем права для Bash-скрипта rawscript.sh и успешно запускаем!
Получаем права для Bash-скрипта rawscript.sh и успешно запускаем!
Удаляем скрипты fileopen.py // rawscript.sh
Удаляем скрипты fileopen.py // rawscript.sh
Все транзакции сохранились в файле: «RawTX.json»
Все транзакции сохранились в файле: «RawTX.json»

Какое преимущество получаем мы в итоге:

  • парсинг RawTX работает быстро и все сохраняется в один файл в папке Google Drive

  • в отличие от команды getrawtransaction «txid», в консоли Bitcoin Сore нам не нужно вводить «txid» достаточно ввести только Биткоин Адрес getrawtx.sh «address»

  • bash-скрипт: getrawtx.sh через API сайта https://chain.so/api/ находит неизрасходованный выход транзакции (UTXO)


 

Исходный код: https://github.com/demining/CryptoDeepTools/tree/main/01BlockchainGoogleDrive

Telegram: https://t.me/cryptodeeptech

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

Источник: https://cryptodeep.ru/blockchain-google-drive/





понедельник, 20 июня 2022 г.

Создаем свой терминал в Google Colab для работ в GitHub, GDrive, NGrok и.т.д

 


В настоящее время машинное обучение и глубокое обучение стали самой горячей тенденцией в индустрии компьютерных наук. Многие разработчики создают потрясающие проекты с помощью Google Colab.

Что такое Google Colab?

Google Colab был разработан Google для предоставления бесплатного доступа к GPU и TPU. Google Colab можно определить как улучшенную версию Jupyter Notebook.

Возможности Google Colab

Google Colab предоставляет множество интересных функций, которые предлагает любая современная IDE

  • Вы можете писать и запускайте код на Python 3 без локальной установки.

  • Вы можете импортировать наборы данных из внешних источников, таких как Kaggle.

  • Вы можете сохранять свои работы на Google Диске.

  • Вы можете импортировать свои работы с Google Диска.

  • Так же Google Colab предоставляет бесплатный облачный сервис, GPU и TPU и интеграцию с PyTorch, Tensor Flow, Open CV, но самое главное и важное вы можете импортировать или публиковать свои проекты напрямую из/в GitHub.

Запустим команду

!cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.5 LTS"

И так мы убедились что у нас есть "Ubuntu 18.04.5 LTS"

Осталось только найти интерпретатор командной строки для службы JSON-RPC

Полазив в интернете я наткнулся на плагин "jQuery Terminal Emulator"

Дальше я вставил код JS Shell:

Дальше небольшой код на Python с модулями по умолчанию

Далее google.colab.kernel.invokeFunction('shell', [command])

Назвав greetings: 'Terminal CryptoDeepTech'

prompt:'crypto >

После мы получили свой терминал в Google Colab для работ в GitHub, GDrive, NGrok


Исходный код: https://github.com/demining/TerminalGoogleColab

Telegram: https://t.me/cryptodeeptech

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

Источник: https://cryptodeep.ru/terminal-google-colab/





пятница, 10 июня 2022 г.

Самый крупный взлом за всю историю существования Биткоина

 


Биткоин кошелек Silk Road
наверно это самый крупный взлом за всю историю существования Биткоина, так как баланс монет составлял 69 369 BTC в переводе на доллары сумма превышало более $1 млрд.

Этот нашумевший биткоин кошелек 1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx был привязан к маркетплейсу даркнета который был закрыт в 2013 году и его создатель Росс Ульбрихт получил двойной пожизненный срок без возможности УДО.


В 2019 году на профильных хакерских форумах распространили зашифрованный файл wallet.dat, который мог быть связан с этим кошельком, но с 2019 года прошло три года и уже потихоньку всплывает правда о том что к взлому была применена решетчатая атака "LATTICE ATTACK".

В прошлом выпуске мы опубликовали более подробный видеоматериал под названием "Одна слабая транзакция в ECDSA в блокчейне Биткоина и с помощью Lattice Attack мы получили Private Key к монетам BTC"

Если покопаться в транзакциях Биткоин кошелька 1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx можно увидеть кое-что интересное.


Для этого мы решили дополнить наши исследования в этой области.

Данный видеоматериал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN

Одна слабая транзакция в ECDSA в блокчейне Биткоина и с помощью Lattice Attack мы получили Private Key к монетам BTC



Что мы знаем про решетчатую атаку?

Начнем с того что алгоритм цифровой подписи на эллиптических кривых (ECDSA) — это распространенная схема цифровой подписи, которую мы видим во многих наших обзорах кода. Он обладает некоторыми желательными свойствами, но также может быть очень хрупким для восстановления закрытого ключа с помощью атаки по побочному каналу, раскрывающей менее одного бита секретного одноразового номера.

ECDSA — это особая форма алгоритма цифровой подписи (DSA)DSA — это довольно распространенная схема цифровой подписи , которая определяется тремя алгоритмами: генерация ключа, подпись и проверка. Алгоритм генерации ключей генерирует закрытый и публичный ключи; закрытый ключ отвечает за создание подписей; а публичный ключ отвечает за проверку подписей. Алгоритм подписи принимает в качестве входных данных сообщение и закрытый ключ и создает подпись. Алгоритм проверки принимает в качестве входных данных сообщение, подпись и публичный ключ и возвращает значение true или false, указывая, является ли подпись действительной.

DSA определяется для любой математической группы, и эта схема безопасна до тех пор, пока проблема дискретного логарифмирования сложна для этой группы. Обычно используемая группа представляет собой целые числа по модулю простого числа p .

Наряду с этой группой у нас будет генератор группы g и некоторая криптографически безопасная хэш - функция H. Мы можем предположить, что p , g и H будут общеизвестны.

Генерация ключей работает, сначала случайным образом выбирая значение x из целых чисел по модулю p . Затем вычисляется значение y = g^x mod p

Закрытый ключ подписи имеет значение x , а публичный ключ — y . Ключ подписи должен храниться в секрете, поскольку именно он позволяет делать подписи.

Алгоритм подписи создает подпись из сообщения m и секретного ключа x . Сначала генерируется случайный элемент группы k . Это известно как одноразовый номер , что важно, когда речь идет об атаках.

Затем вычисляются значения r = g^k mod p и s = ( k^-1 ( H ( m ) + xr )) mod p

Здесь k^- 1 — обратная группа, а H ( m ) — результат вычисления хэша mи интерпретация результата как целое число по модулю p .

Подпись определяется как пара ( r , s ). (Примечание: если одно из значений r или sравно 0, алгоритм перезапускается с новым значением k ).

Алгоритм проверки получает на вход подпись ( r , s ), сообщение m и публичный ключ y . Пусть ŝ = s^-1 , тогда алгоритм выдает истину тогда и только тогда , когда r , s ≠ 0 и r = ( g H ( m ) y r ) ŝ .

Эта проверочная проверка работает, потому что g^H( m ) y^r = g^H(m)+ xr = g^ks, и поэтому (g^H(m)y^r)^ŝ = g^k = r

Схема цифровой подписи считается безопасной, если ее невозможно подделать .

Не подделываемость имеет формальное криптографическое значение, но на высоком уровне это означает, что вы не можете создавать подписи, не зная секретного ключа (если только вы не скопировали уже существующую подпись, созданную из секретного ключа). Доказано, что DSAневозможно подделать при допущении дискретного журнала .

DSA определяется над математической группой. Когда DSA используется с группой эллиптических кривых в качестве этой математической группы, мы называем это ECDSAГруппа эллиптических кривых состоит из точек эллиптических кривых, которые представляют собой пары ( x , y ), которые удовлетворяют уравнению y^2 = x^3 + ax + b для некоторых a , b . Для этого сообщения в блоге все, что вам нужно знать, это то, что, используя эллиптические кривые, вы можете определить конечную группу, что означает, что вы получаете генератор группы, g (точка эллиптической кривой), и операции сложения и скалярного умножения точно так же, как вы можете с целыми числами. Поскольку они образуют конечную группу, генератор,g , будет иметь конечный порядок, p. Этот пост в блоге не будет объяснять или требовать, чтобы вы знали, как работают эти операции с эллиптическими кривыми.

ECDSA работает так же, как DSA, но с другой группой. Секретный ключ x по-прежнему будет случайным значением из целых чисел по модулю p . Теперь публичный ключ y по- прежнему вычисляется как y = g^x , за исключением того, что теперь g является точкой эллиптической кривой. Это означает, что y также будет точкой эллиптической кривой (раньше y был целым числом по модулю p ). Еще одно отличие заключается в том, как мы вычисляем значение r . Мы по-прежнему генерируем случайный одноразовый номер k как целое число по модулю p , как и раньше. Мы вычислим g^k , но опять же,g — точка эллиптической кривой, и, следовательно, g^k — тоже. Следовательно, мы можем вычислить ( x^k , y^k ) = g^k и установить r = x^k . Теперь значение s можно вычислить, как и раньше, и мы получим нашу сигнатуру ( r , s ), которая по-прежнему будет целым числом по модулю p , как и раньше. Чтобы проверить, нам нужно сделать поправку на тот факт, что мы вычислили r немного по-другому.

Итак, как и прежде, мы вычисляем значение ( g^H(m)y^r)^ŝ , но теперь это значение является точкой эллиптической кривой, поэтому мы берем x-координату этой точки и сравниваем ее с нашим значением r .

Восстановление секретных ключей из повторно используемых одноразовых номеров NONCES

Теперь, когда мы понимаем, что такое ECDSA и как он работает, давайте продемонстрируем его хрупкость. Опять же, поскольку это схема цифровой подписи, крайне важно, чтобы секретный ключ никогда не раскрывался никому, кроме лица, подписывающего сообщение.

Однако, если подписывающее лицо когда-либо выпускает подпись, а также выпускает использованный одноразовый номер, злоумышленник может немедленно восстановить секретный ключ.

Скажем, я освобождаю подпись ( r , s ) для сообщения m и случайно обнаруживаю, что использовал одноразовый номер k .

Поскольку s = ( k^-1 ( H ( m ) + xr )), мы можем легко вычислить секретный ключ:

s = (k^-1(H(m) + xr))

ks = H(m) + xr

ks – H(m) = xr

x = r^-1(ks – H(m))

Следовательно, подписывающая сторона должна не только хранить в секрете свой секретный ключ, но и все свои одноразовые номера, которые они когда-либо генерировали, в секрете.

Даже если подписывающий держит в секрете каждый одноразовый номер NONCES, если он случайно повторит один одноразовый номер NONCES (даже для разных сообщений), секретный ключ также может быть немедленно восстановлен.

Пусть ( r , s 1 ) и ( r , s 2 ) будут двумя подписями, созданными на сообщениях m 1 и m 2 (соответственно) из одного и того же одноразового номера, k - поскольку они имеют один и тот же одноразовый номер, значения r будут одинаковыми, так что это очень легко обнаруживается злоумышленником:

s1 = k^-1(H(m1) + xr) and s2 = k^-1(H(m2) + xr)

s1 – s2 = k^-1(H(m1) – H(m2))

k(s1 – s2) = H(m1) – H(m2)

k = (s1 – s2)^-1(H(m1) – H(m2))

После того, как мы восстановили одноразовый номер k , используя приведенную выше формулу, мы можем восстановить секретный ключ, выполнив ранее описанную атаку.

Давайте на минутку переварим это.

Если одноразовый номер NONCES для подписи когда-либо раскрывается, секретный ключможет быть немедленно восстановлен, что нарушает всю нашу схему подписи.

Кроме того, если два одноразовых номера когда-либо повторяются, независимо от того, что представляют собой сообщения, злоумышленник может легко обнаружить это и немедленно восстановить секретный ключ, снова нарушив всю нашу схему.

Это довольно хрупко, и это только легкие атаки!

Но существует новая атака Lattice Attack которую очень подробно и детально описали Йоахим Брайтнер и Надя Хенингер (Joachim Breitner and Nadia Heninger)

Document [PDF]Biased Nonce Sense: Lattice Attacks against Weak ECDSA Signatures in Cryptocurrencies

В блокчейне Биткоина мы нашли некую транзакцию:

transaction: 08d917f0fee48b0d765006fa52d62dd3d704563200f2817046973e3bf6d11f1f

для Биткоин Адреса: 15N1KY5ohztgCXtEe13BbGRk85x2FPgW8E

и нам удалось размножить фейковые подписи и применить решетку

где с помощью Python-скрипта algorithmLLL.py с установкой пакетов в GOOGLE COLAB

INSTALL >> SAGE + ECDSA + BITCOIN + algorithm LLL

Нам удалось получить Private Key к Bitcoin Wallet из одной слабой транзакции в ECDSA.

Установка
Установка
Запуск Bash-скрипта: lattice.sh
Запуск Bash-скрипта: lattice.sh
Результат в HEX - формате Закрытый ключ найден!
Результат в HEX - формате Закрытый ключ найден!
Файл: ONESIGN.txt (Значение R, S, Z подписи ECDSA)
Файл: ONESIGN.txt (Значение R, S, Z подписи ECDSA)
Размножили фейковые подписи для Python-скрипта  algorithmLLL.py
Размножили фейковые подписи для Python-скрипта algorithmLLL.py
Файл: PRIVATEKEY.txt
Файл: PRIVATEKEY.txt
Файл: ADDRESS.txt
Файл: ADDRESS.txt
Проверяем закрытый ключ на сайте bitaddress
Проверяем закрытый ключ на сайте bitaddress

Закрытый ключ найден!

https://www.blockchain.com/btc/address/15N1KY5ohztgCXtEe13BbGRk85x2FPgW8E

0.001 BTC
0.001 BTC
ADDR: 15N1KY5ohztgCXtEe13BbGRk85x2FPgW8E
WIF:  5JCAmNLXeSwi2SCgNH7wRL5qSQhPa7sZvj8eDwxisY5hJm8Uh92
HEX:  31AFD65CAD430D276E3360B1C762808D1D051154724B6FC15ED978FA9D06B1C1 

Данный видеоматериал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN

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

Telegramhttps://t.me/cryptodeeptech

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


Bit-flipping attack на Wallet.dat: Риски использования AES-256-CBC без аутентификации, эксплуатация и извлечение приватных ключей из Bitcoin Core

  Crypto Deep Tech В программе Bitcoin Core для защиты пароля кошелька используется симметричный криптографический алгоритм  AES-256-CBC . Э...