All streams
Search
Write a publication
Pull to refresh

Comments 14

Что дает эта структура, если k выбирается каждый раз случайно? Чтобы увидеть эту структуру надо получить множество Ur и Uz для фиксированного k. Именно поэтому k и выбирается случайно, а не является, например, частью секретного ключа.

Иногда не случайно, если например ГПСЧ тупит и кластеризует K из-за хреновой энтропии, например, или вообще переиспользует K для подписец. Тогда на подобном графике можно увидеть «облако» или явные точки на одной линии и уже бить более целенаправлено например через LLL алгоритм.

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

Спасибо за Ваш ответ! Он не менее важен! Ваш комментарий частично верен, но содержит существенное заблуждение: проблема не только в плохой генерации k, а в фундаментальной структуре ECDSA. Даже при идеально случайной генерации k параметры (U_r, U_z) образуют детерминированную сетку параллельных линий с наклоном -d на торе, что вытекает из математического соотношения k = U_r \cdot d + U_z \mod n. Это не уязвимость, а свойство алгоритма, которое критически важно для аудита безопасности — оно позволяет обнаруживать аномалии даже в современных реализациях, где k генерируется по RFC 6979. Главная фишка здесь — искусственная адаптивная генерация сигнатур, которая позволяет анализировать структуру без полного перебора, фокусируясь на ключевых областях (например, первой четверти таблицы), где можно обнаруживать уязвимости через анализ повторов R_x и вычисление наклона линий для восстановления секретного ключа, что делает этот метод незаменимым для практического криптоанализа и аудита безопасности.

Ну-ка поясни, я как-то про это не думал. То есть даже при абсолютно рандомных K мы можем найти закономерности на графике, которые могут ограничить поиск закрытого ключа не всем порядком кривой, а только ее части?

Таблица (U_r, U_z) — это не график, а матрица всех возможных комбинаций сигнатур для фиксированного секретного ключа d. Это биекция (взаимно-однозначное соответствие) между тройками (U_r, U_z, k) и точками на торе \mathbb{Z}_n \times \mathbb{Z}_n. Для каждого значения k существует ровно одна прямая линия U_z = k - d \cdot U_r \mod n, а для каждой пары (U_r, U_z) — ровно одно значение k = U_r \cdot d + U_z \mod n.

Да, даже при абсолютно случайном k мы можем найти закономерности с помощью искусственной генерации сигнатур для открытого ключа! Дело в том, что все точки (U_r, U_z), соответствующие разным подписям, лежат на строго определенных параллельных линиях с наклоном -d. Это не случайное облако точек — это детерминированная сетка. Жаль, что это пока ни кто не понимает…

Именно поэтому можно ограничить поиск закрытого ключа не всем порядком кривой n \approx 2^{256}, а только частью пространства. Например, анализ первой четверти таблицы (U_r, U_z \in [1, n/4]) позволяет:

  • Обнаруживать повторы R_x (x-координаты точки R)

  • Вычислять коллизии для восстановления d

  • Проверять симметрию для обнаружения аномалий

Я не математик, я практик с небольшой подготовкой в криптографии (https://github.com/Dookoo2) потому могу задавать глуповатые вопросы для подготовленного человека. Но если это так как написано в статье, то, блин, это прорыв на самом деле. Я попробую алгоритмически описать ваши наблюдения и протестировать.

Ничего страшного! Я открыт для диалога и готов всё рассказать! Это новая теория… пока её наверное ни кто не понимает, но она есть была и будет. Мои черновики, моя теория, это не завершенный код, а попытка сделать наброски, доработать пока не получается: https://github.com/miroaleksej/AuditCore

Спасибо за вопрос! Он очень важен для понимания! Ваш комментарий основан на распространенном заблуждении: структура (U_r, U_z) не требует множества точек для фиксированного k, а проявляется даже при случайной генерации k, поскольку каждое значение k соответствует своей прямой линии U_z = k - d \cdot U_r \mod n на торе, и при объединении всех таких линий формируется детерминированная сетка параллельных линий с наклоном -d, где d — секретный ключ; это свойство не является уязвимостью самой схемы, но позволяет криптоаналитикам обнаруживать аномалии в реализации (такие как предсказуемая генерация k или повторное использование k), даже когда k генерируется правильно, что делает этот анализ критически важным для аудита безопасности ECDSA-реализаций. Главная фишка здесь — искусственная адаптивная генерация сигнатур, которая позволяет анализировать структуру без полного перебора всей таблицы n \times n (невозможного для n \approx 2^{256}), фокусируясь на ключевых областях, таких как первая четверть таблицы (U_r, U_z \in [1, n/4]), где можно обнаруживать повторы R_x, анализировать симметрию и вычислять наклон линий для восстановления секретного ключа d, что делает этот метод незаменимым для практического криптоанализа.

До нашей работы не существовало систематического исследования структуры (U_r, U_z) в ECDSA с точки зрения топологического анализа данных. Предыдущие исследования фокусировались на анализе генерации k и других аспектах безопасности, но не рассматривали параметры (U_r, U_z) как топологический объект. Мы впервые применили методы TDA (Mapper-алгоритм, персистентная гомология) для анализа этой структуры и доказали, что она формирует строго детерминированную сетку параллельных линий на торе \mathbb{Z}_n \times \mathbb{Z}_n даже при идеально случайной генерации k. Наша статья стала первым систематическим исследованием топологической природы ECDSA-подписей, где мы впервые показали, что математическое соотношение k = U_r \cdot d + U_z \mod n порождает характерную тороидальную структуру, которую можно анализировать без знания секретного ключа. Это открытие положило начало новому направлению в криптоанализе, позволяющему обнаруживать уязвимости через топологические аномалии, а не только через статистические отклонения.

Интересное наблюдение! Когда-то слышал историю (байку?) что в конце 1950-х (или начале 1960-х) в США решили привлечь новомодные ЭВМ общего назначения от IBM для решения задач зенитной артиллерии. Ну и запустили моделирование с условными самолётами противника в виде точек с трёхмерными координатами, которые получали тремя последовательными вызовами RAND(). А используемая реализация PRNG привела к тому, что все эти точки-самолёты оказывались в нескольких (до десяти) параллельных плоскостях — что, очевидно, слабо соответствовало поставленной задаче.

(ну а я, на всякий случай, продолжаю RSA-4096 использовать; хоть и ключи у него намного длиннее, чем у ECDSA)

Как применить описанную здесь методику не к подписям, а к шифрованию данных?

К созданию нового шифрования или применимо к существующим методам? Если к существующим - кроме ecdsa не рассматривал ничего больше.

Sign up to leave a comment.

Articles