Proton Authenticator är en tvåfaktorsautentiseringsapp (2FA) med öppen källkod som genererar tidsbaserade engångslösenord (TOTP) på din enhet, vilket låter dig få åtkomst till onlinetjänster med ett extra lager av säkerhet. Den använder samma vältestade kryptering som säkrar resten av Protons ekosystem. Proton Authenticator är unik då den designades från grunden för att vara tillgänglig på nästan alla plattformar samtidigt som den bevarar din integritet och ger dig totalt ägande över dina data.

Till skillnad från andra autentiseringsappar säkrar Proton Authenticator dina data med end-to-end-kryptering, även när du aktiverar enhetssynkronisering.

Detta innebär att Proton Authenticator förhindrar vem som helst, inklusive Proton själva, från att veta vilka onlinetjänster du har konton hos. Denna information, precis som din e-post eller webbhistorik, kan avslöja mycket om dig, och att skydda den är avgörande för att upprätthålla din integritet.

Proton Authenticators end-to-end-kryptering garanterar att alla kryptografiska operationer, inklusive nyckelgenerering och datakryptering, utförs lokalt på din enhet. Detta innebär att dina okrypterade data inte kan kommas åt av Proton eller delas med tredje part. Proton-servrar har aldrig åtkomst till dina okrypterade data, inklusive ditt lösenord för Proton Account.

Krypteringsmodell

Proton Authenticator tar ett heltäckande grepp för att säkerställa maximal säkerhet och integritet för alla användardata. Alla kryptografiska operationer sker lokalt på din enhet, och alla data som överförs till servern är alltid krypterade. Proton har aldrig åtkomst till nycklarna i oformaterad text som krävs för att avkryptera användardata, vilket gör det omöjligt för oss att avkryptera lagrad data, även om det begärs av tredje part.

Proton Authenticator använder samma avancerade kryptering som vi använder för autentisering i Proton Mail. Detta inkluderar att använda en härdad version av protokollet Secure Remote Password (SRP) som erbjuder starkare säkerhetsgarantier mot man-in-the-middle-attacker (MITM). Vår implementering innebär att även en angripare som godtyckligt kan läsa, modifiera, fördröja, förstöra, upprepa eller fabricera meddelanden mellan Proton och en användare på ett omärkbart sätt är begränsad till att kontrollera endast en gissning av ett enda lösenord per inloggningsförsök, motsvarigheten till att försöka logga in direkt. På så sätt, även om Proton komprometteras och agerar illvilligt, avslöjas aldrig information som motsvarar lösenord.

Läs mer om Protons autentiseringskryptering

Datakryptering

Proton Authenticator låter dig säkert lagra dina 2FA-koder, även om du inte har ett Proton Account. Detta innebär att den initiala krypteringsprocessen måste göras helt på din lokala enhet. Om du sedan bestämmer dig för att du vill använda ditt Proton Account för att synkronisera dina koder över enheter, kan vi använda de kryptografiska nycklar som lagras på Proton-servrar för att utföra synkroniseringen.

Proton-kryptering börjar med att Proton-servern tillhandahåller den krypterade versionen av rotnyckeln som autentiseringsappen använder för att kryptera användarens data. Varje Proton-användare har en asymmetrisk användarnyckel, och Proton krypterar denna användarnyckel på din enhet enligt följande:

  • Konton som använder ett enda kontolösenord: Proton krypterar användarnyckeln med en bcrypt-hash av kontolösenordet och kontosaltet.
  • Konton som använder vår funktion för flera kontolösenord: Proton krypterar användarnyckeln med en bcrypt-hash av nyckellösenordet och kontosaltet.

Proton Authenticator använder bcrypt och ett kontosalt för att hasha ditt lösenord som ett extra lager av skydd mot brute-force-attacker. Även om en illvillig aktör fick åtkomst till Proton-databasen skulle dina kontonycklar vara säkra mot brute-force-attacker.

När du aktiverar synkronisering genererar Proton Authenticator en 32-byte slumpmässig autentiseringsnyckel. Denna nyckel krypteras och signeras med din användarnyckel, vilket säkerställer att endast du kan avkryptera den – ingen (inte ens Proton) kan läsa eller skapa en ny autentiseringsnyckel. När du har åtkomst till autentiseringsnyckeln krypteras alla poster i Proton Authenticator med hjälp av 256-bit AES-GCM.

Eftersom Proton Authenticator inte kräver ett Proton Account behöver vi också ett separat krypteringsschema som säkert lagrar dina data när de bara finns på din enhet. I slutändan är det enklaste sättet att implementera detta att behandla Proton Account som en separat nyckelleverantör. I slutändan ser det ut som följande:

Ett diagram över Proton Authenticators kryptering utan ett Proton Account

För den lokala nyckellagringen på din enhet förlitar vi oss på varje systems leverantörer av säker nyckellagring:

  • Android: Vi lagrar nyckeln säkert i Android Keystore(nytt fönster), som sedan används för att kryptera en lokal slumpmässig nyckel som vi lagrar i appens skyddade filsystem. Den nyckeln används för att symmetriskt kryptera alla Proton Authenticator-poster på din enhet.
  • iOS/iPadOS/macOS: Vi genererar en lokal slumpmässig nyckel och lagrar den i Keychain-tjänsten(nytt fönster). Den nyckeln används för att symmetriskt kryptera alla Proton Authenticator-poster på din enhet.
  • Windows: Vi genererar en lokal slumpmässig nyckel och lagrar den i Windows Credential Manager(nytt fönster). Den nyckeln används för att symmetriskt kryptera alla Proton Authenticator-poster på din enhet. Om anslutningen till WCM inte är tillgänglig låter vi användaren kryptera sin lokala slumpmässiga nyckel med ett lösenord.
  • Linux: Vi genererar en lokal slumpmässig nyckel och lagrar den i den tillgängliga DBUS Secret Service. Den nyckeln används för att symmetriskt kryptera alla Proton Authenticator-poster på din enhet. Om ingen DBUS-hemlig tjänst är konfigurerad låter vi användaren kryptera sin lokala slumpmässiga nyckel med ett lösenord.

Kryptering av säkerhetskopiering

En av Proton Authenticators främsta styrkor är att du alltid kontrollerar dina data. Detta inkluderar att låta dig periodiskt säkerhetskopiera dina koder till din lokala enhet och ställa in ett lösenord som krypterar dessa känsliga data.

För att implementera denna säkra lokala säkerhetskopiering använder vi lösenordet du angav för att härleda en säker krypteringsnyckel med hjälp av Argon2 som en KDF (Key-Derivation Function). En KDF används för att generera kryptografiska nycklar från hemliga indata, som användarangivna lösenord, och dess huvudsakliga syfte är att förbättra säkerheten genom att göra det svårare och mer tidskrävande för angripare att knäcka lösenord. Med denna krypteringsnyckel genererad från ditt lösenord serialiserar vi alla dina poster och krypterar dem för att säkerställa att dina data förblir säkert krypterade, även om säkerhetskopian läcks. Och genom att använda välkända och öppna teknologier kan du avkryptera dina data utan att använda Proton Authenticator, vilket gör att du kan behålla kontrollen även om du bestämmer dig för att flytta till en annan autentiseringsapp.

Säkerhet genom transparens

Precis som alla Proton-tjänster är Proton Authenticator öppen källkod. Vem som helst kan konsultera vår källkod för att verifiera vår säkerhetsmodell. Precis som med våra andra tjänster kommer Proton Authenticator också att genomgå regelbundna oberoende säkerhetsrevisioner, och vi kommer att dela dessa revisionsrapporter offentligt så snart de är tillgängliga.

Slutligen, för intresserade säkerhetsforskare, är Proton Authenticator kvalificerad för Protons buggbelöningsprogram som erbjuder belöningar på upp till 100 000 $ för upptäckten av fel i Protons mjukvara.