Criptarea în aplicațiile mobile — baze, algoritmi și principiul de funcționare

Autor: IT Sectr Publicat: 2026-04-02 Timp de citire: 8 min

Criptarea (encryption) — to proces przekształcania danych w formę niedostępną do odczytu bez specjalnego klucza. W aplikacjach mobilnych criptarea 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 criptarea. Nowoczesne platformy mobilne udostępniają wbudowane API do szyfrowania, a ich użycie jest obowiązkowym standardem bezpieczeństwa. Statista, 2024

Principalele

  • Criptarea — przekształcanie danych w nieczytelną postać, odwracalne tylko przy użyciu klucza deszyfrującego.
  • Criptarea symetryczne używa jednego klucza do szyfrowania i deszyfrowania — szybkie, ale wymaga bezpiecznego przekazania klucza.
  • Criptarea 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.
  • Criptarea end-to-end gwarantuje, że dane są niedostępne nawet dla serwera — tylko dla nadawcy i odbiorcy.

Czym jest criptarea în aplicațiile mobile?

Criptarea 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 criptarea jest potrzebne în aplicațiile mobile

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. Criptarea 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.

Criptarea 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 mobilnejCriptarea danych lokalnychWymiana kluczy, podpisy cyfrowe

W praktyce în aplicațiile mobile stosuje się criptarea 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 criptarea. 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 în aplicațiile mobile.

Jak criptarea chroni dane użytkowników

Criptarea chroni dane w trzech kluczowych scenariuszach: przy utracie urządzenia (criptarea dysku i konteneróîn aplicațiile mobile), przy przechwyceniu ruchu (protokoły sieciowe TLS/HTTPS) i przy wycieku z serwera (criptarea end-to-end). Każdy scenariusz wymaga własnego podejścia i narzędzi.

Criptarea 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 criptarea 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.

Criptarea end-to-end

Criptarea 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), criptarea E2E w komunikatorach zmniejsza ryzyko wycieku korespondencji o 99,7% w porównaniu z criptaream 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 în aplicațiile mobile

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("Date sensibile ale utilizatorului".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 criptarea 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 în aplicațiile mobile?

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 criptarea 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

  • Criptarea — 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.
  • Criptarea 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.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și