Technische documentatie

Witboek beveiligingsarchitectuur

Een gedetailleerd technisch overzicht van Snugg's encryptiearchitectuur voor beveiligingsonderzoekers, auditors en technisch onderlegde gebruikers.

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:

1

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.

2

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.

3

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.

4

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:

DoelAlgoritmeBibliotheek
SleuteluitwisselingX25519 (Curve25519 ECDH)TweetNaCl.js
Symmetrische encryptieXSalsa20-Poly1305TweetNaCl.js
Digitale handtekeningenEd25519TweetNaCl.js
HashingSHA-256Web Crypto API
SleutelafleidingPBKDF2 (100k iteraties)Web Crypto API

Gegevensstroom: hoe inhoud wordt versleuteld

Dit is wat er gebeurt wanneer u inhoud naar een groep plaatst:

1
U stelt een bericht op uw apparaat samen (tekst, foto's, enz.)
2
Uw apparaat haalt de symmetrische sleutel van de groep op uit lokale versleutelde opslag
3
De inhoud wordt versleuteld met de groepssleutel met behulp van XSalsa20-Poly1305
4
De versleutelde cijfertekst wordt naar onze servers verzonden en opgeslagen
5
Wanneer groepsleden Snugg openen, downloaden hun apparaten de cijfertekst en ontsleutelen deze lokaal

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:

Onze encryptiecode is open source en beschikbaar voor publieke beoordeling
We laten regelmatig onafhankelijke beveiligingsaudits uitvoeren door gerenommeerde bedrijven
Auditresultaten worden gepubliceerd, inclusief bevindingen en hoe we deze hebben aangepakt

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

Laatst bijgewerkt: 1 februari 2026