Google намеревается в браузере Chrome резко ограничить доверие SSL-сертификатам, выпущенным удостоверяющим центром Symantec. Это касается и других брендов Symantec: GeoTrust и Thawte, главным образом, а также прочих “партнёрских” линеек. Речь идёт о принудительном снижении допустимого срока валидности (не более девяти месяцев – коммерческие сертификаты обычно выпускаются на год и более, это одна из их важных особенностей) и отключении EV-статуса (“расширенная проверка”, самые дорогие сертификаты). Это реакция на выявленные нарушения политик и требований к работе УЦ.



Комментарии (1) »

Достаточно давно (больше семи лет назад) я уже писал о том, что аппаратные закладки можно активировать и в системах, которые к “внешним” вычислительным сетям не подключены, но обрабатывают информацию, поступающую извне. Вообще, введение в модель угроз подобных особенностей оборудования до сих пор встречается нечасто (если речь не идёт о полноценной РЭБ, конечно). Так, разговоры про защиту автоматических систем управления на производстве (АСУ ТП) регулярно сводятся к предложению “установить антивирус” на ПК и тщательно проектировать “сетевые соединения”, а это всего лишь защита от угроз из прошлого, да ещё и сложившихся на других платформах (“офисные системы”), отстающая на один шаг от реальности.

Развитие даже потребительской техники движется в сторону освоения новых сред распространения сигналов и, потенциально, передачи программного кода. Например, обработка голосовых команд давно стала стандартной функцией, однако эти команды могут передавать и одни устройства другим. Причём, не обязательно имитировать человеческий голос, хотя данное направление выглядит весьма занимательно. Есть решения, в которых данные передаются незаметно для пользователя, ультразвуковыми сигналами. Сейчас активно формируется новая среда передачи данных между большим количеством различных устройств. В этой среде нет брандмауэров и сетевых фильтров. Микрофон системы управления “умным домом” не может не принимать сигнал напрямую, иначе им было бы невозможно пользоваться. Побочный эффект: теперь динамики телевизора могут излучать сигнал, транспортирующий инъекцию кода в “умный дом”. Предполагать, что акустический сигнал не может содержать кода вторжения – примерно столь же наивно, как считать, что любые файлы .PDF можно абсолютно безопасно открывать, так как они изначально не являются исполняемыми. Заметьте, что голосовые команды – они уже команды, то есть, в самой концепции прямо связаны с управляющим кодом системы (и реализуются соответственно).

Возникает новое пространство, новые транспортные каналы, слабо связанные с классическими решениями – проводными и беспроводными (WiFi). Естественно, не только акустические: есть немало электромагнитных вариантов (разнообразные радиоканалы Интернета вещей), и даже “офлайновые” схемы – графические коды (QR и пр.). Всё эти каналы подходят для передачи, в том числе, вредоносного кода между большим количеством устройств. А привычный периметр защиты, который уже давно является весьма размытым, скоро будет стёрт окончательно.



Комментарии (2) »

В криптографической библиотеке для Arduino используется российский шифр “Магма” (ГОСТ 34.12-2015). Я сравнил свою реализацию “Магмы” из библиотеки с другим “малым” шифром – Speck, который был предложен в 2013 году специалистами АНБ. Чтобы сравнение было точнее, я также реализовал Speck, использовав inline-ассемблер (ссылка на исходный код – в конце записки).

Прежде всего – краткое описание шифра Speck. Это новый блочный шифр, специально разработанный для программной реализации в микроконтроллерах, то есть, вычислителях с сильно ограниченными ресурсами. Как и многие другие современные шифры (а также и “Магма”), Speck построен на базе простой “раундовой” функции, которая последовательно вызывается с разными ключами, проводя преобразование блока данных. В Speck эта же функция используется для разворачивания основного ключа в последовательность ключей раундов. Это первое существенное отличие от “Магмы”, в котором разворачивание ключа сводится к копированию (см. описание “Магмы”). Спецификация Speck вводит несколько вариантов шифра, имеющих разную разрядность блока и ключа. Я использовал наиболее близкий к “Магме” вариант: 64-битный блок и 128-битный ключ (256-битного, по ключу, варианта Speck для 64-битного блока – нет, поэтому сравнить шифры на одной длине ключа нельзя). От варианта к варианту в Speck различаются количество раундов и часть параметров раундовой функции (разрядность логических сдвигов).

На картинке ниже – подробная схема раунда Speck (шифрование).

Входной блок разбивается на две части. Это, опять же, одно из распространённых и хорошо проверенных решений в схемах шифров. Левая часть (A1 на схеме) циклически сдвигается вправо на 8 разрядов, суммируется с правой частью (A0) по модулю 232 (то есть, как два 32-разрядных числа “естественным образом”, без переноса и знака; операция обозначена символом ⊞). На следующем шаге выполняется сложение по модулю 2 (XOR, ⊕) с раундовым ключом. После чего результат обработки полублока суммируется (опять же, XOR) со вторым полублоком, который перед этим циклически сдвигается на три разряда влево.

В шифре “Магма” используется схема Фейстеля, в которой полублоки, после применения раундовых преобразований, переставляются. Раунд шифра Speck также можно привести к схеме Фейстеля, разделив на два этапа. Первый этап включает преобразования левой части, за которыми следует перестановка полублоков. Схема:

Второй этап – состоит в применении сдвига и XOR к результату первого этапа. Схема:

То есть, с некоторой долей условности можно сказать, что Speck построен из двух, применяемых последовательно, конструкций Фейстеля.

Раунды выполняются циклически. Для используемого варианта шифра число повторений равняется 27. Таким образом, требуется 27 раундовых ключей, каждый разрядностью 32 бита. Схема их получения из исходного, 128-битного, ключа состоит в последовательном применении той же раундовой функции к ключу, предварительно разбитому на слова, разрядность которых совпадает с разрядностью полублока. То есть, 128-битный ключ (16 байтов) даёт нам четыре слова по 32 бита. Эти слова служат левым и правым полублоком в раундовой функции. Ключом (Ki на схеме) при этом является номер раунда. Другими словами: первый раундовый ключ – это младшие 32 бита исходного, основного ключа (используются прямо). Второй раундовый ключ – младшие 32-бита результата применения раундовой функции к младшим 64 битам основного ключа (очевидно, что сюда, в качестве правого полублока, входит первый раундовый ключ); и так далее, подробнее можно посмотреть в исходном коде.

Переходим к сравнению шифров. Ассемблерная реализация позволяет посчитать примерное число тактов, необходимых для выполнения преобразований шифра. Для Speck подсчёт дал 1951 такт – столько занимает полная реализация, с обращением к памяти, где хранятся раундовые ключи и блок открытого текста, с выгрузкой результата. Сюда не входит код получения последовательности раундовых ключей (развёртывания ключа). 1951 такт, в пересчёте на байт данных (блок состоит из 8 байтов), даёт: 1951/8 = 244 такта на байт (приблизительно). В исходной работе, со спецификацией Speck, авторы приводят результат от 118 до 160 тактов для аналогичного 8-разрядного микроконтроллера, но здесь не учитываются операции по загрузке/выгрузке блоков, так что результаты довольно близки (кроме того, мой вариант можно оптимизировать).

Реализация “Магмы” из библиотеки для Arduino показывает следующие результаты: 9092 такта полный код, соответственно, 1136 (приблизительно) тактов на байт (отмечу, что показатели близки к реализациям AES). Существенный вклад в это число вносит реализация подстановок, где много обращений к памяти с достаточно сложными преобразованиями указателей. Этот код можно оптимизировать, вплоть до того, что сами подстановки разместить в регистрах (для 16 полубайтовых подстановок, закрывающих одну позицию во входном полублоке, достаточно восьми байтовых регистров; однако вся таблица подстановок в регистрах типичного микроконтроллера вряд ли поместится – для неё нужно 64 регистра). Правда, вычисление номера регистра и обращение к нему потребует дополнительных усилий, объём кода заметно возрастёт, а для “Магмы” он и так не маленький. Тем не менее, вряд ли выигрыш по тактам составит более двух раз. Из-за подстановок – “Магма” медленнее, чем Speck, тут ничего нельзя поделать.

Другим параметром, по которому можно сравнить шифры, является объём требуемой памяти данных. Для Speck нужно 108 байтов для раундовых ключей. Реализация “Магмы” требует 128 байтов (здесь больше раундов – 32). При этом, если требуется экономия памяти, “Магма” позволяет прямо использовать в качестве раундовых ключей слова из состава основного ключа. Со Speck такой фокус не пройдёт, потому что здесь сложная функция разворачивания ключа. Однако оптимизация всё равно возможна: раундовые ключи можно вычислять в процессе выполнения раундов шифра. Впрочем, такой вариант приведёт к тому, что минимум в два раза возрастёт число тактов, поэтому Speck приблизится к “Магме”. Для хранения таблицы подстановок “Магма” требует ещё 8*8=64 байта.

Реализация “Магмы” существенно превышает показатели Speck по объёму кода. И тот, и другой шифр вполне укладываются в разумные рамки, но код шифра Speck – очень компактный. Побайтового сравнения объёмов я не привожу.

Итак, “Магма” уступает Speck по показателям, относящимся к программной реализации. Неудивительно: “Магма” очень старый шифр, разработанный ещё в 70-х годах прошлого века. Как ни странно, в этом состоит его преимущество, если говорить об оценках стойкости. Этот шифр до сих пор входит в рекомендации ГОСТ и для него пока не опубликовано криптоанализа, существенно снижающего стойкость, хотя сломать шифр пытались многократно. Speck – новый шифр, выполненный в современных традициях, задуманный специально для микроконтроллеров, этим обусловлены его преимущества. Для данного шифра также пока не опубликовано криптоанализа, существенно снижающего стойкость (известные работы – предлагают академические атаки, не пригодные для практических сценариев), но нужно учитывать малое распространение и новизну шифра. Отмечу также, что Speck далеко не единственный новый шифр, ориентированный на “Интернет вещей”, однако является одним из самых простых, быстрых и компактных. Тем не менее, преимущество в скорости и возможность экономии нескольких десятков байтов – не всегда являются решающими факторами, в том числе, для устройств с малой вычислительной мощностью. Например, в случае передачи раз в час команд от устройства к устройству, разница в несколько миллисекунд, требующихся для получения криптограммы, не играет роли. (С другой стороны, каждый такт – это расход энергии элемента питания, что может оказаться существенным для устройств с экстремально низким энергопотреблением.)

В ГОСТ на средства криптографической защиты информации уже есть весьма современный шифр “Кузнечик”, сходный с AES. Однако и “Кузнечик”, и AES – не очень хорошо подходят для микроконтроллеров, так как быстрая реализация этих шифров требует довольно большого объёма памяти, который доступен далеко не для всех платформ, кроме того, часто требуются короткие криптограммы (64 бита). Вполне возможно, что в обозримом будущем в стандартах появится новый российский шифр, ориентированный именно на маломощные вычислители.

Приложение: исходный код реализации Speck для Arduino (только зашифрование), также содержит дополнительные функции для шифрования тестового вектора и проверки правильности работы.



Комментарии (2) »

Предположим, что требуется организовать скрытное прослушивание разговоров при помощи смартфона. Разговоры владельца должны записываться без его ведома и передаваться во внешнее хранилище. Понятно, что в смартфоне есть микрофон (а также динамик). Но мы не ищем лёгких путей, наша схема интереснее: в технических требованиях к ней заявлена устойчивость к анализу аппаратной и программной части смартфона. Так что от прямой записи сигнала микрофона специальным приложением, которое по расписанию прямо транслирует накопленную информацию в хранилище, придётся отказаться – подобное решение будет тут же выявлено.

Можно оснастить смартфон каким-то штатным элементом, для которого преобразование звуковых колебаний будет являться недокументированной возможностью. На такую роль годится практически всякий осциллятор, выполненный так, что воздействующие на него звуковые волны приводят к сдвигу частоты генерации – получаем частотную модуляцию. Механическим приёмником звукового давления может быть тонкая металлическая крышка (мембрана), которая выглядит как штатный экран, защищающий от помех. Схемотехника устроена таким образом, что крышка, вместе с размещёнными под ней элементами, превращается в микрофон (дополнительный). При этом сам элемент-микрофон естественным образом вписан в архитектуру телефонного аппарата: это может быть какой-нибудь задающий генератор, выделенный фильтр, или элемент усилителя – вариантов немало. Полезный акустический сигнал, после преобразования в электрический, маскируется под помеху и проходит к цифровым схемам, где “случайно” преобразуется всего лишь в один бит, который прямо кодирует принимаемую частоту. В качестве несущей может выступать достаточно высокая (относительно полосы речевого сигнала) частота, например, 1 МГц, что позволяет уверенно выделять речь из “помехи”, разрядностью в один бит.

Модуляция, наводимая колебаниями мембраны, считывается тем или иным процессором в качестве “ошибки”. Результат фильтруется, сжимается с использованием некоторого кодека, записывается в память. Вовсе не обязательно использовать для решения этих задач основной процессор смартфона – тем более, что это может вызвать подозрения. Процессоров и микроконтроллеров в современном смартфоне немало, годится модуль GPS или WiFi: очень хорошо подходит всякий сигнальный процессор, потому что обработка интересующих нас данных тут может быть хорошо замаскирована – она производится системным программным обеспечением модуля (“прошивкой”), которое исследовать весьма непросто, и которое невидимо даже для основной операционной системы.

Пусть кодирование речевого сигнала с приемлемым уровнем качества требует (с запасом) 500 байт/сек. Периоды, когда ничего не слышно, не пишутся, поэтому активности в сутки будет где-то часов пять, в самом напряжённом графике. Тогда требуемый объём памяти для хранения данных за сутки составит: 3600*5*500=9*106 байтов, или около 9 Мбайт/сутки. Сохранять такой объём в современном смартфоне труда не составляет: типичные объёмы памяти измеряются гигабайтами. Естественно, хранить запись можно незаметно для пользователя, например, зарезервировав часть памяти. И девять мегабайт – это очень большой объём речи, подавляющее большинство сценариев использования будут выдавать меньше.

Как незаметно передать несколько мегабайт информации? Неплохим вариантом является маскировка данных под случайные – шум. Для этого достаточно шифровать выходной поток, соответственно, он будет практически неотличим от (псевдо)случайных данных. Хорошим носителем для дальнейшей передачи данного “шума” являются цифровые изображения – фотографии, сделанные встроенной камерой. В них, кстати, полезный сигнал и записываться может без ведома операционной системы, непосредственно в схемах камеры. Фотографии загружаются “в облако”. Получаем стеганографический канал. Обнаруживать наличие скрытых данных может только та сторона, у которой есть соответствующий секретный ключ – для всех других “шум” выглядит как шум, обычный для цифровых камер. Проблема лишь в том, что “плотность записи” в подобных стеганографических схемах невелика, не более нескольких процентов от объёма данных, выступающих в роли носителя. Соответственно, чтобы передать 10 мегабайт скрытых данных, потребуется исходящий трафик вплоть до 500 Мбайт. С другой стороны, все 9 мегабайт разом можно было бы передать в виде одной “испорченной” фотографии – данная схема вполне реализуема, так как её тоже можно замаскировать под сбой (главное, чтобы пользователь не удалил фотографию раньше, чем она будет загружена “в облако”).

Естественно, есть и другие способы передачи “дополнительной нагрузки” на сервер: блоки с данными можно прицеплять к загружаемым “в облако” файлам как “мусор” – целый ряд широко используемых форматов позволяют так делать. Не вызывая излишних подозрений можно передавать до 20% от файла носителя, что, соответственно, уже укладывается в типичные объёмы исходящего трафика.

Таким образом, смартфон формирует нетривиальный канал утечки, а выявить данную недокументированную возможность весьма сложно (но возможно), даже если проводится исследование аппаратной части. Естественно, простой анализ приложений и операционной системы – не покажет вообще ничего подозрительного.



Комментарии (2) »

Исследователи из Google и института CWI продемонстрировали первую практическую коллизию для криптографической хеш-функции SHA-1. SHA-1 уже несколько лет считается недостаточно стойкой, но, тем не менее, до сих пор широко используется (в том числе, в SSL-сертификатах, несмотря на все ограничения). На специальном сайте shattered.it можно скачать два файла PDF, которые отличаются содержанием, но имеют одинаковое значение SHA-1 (каждый может проверить самостоятельно). Несмотря на сложность реализации этой конкретной атаки, которая потребовала больших вычислительных мощностей (они нашлись у Google), SHA-1 теперь можно окончательно признать нестойкой. Это весьма важное достижение – казалось, что SHA-1 простоит ещё пару лет.

Вместо SHA-1 следует использовать, например, хеш-функции семейства SHA-2: SHA-256 и др.



Комментарии (7) »

В корпоративных сетях нередко применяются системы DLP (Data Loss Prevention), которые должны предотвращать утечки конфиденциальной информации. (Иногда почему-то считается, что основная задача DLP не предотвращение утечек, а их обнаружение; однако, если утечка произошла, это означает лишь, что система DLP не сработала.) Предотвращение утечек подразумевает перекрытие каналов, по которым эти утечки могут происходить. В самом банальном варианте – блокируется передача данных через сетевые подключения (но не приём). Или рабочее место, где возможен доступ к защищаемым данным, физически не подключено к сетям передачи данных. Ну и так далее, вариантов много, а продвинутая система ещё должна следить за доступом к данным, а не только “трафик просматривать”.

Возможны всякие неожиданные каналы утечки, создаваемые при участии инсайдера. Предположим, что никакие устройства подключать к ПК нельзя – порты физически закрыты. Пользователь может принести небольшое устройство с собой, но не подключать его к ПК. Передать данные на это устройство можно разными способами (это кроме обычных каналов побочных излучений). Есть отработанные варианты с мигающим изображением на мониторе: даже небольшое изображение, несколько десятков пикселей, может передавать в считывающее устройство данные на заметной скорости в несколько килобит в секунду. Устройство считывает сигнал даже не при помощи камеры, а используя набор светочувствительных элементов. В самом простом случае – элемент может быть один, и устройство просто прикладывается к монитору. (Кстати, по такой схеме работают некоторые устройства двухфакторной авторизации.) Впрочем, скорость здесь будет совсем маленькой, всего несколько байтов в секунду.

Предположим, что данные передаются со скоростью один килобит, это, примерно, 100 полезных байтов в секунду (потребуется израсходовать часть полосы на коррекцию ошибок и служебную информацию) – тогда за час можно скопировать около 350 килобайт информации. Не очень много, но, если взять объём за рабочий день, достаточно для многих типов конструкторской документации или дампов баз данных клиентов. Да, очевидно, что в качестве аппаратного носителя схемы годится смартфон, но смартфоны могут быть запрещены, а компактный считыватель, выполненный в виде шариковой ручки, пронести возможно.

Возникает вопрос, как на изолированный ПК попадёт программа, преобразующая данные в динамическое изображение? Скорее всего, такую программу пользователю придётся реализовать в той или иной доступной среде разработки. На практике, многие стандартные средства обработки данных предоставляют нужные функции, так как они эквивалентны выводу на экран графиков и диаграмм. Если пользователь не обладает нужной квалификацией, то он может просто заучить текст, или принести с собой шпаргалку.

Многообещающее направление – это автоматизированное внедрение готовой программы, проведённое каким-то нестандартным способом. Например, пользователю доступна штатная утилита аудиозаписи, входящая в дистрибутив ОС, а ПК оснащён встроенным микрофоном. Тогда код программы можно передать через аудиоканал, а для декодирования, опять же, использовать имеющиеся средства обработки данных. Чуть более оригинальное решение – устройство, аппаратно подключаемое к клавиатуре или мыши: передавать код оно может через срабатывание клавиш или кнопок. Тут, впрочем, опять возникает вопрос преобразования некоторого сигнала в код (или исходный текст) программы – для этого нужна подходящая утилита. Естественно, напрашивается готовый полноценный клавиатурный эмулятор (или эмулятор мыши, хотя он тут подходит гораздо хуже), но это широко известный вектор аппаратной атаки на ПК, поэтому считаем, что подключение мыши и/или клавиатуры ограничено физически.

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



Комментарии (8) »

Современный смартфон уже содержит акселерометры и (или) гироскопы, планируется оснащать смартфоны и более продвинутыми датчиками и сложными сенсорами, вплоть до химических анализаторов. Получается сеть из приборов, которые могут измерять параметры окружающей среды. (Заметьте, что некоторые параметры смартфон может измерять и сейчас: например, уровень шума.) Идеи о том, что подобная распределённая сеть может обнаружить немало интересного – довольно старые: несколько лет назад предлагалось массово использовать смартфоны с датчиками ионизирующих излучений для мониторинга радиационной обстановки.

Предположим, что популярная модель смартфона передаёт собранные данные для анализа в центр, находящийся под контролем производителя (сейчас это принято называть “загрузить в облако”). Тогда производитель получает неплохой источник информации о том, что происходит в окружающей среде по всему миру. В смартфоне есть точные часы и привязка к местности (GPS), а данные можно передавать в режиме онлайн.

При необходимости данные измерений можно передавать скрытно, используя стеганографию. Объёмы информации там небольшие, поэтому скрытый сигнал можно подмешивать в обычный IP-трафик. Требуется только односторонняя передача, а значит, снимать полезную нагрузку можно на любом узле, через который проходит трафик. Вовсе не обязательно, чтобы данные прямо отправлялись на некоторый специально выделенный сервер, с заданным адресом. Это могут быть обычные пакеты, адресованные на безобидный “хостинг картинок”. Впрочем, если не предпринимать дополнительных мер по защите, то возможность такой передачи данных может быть обнаружена путём анализа программного кода. Сильно усложнить анализ может правильно выбранное аппаратное решение: ведь датчики должны взаимодействовать с прочими компонентами телефона, иначе в них нет смысла. При этом, вопрос сокрытия передачи данных в существенной мере касается того, как эти датчики связаны с прочей аппаратной частью.



Комментарии (2) »

Очередной раз попались выпущенные Symantec TLS-сертификаты для доменов, администраторы которых эти сертификаты не запрашивали (*.example.com, test.com и пр.) Как уточняет Symantec – сертификаты выпустила одна из компаний-партнёров, и это были тестовые сертификаты. То, что они тестовые – вполне очевидно из состава полей, но при этом сертификаты валидные. Сертификаты были выпущены в 2015 и 2016 годах, сейчас те, что обнаружились, отозваны.

Конечно, считается, что тестовые сертификаты не должны покидать пределы тестового окружения, кроме того, их рекомендуется выпускать с ограничениями, а не для произвольных имён. Система “тестирования”, которая позволяет через партнёрский интерфейс выпустить сертификат для любого домена – выглядит довольно подозрительно, потому что очередной раз подтверждает наличие у удостоверяющего центра внешнего API, пригодного для быстрого выпуска валидных сертификатов для любых доменов, без ведома администраторов этих доменов. Такие сертификаты полезны для использования в перехватывающих TLS прокси.



Комментарии (4) »

В теории, квантовые компьютеры достаточной разрядности позволят быстро вычислять дискретные логарифмы, а это означает, что сломаются распространённые сейчас криптосистемы электронной подписи, в том числе, ECDSA. На ECDSA основана работа современной версии криптовалюты Биткойн. ECDSA здесь используется для удостоверения транзакций, то есть, необходима для того, чтобы потратить средства, находящиеся на том или ином адресе. Для удостоверения транзакции требуется знать секретный ключ из пары, связанной с биткойн-адресом.

Биткойн-адрес является значением хеш-функции RIPEMD-160 от открытого ключа ECDSA. То есть, сама по себе возможность “обращать” ECDSA (быстро вычислять по известному открытому ключу секретный) не позволяет “ломать” произвольные адреса: для того, чтобы получить открытый ключ, нужно будет вычислить прообраз значения RIPEMD-160, а это трудная задача даже для квантового компьютера. Безопасный способ потратить средства состоит в использовании каждого биткойн-адреса для расходования биткойнов только один раз: транзакция разбивается на две части – одна отправляется на адрес получателя платежа, а вторая – на новый адрес, созданный для хранения остатка средств.

Операция расходования средств требует указания открытого ключа в явном виде: с его помощью другие участники сети проверяют валидность операции. Это означает, что для всякой новой транзакции возникает следующая угроза: атакующий, вооружённый квантовым компьютером, может перехватить транзакцию, быстро вычислить секретный ключ, и сгенерировать свою, подменную транзакцию, в которой самостоятельно распорядится средствами. Перехватить новую транзакцию нужно до того, как она будет включена в блокчейн и, вообще говоря, окажется в нём на глубине хотя бы в один блок. Проделать это реально, так как в P2P-сети Биткойн транзакции передаются в открытом виде. После того, как атакующий получил секретный ключ и сформировал свою подменную транзакцию, возможны два варианта: если есть возможность, то атакующий может заблокировать отправку оригинальной транзакции и заменить её на свою, в таком случае, контроль над средствами сразу достаётся ему; если заблокировать отправку транзакции не получается, то подменная транзакция может быть отправлена в сеть как “конкурирующая”, а это даёт большие шансы на успех атаки, так как майнеры могут принять подменную транзакцию первой, что приведёт к последующей отмене оригинальной, легитимной транзакции.

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



Комментарии (2) »
Навигация по запискам: Раньше »