RSA

RSA — асимметричная криптосистема (Rivest, Shamir, Adleman, 1977). Стойкость на сложности факторизации больших чисел. Самая распространённая, но постепенно вытесняется ECDSA/Ed25519.

Математика (упрощённо)

  1. Выбираем два простых p, q. Считаем n = p×q.
  2. φ(n) = (p-1)(q-1)
  3. Выбираем e взаимно простое с φ(n). Обычно e=65537.
  4. d = e⁻¹ mod φ(n)
  5. Публичный ключ: (n, e). Приватный: (n, d).
  6. Шифрование: c = m^e mod n. Расшифровка: m = c^d mod n.

Стойкость

Размер ключаЭквивалент симметрич.Статус
1024 bit~80 bitвзломан
2048 bit~112 bitбезопасно до ~2030
3072 bit~128 bitрекомендовано
4096 bit~140 bitпараноик

Стойкость — против GNFS (General Number Field Sieve), лучший алгоритм факторизации. Квантовый компьютер (алгоритм Шора) сломает RSA полностью.

Padding

Голый RSA (textbook) уязвим. Нужен padding:

CRT (Chinese Remainder Theorem)

Ускоряет расшифровку ~4x, храня p, q, d_p, d_q, q_inv отдельно.

Использование

См. также