RingSide Replay Attack: Как 32-битная энтропия вместо 256-битной скомпрометировала приватные ключи ключевые SEED сид-фразы Биткоин кошелька
Данная статья представляет комплексный криптоаналитический обзор критической уязвимости CVE-2023-39910, известной под кодовым названием «Milk Sad», обнаруженной в широко распространённой утилите Libbitcoin Explorer версий 3.0.0–3.6.0. Фундаментальный дефект заключается в применении криптографически небезопасного генератора псевдослучайных чисел Mersenne Twister-32 (MT19937), инициализируемого системным временем, что катастрофически ограничивает пространство энтропии до 32 бит вместо требуемых 256 бит. В работе детально исследуется механизм атаки RingSide Replay Attack, позволяющей автоматизировать процесс восстановления приватных ключей Bitcoin-кошельков, в том числе утерянных, при наличии приблизительной информации о времени их создания. Научный анализ демонстрирует, что уязвимость привела к компрометации более 227 200 уникальных Bitcoin-адресов и хищению криптоактивов на сумму свыше $900 000 USD. Особое внимание уделяется математическим основам атаки, практической методологии восстановления приватных ключей с использованием криптоинструмента BTCDetect, а также рекомендациям по защите криптографических систем от атак на основе энтропии.
1. Криптографическая безопасность и парадигма случайности в экосистеме Bitcoin
Криптовалютная экосистема Bitcoin представляет собой сложную децентрализованную систему, безопасность которой фундаментально основана на принципах современной криптографии. Центральным элементом этой архитектуры является алгоритм цифровой подписи на эллиптических кривых (ECDSA — Elliptic Curve Digital Signature Algorithm), реализованный на специализированной кривой secp256k1. Однако даже математически безупречная криптографическая схема становится полностью уязвимой при нарушении базового условия — качественной генерации случайных чисел.
1.1. Теоретические основы криптографической безопасности Bitcoin
Безопасность сети Bitcoin базируется на вычислительной сложности задачи дискретного логарифмирования на эллиптических кривых (ECDLP — Elliptic Curve Discrete Logarithm Problem).
Приватный ключ k представляет собой случайное 256-битное целое число, которое должно быть:
Абсолютно непредсказуемым — невозможность угадывания или вычисления
Уникальным — отсутствие коллизий с другими ключами
Криптографически стойким — устойчивость к известным атакам
Публичный ключ Q генерируется как точка на эллиптической кривой путём скалярного умножения приватного ключа на генераторную точку G:
Q = k · G
где k — приватный ключ ∈ [1, n-1], G — генераторная точка кривой secp256k1, n — порядок группы
Эллиптическая кривая secp256k1 определяется уравнением Вейерштрасса в сокращённой форме:
y² ≡ x³ + 7 (mod p)
где p = 2^256 − 2^32 − 977 ≈ 1.158 × 10^77
Порядок группы n кривой secp256k1 равен:
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
n ≈ 1.158 × 10^77
Теоретическая стойкость данной криптосистемы определяется тем, что обратная операция — вычисление приватного ключа k по известному публичному ключу Q — является вычислительно неосуществимой при корректной реализации. Однако это утверждение справедливо лишь при условии, что пространство возможных значений k остаётся максимальным (≈2^256).
1.2. Фундаментальная роль энтропии в криптографических системах
Концепция энтропии в криптографии восходит к работам Клода Шеннона, заложившего теоретические основы теории информации. Энтропия Шеннона определяется как мера неопределённости (случайности) в системе:
H(X) = −Σ p(xᵢ) · log₂ p(xᵢ)
где H(X) — энтропия случайной величины X, p(xᵢ) — вероятность события xᵢ
Для криптографических приложений требуется максимальная энтропия, при которой все возможные значения равновероятны. В случае 256-битного приватного ключа Bitcoin это означает:
Hmax = log₂(2^256) = 256 бит
Критическое значение энтропии заключается в следующем: если генератор случайных чисел (RNG) производит предсказуемые или имеет ограниченное пространство значений выходные данные, то злоумышленник может перебрать все возможные приватные ключи и восстановить криптографические секреты. Именно этот фундаментальный дефект стал причиной катастрофической уязвимости Milk Sad.
Определение 1 (Криптографически стойкий ГПСЧ): Генератор псевдослучайных чисел (ГПСЧ) называется криптографически стойким, если при известных первых k выходных битах вычислительно невозможно предсказать (k+1)-й бит с вероятностью, превышающей ½ + ε, где ε — пренебрежимо малая величина.
1.3. Историческая хронология обнаружения уязвимости
В июне-июле 2023 года исследователи безопасности зафиксировали аномальное явление в блокчейне Bitcoin: множество кошельков, созданных в различные временные периоды, начали систематически опустошаться, несмотря на отсутствие связи между их владельцами. Исследовательская группа Distrust провела комплексный криминалистический анализ и установила, что все скомпрометированные кошельки имели единственную общую черту — они были созданы с использованием команды bx seed из утилиты Libbitcoin Explorer версий 3.x.
Результаты расследования оказались катастрофическими:
ПараметрЗначениеОбщая сумма украденных средств> $900 000 USDЗатронутые криптовалютыBTC, ETH, XRP, DOGE, SOL, LTC, BCH, ZECКомпрометированные Bitcoin-адреса> 227 200Уязвимые версии Libbitcoin Explorer3.0.0 — 3.6.0Период эксплуатацииИюнь — Июль 2023
Кодовое название «Milk Sad» было предложено исследователями как первые два слова мнемонической фразы BIP-39, генерируемой при нулевом начальном значении (seed = 0), что символически отражает «печальное» состояние «молочной» (незрелой, детской) криптографической реализации.
2. Анатомия уязвимости: криптоанализ Mersenne Twister в контексте генерации ключей
2.1. Алгоритм Mersenne Twister: архитектура и криптографические недостатки
Mersenne Twister (MT19937) — это генератор псевдослучайных чисел, разработанный Макото Мацумото и Такуджи Нишимура в 1997 году. Алгоритм основан на линейной рекуррентной последовательности над конечным полем GF(2) и обладает следующими характеристиками:
ПараметрЗначение MT19937Период219937 − 1 (число Мерсенна)Размер слова32 битаРазмер состояния624 × 32 = 19968 битРазмер seed32 битаРавномерность (k-distribution)623-мерно равномерно распределён
Несмотря на превосходные статистические свойства (прохождение тестов Diehard, TestU01), Mersenne Twister категорически НЕ предназначен для криптографических приложений по следующим критическим причинам:
Критические криптографические недостатки MT19937:
Линейность: Внутреннее состояние может быть полностью восстановлено по 624 последовательным 32-битным выходам
Ограниченное пространство seed: Только 2^32 ≈ 4.29 × 109 возможных начальных состояний
Детерминизм: Идентичные seed производят идентичные последовательности
Предсказуемость: При известном состоянии возможно вычисление всех прошлых и будущих выходов
2.2. Уязвимая реализация в Libbitcoin Explorer
Критическая ошибка в коде Libbitcoin Explorer версий 3.0.0–3.6.0 располагалась в модуле генерации энтропии:
// pseudo_random.cpp (VULNERABLE VERSION) data_chunk random_bytes(size_t length) { std::random_device random; // Getting seed (system time) std::default_random_engine engine(random()); // MT19937 с 32-bit seed std::uniform_int_distribution distribution(0, 255); data_chunk result(length); for (auto& byte : result) byte = distribution(engine); return result; }
При вызове команды bx seed -b 256 | bx mnemonic-new пользователь ожидал получить 256 бит криптографически стойкой энтропии для генерации 24-словной мнемонической фразы BIP-39. Однако реальная картина была катастрофической:
Ожидаемая энтропия: 2^256 ≈ 1.16 × 1077
Фактическая энтропия: 2^32 ≈ 4.29 × 109
Редукция пространства поиска: в 1068 раз
2.3. Математическая формализация атаки
Формализуем уязвимость с использованием строгой математической нотации. Пусть:
E — энтропия (256 бит), генерируемая для создания кошелька
S — seed для MT19937, где S ∈ [0, 2^32)
f(S) — функция генерации последовательности MT19937 из seed S
trunc32(x) — извлечение первых 32 байт из последовательности
bip39(E) — преобразование энтропии в мнемоническую фразу
derive(m) — деривация приватного ключа из мнемоники по BIP-32
addr(k) — множество Bitcoin-адресов, дериватов приватного ключа k
Определение 2 (Уязвимость Milk Sad):
Существует такой seed S, что:
∃ k, S : trunc32(f(S)) ≡ E (mod 2^256)
такой что
addr(derive(bip39(E))) = Atarget
где Atarget — целевой Bitcoin-адрес.
Вероятность успешного восстановления при полном переборе пространства 2^32:
P(success) = 1 − (1 − 1/N)2^32
где N = 2^160 — общее количество возможных Bitcoin-адресов (P2PKH)
Поскольку 2^32 ≪ 2^160, вероятность ложного совпадения пренебрежимо мала, и при нахождении корректного seed P(success) ≈ 1.
2.4. Детерминированная цепочка преобразований BIP-39/BIP-32
После восстановления исходного 32-битного seed, процесс реконструкции приватного ключа становится полностью детерминированным согласно стандартам BIP-39 и BIP-32:
Генерация энтропии: seed → MT19937 → 256-битная псевдослучайная последовательность
Вычисление контрольной суммы: SHA-256(entropy) → первые 8 бит
Формирование мнемоники: (entropy || checksum) → 24 слова BIP-39
Деривация master seed: PBKDF2-HMAC-SHA512(mnemonic, «mnemonic» || passphrase, 2048 итераций) → 512-битный seed
Генерация master key: HMAC-SHA512(«Bitcoin seed«, master_seed) → (master_private_key, chain_code)
Иерархическая деривация: По пути BIP-44: m/44’/0’/0’/0/0 → конечный приватный ключ
Цепочка преобразований:
S32bit → MT19937 → E256bit → SHA256 → Mnemonic24words → PBKDF2 → Seed512bit → HMAC-SHA512 → (k, c) → BIP-44 → kfinal
3. Эффективность атаки RingSide Replay: вычислительный анализ
3.1. Оценка вычислительной сложности
Полное пространство поиска составляет 232 ≈ 4.29 × 109 возможных значений seed. При известной дате создания кошелька (или приблизительном диапазоне) пространство поиска может быть существенно сокращено:
Сокращение пространства при известной дате:
|Sday| = 86 400 (секунды в сутках)
Редукция: 232 / 86 400 ≈ 49 710 раз
Производительность на современном оборудовании:
ОборудованиеСкорость перебораВремя полного перебора 2^32CPU (Intel i9-13900K)~106 seeds/сек~71 минутаGPU (NVIDIA RTX 4090)~108 seeds/сек~43 секундыFPGA кластер~1010 seeds/сек< 1 секунды
3.2. Количественная оценка эффективности атаки
Эффективность атаки может быть выражена через отношение логарифмов пространств поиска:
Attack Efficiency = log₂(2^32) / log₂(2^256) = 32/256 = 0.125 = 12.5%
Это означает, что пространство поиска сокращается на 87.5% от теоретически безопасного уровня
Практическое применение: криптоинструмент BTCDetect
Научный анализ использования BTCDetect для восстановления приватных ключей
BTCDetect представляет собой специализированное программное обеспечение для криптоанализа и восстановления утерянных Bitcoin-кошельков, основанное на выявлении и эксплуатации уязвимостей в криптографических библиотеках. Инструмент реализует методологию атаки RingSide Replay Attack и обеспечивает практическую реализацию восстановления приватных ключей из уязвимых кошельков.
Архитектура BTCDetect
BTCDetect состоит из следующих основных модулей:
Модуль анализа энтропии: Обнаружение слабых источников случайности в процедурах генерации ключей
Модуль реконструкции PRNG: Воспроизведение состояния генератора Mersenne Twister по известным параметрам
Модуль деривации ключей: Реализация полной цепочки BIP-39/BIP-32 для восстановления ключей
Модуль верификации: Сопоставление восстановленных адресов с целевыми данными блокчейна
Алгоритм работы BTCDetect
Операционная модель BTCDetect включает три основных этапа:
Идентификация уязвимых кошельков:
Анализ временных меток транзакций
Определение вероятного диапазона создания кошелька
Идентификация паттернов, характерных для Libbitcoin Explorer
Перебор пространства seed:
Генерация кандидатов seed на основе временного диапазона
Параллельное вычисление цепочек BIP-39 → BIP-32
Сравнение полученных адресов с целевыми
Верификация и восстановление:
Подтверждение корректности восстановленного ключа
Проверка валидности подписей
Документирование результатов для криминалистического анализа
Практический пример восстановления
Рассмотрим задокументированный случай восстановления приватного ключа:
Bitcoin-адрес 1NiojfedphT6MgMD7UsowNdQmx5JY15djG
Стоимость восстановленных средств $61,025
Восстановленный приватный ключ (HEX)4ACBB2E3CE1EE22224219B71E3B72BF6C8F2C9AA1D992666DBD8B48AA826FF6B
Восстановленный ключ (WIF compressed) Kyj6yvb4oHHDGBW23C8Chzji3zdYQ5QMr8r9zWpGVHdvWuYqCGVU
Публичный ключ (сжатый)
03AE73430C02577F3A7DA6F3EDC51AF4ECBB41962B937DBC2D382CABB11D0D18CE
Валидация восстановленного ключа подтверждает его принадлежность к допустимому диапазону скаляров кривой secp256k1:
1 ≤ k < n
где n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
Научное значение BTCDetect
Методология BTCDetect имеет широкое научное применение, выходящее за рамки конкретной уязвимости Milk Sad:
Исследование классов PRNG-уязвимостей: Линейные конгруэнтные генераторы (LCG), небезопасные реализации random()
Криминалистический анализ блокчейна: Выявление паттернов компрометированных кошельков
Аудит криптографических библиотек: Обнаружение потенциальных уязвимостей до их эксплуатации
Образовательные цели: Демонстрация критической важности криптографически стойких ГПСЧ
Уязвимость хеш-функции Борромео
Порядок конкатенации данных (R || M || i || j) создаёт потенциальные возможности для атак с расширением длины (length extension attacks) в определённых сценариях.
6.1. Требования к генерации энтропии
Данная статья представляет детальный криптоанализ критической уязвимости, обозначенной как CVE-2023-39910, получившей кодовое название Milk Sad. Уязвимость обнаружена в популярной утилите Libbitcoin Explorer (версии 3.0.0–3.6.0), которая используется для создания и управления Bitcoin кошельками в офлайн-режиме. Основной дефект заключается в использовании криптографически небезопасного генератора псевдослучайных чисел Mersenne Twister-32 (MT19937), инициализируемого с помощью системного времени, что ограничивает пространство энтропии всего 32 битами. Данная работа рассматривает механизм атаки Ringside Replay Attack, которая позволяет злоумышленникам автоматизировать процесс восстановления приватных ключей Bitcoin кошельков, включая восстановление потерянных кошельков, если известно примерное время их создания. Научный анализ показывает, что уязвимость привела к компрометации более 227 200 уникальных Bitcoin адресов и краже криптовалют стоимостью более 900 000 USD. В статье подробно описаны математические основы атаки, методология восстановления приватных ключей и криптоинструмент BTCDetect, используемый для практической реализации восстановления. Также представлены рекомендации по защите и контрмеры для разработчиков и пользователей криптовалютных кошельков.
1. Значение проблемы с валидацией
Безопасность сети Bitcoin фундаментально основана на криптографии эллиптических кривых (ECDSA), в частности на использовании кривой secp256k1. Приватный ключ — это случайное 256-битное число, которое должно быть абсолютно непредсказуемым и уникальным для каждого Bitcoin адреса. Публичный ключ генерируется как точка на эллиптической кривой путём умножения генератора кривой G на приватный ключ:
Q = k · G, where k is the private key
Безопасность этого механизма полностью зависит от качества энтропии, используемой при генерации приватного ключа. Если генератор случайных чисел (RNG) является предсказуемым или имеет ограниченное пространство значений, злоумышленник может перебрать все возможные приватные ключи и восстановить криптографические секреты. Именно эта фундаментальная уязвимость и стала причиной катастрофы Milk Sad.
В июне-июле 2023 года на блокчейне Bitcoin было обнаружено необычное явление: множество кошельков, созданных в разные годы, начали опустошаться в одну и ту же дату, несмотря на отсутствие связи между их владельцами. Исследовательская группа Distrust провела детальный анализ и обнаружила, что все скомпрометированные кошельки имели одну общую черту — они были созданы с помощью команды bx seed из Libbitcoin Explorer версии 3.x.
2. История открытия уязвимости Milk Sad
Согласно исследованиям, было украдено более 900 000 USD стоимостью криптовалют (в том числе BTC, ETH, XRP, DOGE, SOL, LTC, BCH и ZEC). Позже, в 2025 году, команда Milk Sad обновила свой анализ и обнаружила, что количество скомпрометированных кошельков составляет более 227 200 уникальных Bitcoin адресов, что делает эту атаку одной из крупнейших в истории криптовалютной безопасности.
Расследование Milk Sad, начатое ранее в 2023 году, показало, что жертвы создавали свои кошельки на изолированных ноутбуках с Linux, используя команды в Libbitcoin Explorer. В каждом случае пользователи использовали bx для создания мнемонических фраз BIP39 из 24 слов, полагая, что инструмент обеспечивает достаточную случайность.
Одна из команд, использованных при генерации кошелька, выглядела так:
bx seed -b 256 | bx mnemonic-new
Она генерировала 256 бит энтропии, которые затем преобразовывались в мнемоническую фразу из 24 слов. Из-за несовершенства генератора случайных чисел, якобы безопасная мнемоника на самом деле была предсказуемой. Хотя жертвы Milk Sad создавали свои кошельки с разницей в несколько лет, следователи обнаружили, что каждый из них использовал одну и ту же версию Libbitcoin Explorer, которая неосознанно генерировала слабые закрытые ключи.
3. Теоретические основы криптографии Bitcoin и ECDSA
3.1 Кривая secp256k1 и стандарт ECDSA
ECDSA (Elliptic Curve Digital Signature Algorithm) — это криптографический алгоритм, основанный на эллиптической криптографии. В Bitcoin используется специфическая кривая, называемая secp256k1, которая определяется уравнением:
y² ≡ x³ + 7 (mod p) where p = 2^256 − 2^32 − 977
Кривая secp256k1 имеет порядок n ≈ 2^256, что означает, что существует приблизительно 2^256 возможных точек на кривой. Генератор G — это стандартная генерирующая точка для этой кривой, которая используется для всех вычислений в Bitcoin.
3.2 Процесс генерации приватного и публичного ключей
Процесс генерации ключевой пары в Bitcoin выглядит следующим образом:
Генерация энтропии: Генерируется 256-битное случайное число, которое служит приватным ключом k. Это число должно быть в диапазоне 1 ≤ k < n, где n — порядок базовой точки.
Вычисление публичного ключа: Публичный ключ Q вычисляется как Q = k · G, где · обозначает скалярное умножение на эллиптической кривой.
Генерация адреса: Bitcoin адрес получается путём хеширования публичного ключа и кодирования результата.
Критическим моментом является генерация энтропии на шаге 1. Если используется слабый генератор случайных чисел, то пространство возможных приватных ключей становится значительно меньше, чем 2^256, что позволяет злоумышленнику перебрать все возможные ключи и найти приватный ключ.
4. Mersenne Twister-32: архитектура и недостатки
4.1 История и описание алгоритма
Mersenne Twister (MT19937) — это генератор псевдослучайных чисел, разработанный Мацумото и Нишимурой в 1997 году. Алгоритм основан на линейной рекуррентной последовательности над конечным полем и генерирует последовательность 32-битных целых чисел. Алгоритм широко используется в немировых приложениях благодаря его хорошим статистическим свойствам и быстроте вычисления.
Однако Mersenne Twister категорически НЕ предназначен для криптографических приложений по следующим причинам:
Предсказуемость: Выходные значения RNG могут быть полностью восстановлены при наличии последовательности из 624 последовательных 32-битных выходов.
Уязвимость к анализу: Внутреннее состояние состоит из 624 32-битных целых чисел; если злоумышленник знает эти значения, он может предсказать все будущие выходы.
Отсутствие свойства криптографической стойкости: Алгоритм не обладает свойством, при котором невозможно вычислить i-й элемент последовательности без вычисления всех предыдущих элементов.
4.2 Использование Mersenne Twister в Libbitcoin Explorer 3.x
В коде Libbitcoin Explorer 3.x процесс генерации энтропии для создания новых кошельков реализован следующим образом:
Команда bx seed использует эту функцию для генерации начальной энтропии при создании новых Bitcoin кошельков. Вот типичный вызов:
bx seed -b 256 | bx mnemonic-new
Эта команда должна была бы создать 256 бит случайной энтропии, которая затем преобразуется в 24-словную BIP-39 мнемоническую фразу. Однако из-за ограничения в 32 бита реального пространства энтропии от std::random_device, вся мнемоническая фраза может быть восстановлена при известном времени создания кошелька.
5. Математические основы атаки Ringside Replay
5.1 Принцип 1: Ограниченное пространство энтропии
Пространство возможных значений seed для MT19937 ограничено 2^32 комбинациями (приблизительно 4.3 миллиарда возможных значений). Это означает, что всё пространство энтропии может быть перебрано за несколько дней на обычном ПК.
Пространство поиска = 2^32 ≈ 4.29 × 10^9 возможных значений
5.2 Принцип 2: Предсказуемость по времени создания
Если известна дата создания кошелька (или примерный диапазон дат), пространство поиска может быть дополнительно сокращено. Системное время, используемое для инициализации MT19937, может быть восстановлено с высокой вероятностью, если известны:
Год создания кошелька
Месяц/день (если известны из истории транзакций)
Приблизительное время суток
Сокращение пространства поиска до диапазона дат, например за один день, уменьшает количество попыток примерно в 86 400 раз (количество секунд в дне).
5.3 Принцип 3: Детерминированное преобразование в приватный ключ
После восстановления исходной 256-битной энтропии её преобразование в приватный ключ полностью детерминировано согласно стандартам BIP-39 и BIP-32:
Энтропия → SHA-256 контрольная сумма → 24-словная BIP-39 фраза
BIP-39 фраза + пассфраза → PBKDF2-HMAC-SHA512 (2048 итераций) → 512-битный мастер seed
Мастер seed → HMAC-SHA512("Bitcoin seed") → мастер приватный ключ + цепной код
5.4 Формальное математическое определение уязвимости
Пусть:
E — энтропия, которая должна быть генерирована (256 бит)
S — seed для MT19937, где S ∈ [0, 2^32)
f(S) — функция, которая генерирует MT19937 последовательность из seed S
trunc_32(x) — функция, которая берёт первые 32 байта из последовательности MT19937
bip39(E) — преобразование энтропии в BIP-39 мнемонику
derive(m) — преобразование мнемоники в приватный ключ
addr(k) — множество всех возможных Bitcoin адресов, дериватов из приватного ключа k
Уязвимость определяется как:
∃ k, S : trunc_32(f(S)) ≡ E (mod 256)
такой что addr(derive(bip39(E))) = A_target
где A_target — целевой Bitcoin адрес.
5.5 Вероятность успешного восстановления
При перебор полного пространства 2^32:
P(success) = 1 − (1 − 1/N)^(2^32) where N = 2^160 is the total number of possible Bitcoin addresses (for P2PKH addresses)
Поскольку 2^32 << 2^160, вероятность ложного совпадения ничтожно мала, и P(success) ≈ 1 при нахождении правильного seed.
6. Процесс восстановления приватного ключа
6.1 Алгоритм восстановления ключа
Процесс восстановления приватного ключа для скомпрометированного Bitcoin кошелька состоит из следующих этапов:
Определение диапазона дат: Из истории транзакций определяется примерная дата создания кошелька. Это может быть известная дата или диапазон от нескольких месяцев до года.
Перебор значений seed: Для каждого дня в диапазоне дат перебираются все возможные значения seed, соответствующие временным меткам этого дня (86 400 значений в день).
Генерация энтропии: Для каждого значения seed генерируется последовательность MT19937, из которой извлекаются первые 32 байта, интерпретируемые как энтропия.
Преобразование в мнемонику: Сгенерированная энтропия преобразуется в BIP-39 мнемонику.
Деривация приватного ключа: Мнемоника преобразуется в приватный ключ согласно BIP-32 иерархии.
Генерация адреса: Из приватного ключа генерируется соответствующий Bitcoin адрес.
Проверка совпадения: Если сгенерированный адрес совпадает с целевым адресом, то восстановление считается успешным.
6.2 Сложность вычислений
На современном оборудовании (например, GPU NVIDIA RTX 3090):
Если известна точная дата: примерно 86 400 проверок = несколько минут на одном GPU
Если известен год: примерно 365 × 86 400 ≈ 31 536 000 проверок = несколько часов на одном GPU
Если используется полное пространство 2^32: примерно 4 294 967 296 проверок = несколько дней на одном GPU
Данные расчёты показывают, что восстановление приватного ключа практически осуществимо даже для непрофессиональных злоумышленников.
7. Реальный пример: восстановление ключа адреса 1NiojfedphT6MgMD7UsowNdQmx5JY15djG
7.1 Исходные данные компрометации
Рассмотрим задокументированный случай восстановления приватного ключа из Bitcoin-адреса 1NiojfedphT6MgMD7UsowNdQmx5JY15djG:
Bitcoin адрес 1NiojfedphT6MgMD7UsowNdQmx5JY15djG Стоимость восстановленных средств $ 61.025
Восстановленный приватный ключ (HEX) 4ACBB2E3CE1EE22224219B71E3B72BF6C8F2C9AA1D992666DBD8B48AA826FF6B
Восстановленный приватный ключ (WIF compressed) Kyj6yvb4oHHDGBW23C8Chzji3zdYQ5QMr8r9zWpGVHdvWuYqCGVU
Восстановленный приватный ключ (Decimal) 95490713496748161492785334010456634825357659290488148536925849552527657999353
7.2 Валидация ключа в пространстве secp256k1
Приватный ключ k должен удовлетворять ограничению:
1 ≤ k < n where n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 ≈ 1.158 × 10^77
Результат проверки: ✓ ВАЛИДЕН (ключ находится в допустимом диапазоне скаляров)
7.3 Вычисление публичного ключа и адреса
Восстановленный приватный ключ позволяет вычислить публичный ключ:
Публичный ключ (несжатый, 130 символов) 04BC79D7CC638214D0FE1902A8F3A0EEC3F2B41F5792043559AD6161D23467C234BCD34142146FF3E0DF1648A2B83F392B738AF7598C5B137C2A4500B6E12CECFD Публичный ключ (сжатый, 66 символов) 03AE73430C02577F3A7DA6F3EDC51AF4ECBB41962B937DBC2D382CABB11D0D18CEBitcoin адрес (uncompressed) 1NiojfedphT6MgMD7UsowNdQmx5JY15djG
7.4 Практическое значение восстановленного ключа
Восстановленный приватный ключ предоставляет полный контроль над Bitcoin-кошельком, позволяя злоумышленнику:
Создавать и подписывать транзакции для вывода всех средств на контролируемый адрес
Импортировать ключ в любой Bitcoin кошелек (Electrum, Bitcoin Core, MetaMask и т.д.)
Полностью захватить контроль над адресом и всеми его активами
Скрыть следы компрометации путём удаления всех логов и истории
8. Криптоинструмент BTCDetect: архитектура и возможности
8.1 Общее описание BTCDetect
BTCDetect — это программное обеспечение, разработанное для восстановления утерянных биткойн-кошельков путём применения методов криптоанализа и выявления уязвимостей в криптографических библиотеках, таких как SharpECC. SharpECC — это библиотека C# для работы с эллиптической криптографией (ECC), которая лежит в основе генерации ключей и подписей в экосистеме Bitcoin.
Несмотря на свою популярность, SharpECC имеет ряд критических уязвимостей и ошибок, которые могут служить точками входа для восстановления закрытых ключей утерянных кошельков.
Отличие BTCDetect от традиционных методов восстановления
BTCDetect работает на уровне уязвимости криптографической реализации, что отличает его от традиционных методов восстановления:
Seed фраза (BIP-39)24 или 12 слов мнемоники Восстановление всех ключей в иерархии Резервные копии (wallet.dat) Файл wallet.dat Восстановление всех кошельков Прямой ввод ключей Приватный ключ (WIF или HEX)Контроль над конкретным адресом BTCDetect
9. Контрмеры и рекомендации
9.1 Немедленные действия для пострадавших пользователей
⚠️ Для пользователей, которые создали Bitcoin кошельки с использованием Libbitcoin Explorer 3.x:
Немедленная миграция средств:
Создать новый кошелек с использованием криптографически безопасного метода генерации энтропии
Перевести все средства на новый адрес
Уничтожить или использовать старый адрес только для мониторинга
Проверка компрометации:
Использовать инструменты анализа для проверки, не был ли конкретный адрес скомпрометирован
Проверить, нет ли неавторизованных транзакций из кошелька
Восстановление потерянных средств:
Если кошелек был создан в известную дату, можно использовать методы восстановления для получения приватного ключа
Перевести восстановленные средства на безопасный кошелек
10. Выводы и перспективы исследований
10.1 Ключевые выводы исследования
Уязвимость CVE-2023-39910 (Milk Sad) демонстрирует критическую важность правильной генерации энтропии в криптографических приложениях. Несмотря на то что использование Mersenne Twister-32 было документировано как небезопасное, множество разработчиков и пользователей не обратили внимание на предупреждения, что привело к масштабной компрометации более 227 200 Bitcoin кошельков.
Итоговое заключение
Криптографические системы и ошибки реализации связаны не с теоретической зрелостью, а с банальными инженерными просчетами. Без постоянного аудита, использования только криптографически безопасных библиотек генерации случайных чисел и оперативного реагирования на инциденты риски в криптовалютных системах всегда будут фатальными и системными. Атака Milk Sad — это суровый научный урок для всей криптовалютной индустрии: один слабый компонент может нарушить целостность всей системы.
References:
Polycurve Extraction Attack: A polycurve extraction attack (CVE-2023-39910) leads to private key recovery and theft of Bitcoin funds, where an attacker is able to gain control of BTC funds through a libbitcoin flaw. Polycurve Extraction Attack The core of the libbitcoin crypto library contains a critical vulnerability: an elliptic curve point received from outside the library fails a full mathematical check to determine…Read More
Video tutorial: https://dzen.ru/video/watch/69431d5dfd50136dae291001
Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.
PAYEER. Санкции
Вот санкции добрались и до кошелька PAYEER.
Новость на сайте payeer.com.
По информации от ютубера Александра Зимина (ссылка на канал https://youtube.com/@user-migivara?si=TBVlWxzXg782b6Uv) при выводе крупных сумм требуют подтверждать личность. Я сегодня вывел без проблем. Но не понятно, что будет дальше. Поэтому желательно всем пользователям вывести оттуда свои средства.
Неужели PAYEER соскамится?
Что такое блокчейн и криптовалюта простыми словами
Если вы слышали слова «биткоин», «блокчейн» или «криптовалюта», но думали, что это что-то невероятно сложное, эта статья для вас. Давайте разберем все на самых простых примерах.
Часть 1: Что такое Блокчейн? (Волшебный общедоступный дневник)
Представьте себе большой общий дневник, который есть у тысяч людей по всему миру.
1. Он публичный и прозрачный.
Это не секретная тетрадка под подушкой. Любой человек может в любой момент посмотреть, какие записи в нем есть. Кто, кому и сколько переслал.
2. Записи в него вносятся «блоками».
Представьте, что каждая страница этого дневника — это «блок». На этой странице записывается куча новых транзакций (например, «Вася перевел Пете 100 монет», «Маша перевела Оле 50 монет»).
3. Страницы скреплены между собой.
А теперь самое главное: каждая новая страница содержит заголовок, в котором написан специальный код («хеш»), вычисленный из содержимого предыдущей страницы. Это как если бы на странице 2 было написано: «А продолжение здесь, смотри страницу 1». Таким образом, все страницы (блоки) выстраиваются в цепочку (chain). Отсюда и название — Blockchain (Цепочка блоков).
Почему это так надежно?
Подделать почти невозможно. Если злоумышленник захочет изменить запись на странице 1 (например, написать, что Вася перевел не 100, а 1000 монет), то код (хеш) этой страницы мгновенно изменится.
Но ведь на странице 2 указан код от старой страницы 1! Получается нестыковка. Цепочка разорвется.
Чтобы обмануть систему, мошеннику придется переписать не одну страницу, а ВСЕ последующие страницы у ВСЕХ участников сети одновременно. Это невероятно дорого и требует гигантской вычислительной мощности.
Итог по блокчейну: Это способ хранить информацию так, чтобы ее никто не мог подделать. Это не обязательно деньги — туда можно записывать данные о недвижимости, документах, голосованиях. Но самое известное применение — криптовалюты.
Часть 2: Что такое Криптовалюта? (Деньги из этого дневника)
Теперь представим, что в нашем общем дневнике-блокчейне мы договорились вести учет не абстрактных «монет», а конкретных цифровых денег. Это и есть криптовалюта (например, Биткоин, Эфириум).
Чем она отличается от обычных денег?
Нет центрального банка. Вашими рублями на карте управляет банк, а банком — государство. Криптовалютой никто не управляет. Сеть поддерживают сами пользователи по всему миру.
Вы — свой собственный банк. Ваши деньги лежат не в банке, а в вашем личном кошельке. Кошелек — это специальная программа или устройство, которое хранит ваши секретные ключи (пароли) для доступа к вашим деньгам в блокчейне.
Это и плюс, и минус. Если вы потеряете пароль от кошелька, никто не сможет вам помочь восстановить его. Деньги пропанут навсегда. Ответственность только на вас.
Откуда берутся криптовалюты?
Обычные деньги печатает государство. Криптовалюты «добываются» в процессе майнинга.
Вернемся к нашему дневнику. Кто имеет право записать новую страницу (блок)? Чтобы система была честной, пользователи соревнуются в решении очень сложной математической задачи. Тот, кто первый ее решит, получает право добавить новый блок в цепочку и в награду получает новые монеты. Этот процесс и называется майнингом (добычей).
Простая аналогия, чтобы связать все вместе
Представьте, что блокчейн — это огромная общедоступная таблица Google Sheets с историей всех переводов.
Она у всех на виду.
Каждая новая строка ссылается на предыдущую.
Изменить старую запись нельзя, потому что это сразу увидят все.
А криптовалюта (например, Биткоин) — это просто единица измерения в этой таблице, которой люди договорились доверять и которую стали использовать как деньги.
Краткая шпаргалка
Блокчейн - Большой публичный дневник для записей, который никто не может подделать.
Криптовалюта - Цифровые деньги, которые живут внутри этого дневника.
Биткоин - Первая и самая известная криптовалюта, работающая на блокчейне.
Крипто кошелек - Программа, которая хранит ваши ключи (пароли) от ваших денег в блокчейне.
Майнинг - Процесс «добычи» новых монет путем поддержания работы блокчейна.
Надеюсь, теперь эти понятия стали вам немного ближе и понятнее! Это действительно революционная технология, которая меняет наше представление о доверии и деньгах.
OZON украл 34 тыс рублей и ответил, что не собирается их возвращать
UPD:
Деньги разморозили. Ответ от озона в комментариях. Покупки оформляются. Спасибо, как всегда нашим Пикабушникам!
Выводы по поводу использования сертификата делайте сами, но однозначно деньги лучше!
Мне на работе подарили сертификат на сумму 50 тыс рублей. Сертификаты мне дарили часто, такая у нас внутренняя мотивация сотрудников. Премии конечно не будет🥲, но вот сертификат или нечто подобное заслужить можно. Радость от предстоящих покупок(точнее радость что не придется тратить зарплату после отпуска на сборы детей в школу). Начинаю делать заказы. Первые 16 тыс потрачены. На следующий день выясняю что ребёнку пора новые кроссовки заказывать. Кидаю товар в корзину, нажимаю оплатить с моего баланса и…..: «произошла ошибка. Обратитесь в службу поддержки.»
Ну думаю глюк какой. Вечером из дома попробую снова. Дома повторяется та же история и я таки начинаю писать в поддержку. Хотя писать это громко сказано. Сначала там 100500 кнопок ,которые тебе предлагают шаблонные ответы, но только что бы ты сам ничего не вздумал написать. Пишу,описываю проблемы на что получаю следующую копипасту:
Дарья Дмитриевна, здравствуйте.
На вашем аккаунте действует ограничение в определённых действиях. Назвать точную причину нет возможности, так как это внутренние критерии компании.
При создании аккаунта на нашем сайте вы согласились с условиями использования. В них мы предупреждаем о возможности применения ограничений, связанных с безопасностью, а также технического характера.
И оператор тут же выходит и просить оценить его работу. ⭐️⭐️⭐️⭐️⭐️
Кстати аккаунт 2010 года. Сомневаюсь, что на тот момент были условия ,при которых можно завладеть чужими деньгами без объяснения причин.
Попытка номер 2 написать в чат:
Дарья, на вашем аккаунте действует ограничение в определённых действиях. Назвать точную причину нет возможности, так как это внутренние критерии компании.
При создании аккаунта на нашем сайте вы согласились с условиями использования. В них мы предупреждаем о возможности применения ограничений, связанных с безопасностью, а также технического характера.
Вам по-прежнему доступна большая часть функционала личного кабинета, за исключением некоторых действий. Повлиять на ограничения нет возможности.
Спасибо за обращение!
Оцените работу сотрудника ⭐️⭐️⭐️⭐️⭐️
То есть они включают на аккаунт какую-то повышенную безопасность,но! Все карты работают, покупки вы делать можете, можете даже ЕЩЕ денег нам прислать, а те, что лежат на балансе трогать вам больше нельзя. Я стала думать, может причина в том, что я сидела в приложении озон в другой стране во время отпуска? Но хорошо, у меня есть посадочные и ваучеры- я могу их приложить.
ОкАй. Попытка 3
Дарья, спасибо за ожидание.
На аккаунте действуют ограничения, использовать деньги с баланса для оплаты не получится.
При опасениях, что подарочный сертификат был получен или активирован способом, носящим мошеннический характер и/или нарушающим права Ozon и/или третьих лиц, Ozon вправе заблокировать аккаунт на сайте, списать с баланса средств сумму, активированных таким образом сертификатов, и отменить заказы, оплаченные с использованием указанных денег без возмещения.
Подробнее с правилами и условиями можно ознакомиться здесь: https://ozon.ru/t/gr7NEE8
Мы всегда на связи и готовы помочь.
Оцените сотрудника ⭐️⭐️⭐️⭐️⭐️
Теперь, как мы видим, речь уже не о безопасности моего аккаунта, а меня подозревают в мошеннических действиях и угрожают еще снять денег с моих карт.
Хорошо, я могу доказать что сертификат был получен законным путем. Что начальник мне не родственник, он может приложить чек об оплате, я могу показать трудовую книжку, что я работаю в этой организации, хотите- даже письмо предоставим, что сертификат был подарить данному сотруднику. Я не покупала сертификат сама себе, не покупала его у третьих лиц на сторонних сайтах. Все это я могу доказать и объяснить.Пишу эту информацию им.
Ответ #4:
Здравствуйте, Дарья.
Вам по-прежнему доступна большая часть функционала личного кабинета, за исключением некоторых действий. Повлиять на ограничения нет возможности.
Будем благодарны если отнесетесь с пониманием😟
Спасибо за обращение.
Хорошего вам вечера и всего доброго.
Оцените сотрудника ⭐️⭐️⭐️⭐️⭐️
Ну мы денег вам не вернем,ну понять и пРРРРастить, веселитесь там, не грустите там.
Все следующие попытки общения- это те же шаблоны по кругу. Телефона у озона давно нет. Телеграмм отправляет в этот же чат ☝️. В VK они отвечают по 12-30 дней.
На некоторых форумах нашла людей с точно такой же проблемой и у всех сумма блокировки в среднем от 20 до 100 тыс. Как будто озон специально отслеживает денежные аккаунты и блокирует их без причины, в надежде завладеть потом деньгами. В моем случае у меня все произошло быстро и у меня есть целый год, чтобы бороться за возвращение своих денег. Но имейте в виду, что теперь сертификат у вас могут отобрать, а сверху на за него еще и списать денег с ваших карт. И плевал озон на законы. У них, как и у вб - свои правила, которые они выдумывают через день.
(Буду благодарна, если кто-то еще знает информацию, куда им можно написать. Прошу прощения за ошибки и конечно же ждём копипасту от OZON здесь.Как думаете какой # шаблона вставят?)
Ответ на пост «Мысли о цифровом рубле»1
ТС, ты прикольный... Не в том что пугаешь народ цифровой деньгой, а в том что думаешь шо ситуация тупиковая....
Ну давай поприкалываемся:
1. " и придумал бог деньги и дал их человекам" эт какой стих Книги Чисел? Чо нет такого? Воще нет? Ни в Танахе, ни в Евангелии, ни в Коране? Как так?
2. "цифровые деньги" эт не только Рупь. Эт много чего "цифрового" что готовы принять в качестве оплаты за блага материальные и за услуги.
3. Цифровой рубль" это возможность" тотального контроля" за самим Рублём. Но не за людьми. Если в СССР были теневой рынок, теневой бизнес то и платёжные средства тож были теневые. И если нет возможности вести расчёты в рубле, то будут расчёты в... **придумай сам***...
4. Рублём пользуются кто? Правильно, космонавты. Ну ещё там немного бюджетные работники, типа врачи, силовики, учителя, водители трамваев и т.д. и п.р...
А если речь о взятках да откатах? А наркота тож за цифровой рубль? А "специалисты" из ближнего и неочень зарубежья, тож З.П в цифповых рупьлях получать будут? Или в трудоднях?
А контингент "мест не столь отдалённых как " грев" и сотовые телефоны получит? За цифровой рубль?
Или в оборот войдут армянские чо там? Лари? И тому-подобное?
5. А в какие У. Е." Оллигаркхи" деньги за рубеж выводить будут? В цифрорубле?
6. А за цифровой доллар слышал?
Я вот как та не слышал.... Что угодно - Биткоин, USDT, SOL, но не цифробакс. Почему? Потому что отказать в приёме некоторого объёма бумажной массы баксов проще в виду кучи причин, чем быть обязанным отвечать за мутные сделки с оружием, наркотой и рабами по всему миру.
7. Ну и есчо "цифровой прикол", тут Греф деньги пенсионеров отданные мошенникам, не может найти, а прикинь если у всех цифровых денех вдруг один и тотже номер появится? Или пароли от цифровых кошельков сотрутся нехорошими людьми?
Так что цифровой рубль в Магните и Пятёрочке - понятно, а вот на рынке - непонятна...
Мысли о цифровом рубле1
Вообще вся эта тема с цифровизацией денег всерьёз настораживает всех, кто хоть раз открывал Откровение Иоанна Богослова, особенно его тринадцатую главу, где говорится о пришествии антихриста:
> «
И дано ему было вложить дух в образ зверя, чтобы образ зверя и говорил, и действовал так, чтобы убиваем был всякий, кто не будет поклоняться образу зверя.
И он сделает то, что всем — малым и великим, богатым и нищим, свободным и рабам — положено будет начертание на правую руку их или на чело их.
И что никому нельзя будет ни покупать, ни продавать, кроме того, кто имеет это начертание, или имя зверя, или число имени его.
Здесь мудрость. Кто имеет ум — сочти число зверя, ибо это число человеческое; число его — шестьсот шестьдесят шесть» (Откр. 13:15–18).
📲 Сегодня «вложить дух в образ зверя» и «убивать всякого, кто не поклонится» вполне возможно с помощью цифровых технологий.
Монитор с видеокамерой (читай: смартфон) способен отслеживать всё. А «убийство» уже не требует выстрела — достаточно стереть аккаунт человека из единой базы.
Такой человек не сможет ни покупать, ни продавать, не сможет законно существовать в государстве — будет обречён на изгнание, рабство или, в крайнем случае, утилизацию (донорство органов и пр.).
> «В начале было Слово…» (Ин. 1:1)
*А в конце будет — цифра. «666». *
💳 Деньги уже давно не являются деньгами в классическом смысле.
На банкнотах написано не «рубль», а «билет Банка России» — то есть, долговая расписка, гарантия, что за этой бумагой стоят некие материальные резервы.
Это как если бы я вам был должен 100 рублей и вместо купюры дал расписку: «обязуюсь отдать».
Сегодня «деньги» держатся на нашей вере в то, что за этой распиской — что-то есть.
А за цифровой валютой?
Набор нулей и единиц, существующих ровно до того момента, пока вас не отключили от розетки.
Отключили интернет или свет — и всё. Карта в руках, но купить уже ничего нельзя.
Да, цифровая экономика будет прозрачной, быстрой и удобной.
Именно этим нас и завлекают. Но где гарантия, что однажды ты не проснёшься — и у тебя на счету ноль?
Скажут: «произошёл сбой в системе».
А может, это и не сбой вовсе, а целенаправленная зачистка.
📉 Вся система хранит за собой возможность репрессий. Как это уже бывало — в 1917-м и после.
Только теперь человек — это не личность, а цифровой профиль.
А последствия… додумайте сами.
❗️Нужно помнить:
этот мир рано или поздно подойдёт к своему логическому самоуничтожению.
И не стоит слишком радоваться всей этой цифровой «радости» — она исчезнет в один миг.
👉 Деньги, которые есть в руках, пока ещё имеют смысл только тогда, когда преобразуются в реальные вещи или добрые дела ради Христа.
Иначе — ни бумага, ни цифра не имеют никакой ценности.
Копить их — всё равно что запасать воздух.
Хотя, если подумать, воздух даже материальнее, чем цифровой рубль.
Оригинал https://t.me/lemeshko_av/5982
Ответ на пост «Pyypl - всё. Теперь уже официально, для СНГ и навсегда»1
Март 2025. Pyypl внезапно действительно признал то, чего никогда не хотел признавать. Тогда выпуск карт был прекращен на теневом уровне - ответ по email развеивал ситуацию с пустым экраном в приложении. Теперь - официально точно всё: оператор закрыл доступ и к личным кабинетам, как новым, так и существующим. Фокус с казахстанским номером телефона не прошёл - Казахстан, Беларусь, Узбекистан и остальные страны СНГ также в чёрном списке.
А тем временем независимый от Pyypl проект под названием PyyplBot выпускает свои, национальные карты Visa и Mastercard.


















