RSA (Rivest-Shamir-Adleman) е алгоритъм, използван от съвременните компютри за криптиране и декриптиране на съобщения. Това е асиметричен криптографски алгоритъм. Асиметричен означава, че има два различни ключа. Нарича се още криптография с публичен ключ, тъй като единият от ключовете може да бъде даден на всеки. Другият ключ трябва да се пази в тайна. Алгоритъмът се основава на факта, че намирането на множителите на голямо съставно число е трудно: когато множителите са прости числа, проблемът се нарича просто факторизиране. Той също така е генератор на двойка ключове (публичен и частен ключ).

RSA включва публичен ключ и частен ключ. Публичният ключ може да бъде известен на всеки - той се използва за криптиране на съобщения. Съобщенията, криптирани с публичния ключ, могат да бъдат декриптирани само с частния ключ. Частният ключ трябва да се пази в тайна. Изчисляването на частния ключ от публичния ключ е много трудно.



 

Как работи RSA — основни стъпки

  • Генериране на ключове:
    1. Избират се две големи случайни прости числа p и q.
    2. Изчислява се n = p · q — това е модулът, използван в публичния и частния ключ.
    3. Изчислява се φ(n) = (p − 1)(q − 1) (Ейлеровата функция).
    4. Избира се броят e (обществен експонент), такъв че 1 < e < φ(n) и gcd(e, φ(n)) = 1 (често използвани стойности са 65537 или 3).
    5. Намира се d — обратният елемент на e по модул φ(n), т.е. d · e ≡ 1 (mod φ(n)).
    6. Публичният ключ е (n, e); частният ключ е (n, d). p и q трябва да се пазят в тайна или да бъдат унищожени след изчисляване на d.
  • Криптиране и декриптиране:
    • Криптиране: за съобщение m (0 ≤ m < n) се изчислява c = m^e mod n.
    • Декриптиране: с частния ключ се възстановява m = c^d mod n.
  • Подписи: За цифров подпис се изчислява s = h(m)^d mod n, където h(m) е хеш на съобщението. Проверка: h(m) ≡ s^e mod n.

Практически аспекти и защо е необходим padding

  • В чистата си форма RSA е детерминистичен — същият текст дава един и същ шифротекст, което позволява атаки. Затова в реални протоколи се използват схеми за запълване (padding) като PKCS#1 v1.5 или съвременния OAEP (Optimal Asymmetric Encryption Padding), които осигуряват семантична сигурност.
  • При подписване се използват стандарти като RSASSA-PSS, които включват безопасни методи за хеширане и padding.

Сигурност и атаки

  • Основната математическа трудност е факторизацията на n = p·q. Ако нападател намери p и q, може да пресметне φ(n) и да възстанови d от e.
  • Типични практически атаки:
    • атаките чрез факторизация (GNFS — General Number Field Sieve е най-ефективният алгоритъм за големи числа),
    • странични канали (timing, power analysis) при имплементации,
    • атаки по избрана шифротекст (chosen-ciphertext) при липса на правилен padding,
    • атаки при лошо генерирани или недостатъчно големи ключове.

Размери на ключовете и препоръки

  • Минимално препоръчителен размер за RSA ключ към 2025 г. е 2048 бита за обща употреба. За по-дълготрайна защита (например повече от 10–15 години) се използват 3072 или 4096 бита.
  • По-големите ключове дават по-висока сигурност, но значително по-голямо изчислително натоварване — RSA е бавен за големи съобщения, затова често се използва за сигурно разменяне на симетрични ключове (където самото съдържание е криптирано с бързи симетрични алгоритми като AES).
  • Добри практики: използвайте стандартизирани библиотеки, надеждни генератори на случайни числа, защитени хардуерни модули (HSM) за хранене на частни ключове и правилни схеми за padding.

Приложения

  • SSL/TLS (за установяване на сигурни връзки),
  • PGP/SMIME за електронна поща,
  • криптиране на малки данни и предаване на симетрични ключове,
  • цифрови подписи и удостоверяване (аутентификация).

Бъдеще — квантови компютри

  • Квантовите алгоритми (особено Shor's algorithm) биха могли да факторизират големи числа много по-бързо от класическите методи, което прави RSA уязвим при наличието на достатъчно мощни квантови компютри.
  • Затова за дългосрочна защита се развиват постквантови (post-quantum) криптографски алгоритми и хибридни протоколи, които комбинират класическата RSA/ECC защита с постквантови решения.

Кратки съвети за практическа употреба

  • Използвайте актуални криптографски библиотеки и стандарти (TLS 1.2/1.3, PKCS#1, OAEP, RSASSA-PSS).
  • Не прилагайте RSA директно върху големи файлове — използвайте го за криптиране на ключове (hybrid encryption).
  • Съхранявайте частните ключове защитено (HSM, TPM или поне криптирани с подходяща парола и с минимален достъп).
  • Избирайте адекватен размер на ключа според нужната дълготрайност на защитата.

RSA остава един от фундаменталните методи в съвременната криптография — лесен за разбиране концептуално, широко внедрен в протоколи и продукти, но изисква внимателни имплементации и съответствие с текущите препоръки за безопасност.