Bezpečnost v mobilním vývoji: co to je, jaké hrozby existují a jak se bránit

Autor: IT Sectr Publikováno: 2026-03-28 Doba čtení: 12 min

Mobilní bezpečnost je soubor opatření na ochranu aplikace, uživatelských dat a serverové infrastruktury před útoky a úniky. Podle OWASP Mobile Top 10 (2024) zůstává nezabezpečené ukládání dat nejčastější zranitelností v mobilních aplikacích. V tomto článku se podíváme na hlavní hrozby, metody šifrování, bezpečné ukládání, autentizaci a ochranu kódu — vše, co začínající vývojář potřebuje vědět.

Klíčové Body

  • OWASP Mobile Top 10 — seznam hlavních zranitelností mobilních aplikací, aktualizovaný každé 2–3 roky.
  • AES — symetrické šifrování pro ukládání dat na zařízení; RSA — asymetrické pro přenos.
  • iOS používá Keychain pro bezpečné ukládání tokenů a hesel, Android používá Keystore.
  • OAuth 2.0 a JWT — standardy autentizace a výměny tokenů mezi aplikací a serverem.
  • ProGuard / R8 — obfuskátory, které komplikují reverzní inženýrství, a RASP chrání před útoky za běhu.

Hlavní Hrozby: OWASP Mobile Top 10

Co je OWASP Mobile Top 10?

OWASP (Open Web Application Security Project) je nezisková organizace, která zveřejňuje žebříček nejnebezpečnějších zranitelností mobilní bezpečnosti. OWASP Mobile Top 10 je seznam, který pomáhá vývojářům pochopit, na co se zaměřit jako první. Ve verzi 2024 vedou žebříček problémy související s nezabezpečeným ukládáním, slabou autentizací a nezabezpečenou síťovou komunikací.

M1: Nezabezpečené ukládání dat — nejčastější problém: hesla, tokeny a osobní údaje zůstávají v SharedPreferences, NSUserDefaults nebo lokálních souborech bez šifrování. M2: Slabá autentizace — chybějící ověření na straně serveru, slabá hesla. M3: Nezabezpečená síťová komunikace — chybějící HTTPS nebo nesprávné ověření SSL certifikátu. M4 a M5 souvisí s kryptografií a nesprávným použitím API.

M6: Nezabezpečená autorizace — uživatel může získat přístup k datům jiného uživatele nahrazením ID v požadavku. M7: Injekce kódu (SQL Injection, XSS). M8: Manipulace s aplikací — repackaging, nahrazení kódu. M9 a M10 — únik dat prostřednictvím knihoven třetích stran a reverzní inženýrství. Pro každou z těchto hrozeb existují osvědčené protiopatření a v IT Sectr je aplikujeme ve všech projektech od roku 2017.

Útoky Man-in-the-Middle (MITM)

MITM útok nastává, když útočník zachytí provoz mezi aplikací a serverem. To je možné prostřednictvím DNS spoofingu, ARP spoofingu nebo připojení k nezabezpečené Wi-Fi síti. K ochraně se používají SSL/TLS certifikáty a Certificate Pinning.

Certificate Pinning je mechanismus, při kterém aplikace ověřuje, že se certifikát serveru shoduje s předem uloženým certifikátem v kódu aplikace. I když útočník nahradí certifikát prostřednictvím proxy (např. Burp Suite), aplikace připojení odmítne. Pinning je dvojího typu: Public Key Pinning a Certificate Hash Pinning.

Šifrování a Hašování: AES, RSA, SSL/TLS

Symetrické šifrování: AES

AES (Advanced Encryption Standard) je symetrický šifrovací algoritmus, základ bezpečnosti dat na zařízení. AES používá stejný klíč k šifrování a dešifrování dat. AES podporuje klíče o délce 128, 192 nebo 256 bitů. V mobilním vývoji se AES-256 používá k šifrování dat na zařízení: souborů, mezipaměti, záznamů v lokální databázi.

Režimy AES: GCM (doporučený) — poskytuje autentizaci dat, CBC — základní režim s řetězením bloků, ECB — nebezpečný, nepoužívejte jej. Pro iOS je AES dostupný přes CommonCrypto (CCOptions), pro Android — přes Cipher v Java Cryptography Architecture (JCA). Důležité: šifrovací klíč by nikdy neměl být uložen v kódu aplikace — používejte Keychain/Keystore.

Asymetrické šifrování: RSA — používá pár klíčů (veřejný a soukromý). RSA se používá k šifrování malých objemů dat — obvykle k výměně symetrického klíče mezi klientem a serverem. Minimální délka klíče RSA je 2048 bitů (doporučeno 4096). Na iOS je RSA dostupný přes Security Framework (SecKeyCreateRandomKey), na Androidu — přes KeyPairGenerator v Android Keystore.

Hašování a SSL/TLS

Hašování (SHA-256, SHA-3) je nevratná transformace dat na řetězec pevné délky. Hashe se používají k ověření integrity dat a ukládání hesel. Pro hesla vždy používejte bcrypt, scrypt nebo Argon2 — obyčejný SHA-256 je zranitelný vůči útokům pomocí duhových tabulek. SSL/TLS je protokol pro šifrování síťového provozu mezi klientem a serverem. Moderním standardem je TLS 1.3, který poskytuje Perfect Forward Secrecy (PFS).

TLS 1.3 je rychlejší než jeho předchůdci: handshake trvá jeden round trip místo dvou. Na Androidu je minimální verze TLS konfigurována přes SSLSocket, na iOS — přes ATS (App Transport Security), který ve výchozím nastavení vyžaduje TLS 1.2 nebo vyšší. ATS lze zakázat pouze pro konkrétní domény s odůvodněním.

Bezpečné Ukládání: Keychain a Keystore

iOS: Keychain

Keychain (Klíčenka) je zabezpečené úložiště v iOS / macOS pro hesla, šifrovací klíče, certifikáty a tokeny. Data v Keychain jsou šifrována hardwarovým klíčem unikátním pro každé zařízení. Přístup k Keychain je řízen prostřednictvím Security Framework (SecItemAdd, SecItemCopyMatching). Keychain se automaticky uzamkne při uzamčení zařízení a je šifrován pomocí Secure Enclave.

Android: Keystore

Android Keystore je systémové úložiště pro kryptografické klíče, izolované od aplikace. Od Androidu 6.0 (API 23) Keystore využívá hardwarovou podporu (TEE — Trusted Execution Environment) na zařízeních s bezpečnostním čipem. Klíče v Keystore nikdy neopouštějí zabezpečenou oblast — aplikace získává pouze handle pro šifrovací a podpisové operace.

Srovnání Keychain (iOS) a Keystore (Android)
Parametr iOS Keychain Android Keystore
Typ ukládaných dat Hesla, tokeny, klíče, certifikáty Kryptografické klíče
Hardwarová podpora Secure Enclave (všechny iPhone s A7+) TEE (Android 6+, závisí na čipu)
Šifrování AES-256 hardware AES/GCM s hardwarovým klíčem
Biometrie Face ID / Touch ID pro přístup BiometricPrompt pro přístup
iCloud / záloha Synchronizace přes iCloud Keychain Nesynchronizuje se s cloudem
Výkon Pomalejší (hardwarové šifrování) Rychlejší (TEE)

SharedPreferences a NSUserDefaults nejsou určeny pro ukládání citlivých dat — ukládají informace v prostém textu. Pro ochranu dat používejte EncryptedSharedPreferences (Android) nebo šifrujte data před uložením do UserDefaults (iOS). V IT Sectr vždy používáme Keychain a Keystore pro přístupové tokeny a hesla.

Autentizace: OAuth 2.0, JWT a Biometrie

OAuth 2.0 a OpenID Connect

OAuth 2.0 je protokol delegované autorizace, který poskytuje bezpečný přístup k uživatelským zdrojům bez přenosu hesla. V mobilních aplikacích se nejčastěji používá Authorization Code Flow s PKCE (Proof Key for Code Exchange). PKCE zabraňuje zachycení autorizačního kódu — povinný požadavek pro mobilní aplikace.

OpenID Connect (OIDC) je rozšíření nad OAuth 2.0 pro autentizaci uživatele. OIDC přidává ID Token ve formátu JWT, který obsahuje informace o uživateli (jméno, email, id). Tok OAuth 2.0 + OIDC zahrnuje: přesměrování uživatele na přihlašovací stránku, získání autorizačního kódu, výměnu kódu za tokeny (access + refresh + id), použití přístupového tokenu pro API požadavky.

JWT: Přístupové, Obnovovací a Relační Tokeny

JWT (JSON Web Token) je kompaktní, URL-bezpečný formát tokenu, který obsahuje nároky (claims) ve formátu JSON. JWT se skládá ze tří částí: záhlaví (typ a algoritmus podpisu), datová část (payload) a podpis. Přístupový token je krátkodobý token (15–60 minut) pro přístup k API. Obnovovací token je dlouhodobý token (dny/týdny) pro získání nového přístupového tokenu bez opětovného přihlášení.

Relační token je tradiční přístup, kdy server ukládá relaci v databázi nebo Redis a klient obdrží náhodný identifikátor. V mobilním vývoji je JWT preferován: nevyžaduje ukládání relace na straně serveru, obsahuje všechny informace v sobě a je snadno ověřitelný. JWT však nelze okamžitě zrušit — to je kompromis, který je řešen krátkou životností přístupového tokenu a použitím obnovovacích tokenů.

Biometrická Autentizace

Face ID a Touch ID na iOS, Autentizace otiskem prstu na Androidu — biometrické metody autentizace využívající jedinečné fyzické vlastnosti uživatele. Na iOS biometrie funguje přes LocalAuthentication (LAContext), na Androidu — přes BiometricPrompt (Android 9+) nebo FingerprintManager (zastaralé). Biometrie se používá k odemknutí aplikace, potvrzení plateb a přístupu k chráněným datům.

Důležité nuance: biometrie je pohodlná UX, ale nenahrazuje autentizaci na serveru. Po úspěšném biometrickém ověření by aplikace měla získat přístupový token od serveru. Na Androidu vždy zkontrolujte, zda zařízení používá biometrii třídy 3 (Silná), nejen rozpoznávání obličeje pomocí kamery (třída 1).

Ochrana Kódu: ProGuard, R8 a Root Detection

Obfuskace: ProGuard a R8

ProGuard je nástroj pro obfuskaci, kompresi a optimalizaci Java bytecode pro Android, který zvyšuje bezpečnost kódu proti reverznímu inženýrství. R8 je jeho nástupce, integrovaný v Gradle od Android Studio 3.4. R8 provádí čtyři úkoly: kompresi (odstraňuje nepoužívané třídy a metody), optimalizaci (inline metody, zjednodušuje kód), obfuskaci (přejmenovává třídy a metody na krátké názvy) a předběžnou verifikaci (kontrola bytecode).

DexGuard je komerční verze ProGuard s rozšířenou ochranou: šifrování řetězců, obfuskace zdrojů, ochrana proti repackagingu, kontrola integrity APK. Pro většinu projektů stačí R8, ale pro finanční a bankovní aplikace poskytuje DexGuard další bezpečnostní vrstvu. R8 se aktivuje přes build.gradle: minifyEnabled = true a proguardFiles.

Detekce Root a Jailbreak

Root Detection (Android) a Jailbreak Detection (iOS) jsou mechanismy, které kontrolují, zda byla na zařízení získána práva superuživatele. Na kompromitovaných zařízeních je možné číst paměť procesu, zachycovat provoz a nahrazovat kód. Pro kontrolu na Androidu se používá přítomnost SU binárního souboru, testovacích podpisových klíčů a nestandardních build flags.

RASP (Runtime Application Self-Protection) je technologie, která chrání aplikaci během běhu. RASP detekuje pokusy o ladění, repackaging, injekci kódu a ukončí aplikaci při detekci hrozeb. Příklady RASP řešení: Dexter, Guardsquare, Promon. RASP pracuje za běhu a reaguje na anomálie — na rozdíl od statické obfuskace, která chrání kód před spuštěním.

Reverzní inženýrství je proces obnovy zdrojového kódu z kompilované aplikace. Nástroje: JADX (dekompilátor APK), Ghidra, IDA Pro, Hopper. Ochrana proti reverznímu inženýrství je kombinací obfuskace, šifrování řetězců, kontroly integrity a Root Detection. Úplná ochrana neexistuje — cílem je učinit reverzní inženýrství pro útočníka dostatečně nákladným.

Často Kladené Otázky

Kde začít s učením mobilní bezpečnosti?

Začněte s OWASP Mobile Top 10 — to je mapa nejčastějších zranitelností. Poté studujte HTTPS a SSL certifikáty, nakonfigurujte Certificate Pinning a přejděte k bezpečnému ukládání přes Keychain / Keystore.

Jaký je rozdíl mezi symetrickým a asymetrickým šifrováním?

AES (symetrické) — jeden klíč pro šifrování a dešifrování, rychlý, vhodný pro velké objemy dat. RSA (asymetrické) — pár klíčů (veřejný a soukromý), pomalejší, používá se pro výměnu symetrického klíče.

Musím šifrovat všechna data v aplikaci?

Šifrovat byste měli pouze důvěrná data: hesla, tokeny, osobní údaje uživatele, platební informace. Obrázky, texty a nastavení rozhraní nevyžadují šifrování — to by zvýšilo velikost a zpomalilo aplikaci.

Co je obnovovací token a k čemu slouží?

Obnovovací token je dlouhodobý token, který umožňuje získat nový přístupový token bez opětovného zadání hesla. To zvyšuje bezpečnost — přístupový token žije 15–60 minut a i když unikne, útočník jej nemůže dlouho používat.

Je použití ProGuard / R8 povinné?

Ano, R8 musí být zapnutý pro release sestavení Androidu. Není to jen ochrana proti reverznímu inženýrství, ale také zmenšení velikosti APK a optimalizace výkonu. Bez R8 lze váš kód dekompilovat do čitelné podoby jediným příkazem JADX.

Shrnutí

  • OWASP Mobile Top 10 — klíčový seznam hrozeb; začněte jím bezpečnostní audit.
  • AES-256 — standard symetrického šifrování pro data na zařízení; RSA — pro výměnu klíčů.
  • Keychain (iOS) a Keystore (Android) — jediná správná místa pro ukládání tokenů a hesel.
  • OAuth 2.0 s PKCE a JWT — moderní standard autentizace pro mobilní aplikace.
  • R8 — povinný nástroj pro obfuskaci pro Android; Root/Jailbreak Detection chrání před kompromitovanými zařízeními.
  • Certificate Pinning zabraňuje MITM útokům i při nahrazení certifikátu.
  • Bezpečnost je proces, ne funkce: testujte zranitelnosti v každé fázi vývoje.

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