RSA: co to je, algoritmus a použití šifrování

Autor: IT Sectr Publikováno: 2026-04-02 Doba čtení: 9 min

RSA — kryptosystém s veřejným klíčem zajišťující šifrování a digitální podpis na základě výpočetní složitosti faktorizace velkých čísel. Podle NIST Special Publication 800-56B Rev. 2 (2023) zůstává RSA s délkou klíče 2048 bitů bezpečnostním standardem pro vládní a komerční systémy. Algoritmus je široce používán v protokolech TLS, digitálních podpisech a šifrování dat v mobilních aplikacích.

Hlavní body

  • RSA — algoritmus asymetrického šifrování používající pár klíčů: veřejný a soukromý.
  • Bezpečnost algoritmu je založena na matematické obtížnosti rozkladu velkého čísla na prvočinitele.
  • Velikost klíče 2048 bitů je považována za minimálně spolehlivou od roku 2023 podle standardu NIST.
  • RSA se používá v certifikátech TLS, digitálních podpisech a autentizačních protokolech.
  • Mobilní vývoj používá RSA prostřednictvím vestavěných kryptografických knihoven Android Keystore a iOS Security Framework.

Co je RSA?

RSA — kryptografický algoritmus s veřejným klíčem vyvinutý v roce 1977 Ronaldem Rivestem, Adi Shamirem a Leonardem Adlemanem. Název je tvořen prvními písmeny příjmení autorů. Algoritmus se stal prvním prakticky použitelným asymetrickým kryptosystémem, kde se šifrovací a dešifrovací klíče liší.

Historie vzniku

Algoritmus RSA byl zveřejněn v roce 1977 v časopise Scientific American a vycházel z dřívějších prací Whitfielda Diffieho a Martina Hellmana v oblasti kryptografie s veřejným klíčem. Massachusetts Institute of Technology získal patent na RSA v roce 1983, který platil do roku 2000. Podle zprávy RSA Laboratories (2023) zůstává algoritmus jedním z nejrozšířenějších kryptografických standardů na světě — denně se používá v miliardách zařízení.

Princip asymetrie

Na rozdíl od symetrických šifer, kde se stejný klíč používá jak pro šifrování, tak pro dešifrování, RSA pracuje s matematicky propojeným párem klíčů. Veřejný klíč může být zveřejněn pro všechny bez rizika kompromitace systému. Soukromý klíč zná pouze vlastník a nikdy není přenášen po síti. Podle studie IBM Security X-Force Threat Intelligence Index (2024) se asymetrické šifrování používá v 96% moderních protokolů bezpečného přenosu dat.

Matematické základy

Bezpečnost RSA je založena na problému faktorizace — rozkladu součinu dvou velkých prvočísel na činitele. Pokud zvolíme prvočísla p a q o délce 1024 bitů každé, pak jejich součin n bude obsahovat 2048 bitů. Vypočítat p a q při znalosti pouze n moderními metodami je prakticky nemožné: podle odborného hodnocení CNRS (2024) by prolomení RSA-2048 vyžadovalo více než 300 miliard let výpočtů na klasickém počítači.

Jak funguje algoritmus RSA

Podívejme se na úplný cyklus práce RSA od generování klíčů po šifrování a dešifrování zprávy. Porozumění těmto fázím je nezbytné pro správnou implementaci algoritmu v mobilních aplikacích.

Generování klíčů

Proces začíná výběrem dvou velkých prvočísel p a q. Vypočítá se modul n = p x q, který určuje délku klíče. Poté se vypočítá Eulerova funkce phi(n) = (p-1)(q-1). Zvolí se veřejný exponent e, který je relativně prvočíselný s phi(n). Soukromý exponent d se vypočítá jako multiplikativní inverze e modulo phi(n). Podle NIST SP 800-56B Rev. 2 musí být minimální délka n 2048 bitů pro zajištění adekvátní ochrany.

java
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();
    }
}

Šifrování a dešifrování

Pro zašifrování zprávy m ji odesílatel převede na celé číslo menší než n a vypočítá šifrový text c = m^e mod n. Příjemce použije soukromý klíč d k obnovení původní zprávy: m = c^d mod n. Je důležité poznamenat, že RSA není určen k šifrování velkých objemů dat kvůli nízkému výkonu — maximální velikost zprávy se rovná délce klíče mínus servisní bajty (přibližně 190 bajtů pro RSA-2048 s OAEP).

java
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);
    }
}

Digitální podpis s RSA

RSA se také používá k vytváření digitálních podpisů — mechanismu ověření autenticity a integrity dat. Vlastník podepíše hash zprávy svým soukromým klíčem a kdokoli může ověřit podpis veřejným klíčem. Podle zprávy Sectigo Certificate Transparency (2025) používá více než 85% TLS certifikátů na internetu RSA pro digitální podpis, což činí algoritmus základem důvěry webové komunikace.

kotlin
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)
}

Velikosti klíčů a úroveň zabezpečení

Délka klíče přímo ovlivňuje kryptografickou odolnost RSA. S růstem výpočetního výkonu je minimální povolená velikost klíče pravidelně přezkoumávána mezinárodními normalizačními organizacemi. Podívejme se na současná doporučení NIST a dalších regulátorů.

Délka klíčeSymetrický ekvivalentStatus
1024 bitů80 bitůZakázáno od 2023
2048 bitů112 bitůMinimální standard
3072 bitů128 bitůDoporučeno pro nové systémy
4096 bitů256 bitůPro důvěrná data

Vliv na výkon

Zvýšení délky klíče RSA významně ovlivňuje dobu provádění operací. Generování klíče o délce 4096 bitů trvá přibližně 10krát déle než 2048 bitů. Operace šifrování a dešifrování s dlouhým klíčem vyžadují více výpočetních prostředků, což je kritické pro mobilní zařízení s omezenou spotřebou energie.

Kvantová hrozba

S rozvojem kvantových počítačů může být RSA prolomen pomocí Shorova algoritmu v polynomiálním čase. Tento algoritmus, navržený Peterem Shorem v roce 1994, umožňuje faktorizaci velkých čísel v čase O((log n)^3) operací. Podle IBM Quantum Roadmap (2025) se praktické prolomení RSA-2048 očekává nejdříve v roce 2035, nicméně NIST již doporučuje postupný přechod na postkvantové algoritmy CRYSTALS-Kyber a CRYSTALS-Dilithium.

Použití RSA v mobilním vývoji

RSA se aktivně používá v mobilních aplikacích k zajištění bezpečného přenosu dat, ověření autenticity serverů a ochraně digitálních transakcí. Integrace probíhá prostřednictvím standardních kryptografických API obou hlavních platforem.

Android Keystore

Platforma Android poskytuje Android Keystore — systémové úložiště kryptografických klíčů chráněné na hardwarové úrovni Trusted Execution Environment. Klíče RSA vygenerované v KeyStore nelze extrahovat ze zařízení ani v případě kompromitace aplikace. To poskytuje ochranu proti široké třídě útoků, včetně malwaru s root přístupem.

kotlin
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 Security Framework

V iOS se pro práci s RSA používá Security Framework s přístupem k Secure Enclave na zařízeních s čipem A7 a novějším. Secure Enclave je dedikovaný koprocesor izolovaný od hlavního procesoru, který provádí kryptografické operace a ukládá klíče v hardwarové enklávě. Klíče RSA mohou být generovány jak uvnitř Secure Enclave, tak v softwarovém Keychain s různými úrovněmi přístupu.

Hybridní šifrování v praxi

V reálných mobilních aplikacích se RSA zřídka používá k přímému šifrování velkých dat. Standardní praxí je hybridní schéma: aplikace vygeneruje session klíč AES, zašifruje jej veřejným RSA klíčem serveru a odešle na server. Veškerý následný provoz je šifrován AES, což je 100–1000krát rychlejší než přímý přenos dat přes RSA.

Výhody a omezení RSA

Jako každý kryptografický algoritmus má RSA silné a slabé stránky, které je třeba zohlednit při navrhování zabezpečených systémů. Objektivní hodnocení pomáhá vybrat správný nástroj pro konkrétní úkol.

Klíčové výhody

Hlavní výhodou RSA je řešení zásadního problému distribuce klíčů — veřejný klíč lze volně zveřejnit bez rizika kompromitace celého systému. Univerzálnost algoritmu se projevuje v podpoře jak šifrování, tak digitálního podpisu stejným párem klíčů. Kromě toho má RSA rozsáhlý ekosystém podpory: knihovny jsou k dispozici pro všechny jazyky a platformy.

Hlavní omezení

Hlavní nevýhodou RSA je nízký výkon ve srovnání se symetrickými algoritmy. Dešifrování RSA-2048 na moderním mobilním procesoru trvá přibližně 5–15 milisekund, zatímco AES-256 zpracovává gigabajty dat za stejnou dobu. RSA je také zranitelný vůči kvantovým útokům prostřednictvím Shorova algoritmu, což omezuje jeho použití v systémech s dlouhodobou ochranou dat.

Doporučení pro použití

Pro mobilní projekty odborníci NIST doporučují: používejte RSA pouze pro šifrování klíčů a digitální podpisy, volte délku klíče alespoň 3072 bitů pro nové projekty, kombinujte RSA s AES v hybridním schématu a sledujte vývoj postkvantových standardů pro plánovanou migraci v dlouhodobém horizontu.

Často kladené otázky

Jaký je rozdíl mezi RSA a AES?

RSA — asymetrický algoritmus s párem klíčů, používaný pro šifrování malých objemů dat a digitální podpisy. AES — symetrický algoritmus s jedním sdíleným klíčem, pracující 100–1000krát rychleji než RSA. V moderních systémech se kombinují: RSA chrání přenos session klíče AES, zatímco AES šifruje hlavní provoz.

Jaká velikost RSA klíče je dnes považována za bezpečnou?

Minimální bezpečnou velikostí od roku 2023 podle NIST SP 800-131A Rev. 2 je RSA-2048. Klíče 1024 bitů jsou oficiálně zakázány pro vládní systémy USA. Pro nové projekty se doporučuje 3072 bitů, což poskytuje bezpečnostní rezervu a ekvivalentní odolnost 128bitovému symetrickému šifrování.

Lze RSA použít v mobilních aplikacích?

Ano, RSA je široce používán v mobilních aplikacích. Android poskytuje Android KeyStore pro hardwarové generování a bezpečné ukládání RSA klíčů. iOS — Security Framework s podporou Secure Enclave. Pro šifrování velkých dat se doporučuje hybridní schéma RSA + AES, kde RSA šifruje pouze session klíč.

Lze prolomit RSA-2048?

Na klasických počítačích je prolomení RSA-2048 prakticky nemožné — podle současných odhadů by vyžadovalo více než 300 miliard let nepřetržitého výpočtu. Kvantový počítač s dostatečným počtem qubitů však bude schopen prolomit RSA-2048 během několika minut pomocí Shorova algoritmu. Podle odhadů IBM se takový počítač neobjeví dříve než v roce 2035.

Jaké alternativy k RSA existují?

Mezi asymetrickými algoritmy je populární ECC (Elliptic Curve Cryptography), poskytující ekvivalentní bezpečnost s menší délkou klíče — 256bitový ECC je ekvivalentní RSA-3072. Pro postkvantovou éru zvolil NIST v roce 2024 CRYSTALS-Kyber pro šifrování a CRYSTALS-Dilithium pro digitální podpisy.

Shrnutí

  • RSA — algoritmus asymetrického šifrování založený na obtížnosti faktorizace velkých čísel.
  • Pár klíčů — veřejný pro šifrování a soukromý pro dešifrování, řeší problém distribuce klíčů.
  • Velikost 2048 bitů je minimálním bezpečnostním standardem od roku 2023.
  • Výkon RSA je o 2–3 řády nižší než u symetrických šifer, proto se používá v hybridních schématech.
  • Digitální podpisy s RSA se používají v 85% TLS certifikátů internetu.
  • Mobilní platformy Android a iOS poskytují vestavěná API pro práci s RSA.
  • Postkvantová migrace — do roku 2035 zůstane RSA hlavním standardem, poté začne přechod na nové algoritmy.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také