En teknisk översikt för säkerhetsgranskare. Allt här går att stämma av mot källkoden — även de delar som klär oss sämre, och som vi skriver ut i stället för att utelämna.
Det finns ingen backend. Tillägget är ett Chrome-tillägg med Manifest V3 som genererar TOTP-/HOTP-koder lokalt med OTPAuth. Vi driver inga servrar, har inga konton och saknar kanal genom vilken användardata skulle kunna nå oss.
Eftersom det inte finns någon server finns inte heller något nyckelmaterial på serversidan, ingen nyckeldeponering och ingen återställningsväg som vi kontrollerar. Om en användare glömmer lösenordet och tappar bort återställningskoden kan vi inte hjälpa till — så är det tänkt.
Lösenordsskydd är valfritt och av som standard. När det är på:
Data krypteras aldrig direkt med en nyckel härledd ur lösenordet. En slumpmässig huvudnyckel krypterar posterna; PBKDF2-utdata omsluter bara den huvudnyckeln. Två följder av det, och båda spelar roll:
Med lösenordsskydd på krypteras hela kontoposten utom dess identifierare och fingeravtryck — inklusive tjänstens namn, så en stulen profil avslöjar inte vilka tjänster användaren har konton hos. När skyddet slås på krypteras posterna, verifieras genom att dekrypteras och jämföras, och först därefter tas varje kopia i klartext bort: webbläsarens lokala lagring, synk och alla sju roterande säkerhetskopior.
Rakt på sak, eftersom det påverkar er bedömning:
Kort sagt: det här skyddar data i vila. Det försvarar inte, och kan inte försvara, en enhet som redan står under en angripares kontroll medan den används.
Manifestet deklarerar fem behörigheter och inga host-behörigheter:
Det finns Det finns inga content scripts, inga tabs-, cookies- eller webRequest-behörigheter och inga web-accessible resources. Ingenting av vårt finns i en sida förrän du ber om en kod där; det som körs då injiceras för just den fliken och just det anropet, under det medgivande ditt eget klick ger, och lämnar inget kvar.
QR-skanning med kameran körs på en tilläggssida i en flik, inte i popupen — en popup förstörs när den tappar fokus, vilket är precis vad en behörighetsfråga gör. Det här kräver ingen behörighet i manifestet: det använder webbläsarens vanliga kamerafråga, som ges per tilläggs-origin och kan återkallas i webbplatsinställningarna, och den kommer aldrig förrän användaren öppnar skannern. Video avkodas lokalt och skickas eller sparas aldrig.
Klockkontrollen är den enda förfrågan tillägget gör på eget initiativ; allt annat nedan sker för att användaren klickat på något. Manifest V3 förbjuder fjärrkod, och inget av det här bär med sig konton, hemliga nycklar eller genererade koder. Hela listan:
| Värd | När | Innehåller användardata? |
|---|---|---|
| time.akamai.com timeapi.io cloudflare.com | Kontroll av klockavvikelse, cachad; går ingen källa att nå säger Inställningar det. TOTP slutar fungera vid felgående klocka. | Nej |
| authenticator.sh | Välkomstsida vid installation; feedbacksida vid avinstallation; hjälp- och supportsidor när de öppnas från popup-fönstret. | Nej (vanliga webbserverloggar) |
| chromewebstore.google.com | Butikssidan, öppnas i en flik först vid klick: recensionsformuläret från betygsfrågan, vår lösenordshanterare från korspromoteringsbannern. | Nej (för Google är det ett besök på en butikssida som vilket annat som helst) |
| authenticator.featurebase.app | Öppen önskelista, öppnas i en flik via länken för att önska en funktion i supportraden. | Bara det som användaren själv skriver där. Tredjepartstjänst med egna villkor. |
Inga typsnitt, skript, stilmallar eller bilder laddas från tredjepartsvärdar. Allt som behövs för att rita upp gränssnittet ligger i paketet.
Ingenting av ovanstående behöver tas på förtroende. Tillägget är öppen källkod och varje release går att återskapa:
.crx från Chrome Web Store och packa upp dennpm ci && npm run build på Node 20 LTSdist/ med det uppackade paketetMed varje GitHub-release publiceras en SHA-256 för varje fil i den byggda dist/, som SHA256SUMS-v<version>.txt och i sha256sum-format, så steg 4 blir en enda körning av sha256sum -c. Skillnader bör begränsas till filordning inuti arkiv och blanktecken i minifierad utdata mellan Node-patchversioner.
Körtidsberoendena är medvetet få — OTPAuth, React, jsQR, Zustand, Framer Motion och Lucide — låsta av en incheckad lockfil. En CycloneDX-SBOM finns på begäran.
Läs källkodenVi är en liten oberoende leverantör. Om något av följande är ett absolut krav i er process är det bättre att ni vet det nu än tre veckor in i en utvärdering:
Det vi erbjuder i stället är full insyn i källkoden, ett verifierbart bygge, en minimal behörighetsyta och ingen serverinfrastruktur som skulle kunna hålla era data till att börja med.
Sårbarhetsrapporter och säkerhetsfrågor: security@authenticator.sh. Vår policy för ansvarsfullt röjande, omfattning, svarstider och safe harbour-villkor finns på sidan säkerhetspolicy; vad som lagras och vad som lämnar enheten står i integritetspolicyn.
Vi svarar gärna på ett skriftligt leverantörsformulär eller går igenom koden tillsammans med ett säkerhetsteam.
För allt som inte rör säkerhet — installation, kontoåterställning, faktureringsfrågor vid en utrullning — se support. Skicka inte sårbarhetsrapporter dit; den brevlådan hanteras inte som konfidentiell.