Gå til indholdet

Sikkerhed

Sikkerhed, der føles som gæstfrihed.

En identitetsudbyder er aldrig bedre end væggene mellem dens lejere og den omhu, den viser hemmeligheder. Her kan du se, hvordan Usher Identity er bygget. Vi beskriver, hvad softwaren gør; vi påstår ikke, at den er certificeret.

Arkitektur

Separate domæner, separate netværk.

Usher Identitys egne sider og hver kundes udsteder ligger på forskellige registrerbare domæner. Databaserne står på et netværk, der ikke kan nå internettet, og den eneste vej ud er en proxy, der tjekker, hvor trafikken skal hen.

  • Caddy afslutter TLS for alle hosts og fjerner headere, som kun Usher Identitys egne tjenester må sætte.
  • Godkendelseslaget svarer for alle miljøer og skelner mellem dem ud fra hosten; intet caches for én host og serveres for en anden.
  • Hver tjeneste taler med Valkey som sin egen bruger, begrænset til sine egne nøgler. Der er ingen standardbruger.
  • SQL-sætninger, der indeholder tokens og koder, skrives aldrig til databaseloggen med deres værdier.

Internettet

Folk, dine apps, dine servere

Kanten

Caddy: TLS, HSTS, fjerner interne headere

usheridentity.com

Websted og Console

usheridentity.com, console.usheridentity.com

API

api.usheridentity.com

*.usherid.com

Godkendelseslag

Hvert miljøs udsteder og Lobby

Datanetværk · ingen vej ud

Postgres

Ét skema pr. miljø

Valkey

Hver tjeneste begrænset til sine egne nøgler

Den eneste vej ud

Egress-proxy

Til alle URL’er, som kunder angiver

Discovery, JWKS, logout

Kun offentlige adresser

Usher Identitys lag. Lejerdomænet er et andet registrerbart domæne end platformens, så en lejers sider er aldrig same-site med Console.

Isolation

Intet delt, der betyder noget.

Hvert projektmiljø får sit eget Postgres-skema, sine egne signeringsnøgler og sine egne hemmeligheder, forseglet med sin egen datanøgle. Dets udsteder er en host på lejerdomænet, og dets cookies er host-only, så en browser aldrig sender ét miljøs cookie til et andet.

usheridentity.com

Webstedet, Usher Identity Console, konti hos Usher Identity

*.usherid.com

Én udsteder pr. miljø, på et separat domæne

Miljø

Brugere, sessioner og tokens ligger i et skema, der er lavet til dette miljø. Forespørgsler kører mod det skema, aldrig mod en delt tabel med en lejerkolonne.

Kopier den forseglede Google-klienthemmelighed fra Acme produktion til Northwind produktion.

Kryptering af lagrede data

Kuvertkryptering, bundet til sin plads.

Hemmeligheder, du giver Usher Identity, forsegles med AES-256-GCM under en datanøgle, der tilhører ét miljø. Datanøglerne er selv pakket ind af en versioneret hovednøgle, der opbevares uden for databasen.

Datanøgler pr. miljø
Bliver ét miljøs datanøgle kompromitteret, afslører det intet om et andet miljøs.
AAD-binding
Miljøet og formålet bindes ind i hver chiffertekst, så en værdi ikke kan flyttes mellem rækker eller lejere.
Versionerede nøgler
Hver forseglet værdi registrerer den nøgleversion, den blev lavet med, så nøgler kan roteres og gamle værdier pakkes ind igen.
Autentificeret
Takket være GCM’s tag kan en manipuleret værdi slet ikke åbnes i stedet for at blive dekrypteret til noget andet.
  1. Hovednøgle

    Opbevares uden for databasen, versioneret

  2. Datanøgle, én pr. miljø

    Pakket ind af hovednøglen

  3. Hemmeligheden

    Forseglet med AES-256-GCM under datanøglen

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

aad = u1 | version | environment | purpose

En forseglet værdi nævner sit miljø og sit formål i sine autentificerede data. Kopieres den andre steder hen, kan den ikke åbnes.

Praksis

Detaljerne, gjort omhyggeligt.

  • Adgangskoder, hvis du bruger dem

    Hashet med Argon2id med den omkostning, OWASP anbefaler (19 MiB, to gennemløb), og med et loft over, hvor mange der kører på én gang, så en strøm af login ikke kan lægge tjenesten ned. Nye adgangskoder tjekkes mod kendte brud via range-API’et fra Have I Been Pwned, som kun ser et kort præfiks af adgangskodens hash. Minimumslængden er som standard 12.

  • Intet gemt, der kan genafspilles

    Klienthemmeligheder, tokens, tokens til magiske links og koder via e-mail gemmes hashet. Backupkoder er krypterede. En autorisationskode gælder i fem minutter; en kode via e-mail giver tre forsøg.

  • Hastighedsbegrænsning ved hver dør

    Login, tilmelding, koder via e-mail, magiske links, nulstilling af adgangskoder og tjek af anden faktor har hver sin grænse: for eksempel ti login med adgangskode i minuttet og fem koder via e-mail hvert tiende minut.

  • En streng Content-Security-Policy

    Hver side i Lobbyen får en ny nonce og en politik bygget op omkring den: kun denne origins scripts med noncen kører, formularer sendes kun til samme origin, og andre websteder kan ikke indramme siden.

  • En revisionslog, du kan stole på

    Ændringer af arbejdsområder, projekter og miljøer skrives til en log, der kun kan tilføjes til, og hver post er hashkædet til den forrige, så en redigeret eller manglende post kan ses.

  • En egress-proxy til kunders URL’er

    Hver anmodning, Usher Identity sender til en adresse, som en kunde har angivet (OIDC-discovery, JWKS, back-channel-logout), går ud gennem én proxy. Den slår navnet op én gang, afviser private adresser samt loopback-, link-local- og cloud-metadata-adresser og forbinder til den adresse, den har tjekket, så DNS-rebinding ikke kan gøre en kundes URL til en intern.

  • Handles, der aldrig gives ud to gange

    Et produktionsmiljøs handle er den første del af dets udsteder. Console er kun åben for inviterede, en Lobby, der er rapporteret for phishing, suspenderes, og et handle, der én gang er brugt, gives aldrig ud igen, fordi gamle apps stadig kan stole på dets tokens.

  • Sessioner, der slutter, når du siger det

    Usher Identity tjekker sine egne sessioner ved hver anmodning i stedet for at stole på en cachet kopi, så en session, du afslutter, er slut med det samme. Adgangstokens er kortlivede (som standard ti minutter), og dit API kan introspektere dem.

Ansvarlig offentliggørelse

Har du fundet noget? Fortæl os det først.

Hvis du mener, at du har fundet et sikkerhedsproblem i Usher Identity, vil vi gerne høre om det, og vi samarbejder gerne med dig om at løse det.

security@usheridentity.com
  • Hvad du fandt, hvor, og hvordan det kan genskabes.
  • Hvad nogen kunne gøre med det, som du forstår det.
  • Hvordan vi kan kontakte dig, og om du vil krediteres.

Test kun mod miljøer, du selv ejer, tilgå ikke andres data, og giv os rimelig tid til at løse problemet, før du deler det. Vil du rapportere en side, der udgiver sig for at være et login hos Usher Identity, så se Rapporter misbrug.