Mobiele encryptie voor overdracht: veilig delen onderweg
Zorg dat mobiele overdrachten end-to-end zijn versleuteld. Hoe browserencryptie werkt op iOS en Android.
Bestandsencryptie op mobiel werkt in Safari op iOS en Chrome of Firefox op Android via de Web Crypto API — dezelfde crypto.subtle.encrypt-aanroep die op een desktop werkt. Bestanden die je uit de Foto's-bibliotheek of Bestanden-app selecteert, worden versleuteld met AES-256-GCM voordat er ook maar één byte de telefoon verlaat. Het zwaarste rekenwerk is PBKDF2-sleutelafleiding: op een iPhone 14 Pro is 600.000 iteraties klaar in ongeveer 350 ms. Voor een .mov van 500 MB is de echte bottleneck de uploadsnelheid van je verbinding, niet de encryptie. Mobiele overdrachtsservices hebben geen native app nodig — de browser heeft alles wat nodig is.
Waarom browsergebaseerd beter werkt dan native apps
Native iOS- en Android-apps voor bestandsoverdracht — Dropbox, de pre-2023 WeTransfer-app — vragen brede rechten, blijven actief na gebruik en tonen advertenties. Een browsergebaseerde aanpak vereist geen installatie, draait eenmalig en sluit af zodra je het tabblad dicht. Cruciaal: Apple's App Store wees echte zero-knowledge apps af (de Cryptee-saga uit 2021 is goed gedocumenteerd), waardoor browserlevering de enige manier is om te garanderen dat de encryptielogica niet stilletjes wordt vervangen bij een app-update. Dezelfde JavaScript-bundel draait overal en is verifieerbaar via SHA-384-hashes.
De Web Crypto API op iOS en Android
Safari 17 op iOS 17+ ondersteunt crypto.subtle volledig: deriveKey, encrypt, decrypt, sign, verify. Chrome op Android ondersteunt het al sinds versie 37 uit 2014. Beide implementaties delegeren naar native OS-primitieven — CommonCrypto op iOS, BoringSSL op Android — dus de cryptografie is hardwareversneld via ARMs AES-instructies. Een chunk van 5 MB versleutelt op een Pixel 8 in ongeveer 15 ms. De API geeft geen onbewerkt sleutelmateriaal vrij aan JavaScript (CryptoKey-objecten zijn ondoorzichtige verwijzingen), wat bescherming biedt tegen kwaadaardige extensies — al heeft de mobiele browser er beduidend minder van.
Grote bestanden verwerken zonder het geheugen te laten exploderen
Mobile Safari beperkt de JavaScript-heap tot circa 2 GB op iPhones met 6 GB RAM, minder op oudere toestellen. Een naïef patroon — "lees bestand in ArrayBuffer, versleutel, upload" — crasht bij alles boven 1 GB. Streaming is verplicht. Gebruik File.slice() om 5 MB-blokken te lezen, versleutel elk blok met een subsleutel afgeleid via HKDF, en upload via fetch() met een ReadableStream-body. Progressieve upload houdt het piekgeheugen onder de 50 MB, zelfs bij video's van 10 GB. Chrome op Android ondersteunt streaming fetch requests sinds versie 105; Safari voegde volledige ondersteuning toe in versie 17.4.
Batterij en warmte
AES-256-GCM is goedkoop op hardware — ARMs Cryptography Extensions laten het draaien op bijna de snelheid van het DRAM-geheugen. Een versleuteling van 1 GB op een iPhone 14 Pro verbruikt circa 2% batterij, en dat is grotendeels de radio voor de upload, niet de CPU. Warmte voel je bij PBKDF2 met veel iteraties: 1,2 miljoen iteraties (OWASP 2024-aanbeveling) kost 700 ms en piekt de A17 kort naar 90°C. Met 600.000 iteraties houd je een goede balans tussen beveiliging en thermisch gedrag. Argon2id met m=32 MB is zachter voor langdurige werklasten omdat geheugenintensiteit trager maar minder vermogensdicht is.
Mobiele uploads en verbindingsbetrouwbaarheid
Mobiele uploads mislukken. Een tunnel in de metro, een lift, een overschakeling van wifi naar 4G — al deze situaties breken een eenvoudig fetch()-verzoek af. Betrouwbare mobiele overdracht gebruikt hervatbare uploads met bevestiging per chunk: protocollen als tus.io (tus 1.0-spec) of S3 multipart-uploads. Elk blok van 5 MB wordt onafhankelijk geüpload; bij een mislukking wordt alleen dat blok opnieuw verstuurd. De client bewaart de chunk-status in IndexedDB, zodat een tabblad herladen of iOS-tab-evictie niet het hele werk herstart. HexaTransfer implementeert hervatbare uploads; WeTransfer's mobiele webflow doet dat niet — reden waarom uploads van 2 GB via 4G daar regelmatig mislukken.
Wachtwoorden invoeren op een telefoontoetsenbord
Een sterk wachtwoord van 16 tekens intypen op een telefoontoetsenbord is vervelend. Bied alternatieven: scan een QR-code met het wachtwoord van het scherm van de verzender, plak vanuit de systeemeigen wachtwoordbeheerder (iOS vult aan vanuit Keychain), of gebruik een passkey die bij een eerdere overdracht is aangemaakt. Voor eenmalige gevallen kun je de Web Share Target API gebruiken om een companion-app zoals Signal het wachtwoord te laten injecteren zonder dat de gebruiker het hoeft over te typen.
Toegankelijkheid en kleine schermen
Een iPhone SE van 4,7 inch past geen desktopachtige drag-and-drop-uploader. Mobiele encryptie-UI's moeten de viewport respecteren: een schermvullende bestandskiezer, voortgangsbalken die zichtbaar blijven boven het schermtoetsenbord, VoiceOver-labels op elke knop (role="progressbar" met aria-valuenow), en een minimaal aantikgebied van 44×44 px conform Apple HIG. Verberg besturingselementen niet achter hover-states — op aanraakschermen bestaat geen hover. Test ook met iOS Low Power Mode, dat achtergrondtimers throttelt en op polling gebaseerde voortgangsupdates breekt.
iOS Safari-valkuilen die uploads breken
Safari op iOS heeft een paar valkuilen. De upload-voortgangsgebeurtenissen van de Fetch API vuurden vóór iOS 16.4 niet betrouwbaar. De File System Access API wordt niet ondersteund, dus je kunt grote bestanden niet streamen vanuit lokale opslag zoals Chrome dat doet. Safari verwijdert inactieve tabbladen agressief bij geheugendruk, waardoor lopende uploads worden afgebroken. Oplossingen: gebruik XMLHttpRequest met progress-events als terugvaloptie, houd het tabblad op de voorgrond tijdens de upload, en waarschuw gebruikers geen schermvergrendeling te activeren bij grote bestanden. Het scherm aan laten kosten batterij, maar voorkomt tab-evictie.
Android-fragmentatie over honderden apparaatmodellen
Android loopt uiteen van Pixel 8 Pro tot budgettoestellen van €80 die Android Go draaien. Web Crypto werkt op allemaal, maar de prestaties variëren sterk: een MT6762 op 2 GHz heeft 1,8 seconde nodig voor 600.000 PBKDF2-iteraties, terwijl een telefoon met Apple M3-klasse processor dat in 200 ms doet. Detecteer het toestel via de Device Memory API en Hardware Concurrency, schaal het aantal iteraties dienovereenkomstig — tot 300.000 voor Go-apparaten — en waarschuw gebruikers op only-mobiele verbindingen dat uploads boven 1 GB onbetrouwbaar kunnen zijn. Het voordeel: versleutelde overdracht werkt op de meeste telefoons ter wereld, zonder dat je een vlaggenschip nodig hebt.
Probeer het op hexatransfer.com — gratis, zonder account, tot 10 GB.
Verstuur grote bestanden veilig met end-to-end-versleuteling
Draag bestanden tot 10 GB gratis over met end-to-end-versleuteling. Geen account nodig. Uw bestanden worden in uw browser versleuteld voordat ze worden geüpload — niemand anders kan ze lezen.
Een bestand verzenden