Een technisch overzicht voor security-reviewers. Alles hier is te controleren aan de broncode — ook de minder flatteuze punten, die we benoemen in plaats van weglaten.
Er is geen backend. De extensie is een Manifest V3-Chrome-extensie die TOTP-/HOTP-codes lokaal genereert met OTPAuth. We draaien geen servers, houden geen accounts bij en hebben geen kanaal waarlangs gebruikersgegevens ons zouden kunnen bereiken.
Omdat er geen server is, is er ook geen sleutelmateriaal aan serverzijde, geen key escrow en geen herstelpad dat wij beheren. Vergeet een gebruiker het wachtwoord en raakt de herstelcode kwijt, dan kunnen we niets doen — dat is opzet.
Wachtwoordbeveiliging is optioneel en staat standaard uit. Met de beveiliging aan:
Gegevens worden nooit rechtstreeks versleuteld met een van het wachtwoord afgeleide sleutel. Een willekeurige hoofdsleutel versleutelt de records; de PBKDF2-uitvoer verpakt alleen die hoofdsleutel. Daar volgen twee dingen uit, en beide doen ertoe:
Met wachtwoordbeveiliging aan wordt het hele accountrecord versleuteld, op de identificator en de vingerafdruk na — inclusief de servicenaam, zodat een gestolen profiel niet verraadt bij welke diensten iemand accounts heeft. Bij het inschakelen versleutelt de extensie de records, controleert ze door te ontsleutelen en te vergelijken en verwijdert pas daarna elke kopie in leesbare vorm: lokale browseropslag, sync en alle zeven roulerende back-upmomentopnamen.
Ronduit gezegd, omdat het meeweegt in uw beoordeling:
Kortom: dit beschermt gegevens in rust. Het verdedigt geen apparaat dat tijdens gebruik al in handen van een aanvaller is — dat kan het ook niet.
Het manifest declareert precies twee permissies en geen enkele host-permissie:
Er zijn geen content scripts, geen tabs-, cookies- of webRequest-permissies en geen web-accessible resources. De extensie kan de inhoud van geen enkele pagina lezen of wijzigen.
QR-scannen met de camera draait op een extensiepagina in een tabblad, niet in de popup — een popup wordt vernietigd zodra hij focus verliest, en dat is precies wat een permissieverzoek doet. Hiervoor is geen permissie in het manifest nodig: het gebruikt het standaard cameraverzoek van de browser, verleend per extensie-origin en intrekbaar in de site-instellingen, en het verschijnt pas als de gebruiker de scanner opent. Video wordt lokaal gedecodeerd en nooit verzonden of opgeslagen.
Bij normaal gebruik doet de extensie geen automatische verzoeken, en Manifest V3 verbiedt externe code. Alle verbindingen die ze kan maken:
| Host | Wanneer | Bevat gebruikersgegevens? |
|---|---|---|
| worldtimeapi.org timeapi.io | Controle op klokafwijking, gecachet, faalt stilzwijgend. Bij een afwijkende klok werkt TOTP niet meer. | Nee |
| authenticator.sh | Welkomstpagina bij installatie; feedbackpagina bij verwijderen of beoordelen. | Nee (gewone webserverlogs) |
Er worden geen lettertypen, scripts, stylesheets of afbeeldingen van hosts van derden geladen. Alles wat nodig is om de interface te tonen zit in het pakket.
U hoeft niets van het bovenstaande op ons woord aan te nemen. De extensie is open source en elke release is reproduceerbaar:
.crx uit de Chrome Web Store en pak hem uitnpm ci && npm run build op Node 20 LTSdist/ met het uitgepakte pakketBij elke GitHub-release publiceren we een SHA-256 van elk bestand in de geproduceerde dist/, als SHA256SUMS-v<version>.txt en in sha256sum-formaat, zodat stap 4 neerkomt op één keer sha256sum -c draaien. Verschillen zouden beperkt moeten blijven tot de bestandsvolgorde binnen archieven en witruimte in geminificeerde uitvoer tussen Node-patchversies.
De runtime-afhankelijkheden zijn bewust beperkt — OTPAuth, React, jsQR, Zustand, Framer Motion en Lucide — vastgezet door een ingecheckt lockfile. Een CycloneDX-SBOM is op verzoek beschikbaar.
Bekijk de broncodeWe zijn een kleine onafhankelijke leverancier. Is een van de volgende punten een harde eis in uw proces, dan kunt u dat beter nu weten dan drie weken later in de beoordeling:
Wat we er wel tegenover zetten: volledige transparantie van de broncode, een verifieerbare build, een minimaal permissieoppervlak en geen serverinfrastructuur die uw gegevens überhaupt zou kunnen bewaren.
Kwetsbaarheidsmeldingen en security-vragen: security@authenticator.sh. Ons openbaarmakingsbeleid, de scope, reactietijden en safe-harbourvoorwaarden staan op de pagina beveiligingsbeleid; wat er wordt opgeslagen en wat het apparaat verlaat, staat in het privacybeleid.
We vullen graag een schriftelijke leveranciersvragenlijst in of lopen de code door met een securityteam.
Voor alles wat geen security-kwestie is — installatie, accountherstel, factuurvragen bij een uitrol — zie support. Stuur daar alstublieft geen kwetsbaarheidsmeldingen naartoe; die mailbox wordt niet als vertrouwelijk behandeld.