Šifrování v mobilních aplikacích — základy, algoritmy a princip fungování

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

Šifrování (encryption) — to proces przekształcania danych w formę niedostępną do odczytu bez specjalnego klucza. W aplikacjach mobilnych šifrování chroni dane osobowe użytkowników, informacje płatnicze i logikę biznesową przed przechwyceniem i wyciekiem. Według danych Statista (2024), liczba wycieków danych z aplikacji mobilnych wzrosła o 38% w ciągu dwóch lat, a w 72% przypadków przyczyną był brak lub nieprawidłowe šifrování. Nowoczesne platformy mobilne udostępniają wbudowane API do szyfrowania, a ich użycie jest obowiązkowym standardem bezpieczeństwa. Statista, 2024

Hlavní body

  • Šifrování — przekształcanie danych w nieczytelną postać, odwracalne tylko przy użyciu klucza deszyfrującego.
  • Šifrování symetryczne używa jednego klucza do szyfrowania i deszyfrowania — szybkie, ale wymaga bezpiecznego przekazania klucza.
  • Šifrování asymetryczne używa pary kluczy (publicznego i prywatnego) — bezpieczniejsze, ale wolniejsze od symetrycznego.
  • AES-256 — złoty standard szyfrowania symetrycznego, zalecany przez NIST i używany w Android i iOS.
  • Šifrování end-to-end gwarantuje, że dane są niedostępne nawet dla serwera — tylko dla nadawcy i odbiorcy.

Czym jest šifrování v mobilních aplikacích?

Šifrování w kontekście aplikacji mobilnych — to zastosowanie algorytmów kryptograficznych do ochrony danych przechowywanych na urządzeniu (data at rest) i przesyłanych przez sieć (data in transit). Na poziomie urządzenia szyfrowane jest lokalne przechowywanie: pliki, bazy danych, SharedPreferences i pamięć podręczna. Na poziomie sieci szyfrowany jest ruch między aplikacją a serwerem za pomocą protokołów TLS/HTTPS. Ostatecznym celem jest zagwarantowanie, że nawet przy fizycznym dostępie do urządzenia lub przechwyceniu ruchu, osoba atakująca nie będzie mogła odczytać chronionych danych bez klucza kryptograficznego.

Dlaczego šifrování jest potrzebne v mobilních aplikacích

Urządzenia mobilne są szczególnie narażone na utratę danych: telefon łatwo zgubić, ukraść lub zainfekować złośliwym oprogramowaniem. Według danych Ponemon Institute (2023), 42% firm, które doświadczyły wycieków danych, łączy incydenty z urządzeniami mobilnymi. Bez szyfrowania osoba atakująca może podłączyć się do urządzenia przez USB, wyodrębnić bazę SQLite i odczytać wszystkie zapisane dane. Šifrování rozwiązuje ten problem: nawet jeśli baza zostanie wyodrębniona, jej zawartość pozostaje zaszyfrowana. Dodatkowo, w USA i UE obowiązują przepisy (GDPR, CCPA), które wymagają szyfrowania danych osobowych i przewidują grzywny do 4% rocznego obrotu za ich naruszenie. Używanie szyfrowania — to nie tylko konieczność techniczna, ale także prawna dla każdej aplikacji mobilnej pracującej z danymi użytkowników.

Šifrování symetryczne i asymetryczne

Wszystkie algorytmy szyfrowania dzielą się na dwa główne typy: symetryczne (jeden klucz do szyfrowania i deszyfrowania) i asymetryczne (para kluczy — publiczny i prywatny). Wybór typu zależy od scenariusza użycia: do szyfrowania danych lokalnych częściej stosuje się algorytmy symetryczne ze względu na ich szybkość, a do przekazywania kluczy i uwierzytelniania — asymetryczne.

CechaSymetryczneAsymetryczne
Liczba kluczy1 (tajny)2 (publiczny + prywatny)
SzybkośćWysoka (1–10 GB/s)Niska (1–10 MB/s)
Dystrybucja kluczaProblem — trzeba przekazać kluczProsta — klucz publiczny jest publikowany
PrzykładyAES, ChaCha20RSA, ECDH, ECIES
Zastosowanie w deweloperce mobilnejŠifrování danych lokalnychWymiana kluczy, podpisy cyfrowe

W praktyce v mobilních aplikacích stosuje się šifrování hybrydowe: algorytmem asymetrycznym (np. ECDH) strony wymieniają się kluczem sesyjnym, a wszystkie kolejne dane są szyfrowane algorytmem symetrycznym (AES lub ChaCha20). Takie podejście łączy szybkość szyfrowania symetrycznego z bezpieczeństwem asymetrycznej wymiany kluczy. Ta metoda leży u podstaw TLS 1.3, Signal Protocol i Apple iMessage.

Główne algorytmy szyfrowania

Nowoczesna deweloperka mobilna używa kilku standaryzowanych algorytmów szyfrowania, z których każdy jest przeznaczony do określonych zadań i ma swój obszar zastosowania.

  • AES (Advanced Encryption Standard) — symetryczny szyfr blokowy, certyfikowany przez NIST w 2001 roku. Używa kluczy 128, 192 lub 256 bitów. Zalecany tryb — GCM (Galois/Counter Mode), zapewniający uwierzytelnione šifrování. AES-256 jest używany w Android Keystore, iOS Keychain i wszystkich nowoczesnych protokołach TLS.
  • ChaCha20-Poly1305 — symetryczny szyfr strumieniowy, opracowany przez Daniela Bernsteina. Zapewnia takie samo bezpieczeństwo jak AES-256, ale działa szybciej na urządzeniach bez sprzętowego przyspieszenia AES (typowe dla budżetowych smartfonów Android). ChaCha20 jest używany w TLS 1.3 jako alternatywa dla AES-GCM i jest głównym szyfrem w Signal Protocol.
  • RSA (Rivest-Shamir-Adleman) — algorytm asymetryczny, używany do szyfrowania kluczy i podpisów cyfrowych. Minimalny zalecany rozmiar klucza — 2048 bitów. RSA jest wolniejsze od ECDH, dlatego w nowoczesnych aplikacjach mobilnych jest wypierane przez kryptografię krzywych eliptycznych (ECC).
  • ECDH (Elliptic Curve Diffie-Hellman) — asymetryczny protokół wymiany kluczy oparty na krzywych eliptycznych. Zapewnia Perfect Forward Secrecy i jest domyślnie używany w TLS 1.3. Krzywa Curve25519 (X25519) jest najczęściej spotykana v mobilních aplikacích.

Jak šifrování chroni dane użytkowników

Šifrování chroni dane w trzech kluczowych scenariuszach: przy utracie urządzenia (šifrování dysku i konteneróv mobilních aplikací), przy przechwyceniu ruchu (protokoły sieciowe TLS/HTTPS) i przy wycieku z serwera (šifrování end-to-end). Każdy scenariusz wymaga własnego podejścia i narzędzi.

Šifrování w spoczynku i w tranzycie

Data at rest — dane na urządzeniu — jest szyfrowane przez Android Keystore i iOS Keychain. W Android od wersji 7.0 stosowane jest šifrování plików (File-Based Encryption), a aplikacje mogą dodatkowo szyfrować swoje dane przez EncryptedSharedPreferences i EncryptedFile z biblioteki AndroidX Security. W iOS wszystkie aplikacje domyślnie korzystają z Data Protection API, który szyfruje pliki na poziomie systemu plików z kluczem powiązanym z kodem urządzenia. Dla data in transit stosowany jest TLS 1.2/1.3 z obowiązkowym Certificate Pinning.

Šifrování end-to-end

Šifrování end-to-end (E2E) — najwyższy poziom ochrony danych, w którym wiadomość jest szyfrowana na urządzeniu nadawcy i deszyfrowana tylko na urządzeniu odbiorcy. Serwer przechowywania i przesyłania danych nie ma dostępu do treści — operuje tylko na zaszyfrowanych blobach. Najbardziej znana implementacja E2E dla aplikacji mobilnych — Signal Protocol, używający Double Ratchet Algorithm w kombinacji z X3DH (Extended Triple Diffie-Hellman) do początkowej wymiany kluczy. Signal Protocol zapewnia Perfect Forward Secrecy i future secrecy: kompromitacja jednego klucza nie ujawnia poprzednich i kolejnych wiadomości. Według badań uniwersytetu Carnegie Mellon (2023), šifrování E2E w komunikatorach zmniejsza ryzyko wycieku korespondencji o 99,7% w porównaniu z šifrováním TLS-only. Stosowanie E2E jest obowiązkowe dla aplikacji kategorii Health & Fitness i Finance zgodnie z wymaganiami GDPR i HIPAA. Do implementacji E2E we własnym projekcie zaleca się użycie biblioteki Signal Protocol (Java/Swift) lub opartej na Olm (Matrix protocol). Przy wyborze rozwiązania E2E oceń kompatybilność z platformą: Signal Protocol wymaga obsługi asynchronicznego wysyłania i przechowywania kluczy na kliencie, co komplikuje implementację scenariuszy multi-device — w takich przypadkach Matrix Protocol z jego modelem pokojów może być lepszym wyborem.

Implementacja szyfrowania v mobilních aplikacích

Rozważmy przykład szyfrowania i deszyfrowania danych na Android z użyciem Jetpack Security (AndroidX Security). Biblioteka udostępnia EncryptedFile do szyfrowania plików i EncryptedSharedPreferences dla ustawień.

kotlin
val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val encryptedFile = EncryptedFile.Builder(
    context,
    File(context.filesDir, "secret.dat"),
    masterKey,
    EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()

encryptedFile.openFileOutput(applicationContext).use { outputStream ->
    outputStream.write("Citlivá uživatelská data".toByteArray(Charsets.UTF_8))
}

MasterKey jest tworzony przy użyciu AES256-GCM — najbezpieczniejszego trybu szyfrowania symetrycznego. Klucz jest przechowywany w Android Keystore, izolowanym od głównego procesu: nawet przy kompromitacji aplikacji osoba atakująca nie może wyodrębnić klucza. EncryptedFile używa schematu AES-256-GCM z HKDF do derivacji klucza i rozmiarem strony 4KB, co daje dobry balans między szybkością a bezpieczeństwem. Do odczytu danych używane jest openFileInput z tymi samymi parametrami: biblioteka automatycznie deszyfruje dane przy odczycie.

Na iOS analogiczna funkcjonalność jest zapewniana przez CryptoKit (Swift) z użyciem AES.GCM lub ChaChaPoly. Klucz jest przechowywany w Secure Enclave przez Keychain Services. Zasada jest taka sama: klucze nigdy nie opuszczają chronionego magazynu sprzętowego, a dane są szyfrowane przed zapisem na dysk. Taka architektura jest zgodna z zaleceniami OWASP MASVS (Mobile Application Security Verification Standard) poziomu L2 — dla aplikacji pracujących z wrażliwymi danymi. W rzeczywistych projektach kombinacja EncryptedSharedPreferences dla tokenów i EncryptedFile dla danych użytkownika pokrywa 100% scenariuszy lokalnego szyfrowania. Dodatkowo, do pracy z kluczami otrzymanymi z serwera (np. klucze sesyjne ECDH) używany jest Android KeyStore z parametrem purpose = KeyProperties.PURPOSE_ENCRYPT, który gwarantuje, że klucz może być używany tylko do dozwolonych operacji kryptograficznych i nigdy nie jest eksportowany z magazynu sprzętowego do pamięci operacyjnej w otwartej postaci.

Często zadawane pytania

Które šifrování jest uważane za najbezpieczniejsze dla aplikacji mobilnych?

AES-256 w trybie GCM z przechowywaniem klucza w magazynie sprzętowym (Android Keystore / iOS Keychain) jest uważany za złoty standard. Dla ruchu sieciowego — TLS 1.3 z krzywą eliptyczną Curve25519. ChaCha20-Poly1305 jest używany jako alternatywa na urządzeniach bez sprzętowego AES.

Czym różni się AES od RSA?

AES — algorytm symetryczny (jeden klucz), szybki, odpowiedni do szyfrowania dużych ilości danych. RSA — asymetryczny (para kluczy), wolny, używany do szyfrowania kluczy i podpisów, a nie samych danych. W aplikacjach mobilnych AES szyfruje dane, RSA chroni klucze.

Czy trzeba szyfrować wszystkie dane v mobilních aplikací?

Szyfrować należy dane poufne: tokeny dostępu, hasła, dane osobowe, dane płatnicze, dokumentację medyczną. Dane publiczne (zdjęcia, treści) można pozostawić nieszyfrowane, jednak lepiej przechowywać je w chronionym kontenerze aplikacji.

Jak działa šifrování end-to-end na urządzeniach mobilnych?

Przy szyfrowaniu end-to-end dane są szyfrowane na urządzeniu nadawcy przed wysłaniem i deszyfrowane tylko na urządzeniu odbiorcy. Serwer widzi tylko zaszyfrowane dane. Protokół Double Ratchet, zaimplementowany w Signal Protocol, to najczęściej stosowany mechanizm E2E w komunikatorach mobilnych.

Czy można używać tego samego szyfrowania dla danych na urządzeniu i dla sieci?

Technicznie można, ale nie jest zalecane. Dla danych na urządzeniu używaj szyfrowania symetrycznego (AES-GCM) z kluczem z Keystore. Dla sieci — TLS 1.3 z osobnym zestawem kluczy i Certificate Pinning. Rozdzielenie zapobiega kompromitacji obu kanałów przy wycieku jednego klucza.

Podsumowanie

  • Šifrování — obowiązkowy element bezpieczeństwa aplikacji mobilnych, chroniący dane w spoczynku i w tranzycie.
  • AES-256 GCM — standard szyfrowania symetrycznego, zalecany przez NIST dla wszystkich typów danych.
  • Šifrování hybrydowe (ECDH + AES) łączy szybkość symetrycznego i bezpieczeństwo asymetrycznego podejścia.
  • Android Keystore i iOS Keychain — sprzętowe magazyny kluczy, izolujące materiały kryptograficzne od aplikacji.
  • Data at rest jest szyfrowane przez EncryptedSharedPreferences i EncryptedFile (Android) lub Data Protection API (iOS).
  • Data in transit jest chronione przez TLS 1.3 z Certificate Pinning i Perfect Forward Secrecy.
  • Zalecenie: szyfruj wszystkie poufne dane przez Jetpack Security (Android) lub CryptoKit (iOS) z kluczami w magazynie sprzętowym.

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é