Versleuteling in mobiele apps — basis, algoritmen en principe van werking

Auteur: IT Sectr Gepubliceerd: 2026-04-02 Leestijd: 8 min

Versleuteling is het proces van het omzetten van gegevens in een vorm die niet leesbaar is zonder een speciale sleutel. In mobiele apps beschermt versleuteling persoonlijke gebruikersgegevens, betalingsinformatie en bedrijfslogica tegen onderschepping en lekken. Volgens Statista (2024) is het aantal datalekken uit mobiele apps in twee jaar tijd met 38% gestegen, en in 72% van de gevallen was de oorzaak het ontbreken of onjuist toepassen van versleuteling. Moderne mobiele platforms bieden ingebouwde API's voor versleuteling en het gebruik ervan is een verplichte veiligheidsnorm. Statista, 2024

Belangrijkste punten

  • Versleuteling — het omzetten van gegevens in een onleesbare vorm, alleen omkeerbaar met een ontsleutelingssleutel.
  • Symmetrische versleuteling gebruikt één sleutel voor zowel versleuteling als ontsleuteling — snel, maar vereist veilige sleuteloverdracht.
  • Asymmetrische versleuteling gebruikt een sleutelpaar (openbaar en privé) — veiliger, maar langzamer dan symmetrisch.
  • AES-256 — de gouden standaard voor symmetrische versleuteling, aanbevolen door NIST en gebruikt in Android en iOS.
  • End-to-endversleuteling garandeert dat gegevens zelfs voor de server ontoegankelijk zijn — alleen de verzender en ontvanger kunnen ze lezen.

Wat is versleuteling in mobiele apps?

Versleuteling in de context van mobiele apps is het toepassen van cryptografische algoritmen om gegevens te beschermen die op het apparaat zijn opgeslagen (data at rest) en via het netwerk worden verzonden (data in transit). Op apparaatniveau wordt de lokale opslag versleuteld: bestanden, databases, SharedPreferences en cache. Op netwerkniveau wordt het verkeer tussen de app en de server versleuteld via TLS/HTTPS-protocollen. Het uiteindelijke doel is om te garanderen dat zelfs bij fysieke toegang tot het apparaat of onderschepping van verkeer, een aanvaller de beschermde gegevens niet kan lezen zonder cryptografische sleutel.

Waarom is versleuteling nodig in mobiele apps

Mobiele apparaten zijn bijzonder kwetsbaar voor gegevensverlies: een telefoon kan gemakkelijk worden verloren, gestolen of geïnfecteerd met malware. Volgens Ponemon Institute (2023) schrijft 42% van de bedrijven die getroffen zijn door datalekken de incidenten toe aan mobiele apparaten. Zonder versleuteling kan een aanvaller via USB verbinding maken met het apparaat, de SQLite-database extraheren en alle opgeslagen gegevens lezen. Versleuteling lost dit probleem op: zelfs als de database wordt geëxtraheerd, blijft de inhoud versleuteld. Bovendien zijn er in de VS en de EU wetten (GDPR, CCPA) die versleuteling van persoonsgegevens vereisen en boetes opleggen tot 4% van de jaaromzet voor overtredingen. Het gebruik van versleuteling is niet alleen een technische, maar ook een juridische noodzaak voor elke mobiele app die met gebruikersgegevens werkt.

Symmetrische en asymmetrische versleuteling

Alle versleutelingsalgoritmen zijn onderverdeeld in twee hoofdtypen: symmetrisch (één sleutel voor versleuteling en ontsleuteling) en asymmetrisch (een sleutelpaar — openbaar en privé). De keuze van het type hangt af van het gebruiksdoel: voor het versleutelen van lokale gegevens worden vaak symmetrische algoritmen gebruikt vanwege hun snelheid, en voor sleuteloverdracht en authenticatie — asymmetrische.

KenmerkSymmetrischAsymmetrisch
Aantal sleutels1 (geheim)2 (openbaar + privé)
SnelheidHoog (1–10 GB/s)Laag (1–10 MB/s)
SleuteldistributieProblematisch — sleutel moet worden overgedragenEenvoudig — openbare sleutel wordt gepubliceerd
VoorbeeldenAES, ChaCha20RSA, ECDH, ECIES
Toepassing in mobiele ontwikkelingVersleuteling van lokale gegevensSleuteluitwisseling, digitale handtekeningen

In de praktijk wordt in mobiele apps hybride versleuteling gebruikt: met een asymmetrisch algoritme (bijv. ECDH) wisselen partijen een sessiesleutel uit, en alle daaropvolgende gegevens worden versleuteld met een symmetrisch algoritme (AES of ChaCha20). Deze benadering combineert de snelheid van symmetrische versleuteling met de veiligheid van asymmetrische sleuteluitwisseling. Deze methode vormt de basis van TLS 1.3, Signal Protocol en Apple iMessage.

Belangrijkste versleutelingsalgoritmen

Moderne mobiele ontwikkeling gebruikt verschillende gestandaardiseerde versleutelingsalgoritmen, elk ontworpen voor specifieke taken met hun eigen toepassingsgebied.

  • AES (Advanced Encryption Standard) — symmetrische blokversleuteling, gecertificeerd door NIST in 2001. Gebruikt sleutels van 128, 192 of 256 bits. Aanbevolen modus — GCM (Galois/Counter Mode), die geverifieerde versleuteling biedt. AES-256 wordt gebruikt in Android Keystore, iOS Keychain en alle moderne TLS-protocollen.
  • ChaCha20-Poly1305 — symmetrische stroomversleuteling, ontwikkeld door Daniel Bernstein. Biedt dezelfde veiligheid als AES-256, maar werkt sneller op apparaten zonder hardwarematige AES-versnelling (typisch voor budget-Android-smartphones). ChaCha20 wordt gebruikt in TLS 1.3 als alternatief voor AES-GCM en is de primaire versleuteling in Signal Protocol.
  • RSA (Rivest-Shamir-Adleman) — asymmetrisch algoritme, gebruikt voor sleutelversleuteling en digitale handtekeningen. Minimale aanbevolen sleutelgrootte — 2048 bits. RSA is langzamer dan ECDH, daarom wordt het in moderne mobiele apps vervangen door elliptische-curve-cryptografie (ECC).
  • ECDH (Elliptic Curve Diffie-Hellman) — asymmetrisch sleuteluitwisselingsprotocol op basis van elliptische curven. Biedt Perfect Forward Secrecy en wordt standaard gebruikt in TLS 1.3. De Curve25519 (X25519) is de meest voorkomende in mobiele apps.

Hoe versleuteling gebruikersgegevens beschermt

Versleuteling beschermt gegevens in drie belangrijke scenario's: bij verlies van het apparaat (schijfversleuteling en app-containers), bij onderschepping van verkeer (netwerkprotocollen TLS/HTTPS) en bij een lek op de server (end-to-end-versleuteling). Elk scenario vereist zijn eigen aanpak en hulpmiddelen.

Versleuteling in rust en onderweg

Data at rest — gegevens op het apparaat — wordt versleuteld via Android Keystore en iOS Keychain. Op Android vanaf versie 7.0 wordt bestandsgebaseerde versleuteling (File-Based Encryption) gebruikt, en apps kunnen hun gegevens extra versleutelen via EncryptedSharedPreferences en EncryptedFile uit de AndroidX Security-bibliotheek. Op iOS werken alle apps standaard met Data Protection API, die bestanden versleutelt op bestandssysteemniveau met een sleutel die is gekoppeld aan de apparaatcode. Voor data in transit wordt TLS 1.2/1.3 gebruikt met verplichte Certificate Pinning.

End-to-endversleuteling

End-to-endversleuteling (E2E) — het hoogste niveau van gegevensbescherming, waarbij een bericht wordt versleuteld op het apparaat van de verzender en alleen wordt ontsleuteld op het apparaat van de ontvanger. De server voor opslag en overdracht heeft geen toegang tot de inhoud — deze werkt alleen met versleutelde blobs. De bekendste implementatie van E2E voor mobiele apps is Signal Protocol, dat het Double Ratchet Algorithm gebruikt in combinatie met X3DH (Extended Triple Diffie-Hellman) voor initiële sleuteluitwisseling. Signal Protocol biedt Perfect Forward Secrecy en future secrecy: compromittering van één sleutel onthult geen eerdere of volgende berichten. Volgens onderzoek van de Carnegie Mellon University (2023) vermindert E2E-versleuteling in messengers het risico op het lekken van correspondentie met 99,7% in vergelijking met alleen TLS-versleuteling. Toepassing van E2E is verplicht voor apps in de categorieën Health & Fitness en Finance volgens de vereisten van GDPR en HIPAA. Voor implementatie van E2E in een eigen project wordt aanbevolen de Signal Protocol-bibliotheek (Java/Swift) of Olm (Matrix protocol) te gebruiken. Bij het kiezen van een E2E-oplossing moet u de compatibiliteit met het platform beoordelen: Signal Protocol vereist ondersteuning voor asynchrone verzending en opslag van sleutels op de client, wat de implementatie van multi-device-scenario's bemoeilijkt — voor dergelijke gevallen kan Matrix Protocol met zijn kamermodel een betere keuze zijn.

Implementatie van versleuteling in mobiele apps

Laten we een voorbeeld bekijken van het versleutelen en ontsleutelen van gegevens op Android met Jetpack Security (AndroidX Security). De bibliotheek biedt EncryptedFile voor bestandsversleuteling en EncryptedSharedPreferences voor instellingen.

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("Gevoelige gebruikersgegevens".toByteArray(Charsets.UTF_8))
}

MasterKey wordt aangemaakt met AES256-GCM — de veiligste modus voor symmetrische versleuteling. De sleutel wordt opgeslagen in Android Keystore, geïsoleerd van het hoofdproces: zelfs bij compromittering van de app kan een aanvaller de sleutel niet extraheren. EncryptedFile gebruikt AES-256-GCM met HKDF voor sleutelafleiding en een paginagrootte van 4KB, wat een goede balans biedt tussen snelheid en veiligheid. Voor het lezen van gegevens wordt openFileInput gebruikt met dezelfde parameters: de bibliotheek ontsleutelt de gegevens automatisch bij het lezen.

Op iOS wordt vergelijkbare functionaliteit geboden via CryptoKit (Swift) met AES.GCM of ChaChaPoly. De sleutel wordt opgeslagen in Secure Enclave via Keychain Services. Het principe is hetzelfde: sleutels verlaten nooit de beveiligde hardwareopslag en gegevens worden versleuteld voordat ze naar schijf worden geschreven. Deze architectuur voldoet aan de aanbevelingen van OWASP MASVS (Mobile Application Security Verification Standard) niveau L2 — voor apps die met gevoelige gegevens werken. In echte projecten dekt de combinatie van EncryptedSharedPreferences voor tokens en EncryptedFile voor gebruikersgegevens 100% van de lokale versleutelingsscenario's. Daarnaast wordt voor het werken met sleutels die van de server zijn ontvangen (bijv. ECDH-sessiesleutels) Android KeyStore gebruikt met parameter purpose = KeyProperties.PURPOSE_ENCRYPT, wat garandeert dat de sleutel alleen kan worden gebruikt voor toegestane cryptografische bewerkingen en nooit in ongecodeerde vorm uit de hardwareopslag naar het werkgeheugen wordt geëxporteerd.

Veelgestelde vragen

Welke versleuteling wordt als de meest betrouwbare voor mobiele apps beschouwd?

AES-256 in GCM-modus met sleutelopslag in hardwareopslag (Android Keystore / iOS Keychain) wordt als de gouden standaard beschouwd. Voor netwerkverkeer — TLS 1.3 met elliptische curve Curve25519. ChaCha20-Poly1305 wordt gebruikt als alternatief op apparaten zonder hardwarematige AES.

Wat is het verschil tussen AES en RSA?

AES — een symmetrisch algoritme (één sleutel), snel, geschikt voor het versleutelen van grote hoeveelheden gegevens. RSA — asymmetrisch (sleutelpaar), langzaam, gebruikt voor sleutelversleuteling en handtekeningen, niet voor gegevens. In mobiele apps versleutelt AES gegevens, RSA beschermt sleutels.

Moeten alle gegevens in de app worden versleuteld?

Alleen vertrouwelijke gegevens moeten worden versleuteld: toegangstokens, wachtwoorden, persoonlijke informatie, betalingsgegevens, medische dossiers. Openbare gegevens (afbeeldingen, inhoud) kunnen onversleuteld blijven, maar het is beter om ze in een beveiligde app-container op te slaan.

Hoe werkt end-to-endversleuteling op mobiele apparaten?

Bij end-to-endversleuteling worden gegevens versleuteld op het apparaat van de verzender voordat ze worden verzonden en alleen ontsleuteld op het apparaat van de ontvanger. De server ziet alleen versleutelde gegevens. Het Double Ratchet-protocol, geïmplementeerd in Signal Protocol, is het meest voorkomende E2E-mechanisme in mobiele messengers.

Kan dezelfde versleuteling worden gebruikt voor zowel gegevens op het apparaat als voor het netwerk?

Technisch mogelijk, maar niet aanbevolen. Gebruik voor gegevens op het apparaat symmetrische versleuteling (AES-GCM) met een sleutel uit Keystore. Voor het netwerk — TLS 1.3 met een aparte sleutelset en Certificate Pinning. Scheiding voorkomt compromittering van beide kanalen bij lekken van één sleutel.

Samenvatting

  • Versleuteling — een verplicht onderdeel van mobiele app-beveiliging, ter bescherming van gegevens in rust en onderweg.
  • AES-256 GCM — de standaard voor symmetrische versleuteling, aanbevolen door NIST voor alle gegevenstypen.
  • Hybride versleuteling (ECDH + AES) combineert de snelheid van symmetrische met de veiligheid van asymmetrische benaderingen.
  • Android Keystore en iOS Keychain — hardwarematige sleutelopslag die cryptografisch materiaal isoleert van de app.
  • Data at rest wordt versleuteld via EncryptedSharedPreferences en EncryptedFile (Android) of Data Protection API (iOS).
  • Data in transit wordt beschermd via TLS 1.3 met Certificate Pinning en Perfect Forward Secrecy.
  • Aanbeveling: versleutel alle vertrouwelijke gegevens via Jetpack Security (Android) of CryptoKit (iOS) met sleutels in hardwareopslag.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook