Preskoči na sadržaj

Sigurnost

Sigurnost koja djeluje kao gostoprimstvo.

Pružatelj identiteta dobar je onoliko koliko su čvrsti zidovi između njegovih zakupaca i koliko pažljivo postupa s tajnama. Evo kako je Usher Identity izgrađen. Opisujemo što softver radi; ne tvrdimo da posjedujemo ikakve certifikate.

Arhitektura

Odvojene domene, odvojene mreže.

Vlastite stranice platforme Usher Identity i izdavatelj svakog kupca nalaze se na različitim registrabilnim domenama. Baze podataka nalaze se na mreži koja ne može doći do interneta, a jedini put van vodi kroz proxy koji provjerava kamo se ide.

  • Caddy obrađuje TLS za svaki host i uklanja zaglavlja koja smiju postavljati samo vlastite usluge platforme Usher Identity.
  • Sloj za autentifikaciju odgovara za svako okruženje, a okruženja razlikuje po hostu; ništa se ne sprema u predmemoriju za jedan host da bi se poslužilo drugome.
  • Svaka se usluga spaja na Valkey kao zaseban korisnik, ograničen na vlastite ključeve. Zadani korisnik ne postoji.
  • Upiti koji sadrže tokene i kôdove nikad se ne zapisuju u zapisnik baze podataka zajedno s njihovim vrijednostima.

Internet

Ljudi, vaše aplikacije, vaši poslužitelji

Rubni sloj

Caddy: TLS, HSTS, uklanja interna zaglavlja

usheridentity.com

Web-stranica i Console

usheridentity.com, console.usheridentity.com

API

api.usheridentity.com

*.usherid.com

Sloj za autentifikaciju

Izdavatelj i Lobby svakog okruženja

Podatkovna mreža · bez rute van

Postgres

Shema za svako okruženje

Valkey

Svaka usluga ograničena na vlastite ključeve

Jedini put van

Izlazni proxy

Za svaki URL koji je dao kupac

Otkrivanje, JWKS, odjava

Samo javne adrese

Slojevi platforme Usher Identity. Domena zakupaca druga je registrabilna domena od domene platforme, pa stranice zakupca nikad nisu na istom mjestu (same-site) kao Console.

Izolacija

Ništa bitno nije zajedničko.

Svako okruženje projekta dobiva vlastitu Postgres shemu, vlastite ključeve za potpisivanje i vlastite tajne zapečaćene vlastitim podatkovnim ključem. Njegov izdavatelj je host na domeni zakupaca, a kolačići su vezani samo uz taj host, pa preglednik nikad ne šalje kolačić jednog okruženja drugome.

usheridentity.com

Web-stranica, Usher Identity Console, Usher Identity računi

*.usherid.com

Jedan izdavatelj po okruženju, na zasebnoj domeni

Okruženje

Korisnici, sesije i tokeni nalaze se u shemi napravljenoj za ovo okruženje. Upiti se izvršavaju nad tom shemom, nikad nad zajedničkom tablicom sa stupcem zakupca.

Kopirajte zapečaćenu tajnu klijenta Google iz produkcijskog okruženja projekta Acme u produkcijsko okruženje projekta Northwind.

Enkripcija pohranjenih podataka

Omotnička enkripcija, vezana uz svoje mjesto.

Tajne koje povjerite platformi Usher Identity pečate se algoritmom AES-256-GCM pod podatkovnim ključem koji pripada jednom okruženju. Podatkovni ključevi i sami su omotani glavnim ključem s verzijama, koji se čuva izvan baze podataka.

Podatkovni ključevi za svako okruženje
Kompromitiranje podatkovnog ključa jednog okruženja ne otkriva ništa o ključu drugoga.
Vezanje putem AAD-a
Okruženje i namjena uvezani su u svaki šifrat, pa se vrijednost ne može premjestiti između redaka ili zakupaca.
Ključevi s verzijama
Svaka zapečaćena vrijednost bilježi verziju ključa kojom je napravljena, pa se ključevi mogu rotirati, a stare vrijednosti ponovno omotati.
Autentificirano
Zahvaljujući GCM oznaci, izmijenjena vrijednost ne može se otvoriti, umjesto da se dešifrira u nešto drugo.
  1. Glavni ključ

    Čuva se izvan baze podataka, s verzijama

  2. Podatkovni ključ, jedan za svako okruženje

    Omotan glavnim ključem

  3. Tajna

    Zapečaćena algoritmom AES-256-GCM pod podatkovnim ključem

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

aad = u1 | version | environment | purpose

Zapečaćena vrijednost u svojim autentificiranim podacima navodi svoje okruženje i namjenu. Kopirana bilo kamo drugamo, ne može se otvoriti.

Prakse

Detalji, pažljivo izvedeni.

  • Lozinke, ako ih koristite

    Hashiraju se algoritmom Argon2id uz trošak koji preporučuje OWASP (19 MiB, dva prolaza), s ograničenjem broja istodobnih izračuna kako navala prijava ne bi srušila uslugu. Nove lozinke provjeravaju se prema poznatim curenjima podataka putem API-ja za raspone usluge Have I Been Pwned, koji vidi samo kratki prefiks hasha lozinke. Najmanja duljina zadano je 12 znakova.

  • Ništa pohranjeno što bi se moglo ponovno upotrijebiti

    Tajne klijenata, tokeni, tokeni čarobnih poveznica i kôdovi poslani e-poštom pohranjuju se kao hashevi. Rezervni kôdovi su šifrirani. Autorizacijski kôd vrijedi pet minuta; kôd poslan e-poštom dopušta tri pokušaja.

  • Ograničenja učestalosti na svim vratima

    Prijava, registracija, kôdovi e-poštom, čarobne poveznice, ponovno postavljanje lozinke i provjere drugog faktora imaju svaki svoje ograničenje: na primjer deset prijava lozinkom u minuti i pet kôdova e-poštom svakih deset minuta.

  • Stroga Content-Security-Policy

    Svaka stranica Lobby dobiva novi nonce i politiku izgrađenu oko njega: izvršavaju se samo skripte s ovog izvora koje nose taj nonce, obrasci se šalju samo na isti izvor, a druge web-stranice ne mogu uokviriti stranicu.

  • Revizijski zapisnik kojem možete vjerovati

    Promjene radnih prostora, projekata i okruženja zapisuju se u zapisnik u koji se samo dodaje, a svaki je unos hashom povezan s prethodnim, pa se izmijenjen ili nestao unos odmah vidi.

  • Izlazni proxy za URL-ove kupaca

    Svaki zahtjev koji Usher Identity upućuje na adresu koju mu je dao kupac (OIDC otkrivanje, JWKS, odjava putem pozadinskog kanala) izlazi kroz jedan proxy. On razrješava ime jednom, odbija privatne, loopback, link-local i adrese metapodataka oblaka te se spaja na adresu koju je provjerio, pa DNS rebinding ne može pretvoriti URL kupca u interni.

  • Oznake koje se nikad ne dodjeljuju dvaput

    Oznaka produkcijskog okruženja prvi je dio naziva njegova izdavatelja. Sučelje Console dostupno je samo uz pozivnicu, Lobby dojavljen zbog phishinga suspendira se, a jednom upotrijebljena oznaka nikad se više ne dodjeljuje, jer stare aplikacije možda još vjeruju njezinim tokenima.

  • Sesije koje završavaju kad vi kažete

    Usher Identity pri svakom zahtjevu provjerava vlastite sesije umjesto da vjeruje kopiji iz predmemorije, pa sesija koju prekinete odmah završava. Pristupni tokeni kratko traju (zadano deset minuta), a vaš ih API može provjeriti introspekcijom.

Odgovorno otkrivanje

Pronašli ste nešto? Najprije javite nama.

Ako mislite da ste pronašli sigurnosni problem u platformi Usher Identity, rado ćemo o tome čuti i surađivati s vama na rješenju.

security@usheridentity.com
  • Što ste pronašli, gdje i kako to ponoviti.
  • Što bi netko time mogao učiniti, koliko vi to razumijete.
  • Kako vas možemo kontaktirati i želite li da vas navedemo kao zaslužne.

Molimo testirajte samo okruženja koja su vaša, ne pristupajte tuđim podacima i dajte nam razumno vrijeme da riješimo problem prije nego što ga objavite. Za dojavu stranice koja se lažno predstavlja kao prijava putem platforme Usher Identity pogledajte Prijava zlouporabe.