Криптография на эллиптических кривых (ECC)

Система криптографии с открытым ключом, безопасность которой основана на математической сложности задачи дискретного логарифма на эллиптических кривых (ECDLP), обеспечивая эквивалентную RSA защиту при значительно меньших размерах ключей.

Постквантовая миграция: NIST стандартизировал ML-KEM (Kyber) и ML-DSA (Dilithium) как преемников ECDH и ECDSA. TLS 1.3 внедряет гибридный обмен ключами (X25519+Kyber).

        graph LR
  Center["Криптография на эллиптических кривых (ECC)"]:::main
  Pre_cryptography["cryptography"]:::pre --> Center
  click Pre_cryptography "/terms/cryptography"
  Pre_asymmetric_encryption["asymmetric-encryption"]:::pre --> Center
  click Pre_asymmetric_encryption "/terms/asymmetric-encryption"
  Rel_private_key["private-key"]:::related -.-> Center
  click Rel_private_key "/terms/private-key"
  Rel_public_key["public-key"]:::related -.-> Center
  click Rel_public_key "/terms/public-key"
  Rel_public_key_cryptography["public-key-cryptography"]:::related -.-> Center
  click Rel_public_key_cryptography "/terms/public-key-cryptography"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Простыми словами

Представьте магическое умножение, которое легко выполнить в одну сторону, но невозможно обратить. Вы умножаете специальную точку на кривой на секретное число (ваш приватный ключ) и получаете публичную точку (ваш открытый ключ). Но если кто-то знает только публичную точку и исходную точку, восстановление вашего секретного числа заняло бы больше времени, чем возраст Вселенной — даже с суперкомпьютером. Эта односторонняя математика и делает ECC такой мощной.

🤓 Expert Deep Dive

Групповая структура: y² ≡ x³ + ax + b (mod p). Параметры secp256k1: a=0, b=7, p = 2²⁵⁶ - 2³² - 977. Эквивалентность размеров ключей (NIST SP 800-57): 256-бит ECC = 3072-бит RSA (128-бит уровень безопасности). Curve25519: разработана Даниэлем Бернштейном для реализации с постоянным временем — без ветвлений на секретных данных — устойчива к тайминг-атакам. X25519 обязательна в TLS 1.3. Бэкдор Dual_EC_DRBG (2013): документы Сноудена раскрыли предполагаемый бэкдор АНБ в генераторе случайных чисел NIST на основе ECC.

❓ Частые вопросы

Why is ECC more efficient than RSA?

ECC achieves the same security level as RSA with much smaller key sizes (256-bit ECC ≈ 3072-bit RSA). Smaller keys mean faster signature generation/verification, less bandwidth for certificate transmission, and lower computational overhead — critical for constrained devices like hardware wallets and IoT sensors.

What is the difference between ECC and ECDSA?

ECC is the mathematical framework (the geometry of elliptic curves over finite fields). ECDSA is a specific digital signature algorithm that uses ECC mathematics. Similarly, ECDH is a key agreement protocol built on ECC. ECC is the foundation; ECDSA and ECDH are applications built on top of it.

Why do Bitcoin and Ethereum use secp256k1 instead of the more common P-256 (NIST) curve?

Satoshi Nakamoto chose secp256k1 — a less common curve at the time — partly because P-256 was designed with NSA-selected constants of unclear provenance. secp256k1 parameters are derived transparently from the simple equation y² = x³ + 7, with no arbitrary constants that could hide a backdoor.

🔗 Связанные термины

Предварительные знания:

📚 Источники