Kryptering och åtkomstkontroll
Itha AB · Gäller Privera 0.9.0-beta22 · Senast uppdaterad: 2026-10-23
Beskriver kryptering i transit och i vila, nyckelhantering och hur åtkomsten till Privera styrs, och varför programmet saknar egen inloggning och egna roller.
1. Sammanfattning
| Krav | Läge |
|---|---|
| TLS 1.2 som lägsta nivå i transit | Uppfyllt för licens.privera.se och privera.se. TLS 1.0 och 1.1 nekas (kontrollerat 2026-10-23). |
| TLS 1.3 | Stöds av licensservern och webbplatsen. |
| HSTS | privera.se skickar HSTS med includeSubDomains, men finns inte på webbläsarnas förinstallerade lista. licens.privera.se skickar Strict-Transport-Security: max-age=31536000; includeSubDomains på varje svar, se avsnitt 2. |
| Kryptering i vila | Delvis. Hos Cloudflare AES-256. På datorn krypteras sparade granskningar och licensfilen med AES-256-GCM under en nyckel som skyddas av Windows DPAPI. Exporter, exportloggar, säkerhetsloggen, tillfälliga arbetsfiler i %TEMP% och senast använda mappar är okrypterade (avsnitt 3). |
| Krypteringsnivå efter informationsklass (KLASSA) | Saknas. Programmet har ingen inställning för krypteringsnivå. Skyddet av filerna styrs av var organisationen lagrar dem. |
| Flerfaktorsautentisering (MFA) | Saknas i programmet, som inte har någon egen inloggning. Åtkomsten följer Windows-kontot och därmed organisationens egen inloggning och MFA. Webbens kundsida öppnas med licensnyckeln som enda faktor (avsnitt 5). |
| Rollbaserad behörighet (RBAC) | Saknas i programmet, som inte har några roller. Vem som får installera och köra programmet styr organisationen med sina AD-grupper, AppLocker, Intune eller grupprincip (avsnitt 5). |
2. Kryptering i transit
Dokument skickas aldrig över nätet. Den enda trafiken är licens, uppdateringar och en engångshämtning av språkmodellen. Från 0.9.0-beta22 kontaktar motorn inte Hugging Face när språkmodellen redan finns på datorn. I 0.9.0-beta14 till 0.9.0-beta21 kunde motorn ändå hämta en lista från huggingface.co/api/agent-harnesses, högst en gång per dygn, även när modellen fanns på datorn.
| Förbindelse | Protokoll | Kommentar |
|---|---|---|
| Programmet till licens.privera.se (licens och uppdateringar) | HTTPS, TLS 1.2 eller 1.3 | Adressen är inbyggd med https:// och kan inte pekas om i kundversionen. Kontrollerat 2026-10-23: TLS 1.0 och 1.1 nekas, TLS 1.2 (ECDHE-ECDSA-CHACHA20-POLY1305) och TLS 1.3 (TLS_AES_256_GCM_SHA384) accepteras, och http:// svarar med omdirigering till https://. Varje svar från licensservern har Strict-Transport-Security: max-age=31536000; includeSubDomains (utan preload), X-Content-Type-Options: nosniff, Referrer-Policy: no-referrer och Content-Security-Policy: default-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none'. Programmet använder bara https://. |
| Programmet till Hugging Face (språkmodellen, första gången den behövs) | HTTPS | TLS-konfigurationen ägs av Hugging Face, inte av Itha AB. Modellen är låst till en bestämd revision. |
| Webbplatsen privera.se | HTTPS med HSTS | max-age=63072000; includeSubDomains; preload. Domänen finns inte på webbläsarnas förinstallerade HSTS-lista, trots preload i huvudet. TLS 1.0 och 1.1 nekas (kontrollerat 2026-10-23). |
| Licensservern till Stripe | HTTPS | api.stripe.com |
| Programfönstret till motorn på datorn | Lokala rör (stdio) | Ingen nätverksport öppnas. |
3. Kryptering i vila
3.1 På organisationens datorer
| Data | Skydd | Kommentar |
|---|---|---|
| Originalfiler och exporterade filer | Inget från programmet | Ligger där användaren väljer. Okrypterade med avsikt, så att andra program kan öppna dem. |
Exportloggar (*.audit.json) | Inget från programmet | Innehåller inte fyndens originaltext, men filnamn, sökvägar, Windows-kontot, ersättningstexter och var varje maskering sitter (sida, teckenintervall och rutor). Positionerna visar var i dokumentet något har maskerats. |
Säkerhetslogg (privera-sakerhetslogg-*.jsonl) | Inte krypterad. En SHA-256-hashkedja upptäcker ändringar så länge ankaret är orört, men hindrar dem inte. Katalogen kan styras med policy och göras append-only. | Inga dokumentuppgifter, filnamn eller sökvägar, men Windows-kontots namn, datornamn och innehållshashar. Se Säkerhetsloggning. |
Tillfälliga arbetsfiler (%TEMP%\privera_ocr_*) | Inte krypterade | Motorn lägger sina tillfälliga filer här: sidbilder för textigenkänningen, omaskerade kopior av PDF-filen under bearbetningen och exportens arbetsfil innan den flyttas till sin plats. Filerna visar dokumentets innehåll. De raderas när programmet avslutas, och kataloger som blivit kvar efter en krasch rensas vid nästa start. Raderingen är en vanlig radering, inte en säker överskrivning. |
| Senast använda mappar | Inte krypterade | Mappen i filutforskaren, mappen för utfiler och mappen för exportloggarnas historik sparas som sökvägar i programfönstrets lokala lagring i Windows-kontots profil. |
| Sparade granskningar | Electron safeStorage: AES-256-GCM med en nyckel som skyddas av Windows DPAPI och är bunden till Windows-kontot | Programmet sparar inte om skyddet saknas. |
| Licensfil (licensnyckel och licensbevis) | Electron safeStorage: AES-256-GCM med en nyckel som skyddas av DPAPI | Från 0.9.0-beta20 skrivs nyckel och licensbevis bara krypterade. Saknas krypteringsskyddet hålls licensen i minnet i stället (avsnitt 6). |
För högre informationsklasser enligt KLASSA rekommenderar vi att mappar med original, exporter, exportloggar och säkerhetslogg ligger på en krypterad volym, till exempel BitLocker med AES-128 eller AES-256 enligt organisationens inställning, och att systemdisken, där %TEMP% och profilen ligger, är krypterad. Programmet har ingen egen inställning för krypteringsnivå.
3.2 Hos Itha AB:s underleverantörer
| Data | Plats | Skydd |
|---|---|---|
| Licensdatabas (Cloudflare D1) | Region Östeuropa (EEUR). Ingen EU-jurisdiktion är satt, se Underleverantörer. | AES-256 i vila enligt Cloudflare. Licensnyckeln lagras som SHA-256-summa och fyra sista tecken. Under hämtningsfönstret efter köpet finns den dessutom krypterad med AES-256-GCM (avsnitt 6). IP-adresser lagras som HMAC-SHA-256-pseudonym. |
| Installationsfiler (Cloudflare R2) | Region Östeuropa (EEUR) | AES-256-GCM i vila enligt Cloudflare. Inga kunduppgifter. |
| Licensserverns loggar (Cloudflare Workers Logs) | Sparas inte | Cloudflares lagring av loggar är avstängd för licensservern, eftersom licensnyckeln och kassans session-id fortfarande står i adressen vid två anrop. Se Säkerhetsloggning avsnitt 11. |
| Betaluppgifter (Stripe) | Se Underleverantörer | Stripes eget ansvar. Kortuppgifter når aldrig Itha AB. |
4. Nyckelhantering
| Nyckel | Syfte | Förvaring | Byte |
|---|---|---|---|
| Licensserverns signeringsnyckel (Ed25519, privat) | Signerar licensbevis | Hemlighet i licensservern hos Cloudflare, aldrig i källkoden | Den publika halvan är inbyggd i programmet, så ett byte kräver en ny programversion. Skriftlig rutin saknas (Planerat). |
| Avvecklingsnyckeln (Ed25519, privat) | Signerar det avvecklingsbesked som låter programmet köra utan licensserver om Itha AB upphör | Skild från licensservern och dess nycklar. Ska flyttas till förvaring offline; per 2026-10-23 är det inte gjort, och nyckeln ligger på en av Itha AB:s datorer. | Byte kräver en ny programversion. Den gamla nyckeln sparas så länge versioner med den används. |
| Kodsigneringscertifikat (Itha AB) | Signerar installer och programfiler | Microsoft Azure Trusted Signing. Tjänsten lämnar aldrig ut certifikatets privata nyckel; Microsoft anger FIPS 140-3 nivå 3. | Certifikaten förnyas av tjänsten. |
| Övriga hemligheter i licensservern | Betalning (Stripe), administrativa funktioner, pseudonymisering av IP-adresser och, i säkerhetsloggen, av licensnycklar, kryptering av licensnyckeln efter köp och driftlarm | Hemligheter i licensservern hos Cloudflare | Manuellt. |
| Kundens licensnyckel | Behörighet för aktivering, förnyelse, uppdatering och nedladdning medan licensen gäller, och för webbens kundsida så länge licensen finns | Hos kunden (DPAPI). På servern som SHA-256-summa. | Kan bytas per kund. |
5. Åtkomst: Windows-kontot i stället för egen inloggning och egna roller
Privera är ett lokalt program för en användare åt gången, utan egen inloggning i programmet och utan server som tar emot dokument.
- Åtkomsten följer Windows-kontot. Den som är inloggad i Windows kan använda programmet. Programmet lägger inget eget lager ovanpå Windows-inloggningen, så organisationens MFA, lösenordsregler och skärmlås är det som skyddar även programmet. Sparade granskningar och licensfilen är bundna till Windows-kontot via DPAPI. DPAPI skyddar inte mot kod som körs i användarens session, och i en domän kan nycklarna återställas med domänens reservnyckel. Exporter och exportloggar är okrypterade och kan läsas av den som har åtkomst till filerna (avsnitt 3.1).
- Det finns inga roller att tilldela. Alla användare har samma funktioner: öppna, granska, maskera och exportera ett dokument på sin egen dator. Vem som får installera och köra programmet styr organisationen med sina egna verktyg, till exempel AD-grupper, AppLocker, Intune och grupprincip. Säkerhetsloggning och uppdateringar styrs med registerpolicy och ADMX-mall, se IT-drift. Exportloggen anger vilket Windows-konto som gjorde exporten, och säkerhetsloggen anger konto och dator för varje händelse.
- Förvalt installeras programmet per användare utan administratörsbehörighet. Installern erbjuder även installation för alla användare om den startas med administratörsrätt. Organisationen behöver därför själv spärra installation om bara vissa ska få använda programmet. Tyst central utrullning, även per dator, beskrivs i IT-drift. MSI finns inte.
- Licensnyckeln är enda faktor på webben. Nedladdningen av installern på privera.se/download/ och kundsidan Mitt abonnemang, som öppnar Stripes kundportal med kort, kvitton och uppsägning, nås med licensnyckeln och ingen annan faktor. Kundsidan kontrollerar inte om licensen gäller. Den som har nyckeln kan alltså säga upp abonnemanget. Installern lämnas också ut mot köpets sessions-id från bekräftelsesidan efter köpet, om licensen har rätt att köra programmet.
Kräver organisationen MFA eller roller inuti programmet eller på kundsidan uppfyller Privera inte den delen av kravet i dag.
För Itha AB:s egna administrativa konton (Cloudflare, Stripe, Azure, GitHub och e-post) är det inte dokumenterat vilka som har MFA påslaget (Planerat: kontrolleras och dokumenteras).
6. Licensnyckeln i klartext: rättat
Två vägar där licensnyckeln kunde ligga i klartext är rättade.
6.1 Licensfilen på datorn (från 0.9.0-beta20)
Går licensen inte att kryptera med Windows krypteringsskydd skrivs ingenting som bär nyckel eller licensbevis. Licensen gäller då bara tills programmet stängs, och programmet visar att nästa start kan kräva ny aktivering. En befintlig krypterad fil lämnas orörd. En klartextfil från en äldre version krypteras vid start och ersätts.
Före rättningen (0.9.0-beta19 och äldre) skrevs nyckel och licensbevis okrypterade i användarens profil när skyddet saknades.
Kvar: på en dator där krypteringsskyddet saknas vid start ligger en klartextfil från en äldre version kvar tills skyddet fungerar igen. Programmet raderar den inte, eftersom kunden då förlorar licensen. Den ersatta filen skrivs över via namnbyte, inte säker radering, så gamla diskblock kan finnas kvar tills de skrivs över.
6.2 Licensnyckeln i licensdatabasen
För att kunden ska kunna se nyckeln på bekräftelsesidan efter köpet, också efter en omladdning, sparas den tills licensen har aktiverats eller i högst sju dagar. Den sparas krypterad med AES-256-GCM, med en nyckel härledd (HKDF-SHA-256) ur en hemlighet i licensservern och med köpets session-id som bunden tilläggsdata. En kopia av databasen räcker alltså inte för att läsa nyckeln. Saknas hemligheten sparar licensservern ingen nyckel alls. En timkörning tömmer nycklar som är äldre än sju dagar eller vars licens har aktiverats.
Före rättningen låg nyckeln okrypterad i licensdatabasen och raderades bara när kunden återvände till bekräftelsesidan.
Kvar: den som kan köra kod i licensservern, eller har både databasen och hemligheten, kan läsa nycklar under hämtningsfönstret.
7. Övrigt som saknas
Rättat: licens.privera.se skickar HSTS och de övriga säkerhetshuvudena (avsnitt 2), och från 0.9.0-beta22 kräver uppdateringens utgivarkontroll hela utgivarnamnet, avvisar paket för webbinstallation och är stängd vid fel, se IT-drift avsnitt 5.
- privera.se på webbläsarnas förinstallerade HSTS-lista.
- Licensnyckeln och kassans session-id står i adressen vid nedladdningen av installern och vid hämtningen av nyckeln efter köpet. Adressen skyddas av TLS men kan sparas i webbläsarens historik och i loggar. Därför är Cloudflares lagring av licensserverns loggar avstängd (avsnitt 3.2).
- Uppdateringsmanifestet är inte signerat. Det skyddas av TLS, av att bara licenser med rätt att köra programmet får hämta det och, från 0.9.0-beta22, av att den hämtade installerns signatur och version kontrolleras innan den installeras.
- Ingen skriftlig rutin för byte av signeringsnycklar.
- Ingen inställning för krypteringsnivå efter informationsklass, ingen MFA och inga roller i programmet eller på kundsidan.
Alla dokument finns också samlade i en PDF för e-post.