Cryptology Academy · Урок

Схемы подписей DSA и ECDSA

Сравните подписи RSA с DSA и вариантом на основе эллиптических кривых

Урок 3 из 413 шагов

«Схемы подписей DSA и ECDSA» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Добро пожаловать

DSA и ECDSA — альтернативные схемы подписей, основанные на сложности задачи дискретного логарифмирования. ECDSA доминирует в современных системах благодаря меньшим ключам и более быстрым операциям.

Обзор DSA

DSA (NIST, 1994) использует циклическую группу простого порядка q внутри Z*p. Генерация ключей: закрытый ключ x; открытый ключ y = g^x mod p. Стандарт: p длиной 2048 бит, q — 256 бит.

Алгоритм подписи DSA

1. Generate random nonce k (1 < k < q) 2. r = (g^k mod p) mod q 3. s = k^(-1) × (Hash(M) + x×r) mod q 4. Signature: (r, s)

Проверка DSA

1. u1 = Hash(M) × s^(-1) mod q 2. u2 = r × s^(-1) mod q 3. v = (g^u1 × y^u2 mod p) mod q 4. Valid if v == r

Уязвимость одноразового числа DSA

Если одно и то же k используется дважды, две подписи имеют общий r. По двум парам (r,s1) и (r,s2) закрытый ключ x можно вычислить напрямую. Это уничтожило безопасность PS3: значение k=1 использовалось каждый раз.

Обзор ECDSA

ECDSA — это DSA, реализованный на группе эллиптической кривой вместо Z*p. Кривая обеспечивает сопоставимый уровень безопасности при гораздо меньших параметрах: ECDSA-256 ≈ DSA-3072 по уровню безопасности.

ECDSA в Python

from cryptography.hazmat.primitives.asymmetric import ec from cryptography.hazmat.primitives import hashes private_key = ec.generate_private_key(ec.SECP256R1()) sig = private_key.sign(message, ec.ECDSA(hashes.SHA256())) public_key = private_key.public_key() public_key.verify(sig, message, ec.ECDSA(hashes.SHA256()))

Детерминированный ECDSA (RFC 6979)

RFC 6979 детерминированно получает k из закрытого ключа и хеша сообщения. Это устраняет зависимость от генератора случайных чисел и делает повторное использование одноразового числа невозможным. Все современные реализации используют RFC 6979.

EdDSA: Ed25519

Ed25519 (DSA на кривой Эдвардса) использует скрученную форму кривой Эдвардса Curve25519. Детерминирован по конструкции. Выполняется за постоянное время. Быстрее ECDSA. Рекомендуется для новых протоколов (ключей SSH, TLS 1.3, Signal).

Сравнение размеров ключей

Подпись RSA-2048: 256 байт. Подпись ECDSA-256: около 71 байта. Подпись Ed25519: 64 байта. Открытый ключ Ed25519: 32 байта. Разница в размере важна для устройств с ограниченными ресурсами.

Стандартные кривые

NIST P-256 (secp256r1): TLS, соответствие FIPS. secp256k1: Bitcoin, Ethereum. Curve25519/Ed25519: Signal, WireGuard, более новые версии SSH. Brainpool: некоторые европейские стандарты.

Быстрая проверка

Какая катастрофическая уязвимость возникает при повторном использовании одноразового числа k в DSA/ECDSA?

Итоги

Теперь Вы понимаете DSA, ECDSA и Ed25519. Далее мы изучим, как цифровые подписи защищают реальные приложения: подписание кода и электронной почты.
Можно начать бесплатно

Изучай Cryptology Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
67
Уроки
261

Часто задаваемые вопросы

Урок «Схемы подписей DSA и ECDSA» бесплатный?

Да — полный текст урока «Схемы подписей DSA и ECDSA» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Схемы подписей DSA и ECDSA»?

Сравните подписи RSA с DSA и вариантом на основе эллиптических кривых Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Схемы подписей DSA и ECDSA»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что такое цифровая подпись
  2. Подписи RSA: создание и проверка
  3. Схемы подписей DSA и ECDSA
  4. Подписи в реальном мире: подпись кода и электронной почты
← Назад к Cryptology Academy