Topicos · Bilaga till personuppgiftsbiträdesavtal

Säkerhetsbilaga: tekniska och organisatoriska åtgärder

Rättslig grund
Dataskyddsförordningen (GDPR) artikel 28.3 c och artikel 32
Version
0.8, utkast
Datum
2026-10-08
Biträde
Råggywood AB, organisationsnummer 556972-3884, Sverige, som tillhandahåller tjänsten Topicos. Nedan "Råggywood".
Tjänst
Topicos: appar för iOS och Android samt webbapp på app.topicos.app
Kontakt
kontakt@topicos.app

1. Tjänsten i korthet

Topicos är en kommunikationstjänst för organisationer: chatt strukturerad i grupper och ämnen, röstsamtal, uppgifter, kalender, dokument och tidrapportering. Organisationen äger sitt innehåll. Varje organisation kan dessutom slå på end-to-end-kryptering (kallad Organisationsnyckeln), varvid innehållet krypteras på medlemmarnas enheter med nycklar som bara organisationen har. Råggywood AB kan då varken läsa, återställa eller lämna ut innehållet.

Den här bilagan beskriver de tekniska och organisatoriska åtgärder som skyddar personuppgifterna, med den detaljnivå en informationssäkerhetsgranskning behöver. En kortare, allmän beskrivning finns på topicos.app/sakerhet.

2. Arkitektur och lagringsplatser

Apparna talar direkt med Googles molnplattform (Firebase) och med Råggywoods serverkod som körs där. Filer lagras hos Cloudflare. Samtal förmedlas av LiveKit. Notiser levereras av Apple och Google. Betalning sköts av Stripe.

KomponentUnderbiträde och tjänstInnehållPlats
DatabasGoogle Cloud FirestoreMeddelanden, dokument, uppgifter, kalender, tidrapporter, medlemskap, notiser, samtalshistorikEU, multiregion eur3 (Belgien och Nederländerna, replikerat mellan regionerna)
ServerkodGoogle Cloud Functions (2:a generationen), Node.js 22Behandling vid skrivning, notiser, betalning, gallring. 50 funktionerEU, europe-west1 (Belgien)
Filer och bilagorCloudflare R2Bilder, video, ljud, dokument, uppgiftsbilagorEU-jurisdiktion (Cloudflares jurisdiktionsbegränsning, inte bara platsledtråd)
Övriga filerGoogle Cloud StorageProfilbilder och bilder till länkförhandsvisningarEU, europe-west1
InloggningGoogle Firebase AuthenticationTelefonnummer, inloggningssession, SMS-utskickUSA. Google uppger att tjänsten körs enbart i amerikanska datacenter
NotiserGoogle Firebase Cloud Messaging, Apple Push Notification servicePush-token; notisinnehåll krypterat till enhetenGlobalt
SamtalLiveKit CloudLjud i realtid, lagras aldrigNärmaste mediaserver väljs per samtal; projektet är inte låst till en region. För samtal från Sverige har servern legat i Tyskland (EU)
KraschrapporterGoogle Firebase CrashlyticsFelinformation, enhetsmodell, operativsystem, konto-idGlobalt
Skydd mot missbrukGoogle Firebase App CheckEnhets- och webbläsarsignalerGlobalt
BetalningStripeFaktureringsuppgifter, abonnemangsstatusEU/USA
WebbappenGoogle Firebase HostingEnbart appens programfiler. Inga personuppgifter lagrasGlobalt CDN
AppdistributionApple App Store, Google Play, Expo (EAS Update)Appversioner och JavaScript-uppdateringar. Inga personuppgifterGlobalt

Hemligheter (API-nycklar, signeringsnycklar, nycklar till underbiträden) ligger i Google Secret Manager och finns aldrig i källkoden eller i konfigurationsfiler.

3. Kryptering

3.1 Under överföring

All trafik mellan appar, webbapp, serverkod och underbiträden går över TLS. Signerade fillänkar och API-anrop använder HTTPS.

3.2 I vila

Google Cloud (Firestore, Cloud Storage, Secret Manager) och Cloudflare R2 krypterar all lagrad data i vila med underbiträdets egna nycklar (AES-256). Det skyddar mot fysisk åtkomst till lagringsmedia men inte mot underbiträdet självt; det senare hanteras av end-to-end-krypteringen i 3.5.

3.3 Notisinnehåll

Push-notiser lämnar EU via Apples och Googles push-tjänster. Innehållet (avsändare, text, rubrik) krypteras därför på servern med AES-256-GCM med en nyckel som bara mottagarens enhet har. Nyckeln skapas på enheten och lagras i iOS Keychain respektive Android Keystore. På iOS avkodas notisen i ett notistillägg (Notification Service Extension) innan den visas; på Android i appen. Apple och Google ser bara push-token och ett krypterat paket. Äldre appversioner som saknar stödet får notiser via Expo i klartext, se avsnitt 12.

3.4 Bilagor och signerade länkar

Bilagor lagras under slumpade objektnamn utan filnamnet, och lagringen är inte publikt nåbar. Läsning sker via signerade länkar som serverkoden utfärdar efter att ha kontrollerat att användaren är medlem i den chatt, grupp eller organisation bilagan hör till. Länkarna gäller i 60 minuter och kan inte förlängas av klienten.

3.5 End-to-end-kryptering (Organisationsnyckeln)

Organisationens superadministratör kan slå på end-to-end-kryptering. Från den stunden gäller följande.

Nyckelmodell. Varje enhet skapar ett X25519-nyckelpar per användarkonto; den privata nyckeln lagras i enhetens skyddade nyckellager (iOS Keychain, Android Keystore, webbläsarens lagring på webben) och lämnar aldrig enheten. Organisationens innehållsnyckel (256 bitar) finns bara förseglad till varje godkänd enhets publika nyckel (X25519 + HKDF-SHA256 + AES-256-GCM). Innehåll krypteras med AES-256-GCM med bunden tilläggsdata som knyter chiffret till dokument och fält, så att ett chiffer inte kan flyttas till en annan plats. Bilagor får en egen slumpad nyckel per fil som ligger inne i meddelandets chiffer, krypteras i block före uppladdning, och lagras som binära objekt utan filnamn eller filtyp.

Enhetsgodkännande. En ny enhet kan inte läsa något förrän en administratör, eller en av användarens redan godkända enheter, har jämfört enhetens verifieringskod och godkänt den. Godkännandet är det som ger enheten nycklarna; servern kan inte utföra det.

Rotation. Innehållsnyckeln byts (ny nyckelepok) när en enhet återkallas, när en medlem tas bort ur organisationen, när återställningsfrasen byts och när krypteringen slås på igen. Enheter som lämnat får inte den nya epoken och kan inte läsa nytt innehåll. Lämnar en medlem själv får administratörerna en notis om att rotera.

Återställningsfras. När krypteringen slås på visas en fras med 24 ord (BIP39) en enda gång. Ur den härleds ett nyckelpar som varje nyckelepok också förseglas till. Frasen är organisationens huvudnyckel och behövs bara om ingen godkänd enhet finns kvar. Råggywood har inte frasen, ber aldrig om den och kan inte återställa innehåll utan den. Frasen kan bytas från en godkänd superadministratörsenhet, men bara med den gamla frasen i hand.

Omfång. Krypteras: meddelanden (text, svar, omröstningar, platsdelning, avsändarnamn), bilagor, dokument och textdokument inklusive bilder, uppgifter med anteckningar och bilagor, kalenderhändelser, notiser, namn på grupper, ämnen och mappar, samt samtal (ljud och datakanal via LiveKits ramkryptering med en samtalsnyckel härledd ur epoknyckeln). I klartext, medvetet: organisationens namn, medlemmarnas profilnamn och telefonnummer, tidrapporten, innehåll från före aktiveringen, och metadata (medlemskap, tidsstämplar, vem som skrivit till vem).

Vad Råggywood ser. Krypterat innehåll och metadata. En begäran från myndighet kan bara besvaras med det: chiffer vi inte kan öppna, samt uppgifter om medlemskap och tidpunkter.

Begränsningar. Krypteringen skyddar inte mot en upplåst, godkänd enhet; inte mot metadataanalys; och inte mot en manipulerad app, eftersom krypteringen utförs av appens kod (koden är inte öppen, ingen extern granskning är gjord). Sökning sker lokalt på enheten. Länkförhandsvisningar visas inte i krypterade organisationer. Krypterade samtal fungerar i mobilapparna men ännu inte i webbläsaren.

4. Åtkomstkontroll

4.1 I tjänsten

4.2 Administrativ åtkomst till produktionsmiljön

5. Skydd mot missbruk och felaktig användning

6. Loggning och spårbarhet

7. Säkerhetskopiering, redundans och kontinuitet

8. Radering och gallring

9. Utveckling, förändringshantering och leverans

10. Incidenthantering

Personuppgiftsincidenter hanteras enligt den separata incidentrutinen, som delas vid avtalstecknande: begränsa, bedöma, underrätta den personuppgiftsansvarige utan onödigt dröjsmål, dokumentera och följa upp. Rutinen anger vad underrättelsen innehåller och hur organisationen nås.

11. Organisatoriska åtgärder

12. Kända begränsningar

Följande är avsiktligt redovisat så att den personuppgiftsansvarige kan väga det i sin riskbedömning.

13. Ändringshistorik

VersionDatumÄndring
0.12026-09-10Första utkast efter införandet av end-to-end-kryptering och flytten av all behandling till EU.
0.22026-09-14Partsbeteckningen "Biträdet" införd; externa leverantörer kallas genomgående underbiträden. Avsnitt 12: möjlig flytt till EU-ägd infrastruktur som avtalad utveckling.
0.32026-09-15Avsnitt 7: point-in-time recovery och daglig säkerhetskopia påslagna 2026-09-14; markören borttagen.
0.42026-09-15Avsnitt 6: loggbucket i EU (europe-west1, 30 dagar) och Data Access-loggar (Admin Read, Data Read) för Firestore påslagna 2026-09-15; markören borttagen.
0.52026-09-15Avsnitt 6: larm på serverfel (5xx) i Cloud Monitoring med SMS och e-post, påslaget 2026-09-15; markören borttagen.
0.62026-09-15RTO/RPO och ställföreträdare beslutade; markörer borttagna.
0.72026-09-21Avsnitt 11: incidentrutinen publiceras inte längre utan delas vid avtalstecknande; länken borttagen.
0.82026-10-08Avsnitt 4.1: export av chatt till zip-fil, gjord på enheten.