Hoppa till innehållet

Säkerhet

Säkerhet som känns som gästfrihet.

En identitetsleverantör är bara så bra som väggarna mellan dess kunder och den omsorg den visar hemligheterna. Så här är Usher Identity byggt. Vi beskriver vad programvaran gör; vi gör inga anspråk på certifiering.

Arkitektur

Separata domäner, separata nätverk.

Usher Identitys egna sidor och varje kunds utfärdare ligger på olika registrerbara domäner. Databaserna ligger på ett nätverk som inte når internet, och den enda vägen ut är en proxy som kontrollerar vart trafiken ska.

  • Caddy terminerar TLS för varje värd och tar bort rubriker som bara Usher Identitys egna tjänster får sätta.
  • Autentiseringsnivån svarar för varje miljö, som skiljs åt med värdnamnet; inget cachas för en värd och serveras till en annan.
  • Varje tjänst pratar med Valkey som sin egen användare, begränsad till sina egna nycklar. Det finns ingen standardanvändare.
  • Satser som innehåller tokens och koder skrivs aldrig till databasloggen med sina värden.

Internet

Människor, dina appar, dina servrar

Kanten

Caddy: TLS, HSTS, tar bort interna rubriker

usheridentity.com

Webbplats och Console

usheridentity.com, console.usheridentity.com

API

api.usheridentity.com

*.usherid.com

Autentiseringsnivå

Varje miljös utfärdare och Lobby

Datanätverk · ingen väg ut

Postgres

Ett schema per miljö

Valkey

Varje tjänst begränsad till sina egna nycklar

Den enda vägen ut

Utgående proxy

För varje URL som en kund har angett

Discovery, JWKS, utloggning

Bara publika adresser

Usher Identitys nivåer. Kunddomänen är en annan registrerbar domän än plattformens, så en kunds sidor är aldrig same-site med Console.

Isolering

Inget som spelar roll delas.

Varje projektmiljö får ett eget Postgres-schema, egna signeringsnycklar och egna hemligheter förseglade med en egen datanyckel. Dess utfärdare är en värd på kunddomänen, och dess cookies gäller bara för värden, så en webbläsare skickar aldrig en miljös cookie till en annan.

usheridentity.com

Webbplatsen, Usher Identity Console, konton hos Usher Identity

*.usherid.com

En utfärdare per miljö, på en separat domän

Miljö

Användare, sessioner och tokens finns i ett schema som skapats för den här miljön. Frågor körs mot det schemat, aldrig mot en delad tabell med en kundkolumn.

Kopiera den förseglade Google-klienthemligheten från Acme produktion till Northwind produktion.

Kryptering i vila

Kuvertkryptering, bunden till sin plats.

Hemligheter som du ger Usher Identity förseglas med AES-256-GCM under en datanyckel som tillhör en enda miljö. Datanycklarna är i sin tur inkapslade av en versionshanterad huvudnyckel som förvaras utanför databasen.

Datanycklar per miljö
Om en miljös datanyckel komprometteras avslöjar det ingenting om någon annan miljös.
AAD-bindning
Miljön och syftet är inbundna i varje chiffertext, så ett värde kan inte flyttas mellan rader eller kunder.
Versionshanterade nycklar
Varje förseglat värde anger vilken nyckelversion det skapades med, så att nycklar kan roteras och gamla värden kapslas in på nytt.
Autentiserad
Tack vare GCM:s tagg går ett manipulerat värde inte att öppna, i stället för att dekrypteras till något annat.
  1. Huvudnyckel

    Förvaras utanför databasen, versionshanterad

  2. Datanyckel, en per miljö

    Inkapslad av huvudnyckeln

  3. Hemligheten

    Förseglad med AES-256-GCM under datanyckeln

u1.<key version>.<iv>.<ciphertext + tag>

aad = u1 | version | environment | purpose

Ett förseglat värde namnger sin miljö och sitt syfte i sina autentiserade data. Kopierat någon annanstans går det inte att öppna.

Rutiner

Detaljerna, noggrant utförda.

  • Lösenord, om du använder dem

    Hashas med Argon2id med den kostnad OWASP rekommenderar (19 MiB, två pass), med ett tak för hur många som körs samtidigt så att en flod av inloggningar inte kan slå ut tjänsten. Nya lösenord kontrolleras mot kända dataintrång via Have I Been Pwneds range-API, som bara ser ett kort prefix av lösenordets hash. Minsta längden är 12 som standard.

  • Inget lagras som kan spelas upp igen

    Klienthemligheter, tokens, tokens för magiska länkar och koder via e-post lagras hashade. Reservkoder är krypterade. En auktoriseringskod gäller i fem minuter; en kod via e-post kan provas tre gånger.

  • Hastighetsbegränsningar vid varje dörr

    Inloggning, registrering, koder via e-post, magiska länkar, lösenordsåterställningar och kontroller av andra faktorn har var sin gräns: till exempel tio inloggningar med lösenord per minut och fem koder via e-post per tio minuter.

  • En strikt Content-Security-Policy

    Varje sida i Lobbyn får en ny nonce och en policy som byggs kring den: bara skript från det här ursprunget som bär nonce-värdet körs, formulär skickas bara till samma ursprung, och andra webbplatser kan inte rama in sidan.

  • En granskningslogg du kan lita på

    Ändringar i arbetsytor, projekt och miljöer skrivs till en logg som bara kan läggas till, där varje post är hashkedjad till den föregående, så att en redigerad eller saknad post syns.

  • En utgående proxy för kunders URL:er

    Varje förfrågan som Usher Identity gör till en adress som en kund har angett (OIDC-discovery, JWKS, back-channel-utloggning) går ut genom en enda proxy. Den slår upp namnet en gång, nekar privata adresser, loopback-, link-local- och molnmetadataadresser, och ansluter till den adress den kontrollerade, så att DNS-rebinding inte kan göra en kunds URL till en intern.

  • Handles som aldrig delas ut två gånger

    En produktionsmiljös handle är den första etiketten i dess utfärdare. Console är bara öppet för inbjudna, en Lobby som har anmälts för nätfiske stängs av, och en handle som en gång har använts delas aldrig ut igen, eftersom gamla appar fortfarande kan lita på dess tokens.

  • Sessioner som tar slut när du säger det

    Usher Identity kontrollerar sina egna sessioner vid varje förfrågan i stället för att lita på en cachad kopia, så en session du avslutar är över direkt. Åtkomsttokens är kortlivade (tio minuter som standard), och ditt API kan introspektera dem.

Ansvarsfull rapportering

Hittat något? Berätta för oss först.

Om du tror att du har hittat ett säkerhetsproblem i Usher Identity vill vi gärna höra om det, och vi arbetar tillsammans med dig för att åtgärda det.

security@usheridentity.com
  • Vad du hittade, var och hur det kan återskapas.
  • Vad någon skulle kunna göra med det, så som du förstår det.
  • Hur vi kan nå dig, och om du vill bli omnämnd.

Testa bara mot miljöer som du äger, kom inte åt andra människors data, och ge oss rimlig tid att åtgärda problemet innan du berättar om det. Om du vill rapportera en sida som utger sig för att vara en inloggning från Usher Identity, se Rapportera missbruk.