Jelszóeszköz Vissza a generátorhoz

Biztonsági útmutató

Kliensoldali jelszógenerálás Web Crypto és rejection sampling segítségével

Egy technikai tanulmány, amely bemutatja a PwdGen böngészőoldali jelszógenerálási modelljét, entrópiahatárait, rejection samplinget és adatvédelmi korlátait.

Absztrakt

A PwdGen kliensoldali referencia-generálási módszert használ: a böngésző vagy a futtatókörnyezet Web Crypto szolgáltatása biztosítja a véletlen bájtokat, a rejection sampling ezeket torzítatlan korlátos indexekké képezi le, a Fisher-Yates keverés pedig elosztja a szükséges karakterosztályokat a végső jelszóban. A módszer szándékosan kicsi, auditálható és reprodukálható a webalkalmazásban, az API adapterben, a CLI-ben és az előkészített pwdgen-core csomagban.

Ez a dokumentum a mérnöki modellt írja le. Nem állítja, hogy új kriptográfiai primitív, formális szabvány vagy független harmadik fél általi audit lenne.

Véletlenszerűség forrása

A generátor kriptográfiailag erős véletlen értékeket kér a crypto.getRandomValues() segítségével. A Web Crypto implementációk várhatóan kriptográfiailag biztonságos pszeudovéletlen számgenerátort használnak, amelyet a gazdakörnyezet által biztosított kiváló minőségű entrópiával táplálnak. A gyakorlatban a böngészők ezt a felelősséget az operációs rendszer eszközeire és a platform kriptográfiai szolgáltatóira ruházzák.

A PwdGen nem állítja, hogy minden jelszógenerálási hívás közvetlenül egy hardveres zajforrást mintavételez. A biztonságosabb és pontosabb kijelentés az, hogy a böngésző CSPRNG kimenetet biztosít a Web Crypto API-n keresztül, és a PwdGen elkerüli a nem kriptográfiai pszeudovéletlen interfészeket.

Miért nem Math.random()

A Math.random() nincs biztonsági szempontból érzékeny használatra specifikálva. Alkalmas szimulációkra, vizuális effektekre és hétköznapi randomizált UI viselkedésre, de nem nyújtja a jelszavak, visszaállító kódok, aláíró kulcsok vagy más hitelesítő adatok esetében elvárt garanciákat.

A PwdGen a nem biztonságos pszeudovéletlen visszaesést hibás állapotként kezeli. Ha a Web Crypto nem érhető el, a generátornak kompatibilitási hibát kell mutatnia, ahelyett hogy csendben gyenge hitelesítő adatokat állítana elő.

Rejection sampling

A véletlen bájtok és egész számok általában egy kettő hatványa tartományból származnak. A jelszóábécék mérete ritkán osztja pontosan ezt a tartományt. Egy közvetlen modulo művelet egyes karaktereket kissé valószínűbbé tehet másoknál.

A PwdGen rejection samplinget használ:

  1. Vegyünk egy 32 bites előjel nélküli egész számot.
  2. Számítsuk ki az ábécé méretének legnagyobb többszörösét, amely belefér a 32 bites tartományba.
  3. Utasítsuk el a határ feletti értékeket.
  4. Csak a maradék teljes tartományra alkalmazzuk a modulo-t.

Ez egyenletessé teszi a korlátos karakterkiválasztást anélkül, hogy mérhető modulo torzítást vezetne be.

Karakterlefedettség és entrópia

A konfigurált jelszóházirendek esetén a generátor először kiválaszt egy karaktert minden engedélyezett osztályból, a többit a kombinált ábécéből tölti ki, majd megkeveri az eredményt. Ez segít teljesíteni a céljelszó-szabályokat anélkül, hogy egy kiszámítható osztályt kiszámítható pozícióba helyezne.

Az elméleti entrópiabecslés:

bits = length × log2(uniqueAlphabetSize)

Ez az érték egy felső korlát a konfigurált ábécéből történő egyenletes véletlen választásokra. Nem veszi figyelembe a jelszó-újrafelhasználást, a felhasználó által szerkesztett kimenetet, a feltört eszközöket, a kiszivárgott jelszavakat vagy a cél szolgáltatás gyenge tárolását.

Adatvédelmi határ

A böngészőeszközökben a generált értékek a lap memóriájában és a látható eredmény mezőkben maradnak, amíg a felhasználó ki nem másolja vagy exportálja őket. A helyi generátorok nem küldik el a generált jelszavakat a PwdGen szervereinek, nem teszik URL-ekbe, és nem írják elemzési eseményekbe.

Ez a határ nem véd a rosszindulatú böngészőbővítmények, vágólapkezelők, operációs rendszer kompromittálása, képernyőrögzítés, adathalász oldalak vagy az ellen, ha a felhasználó egy generált jelszót egy nem biztonságos célhelyre illeszt be.

Reprodukálható implementáció

A nyilvános pwdgen-cli csomag és az előkészített pwdgen-core csomag azért létezik, hogy a generálási modell a weboldalon kívül is ellenőrizhető legyen. Az egységtesztek lefedik a karakterosztályok belefoglalását, a kizárt karaktereket, az érvénytelen konfigurációkat, az entrópia képleteket és a nem biztonságos pszeudovéletlen visszaesési kódútvonalak hiányát.

A cél nem az, hogy a PwdGen privát szabvánnyá váljon. A cél az, hogy az implementáció elég kicsi legyen ahhoz, hogy a fejlesztők elolvashassák, tesztelhessék és lecserélhessék, ha a környezetük más bizalmi határt igényel.

Források