Сравнение подписей на предмет отклонений
ECDSA позволяет подписанту делать выбор при создании корректной подписи, включая nonce, временное значение, используемое при подписании. Вредоносная прошивка может использовать эту свободу, чтобы спрятать ключевой материал в подписях, которые по-прежнему проходят проверку, а BIP461 фиксирует эти выборы с помощью заданной детерминированной процедуры.
То, что Bitcoin принимает подпись, не может подтвердить, что при её создании ключ оставался в безопасности. Общая спецификация задаёт ожидаемый результат, с которым можно сверить поведение подписанта.
Сравнение требует одинаковых входных данных и точно того же стандарта, в том числе доступа к секретному ключу на другом независимом подписанте. Это дополнительное раскрытие является практической ценой воспроизведения подписи. Разные результаты для одного и того же ключа и хэша сообщения показывают, что хотя бы один подписант не следует BIP461.
Честная реализация, использующая другую корректную процедуру ECDSA, тоже может дать расхождение. Несовпадение требует проверки соответствия стандарту, но его причина остаётся неясной. Само сравнение не может определить вредоносное устройство или доказать кражу.
Предписанный алгоритм также ограничивает подписи максимумом 70 байтами в стандартной кодировке DER, не считая однобайтового флага sighash Bitcoin.
В раскрытии информации о Dark Skippy указывалось, что повреждённая прошивка может встраивать начальный материал (seed) в подписи транзакций. В своём первоначальном раскрытии исследователи сообщили, что не наблюдали этот метод в реальных атаках.
Первоначальная демонстрация Dark Skippy использует подписи Schnorr, тогда как BIP461 описывает ECDSA. Taproot использует отдельную схему Schnorr по BIP340, поэтому этот черновик напрямую не стандартизирует решение для данной демонстрации.
В обсуждении мер защиты исследователи предупреждали, что вредоносный подписант может допускать утечку только в отдельно выбранной транзакции, поэтому устройство может создавать корректные подписи в тесте и допускать утечку в другой транзакции.
На сентябрьском слиянии рецензент заявил, что для перевода BIP461 в статус «Complete» нужны тестовые векторы и эталонная реализация.
Для пользователей кошельков его потенциальная ценность состоит в общем эталоне, который может сделать отклонения видимыми. Реализация этой ценности по-прежнему зависит от соответствующих стандарту реализаций и сравнений, которые учитывают как ограничения обнаружения, так и риски обращения с секретными данными.
