RSA (Rivest-Shamir-Adleman) е алгоритъм, използван от съвременните компютри за криптиране и декриптиране на съобщения. Това е асиметричен криптографски алгоритъм. Асиметричен означава, че има два различни ключа. Нарича се още криптография с публичен ключ, тъй като единият от ключовете може да бъде даден на всеки. Другият ключ трябва да се пази в тайна. Алгоритъмът се основава на факта, че намирането на множителите на голямо съставно число е трудно: когато множителите са прости числа, проблемът се нарича просто факторизиране. Той също така е генератор на двойка ключове (публичен и частен ключ).
RSA включва публичен ключ и частен ключ. Публичният ключ може да бъде известен на всеки - той се използва за криптиране на съобщения. Съобщенията, криптирани с публичния ключ, могат да бъдат декриптирани само с частния ключ. Частният ключ трябва да се пази в тайна. Изчисляването на частния ключ от публичния ключ е много трудно.
Как работи RSA — основни стъпки
- Генериране на ключове:
- Избират се две големи случайни прости числа p и q.
- Изчислява се n = p · q — това е модулът, използван в публичния и частния ключ.
- Изчислява се φ(n) = (p − 1)(q − 1) (Ейлеровата функция).
- Избира се броят e (обществен експонент), такъв че 1 < e < φ(n) и gcd(e, φ(n)) = 1 (често използвани стойности са 65537 или 3).
- Намира се d — обратният елемент на e по модул φ(n), т.е. d · e ≡ 1 (mod φ(n)).
- Публичният ключ е (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 остава един от фундаменталните методи в съвременната криптография — лесен за разбиране концептуално, широко внедрен в протоколи и продукти, но изисква внимателни имплементации и съответствие с текущите препоръки за безопасност.