Samenvatting
Snugg implementeert end-to-end encryptie voor alle gebruikersinhoud met behulp van moderne, goed gecontroleerde cryptografische primitieven. Dit document beschrijft onze encryptiearchitectuur, sleutelbeheeraanpak en het dreigingsmodel waartegen we beschermen.
Overzicht encryptiearchitectuur
Snugg gebruikt een hybride encryptiebenadering die asymmetrische en symmetrische cryptografie combineert om zowel beveiliging als prestaties te bieden.
Asymmetrische encryptie (publieke sleutel)
Elke gebruiker heeft een uniek sleutelpaar (X25519). De publieke sleutel wordt gedeeld met onze servers; de privésleutel verlaat nooit het apparaat van de gebruiker. Wordt gebruikt voor initiële sleuteluitwisseling en het beveiligen van groepssleutels.
Symmetrische encryptie (gedeeld geheim)
Elke groep heeft een symmetrische sleutel (XSalsa20-Poly1305) die alleen wordt gedeeld onder groepsleden. Deze sleutel versleutelt alle inhoud binnen de groep en biedt snelle encryptie/decryptie.
Hybride benadering
Wanneer u lid wordt van een groep, wordt de groepssleutel versleuteld met uw publieke sleutel en naar u verzonden. Uw apparaat ontsleutelt deze met uw privésleutel, waardoor u toegang krijgt tot groepsinhoud. Dit combineert de veiligheid van asymmetrische crypto met de efficiëntie van symmetrische crypto.
Sleutelbeheer
Veilig sleutelbeheer is cruciaal voor onze encryptiearchitectuur. Hier leest u hoe sleutels worden gegenereerd, opgeslagen en gebruikt:
Sleutelgeneratie
Wanneer u een account aanmaakt, genereert uw apparaat een cryptografisch veilig sleutelpaar met behulp van de Web Crypto API of TweetNaCl.js. Sleutels worden lokaal gegenereerd—ze passeren nooit onze servers.
Sleutelopslag
Privésleutels worden opgeslagen in versleutelde lokale opslag (IndexedDB) op uw apparaat, beschermd door een sleutel afgeleid van uw accountgegevens met behulp van PBKDF2 met 100.000 iteraties.
Sleuteldistributie
Wanneer u lid wordt van een groep, versleutelen bestaande leden de groepssleutel met uw publieke sleutel. Deze versleutelde bundel wordt opgeslagen op onze servers en kan alleen worden ontsleuteld door uw privésleutel.
Sleutelrotatie
Groepssleutels worden geroteerd wanneer leden vertrekken om forward secrecy te garanderen. Vertrokken leden kunnen nieuwe inhoud niet ontsleutelen, zelfs als ze de oude sleutel hebben bewaard.
Cryptografische primitieven
We gebruiken gevestigde, gecontroleerde cryptografische algoritmen:
| Doel | Algoritme | Bibliotheek |
|---|---|---|
| Sleuteluitwisseling | X25519 (Curve25519 ECDH) | TweetNaCl.js |
| Symmetrische encryptie | XSalsa20-Poly1305 | TweetNaCl.js |
| Digitale handtekeningen | Ed25519 | TweetNaCl.js |
| Hashing | SHA-256 | Web Crypto API |
| Sleutelafleiding | PBKDF2 (100k iteraties) | Web Crypto API |
Gegevensstroom: hoe inhoud wordt versleuteld
Dit is wat er gebeurt wanneer u inhoud naar een groep plaatst:
Dreigingsmodel
Begrijpen waartegen we beschermen—en waartegen niet—is essentieel voor gebruikers om weloverwogen beslissingen te nemen.
Waartegen we beschermen
- Servercompromittering: een aanvaller die toegang krijgt tot onze servers ziet alleen versleutelde cijfertekst
- Kwaadwillende medewerkers: Snugg-personeel kan gebruikersinhoud niet lezen—wij hebben de sleutels niet
- Overheidseisen: zelfs indien wettelijk verplicht, kunnen we alleen versleutelde gegevens verstrekken
- Netwerkafluisteren: alle verbindingen gebruiken TLS 1.3; inhoud is daarnaast E2E-versleuteld
Waartegen we niet beschermen
- Gecompromitteerde apparaten: als een aanvaller uw apparaat controleert, kan deze ontsleutelde inhoud lezen
- Screenshots door groepsleden: leden kunnen screenshots maken of ontsleutelde inhoud kopiëren
- Metadata-analyse: we kunnen zien wie in welke groepen zit en wanneer ze posten (maar niet de inhoud)
Beveiligingsaudits & verificatie
Wij geloven in verifieerbare beveiliging, niet beveiliging door obscuriteit:
Vertrouw ons niet—verifieer het. Onze broncode is beschikbaar op github.com/snugg-social
Technische referenties
Voor meer informatie over de cryptografische standaarden die we gebruiken:
- •TweetNaCl.js: een port van de goed gecontroleerde NaCl cryptografische bibliotheek
- •Curve25519: elliptische curve ontworpen door Daniel J. Bernstein voor sleuteluitwisseling
- •XSalsa20-Poly1305: geauthenticeerde encryptie uit de NaCl-familie
- •PBKDF2: Password-Based Key Derivation Function 2 (RFC 8018)
Beveiligingsvragen of responsible disclosure?
Als u vragen heeft over onze beveiligingsarchitectuur of een kwetsbaarheid wilt melden, horen we graag van u.
security@snugg.socialLaatst bijgewerkt: 1 februari 2026