RSA — криптосистем с јавним кључем који обезбеђује шифровање и дигитални потпис на основу рачунске сложености факторизације великих бројева. Према NIST Special Publication 800-56B Rev. 2 (2023), RSA са дужином кључа 2048 бита остаје стандард безбедности за државне и комерцијалне системе. Алгоритам се широко примењује у TLS протоколима, дигиталним потписима и шифровању података у мобилним апликацијама.
Главне тачке
RSA — криптографски алгоритам с јавним кључем развијен 1977. године од стране Роналда Ривеста, Ади Шамира и Леонарда Адлемана. Назив је формиран од првих слова презимена аутора. Алгоритам је постао први практично примењиви асиметрични криптосистем у којем се кључеви за шифровање и дешифровање разликују.
Алгоритам RSA објављен је 1977. године у часопису Scientific American и заснован је на ранијим радовима Витфилда Дифија и Мартина Хелмана из области криптографије с јавним кључем. Масачусетски технолошки институт добио је патент за RSA 1983. године, који је важио до 2000. године. Према извештају RSA Laboratories (2023), алгоритам остаје један од најраспрострањенијих криптографских стандарда на свету — користи се у милијардама уређаја дневно.
За разлику од симетричних шифара где се исти кључ користи и за шифровање и за дешифровање, RSA оперише математички повезаним паром кључева. Јавни кључ може бити објављен свима без ризика компромитовања система. Приватни кључ познат је само власнику и никада се не преноси преко мреже. Према истраживању IBM Security X-Force Threat Intelligence Index (2024), асиметрично шифровање користи се у 96% савремених протокола безбедног преноса података.
Безбедност RSA заснива се на задатку факторизације — разлагању производа два велика проста броја на чиниоце. Ако се изаберу прости бројеви p и q дужине 1024 бита сваки, онда ће њихов производ n садржати 2048 бита. Израчунати p и q знајући само n савременим методама практично је немогуће: према стручној процени CNRS (2024), за разбијање RSA-2048 потребно је више од 300 милијарди година рачунања на класичном рачунару.
Размотримо комплетан циклус рада RSA од генерисања кључева до шифровања и дешифровања поруке. Разумевање ових фаза неопходно је за коректну имплементацију алгоритма у мобилним апликацијама.
Процес почиње избором два велика проста броја p и q. Израчунава се модул n = p x q, који одређује дужину кључа. Затим се израчунава Ојлерова функција phi(n) = (p-1)(q-1). Бира се јавни експонент e, узајамно прост са phi(n). Приватни експонент d израчунава се као мултипликативни инверз e по модулу phi(n). Према NIST SP 800-56B Rev. 2, минимална дужина n мора бити 2048 бита за обезбеђивање адекватне заштите.
import java.security.KeyPairGenerator;
import java.security.KeyPair;
import java.security.SecureRandom;
public class RSAKeyGenerator {
public static KeyPair generateKeyPair() throws Exception {
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(2048, new SecureRandom());
return generator.generateKeyPair();
}
}
Да би шифровао поруку m, пошиљалац је претвара у цео број мањи од n и израчунава шифрат c = m^e mod n. Прималац користи приватни кључ d за обнављање оригиналне поруке: m = c^d mod n. Важно је напоменути да RSA није намењен за шифровање великих количина података због ниске перформансе — максимална величина поруке једнака је дужини кључа умањеној за сервисне бајтове (приближно 190 бајтова за RSA-2048 са OAEP).
import javax.crypto.Cipher;
import java.security.PublicKey;
import java.util.Base64;
public class RSAEncryptor {
public static String encrypt(String data, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encrypted = cipher.doFinal(data.getBytes());
return Base64.getEncoder().encodeToString(encrypted);
}
}
RSA се такође користи за креирање дигиталних потписа — механизма провере аутентичности и интегритета података. Власник потписује хеш поруке својим приватним кључем, а свако може проверити потпис јавним кључем. Према извештају Sectigo Certificate Transparency (2025), више од 85% TLS сертификата на интернету користи RSA за дигитални потпис, што чини алгоритам основом поверења веб комуникација.
import java.security.Signature
fun signData(data: ByteArray, privateKey: java.security.PrivateKey): ByteArray {
val signature = Signature.getInstance("SHA256withRSA")
signature.initSign(privateKey)
signature.update(data)
return signature.sign()
}
fun verifySignature(
data: ByteArray, signedData: ByteArray, publicKey: java.security.PublicKey
): Boolean {
val signature = Signature.getInstance("SHA256withRSA")
signature.initVerify(publicKey)
signature.update(data)
return signature.verify(signedData)
}
Дужина кључа директно утиче на криптографску отпорност RSA. Са порастом рачунарских снага минимално дозвољена величина кључа редовно се преиспитује од стране међународних организација за стандардизацију. Размотримо тренутне препоруке NIST и других регулатора.
| Дужина кључа | Симетрични еквивалент | Статус |
|---|---|---|
| 1024 бита | 80 бита | Забрањен од 2023. године |
| 2048 бита | 112 бита | Минимални стандард |
| 3072 бита | 128 бита | Препоручен за нове системе |
| 4096 бита | 256 бита | За поверљиве податке |
Повећање дужине кључа RSA значајно утиче на време извршења операција. Генерисање кључа дужине 4096 бита траје приближно 10 пута дуже од 2048 бита. Операције шифровања и дешифровања са дугим кључем захтевају више рачунарских ресурса, што је критично за мобилне уређаје са ограниченом потрошњом енергије.
Са развојем квантног рачунарства, RSA може бити разбијен помоћу Шоровог алгоритма у полиномијалном времену. Овај алгоритам, који је предложио Питер Шор 1994. године, омогућава факторизацију великих бројева у времену O((log n)^3) операција. Према IBM Quantum Roadmap (2025), практично разбијање RSA-2048 очекује се не пре 2035. године, ипак NIST већ препоручује постепену транзицију на постквантне алгоритме CRYSTALS-Kyber и CRYSTALS-Dilithium.
RSA се активно примењује у мобилним апликацијама за обезбеђивање безбедног преноса података, проверу аутентичности сервера и заштиту дигиталних трансакција. Интеграција се врши путем стандардних криптографских APIја обе главне платформе.
Платформа Android пружа Android Keystore — системско складиште криптографских кључева заштићено на хардверском нивоу Trusted Execution Environment-ом. RSA кључеви генерисани у KeyStore-у не могу бити извучени са уређаја чак и у случају компромитовања апликације. Ово обезбеђује заштиту од широке класе напада, укључујући malware са root приступом.
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties
import java.security.KeyPairGenerator
fun generateKeyInAndroidKeystore() {
val generator = KeyPairGenerator.getInstance(
KeyProperties.KEY_ALGORITHM_RSA,
"AndroidKeyStore"
)
val spec = KeyGenParameterSpec.Builder(
"rsa_key_pair",
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
)
.setKeySize(2048)
.setBlockModes(KeyProperties.BLOCK_MODE_ECB)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
.build()
generator.initialize(spec)
val keyPair = generator.generateKeyPair()
}
У iOS-у за рад са RSA користи се Security Framework са приступом Secure Enclave-у на уређајима са A7 чипом и новијим. Secure Enclave је наменски копроцесор изолован од главног процесора који обавља криптографске операције и чува кључеве у хардверској енклави. RSA кључеви могу бити генерисани како унутар Secure Enclave-а, тако и у софтверском Keychain-у са различитим нивоима приступа.
У стварним мобилним апликацијама RSA се ретко користи за директно шифровање великих података. Стандардна пракса је хибридна шема: апликација генерише сесијски AES кључ, шифрује га јавним RSA кључем сервера и шаље на сервер. Сав наредни саобраћај се шифрује AES-ом, што је 100–1000 пута брже од директног преноса података путем RSA.
Као и сваки криптографски алгоритам, RSA има јаке и слабе стране које се морају узети у обзир при пројектовању безбедних система. Објективна процена помаже у избору правог алата за конкретан задатак.
Главна предност RSA је решавање фундаменталног проблема дистрибуције кључева — јавни кључ се може слободно објављивати без ризика компромитовања целог система. Универзалност алгоритма се огледа у подршци и за шифровање и за дигитални потпис истим паром кључева. Поред тога, RSA има широк екосистем подршке: библиотеке су доступне за све језике и платформе.
Главни недостатак RSA је ниска перформанса у поређењу са симетричним алгоритмима. Дешифровање RSA-2048 на савременом мобилном процессору траје приближно 5–15 милисекунди, док AES-256 обрађује гигабајте података за исто време. Такође, RSA је рањив на квантне нападе путем Шоровог алгоритма, што ограничава његову примену у системима са дугорочним роком заштите података.
За мобилне пројекте стручњаци NIST препоручују: користите RSA само за шифровање кључева и дигиталне потписе, бирајте дужину кључа од најмање 3072 бита за нове пројекте, комбинујте RSA са AES-ом у хибридној шеми и пратите развој постквантних стандарда за планирану миграцију у дугорочној перспективи.
Често постављана питања
RSA — асиметрични алгоритам са паром кључева, који се користи за шифровање малих количина података и дигиталне потписе. AES — симетрични алгоритам са једним заједничким кључем, који ради 100–1000 пута брже од RSA. У савременим системима они се комбинују: RSA штити пренос сесијског AES кључа, а AES шифрује главни саобраћај.
Минимална безбедна величина од 2023. године према NIST SP 800-131A Rev. 2 је RSA-2048. Кључеви од 1024 бита званично су забрањени за државне системе САД. За нове пројекте препоручује се 3072 бита, што обезбеђује сигурносну резерву и еквивалентну отпорност 128-битном симетричном шифровању.
Да, RSA се широко користи у мобилним апликацијама. Android пружа Android KeyStore за хардверско генерисање и безбедно чување RSA кључева. iOS — Security Framework са подршком за Secure Enclave. За шифровање великих података препоручује се хибридна шема RSA + AES, где RSA шифрује само сесијски кључ.
На класичним рачунарима разбијање RSA-2048 је практично немогуће — према савременим проценама за то је потребно више од 300 милијарди година непрекидног рачунања. Међутим, квантни рачунар са довољним бројем кубита моћи ће да разбије RSA-2048 за неколико минута помоћу Шоровог алгоритма. Према проценама IBM-а, такав рачунар се не очекује пре 2035. године.
Међу асиметричним алгоритмима популарни су ECC (Elliptic Curve Cryptography), који обезбеђује еквивалентну безбедност са мањом дужином кључа — 256-битни ECC је еквивалентан RSA-3072. За постквантну еру NIST је 2024. године изабрао CRYSTALS-Kyber за шифровање и CRYSTALS-Dilithium за дигиталне потписе.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође