Säkerhet

Bevis att din webbläsare inte är ett valv.

Chrome och Firefox sparar dina lösenord – och lämnar sedan över dem till vilket program som helst som körs som du. Det är inte en bugg. Det är designen. Här är beviset: en gång på enkel svenska, en gång i kod.

Versionen på enkel svenska

Din webbläsares "lösenordshanterare" skyddas av exakt ett lås: din dators inloggning. När du väl är inloggad på din bärbara dator kan webbläsaren omedelbart läsa varje sparad lösenord – så allt annat som körs på ditt konto kan också göra det.

En dålig nedladdning. Ett skumt webbläsarspel. Ett förgiftat paket i ett projekt du klonade. I samma ögonblick som det körs – medan du är inloggad, som du alltid är – läser det alla lösenord som din webbläsare sparade, på den tid det tar att öppna en fil. Det finns inget huvudlösenord att knäcka, för det finns inget att knäcka: webbläsaren byggdes för att låsa upp sig automatiskt för dig, och skadlig kod frågar bara snällt som "du".

Detta är inte teoretiskt. Det är det absolut vanligaste sättet som vanliga människor förlorar sina konton på. Skadlig kod har till och med ett tråkigt branschnamn – "info-stealers" – eftersom det är så rutinmässigt. Dina lösenord, dina sparade kort, dina sessionskakor: kopieras och borta innan du märker det.

Lösningen är enkel att formulera: dina lösenord bör låsas med något som resten av din dator inte har – och de bör inte finnas på maskinen alls.

Versionen med kvitton

Lita inte bara på oss. Chromium och Firefox är öppen källkod, och läs-sökvägen är dokumenterad, standardiserad och kort. Här är exakt var lösenorden finns och hur de kommer ut.

Chrome (och alla Chromium-baserade webbläsare)

Chrome lagrar inloggningar i en SQLite-databas – Login Data, tabell logins, kolumn password_value – krypterad med AES-256-GCM. AES-nyckeln finns i Local State, "skyddad" av operativsystemet: DPAPI på Windows, inloggningsnyckelringen på macOS, gnome-keyring/kwallet (eller oformaterad text) på Linux.

Läs det själv – koden är öppen. Sök i Chromium efter konstanten som taggar den inlindade nyckeln: kDPAPIKeyPrefix i os_crypt. Nyckeln är DPAPI-inlindad, taggad och lagrad – sedan inlindad med ett enda anrop som inte skyddar något från dig:

const char kDPAPIKeyPrefix[] = "DPAPI";

CryptUnprotectData(&intermediate, /*ppszDataDescr=*/nullptr,
                   /*pOptionalEntropy=*/nullptr, nullptr, nullptr, 0, &output);

Ingen andra hemlighet, inget lösenord, ingen prompt. CryptUnprotectData lämnar tillbaka nyckeln till vilken process som helst som körs i din session – vilket är exakt hotmodellen som DPAPI dokumenterar: om den körs som du, är den du. Angriparens hela jobb är tre rader: läs nyckeln från Local State, linda upp den, AES-GCM-dekryptera varje rad i Login Data. Info-stealer-skadlig kod har gjort exakt detta i åratal.

"Kryptering på enheten" räddar dig inte heller

Googles svar är en 6-siffrig PIN-kod som krypterar ditt synkroniserade valv. I maj 2026 visade forskare på Phishu hur tunn den är. En övertygande falsk Google-inloggning – "adversary-in-the-middle"-nätfiske – fångar sessionen och den PIN-koden, och PIN-koden är huvudnyckeln till varje lösenord och lösenfras i det synkroniserade kontot. Med den lägger en angripare till sin egen enhet i din "säkerhetsdomän" hos Google och hela valvet synkroniseras direkt till dem – fullständig övertagning i ett steg.

Designfelet: Google tillåter en enhet att ansluta enbart med den 6-siffriga PIN-koden, utan godkännande från en enhet du redan äger.

Firefox

Firefox lagrar inloggningar i logins.json och nyckeln i key4.db, dekrypterad av NSS:s "Secret Decoder Ring" – också öppen källkod: security/nss/lib/pk11wrap/pk11sdr.c. Om du ställer in ett Primärt lösenord, förseglas nyckeln med det.

Som standard har du inte det – så nyckeln förseglas med den tomma strängen, och ett lagrat "password-check"-värde bekräftar att det tomma lösenordet dekrypterar det. Kopiera två filer ur din profil (key4.db + logins.json), peka NSS eller den öppna källkoden firepwd.py mot dem, och de dekrypteras. Ett lås vars nyckel sitter tejpad på dörren är inget lås.

The common thread

Varje webbläsares lösenordsförvaring har samma form: hemligheten finns där du arbetar, upplåst av den session du redan är i. Kryptering som resten av din egen dator kan ångra skyddar dig inte från det hot som faktiskt tömmer konton – kod som körs som du.

Varför Clavitor inte kan läsas på detta sätt

Clavitor lagrar inte ditt valv på maskinen. Det finns ingen Login Data, ingen key4.db, ingen nyckel i Local State – inget på disken för en process som körs som du att skrapa.

Dekrypteringsnyckeln är inte förseglad med din OS-inloggning. Den härleds från en hårdvarutapp – Touch ID, Face eller en YubiKey – beräknad i webbläsaren, använd för en enda begäran, sedan bortkastad. En inloggningsuppgift hämtas via ett scope-begränsat API exakt när du begär det, och cachas aldrig. Skadlig kod som körs som du hittar ett tomt skåp.

Det är skillnaden mellan "krypterad på din enhet" och "inte på din enhet alls".

Sluta lita på webbläsaren med dina lösenord.

Clavitor-tillägget fyller i som din webbläsare gör – och lagrar valvet någonstans din bärbara dator inte kan läsa det.