
Mijn korte antwoord: Op moderne iPhones en high-end Android-apparaten kies ik meestal voor AES-GCM. Op oudere, goedkope of gemengde Android-apparaten is ChaCha20-Poly1305 vaak de betere keuze. Niet vanwege „meer veiligheid“, maar vanwege snelheid, CPU-belasting, warmte en batterij.
Als ik het onderwerp tot een eenvoudige regel zou samenvatten, dan deze:
Een punt springt eruit: draait AES zonder hardware, dan kan de inspanning volgens het artikel tot wel 10 keer meer CPU-cycli per byte kosten. Op instap-Android-apparaten kan ChaCha20 ongeveer 3× sneller zijn. Dat merk je bij foto-uploads, synchronisatie, berichten en cache.
Waar ik op let:
Kort gezegd: Als ik een app bouw voor veel Android-klassen, wil ik gelijke prestaties. Als ik mik op nieuwe apparaten met AES-hardware, is AES-GCM vaak mijn eerste keuze.
| Punt | AES-GCM | ChaCha20-Poly1305 |
|---|---|---|
| Veiligheid bij correct gebruik | Hoog | Hoog |
| Hardware-nabijheid | Sterk | Laag |
| Op nieuwe iPhones / vlaggenschepen | Vaak vooraan | Goed |
| Op oude / goedkope Android-apparaten | Vaak zwakker | Vaak vooraan |
| CPU-belasting zonder AES-hardware | Vrij hoog | Vrij lager |
| Warmte / batterij op zwakke apparaten | Kan sterker stijgen | Vaak gelijkmatiger |
| Hoofdrisico | Nonce dubbel, data voor controle | Nonce dubbel, data voor controle |
| Typische mobiele toepassingen | lokale data, backend met AES-focus | Berichten, uploads, gemengde Android-park |
Ik vat het artikel zo samen: Niet „Welke algoritme is beter?“ is de kernvraag, maar „Op welk apparaat draait mijn app, en waar liggen de data?“
Uiteindelijk gaat het om drie dingen: opbouw, gebruik van de hardware en fouten bij de implementatie. Voor mobiele apps tellen in het dagelijks gebruik vooral de beschikbare hardware, de uitvoeringstijd in software en de vraag wat er gebeurt als er iets misgaat bij de implementatie.
AES-GCM is een AEAD-methode op AES-basis. Op apparaten met hardwareversnelling werkt het erg snel. Ontbreekt deze ondersteuning, dan daalt de prestatie vaak aanzienlijk.
ChaCha20-Poly1305 is een AEAD-methode op ChaCha20-basis. Het is ontworpen voor uitvoering in software en is daarom vaak in het voordeel op oudere of goedkopere Android-apparaten.
Beide methoden hebben hetzelfde kritieke punt: Een nonce mag nooit met dezelfde sleutel opnieuw worden gebruikt. Gebeurt dat toch, dan wordt de beveiliging van beide methoden doorbroken. Bij AES-GCM kunnen dan zelfs vervalsingen mogelijk worden.
Even belangrijk: Ontsleutelde data mogen pas na succesvolle authenticatie worden verwerkt. Anders gezegd: eerst controleren, dan aanraken. Alles anders is alsof je de voordeur pas op slot doet nadat je bent binnengekomen.
| Kenmerk | AES-GCM | ChaCha20-Poly1305 |
|---|---|---|
| Type cipher | AEAD-methode op AES-basis | AEAD-methode op ChaCha20-basis |
| Authenticatie | GCM | Poly1305 |
| Praktisch voordeel | Erg snel met hardwareversnelling | Voordelig op apparaten zonder AES-versnelling |
| Typische implementatierisico’s | Nonce-hergebruik, verwerking voor authenticatie | Nonce-hergebruik, verwerking voor authenticatie |
Hoe dit uitpakt voor snelheid en batterij zie je in de volgende sectie.
AES-GCM vs. ChaCha20-Poly1305: Mobile Encryption Guide by Device Class
Op mobiele apparaten maakt vooral de apparaatklasse het verschil. AES-GCM profiteert sterk van hardwareversnelling, terwijl ChaCha20-Poly1305 ook snel blijft als alles in software draait. Juist daar zie je het verschil tussen high-end, middenklasse en oudere apparaten.
Voor apps met foto’s, berichten en veilingupdates telt vooral één ding: Hoe goed lopen sync en encryptie op oudere smartphones? Want daar merk je vertragingen, hoge CPU-belasting en lege accu’s het snelst.
Op actuele iPhones en high-end Android-apparaten is AES-GCM meestal sneller. De reden is simpel: de hardware voert AES-operaties direct uit en haalt daarmee zeer hoge doorvoersnelheden. Tegelijk blijven CPU-belasting, warmteontwikkeling en batterijverbruik laag. Dat maakt de prestaties ook over verschillende Android-apparaten beter voorspelbaar.
Veel oudere of goedkope Android-apparaten zonder ARMv8-cryptografie-extensies moeten AES volledig in software uitvoeren. Dat kost merkbaar meer rekentijd: software-AES kan tot 10 keer meer CPU-cycli per byte verbruiken dan hardwareversnelde AES. Het apparaat wordt dan sneller warm en de accu gaat merkbaar sneller leeg.
ChaCha20-Poly1305 is ontworpen voor uitvoering in software en heeft hier vaak duidelijk de overhand. Dat merk je direct bij syncs, foto-uploads en versleutelde lokale data.
De tabel laat zien hoe sterk de apparaatklasse invloed kan hebben op snelheid en batterij.
| Platform | Apparaatklasse | AES-versnelling | Prestaties | CPU-belasting | Warmte | Accuverbruik |
|---|---|---|---|---|---|---|
| iOS | Modern iPhone (A14+) | Volledig (hardware) | AES-GCM sneller* | Zeer laag | Minimaal | Vernieuwbaar |
| Android | Flagship | Volledig (hardware) | AES-GCM sneller* | Laag | Minimaal | Laag |
| Android | Middenklasse (bijv. SD 6-serie) | Gedeeltelijk / variabel | ChaCha20 vaak sneller* | Gemiddeld | Gemiddeld | Gemiddeld |
| Android | Instap / oudere apparaten | Geen (software) | ChaCha20 ~3× sneller* | Hoog | Snel opwarmen | Hoog (bij AES) |
Alle gegevens zijn benchmark-afhankelijk en variëren per SoC en bibliotheekimplementatie.
Een enkele snelheidswaarde van een actueel testapparaat zegt in de praktijk weinig. Het is zinvoller om gericht op oudere apparaten te testen die nog actief gebruikt worden.
Meet daarbij over 5–10 minuten onder belasting:
Belangrijk is ook: gebruik op beide platforms dezelfde bibliotheek. Anders vergelijk je uiteindelijk niet de algoritmen, maar alleen verschillen in implementatie.
Hoe sterk dit merkbaar is bij lokale data, afbeeldingen en API-aanroepen, zie je in het volgende hoofdstuk.
Voor Gunfinder is vooral één ding belangrijk: Worden data lokaal opgeslagen of overgedragen? Daar hangt precies vanaf waar het risico ligt en welke beschermingsmaatregel het meest oplevert.
Lokaal opgeslagen gegevens worden vaak onderschat. Toch ligt daar precies een deel van het probleem. Opgeslagen zoekresultaten, winkelwageninhoud evenals account- en profielgegevens bevinden zich direct op het apparaat. Is er geen beveiligde backup of is het apparaat gecompromitteerd, dan kunnen deze gegevens toegankelijk worden.
Bij lokale gegevens telt vooral het doelapparaat. Heeft het apparaat AES-versnelling, dan is AES-GCM een sterke keuze. Ontbreekt deze ondersteuning, dan werkt ChaCha20-Poly1305 vaak efficiënter. De sleutel moet veilig worden opgeslagen in de Android Keystore of in de Apple Keychain respectievelijk in de Secure Enclave. En één punt is niet onderhandelbaar: Elk bestand heeft een eigen 96-bit nonce nodig. Wordt een nonce hergebruikt, dan wordt de veiligheid en integriteit verbroken.
Hetzelfde basisprincipe geldt ook bij overdrachten. Daar ligt de focus echter op een andere plek: op payload en logging.
TLS beschermt het transportpad. Dat betekent echter niet automatisch dat ook de payload zelf beschermd is. Als privéberichten tussen kopers en verkopers of biedgegevens bij veilingen in serverlogs terechtkomen, zijn ze zonder extra encryptie op app-niveau in platte tekst leesbaar. Juist hier komen AES-GCM en ChaCha20-Poly1305 in beeld. Ze vullen de transportencryptie aan als tweede beschermlaag.
De crux is dus niet primair het algoritme. Beslissend is of gegevens op het apparaat liggen of via het netwerk gaan.
Bij lokale gegevens is de apparaatklasse het belangrijkste punt. Bij API-payloads, uploads en berichten draait het vooral om schoon sleutel- en noncebeheer.
Voor Gunfinder telt uiteindelijk precies dat: schoon sleutel- en noncebeheer. Welke variant in de praktijk beter past, toont het volgende hoofdstuk.
Voor Gunfinder is vooral één ding belangrijk: Welk apparaat gebruikt de app en welke gegevens worden verwerkt? Daaruit volgt in de praktijk de keuze van de methode. De onderstaande tabel brengt het op het punt en ordent typische Gunfinder-workflows.
| App-vereiste | Apparaatomgeving | Prioriteit | Aangeraden algoritme |
|---|---|---|---|
| Versleutelde concepten | iOS / vlaggenschip-Android | Hardwarebeveiliging | AES-GCM |
| Gecachte listings | Gemengde Android-apparaten | Prestaties consistentie | ChaCha20-Poly1305 |
| Account- en transactiegegevens | Alle platformen | Gegevensintegriteit | AES-GCM |
| Foto-uploads | Oudere of instap-Android-apparaten | Accu-efficiëntie | ChaCha20-Poly1305 |
| Marktplaatsberichten | Gemengde Android-apparaten | Lage latentie | ChaCha20-Poly1305 |
| Veilingupdates | Backend-verkeer | Bestaande AES-standaardisatie | AES-GCM |
Voor alle gevallen geldt hetzelfde basisprincipe: veilige sleutelopslag via Android Keystore of Apple Keychain, unieke nonces per operatie, TLS 1.3 voor elke overdracht en een regelmatige sleutelrotatie. Zonder deze punten helpt zelfs het beste algoritme maar half.
AES-GCM past goed bij moderne iPhones en high-end Android-apparaten als er AES-hardware aanwezig is en de backend er toch al op is gebouwd. Dan speelt het proces zijn sterke punten uit waar de apparaten het direct goed ondersteunen.
Zodra ook oudere of goedkopere Android-apparaten meespelen, is ChaCha20-Poly1305 vaak de betrouwbaardere keuze. De reden is simpel: de prestaties blijven op zulke apparaten meestal constanter dan bij software-AES.
Beide algoritmes zijn veilig als je ze correct gebruikt. Kort gezegd: AES-GCM past goed bij hardware-intensieve omgevingen, ChaCha20-Poly1305 meer bij gemengde Android-vloten.
Of jouw doelapparaat AES-hardwareversnelling heeft, hangt af van de ingebouwde CPU. Veel nieuwere processors ondersteunen AES-NI. Dat maakt de encryptie aanzienlijk efficiënter.
Bij Android- en iOS-apparaten controleer je dit het beste in de technische specificaties van de processor. Bij ARM-gebaseerde smartphones en tablets is de hardwareversnelling voor cryptografische operaties vaak al ingebouwd. Het besturingssysteem gebruikt deze meestal automatisch.
Als je een nonce meer dan één keer gebruikt, ondermijn je de veiligheid van de encryptie.
Dan kunnen aanvallers patronen in de versleutelde data zien of zelfs conclusies trekken over de gebruikte sleutel.
Dit raakt de vertrouwelijkheid van je data hard. Daarom geldt: de nonce moet bij elke encryptieoperatie nieuw en uniek zijn.
Nee. TLS 1.3 beschermt data tijdens de overdracht. Lokaal opgeslagen app-data op het apparaat valt er niet onder.
Als je data doorlopend wilt beschermen, heb je daarom ook lokale encryptie nodig. Bij gevoelige transacties kan ook AES-256 nuttig zijn.
Pas de combinatie van veilige overdracht en lokale encryptie helpt ook als er technische problemen zijn of iemand ongeautoriseerd toegang krijgt tot het eindapparaat.