Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ed25519-unsafe-libs — Список небезопасных библиотек для подписи ed25519 | Kitploit
Инструменты/GitHubGitHub/mystenlabs/ed25519-unsafe-libs
Анализ уязвимостейЭксплуатацияКриптографияСтатьи и ИсследованияОбучение и ОбразованиеПодобранные Ресурсы
GitHubmystenlabs/ed25519-unsafe-libs

ed25519-unsafe-libs

Список небезопасных библиотек для подписи ed25519

Репозиторий
25035602 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

ed25519-unsafe-libs

Атака Oracle на функцию подписи с двойным открытым ключом в Ed25519

Список потенциально небезопасных библиотек подписи ed25519, которые предоставляют публичный API, позволяющий передавать секретный и открытый ключи независимо друг от друга в качестве входных данных функции подписи. Неправильное использование этих публичных API может привести к раскрытию закрытого ключа.

Большинство репозиториев из нашего анализа перечислены в IANIX :: Что использует Ed25519.

Количество затронутых библиотек: 45
Количество библиотек, исправивших проблему после объявления: 8
последнее обновление: 4 мая 2023 г.

Реализации Proof of Concept, демонстрирующие эту потенциальную уязвимость:

  • Rust: ed25519-chalkias-exploit
  • Python: Уязвимость Ed25519 в Python, Buchanan, William J (2022). Уязвимость Ed25519 в Python (восстановление закрытого ключа). Asecuritysite.com.

Доклады:

  • Приглашённый доклад в Криптографическом читательском клубе Национального института стандартов и технологий США (NIST): слайды — Укрощение множества EdDSA (стр. 28–39), Konstantinos Chalkias, François Garillot, Valeria Nikolaenko (2023). Укрощение множества EdDSA и атаки на подписи Ed25519.

Освещение этой атаки в новостях и социальных сетях

  • Криптографический читательский клуб NIST «Укрощение множества EdDSA» (8 марта 2023 г.)
  • The Daily Swig «Десятки криптографических библиотек уязвимы к краже закрытых ключей» (28 июня 2022 г.)
  • Risky Biz News «Новая криптоуязвимость: десятки криптографических библиотек неправильно реализовали алгоритм цифровой подписи Ed25519» (28 июня 2022 г.)
  • Пост в блоге SafeHeron «Анализ рисков использования Ed25519: закрытый ключ вашего кошелька может быть украден» (17 июня 2022 г.)
  • kryptera.se «Уязвимость в большинстве библиотек ed25519» (на шведском языке) (29 июня 2022 г.)
  • Difesa e Sicurezza & Yoroi «Librerie crittografiche ed25519 potenzialmente non sicure» (на итальянском языке) (1 июля и 29 июня 2022 г.)
  • Пост на Medium от профессора Билла Бьюкенена OBE «Ed25519 отличный, но ...» (1 июля 2022 г.)
  • Reddit r/crypto (лучший пост месяца — 18 июня 2022 г.)
  • Reddit r/cryptography (17 июня 2022 г.)
  • Интересные твиты:
    • твит 1 (автор: Kostas Kryptos — «Первоначальные 26 уязвимых библиотек»)
    • твит 2 (автор: Kostas Kryptos — «Последствия для 40 уязвимых библиотек»)
    • твит 3 (автор: Catalin Cimpanu — «40 криптографических библиотек затронуты одной и той же ошибкой реализации Ed25519»)
    • твит 4 (автор: Kenny Paterson — «Потенциальная возможность массового восстановления закрытых ключей EdDSA, ср. http://kopenpgp.com, где тот же вектор использовался в OpenPGP-библиотеках»)
    • твит 5 (автор: Steven Galbraith — «Риск для детерминированных подписей: лучше проверять, что это корректный открытый ключ!»)
    • твит 6 (автор: Riyaz Faizullabhoy — «Если вы используете EdDSA в продакшене, пожалуйста, обратите внимание»)
    • твит 7 (автор: Bart Preneel — «Напоминание о том, что безопасная и корректная реализация криптографических алгоритмов — это сложно»).
  • CTF-задачи (capture the flag), демонстрирующие эту атаку:
    • ImaginaryCTF — JWT25519 (200 очков) (30 июня 2022 г.)

В чём суть проблемы?

Обратите внимание, что в обычном случае, согласно соответствующему rfc8032, подписи EdDSA детерминированы, и, таким образом, для одного и того же входного сообщения возвращается уникальный результат подписи, включающий два элемента: точку на кривой R и скаляр S.

Алгоритмическая деталь состоит в том, что открытый ключ подписывающего участвует в детерминированном вычислении только части S подписи, но не значения R. Последнее означает, что если бы злоумышленник каким-либо образом смог использовать функцию подписи как Oracle (принимающий произвольные открытые ключи на вход), то для одного и того же сообщения можно было бы получить две подписи с одинаковым R, различающиеся только частью S. К сожалению, когда это происходит, закрытый ключ можно легко извлечь; этот пост на StackOverflow объясняет, почему это возможно.

Тем не менее, публичные API НЕ должны допускать передачу раздельной пары закрытый/открытый ключ в качестве входных данных для подписи. Чтобы обойти это, многие реализации хранят открытый ключ вместе с закрытым ключом (или сидом) и считают всю пару ключей секретом ЛИБО всегда повторно вычисляют открытый ключ внутри функции подписи. К сожалению, большое количество существующих библиотек не решают эту проблему, допуская передачу произвольных открытых ключей на вход без проверки соответствия входного открытого ключа входному закрытому ключу.

Конечно, это не означает, что все приложения, зависящие от этих библиотек, подвержены атакам с раскрытием ключей; на самом деле большинство из них, вероятно, безопасны, поскольку обычно не предоставляют затронутый API своим пользователям и связывают пару открытый/закрытый ключ непосредственно перед вызовом sign. С другой стороны, даже когда эти API не открыты, существуют приложения с разными стратегиями модели угроз TCB в отношении того, как управляются и хранятся закрытые и открытые ключи. Тем не менее, чтобы предотвратить эту атаку, разработчикам следует также обеспечить протокол защиты целостности и для открытых ключей.

Здесь мы перечисляем некоторые затронутые библиотеки вместе с соответствующими ссылками на код.

Неправильное использование API Ed25519, приводящее к извлечению ключа Рис. 1. Пример неправильного использования API в Rust-крейте ed25519-dalek.

Затронутые библиотеки

  • C: OpenGNB
    https://github.com/gnbdev/opengnb/blob/master/libs/ed25519/sign.c#L7

  • C: GNU Nettle
    https://github.com/gnutls/nettle/blob/fe7ae87d1b837e82f7c7968b068bca7d853a4cec/ed25519-sha512-sign.c#L43

Скачать инструмент