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
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
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.
Glavni ključ
Čuva se izvan baze podataka, s verzijama
Podatkovni ključ, jedan za svako okruženje
Omotan glavnim ključem
Tajna
Zapečaćena algoritmom AES-256-GCM pod podatkovnim ključem
u1.<key version>.<iv>.<ciphertext + tag>
aad = u1 | version | environment | purpose
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.
- Š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.