Bezpečnostný model
Balík zodpovedá za ceremóniu: viazanie challenge, overenie originu a RP ID, politiku prítomnosti a overenia používateľa, zosúladenie počítadla podpisov a dôveru atestácie. Kryptografia — dekódovanie CBOR/COSE, parsovanie kľúčov a overovanie podpisov — beží na crypto-for-laravel a nikde v reťazci nie je kryptografia tretích strán.
- Jednorazové challenge s TTL v cache — atomické načítanie a zmazanie, takže sú odolné voči replay útokom.
- Challenge viazané na ceremóniu — challenge vydanú pre registráciu overovanie prihlásenia odmietne a naopak.
- Registračné challenge viazané na používateľa — overovanie odmietne odpoveď pre iného používateľa (dodatočná ochrana pri registrácii administrátorom).
- Prihlasovacie challenge viazané na používateľa (WebAuthn L3 §7.2, kroky 5–6) — kľúč, ktorý možnosti neponúkli, sa odmietne pred overením podpisu a pred akýmkoľvek zápisom.
- Očakávaný vlastník — AuthenticationExpectation viaže kľúč na typ vlastníka alebo konkrétny účet ešte pred spotrebovaním challenge.
- Allowlist originov a overenie hashu RP ID pri každej ceremónii.
- Porovnanie challenge a identifikátora používateľa v konštantnom čase.
- Overenie podpisov ES256 (s prevodom DER↔raw), RS256 a Ed25519; chyba overenia je vždy neúspech, nikdy úspech.
- Žiadna zámena algoritmov — algoritmus pochádza z COSE kľúča uloženého kľúča, nikdy z podpísanej odpovede.
- Politika poklesu počítadla — reject, alebo flag s udalosťou — na odhalenie klonovaných autentifikátorov. Počítadlo sa posúva len dopredu, jedným podmieneným UPDATE … WHERE sign_count < ?, takže nižšiu hodnotu nezapíše späť ani pokles, ani dva súbežné podpisy.
- Prihlásenie bez mena musí uviesť svoj účet (WebAuthn §7.2, krok 6) — možnosti vydané bez používateľa vyžadujú v odpovedi userHandle, ktorý sa musí zhodovať s identifikátorom kľúča.
- Žiadna enumerácia používateľov — každý neúspech prihlásenia vráti jednotné CredentialNotFound.
- Príznaky zálohy podľa WebAuthn L3 — zálohovaný kľúč musí byť na zálohu oprávnený; oprávnenosť na zálohu sa určí pri registrácii a podpis, ktorý ju zmení, sa odmietne; stav zálohy sa zaznamená pri každom prijatom podpise.
- Monotónna dôvera atestácie (ignore ⊂ self ⊂ basic) s obmedzeniami CA podľa RFC 5280 pre každého vydavateľa v reťazci, pričom všetky rozhodnutia o dôvere padajú na jednom mieste, v AttestationGate.
- ID roamingových kľúčov sa ukladajú celé; unikátny index stojí na sha-256 hashi ID, takže sa zmestí do limitu dĺžky kľúča každej databázy.
Čo zostáva na vás
Žiadne prihlasovacie routy, controllery, views, cookies ani CSRF; žiadne spúšťanie session ani vydávanie prístupových tokenov; žiadne obmedzovanie pokusov. Balík vám odovzdá overené kľúče a typované udalosti — obmedzovanie pokusov na endpointoch ceremónií aj vydávanie session či tokenov si doplňte sami.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.