Эллиптические кривые: новый стандарт
RSA служил интернету десятилетиями, но сегодня всё чаще используют эллиптические кривые (ECC). Почему? Разберём идею без сложной математики.
Проблема RSA: длинные ключи
Стойкость RSA опирается на трудность разложения огромных чисел на множители. Чтобы быть надёжным сегодня, ключ RSA должен быть 2048 или 4096 бит. Это много: медленнее на телефонах, тяжелее в трафике, больше расход батареи.
Идея эллиптических кривых
Эллиптическая кривая — это особая плавная кривая, заданная уравнением вида y² = x³ + ax + b. На ней определена хитрая операция «сложения точек»: из двух точек получают третью по геометрическому правилу.
Ключевой фокус: легко вычислить точку P, сложенную саму с собой k раз (это «умножение»). Но по результату практически невозможно узнать, сколько раз складывали — это и есть секрет (приватный ключ). Такая односторонность и даёт защиту.
def curve_point(x, a, b, p):
# y^2 = x^3 + a*x + b (mod p) — проверим, лежит ли точка на кривой
rhs = (x**3 + a*x + b) % p
return rhs
a, b, p = 2, 3, 97
print("Кривая: y^2 = x^3 + 2x + 3 (mod 97)")
print("Точки на кривой:")
found = 0
for x in range(p):
rhs = curve_point(x, a, b, p)
for y in range(p):
if (y*y) % p == rhs:
print(f" ({x}, {y})")
found += 1
if found >= 6:
break
print("... таких точек конечное множество, на них и строят ECC")
Главное преимущество: короче ключи
Чтобы получить тот же уровень стойкости, эллиптическим кривым нужно гораздо меньше бит:
| Уровень защиты | RSA | ECC |
|---|---|---|
| обычный | 3072 бит | 256 бит |
| высокий | 15360 бит | 512 бит |
256-битный ключ ECC примерно так же надёжен, как 3072-битный RSA. Меньше данных, быстрее вычисления, экономия батареи — поэтому ECC выбирают для мобильных устройств, мессенджеров и современных TLS-соединений.
Криптография эллиптических кривых уже работает в Signal, WhatsApp, Bitcoin и большинстве сайтов с HTTPS. Это не замена идее асимметрии, а более эффективный способ её реализовать.
Вывод:
Эллиптические кривые (ECC) дают ту же стойкость, что RSA, при гораздо более коротких ключах (256 бит ECC ~ 3072 бит RSA). Это быстрее и экономичнее, поэтому ECC вытесняет RSA в мессенджерах, HTTPS и блокчейне.