Қауіпсіздік нұсқаулығы
Веб крипто және қабылдамау іріктеуі арқылы клиент жағында құпия сөз генерациялау
PwdGen-нің браузер жағындағы құпия сөз генерациялау моделін, энтропия шекараларын, қабылдамау іріктеуін және құпиялылық шектеулерін түсіндіретін техникалық ақ қағаз.
Аннотация
PwdGen клиент жағындағы эталондық генерация әдісін пайдаланады: браузер немесе орта Web Crypto кездейсоқ байттарды береді, қабылдамау іріктеуі бұл байттарды ығыспаған шектелген индекстерге келтіреді, ал Фишер-Йетс араластыруы қажетті символ кластарын соңғы құпия сөз бойынша таратады. Бұл әдіс әдейі шағын, аудиттелетін және веб-қосымша, API адаптері, CLI және дайындалған pwdgen-core пакеті бойынша қайталанатын болып жасалған.
Бұл құжат инженерлік модельді сипаттайды. Бұл жаңа криптографиялық примитивтің, ресми стандарттың немесе тәуелсіз үшінші тарап аудитінің талабы емес.
Кездейсоқтық көзі
Генератор криптографиялық тұрғыдан күшті кездейсоқ мәндерді crypto.getRandomValues() арқылы сұрайды. Web Crypto іске асырулары хост ортасымен қамтамасыз етілген жоғары сапалы энтропиямен қоректендірілген криптографиялық қауіпсіз псевдо-кездейсоқ сандар генераторын пайдалануы күтіледі. Іс жүзінде браузерлер бұл жауапкершілікті операциялық жүйе мүмкіндіктеріне және платформаның криптографиялық провайдерлеріне жүктейді.
PwdGen әрбір құпия сөз генерациялау шақыруы аппараттық шу көзінен тікелей үлгі алады деп мәлімдемейді. Қауіпсіз және дәлірек мәлімдеме - браузер Web Crypto API арқылы CSPRNG шығысын береді және PwdGen криптографиялық емес псевдо-кездейсоқ интерфейстерден аулақ болады.
Неліктен Math.random() емес
Math.random() қауіпсіздікке сезімтал пайдалану үшін арналмаған. Ол модельдеулерге, визуалды эффектілерге және қарапайым кездейсоқ UI мінез-құлқына жарамды, бірақ құпия сөздер, қалпына келтіру кодтары, қолтаңба кілттері немесе басқа тіркелгі деректері үшін күтілетін кепілдіктерді бермейді.
PwdGen қауіпсіз емес псевдо-кездейсоқ резервтік нұсқаларды істен шығу күйі ретінде қарастырады. Егер Web Crypto қолжетімсіз болса, генератор әлсіз тіркелгі деректерін үнсіз шығармай, үйлесімділік қатесін көрсетуі керек.
Қабылдамау іріктеуі
Кездейсоқ байттар мен бүтін сандар әдетте екінің дәрежесі диапазонынан алынады. Құпия сөз әліпбилерінің өлшемі бұл диапазонды дәл бөлетін сирек кездеседі. Тікелей модуль операциясы кейбір символдарды басқаларына қарағанда сәл ықтимал етуі мүмкін.
PwdGen қабылдамау іріктеуін пайдаланады:
- 32-биттік таңбасыз бүтін санды алыңыз.
- 32-биттік диапазонға сәйкес келетін әліпби өлшемінің ең үлкен еселігін есептеңіз.
- Осы шекарадан жоғары мәндерді қабылдамаңыз.
- Модульді тек қалған толық диапазонға қолданыңыз.
Бұл өлшенетін модульдік ығысусыз шектелген символ таңдауын біркелкі етеді.
Символ қамтуы және энтропия
Конфигурацияланған құпия сөз саясаттары үшін генератор алдымен әрбір қосылған класстан бір символды таңдайды, қалғанын біріктірілген әліпбиден толтырады, содан кейін нәтижені араластырады. Бұл болжамды класты болжамды позицияға қоймай, мақсатты құпия сөз ережелерін қанағаттандыруға көмектеседі.
Теориялық энтропия бағасы:
bits = length × log2(uniqueAlphabetSize)
Бұл мән конфигурацияланған әліпбиден біркелкі кездейсоқ таңдаулар үшін жоғарғы шек болып табылады. Ол құпия сөзді қайта пайдалануды, пайдаланушы өңдеген шығысты, бұзылған құрылғыларды, ағып кеткен құпия сөздерді немесе мақсатты қызметтегі әлсіз сақтауды есепке алмайды.
Құпиялылық шекарасы
Браузер құралдарында жасалған мәндер пайдаланушы оларды көшіргенше немесе экспорттағанша бет жадында және көрінетін нәтиже өрістерінде қалады. Жергілікті генераторлар жасалған құпия сөздерді PwdGen серверлеріне жібермейді, оларды URL мекенжайларына қоймайды немесе аналитика оқиғаларына жазбайды.
Бұл шекара зиянды браузер кеңейтімдерінен, алмасу буфері менеджерлерінен, операциялық жүйенің бұзылуынан, экранды түсіруден, фишинг беттерінен немесе пайдаланушының жасалған құпия сөзді қауіпсіз емес орынға қоюынан қорғамайды.
Қайталанатын іске асыру
Жария pwdgen-cli пакеті және дайындалған pwdgen-core пакеті генерациялау моделін веб-беттен тыс тексеруге мүмкіндік беру үшін бар. Бірлік тесттер символ кластарын қосуды, алынып тасталған символдарды, жарамсыз конфигурацияларды, энтропия формулаларын және қауіпсіз емес псевдо-кездейсоқ резервтік код жолдарының жоқтығын тексереді.
Мақсат - PwdGen-ді жеке стандартқа айналдыру емес. Мақсат - іске асыруды әзірлеушілер оқи алатындай, тексере алатындай және олардың ортасы басқа сенім шекарасын талап еткенде ауыстыра алатындай шағын ету.