Қауіпсіздік нұсқаулығы
Неліктен Math.random құпия сөздер үшін қауіпсіз емес
Math.random интерфейс эффектілеріне жарамды, бірақ құпия сөздер, қалпына келтіру кодтары, токендер және басқа қауіпсіздікке сезімтал құпиялар үшін жарамсыз екенін біліңіз.
Қысқаша мазмұны
Math.random() - бұл жалпы JavaScript псевдо-кездейсоқ функциясы. Ол анимациялар, кездейсоқ UI мінез-құлық, мысалдар, ойындар және симуляциялар үшін пайдалы. Ол криптографиялық қауіпсіздік үшін арналмаған және құпия сөздерді, қалпына келтіру кодтарын, API құпияларын, қолтаңба кілттерін немесе қалпына келтіру токендерін жасау үшін пайдаланылмауы керек.
Мәселе
Құпия сөз генераторына шабуыл жасаушыға қарсы болжау мүмкін еместігі қажет, тек пайдаланушыға әртүрлі болып көрінетін мәндер емес. Math.random() браузердің стандартты криптографиялық қауіпсіздік кепілдігін қамтамасыз етпейді және іске асырулар қозғалтқыштар арасында ерекшеленуі мүмкін.
Қауіпсіз браузер опциясы
Қазіргі заманғы браузерлер Web Crypto API арқылы crypto.getRandomValues() қамтамасыз етеді. PwdGen сол интерфейсті және таңбалардың бейімділігін болдырмайтын rejection sampling әдісін пайдаланады. Егер бұл API қолжетімсіз болса, қауіпсіз әрекет - генерацияны тоқтатып, үйлесімділік талабын түсіндіру.
Генераторды қалай тексеруге болады
Дереккөзден Math.random іздеңіз. Маңызды құпия сөз генераторы оны құпия сөз таңбалары үшін пайдаланбауы керек. Ол неліктен қауіпсіз емес екенін түсіндіретін құжаттамада пайда болуы мүмкін, бірақ генерация жолында емес.
Егжей-тегжейлі нұсқаулық
Бұл нұсқаулық Math.random неліктен құпия сөздер мен құпиялар үшін жарамсыз екеніне назар аударады. Ол әзірлеушілерге, студенттерге және генератордың қауіпсіз кездейсоқтықты пайдаланатынын тексеретін құрал пайдаланушыларына арналған, сондықтан практикалық мақсат - драмалық қауіпсіздік мәлімдемесін жасау емес. Мақсат - күнделікті қолдануға төтеп бере алатын құпия сөз әдетін таңдау: кіру формалары, құпия сөз менеджерлері, мобильді пернетақталар, есептік жазбаны қалпына келтіру, ортақ құрылғылар және кейде оғаш тексеру ережелері бар қызметтер. Қауіпсіз ұсыныс нақты адам оны дәйекті түрде орындай алса ғана пайдалы.
Ең қауіпсіз бастапқы нүкте - кездейсоқтық пен бірегейлік. Кездейсоқтық мәннің үлкен кеңістіктен криптографиялық жарамды кездейсоқ көзбен таңдалғанын білдіреді, туған күннен, үй жануарының атынан, пернетақта үлгісінен немесе сүйікті дәйексөзден ойлап табылмаған. Бірегейлік бірдей құпия сөздің басқа еш жерде қолданылмауын білдіреді. Ұзын, бірақ қайта пайдаланылған құпия сөз бір байланыссыз бұзушылықтан кейін тез істен шығуы мүмкін, ал бірегей кездейсоқ құпия сөз зақымдануды тек ол пайдаланылған жалғыз есептік жазбамен шектейді.
Бұл тақырып үшін практикалық алдын ала орнату - Math.random орнына crypto.getRandomValues rejection sampling әдісімен. Сіз бұл алдын ала орнатуды Web Crypto API нұсқаулығы арқылы қолдана аласыз, содан кейін соңғы мәнді сенімді құпия сөз менеджерінде сақтай аласыз. PwdGen мәндерді браузерде Web Crypto көмегімен жергілікті түрде жасайды; жасалған құпия сөз PwdGen серверіне жіберілмейді. Бұл жергілікті дизайн сервер жағындағы әсерді азайтады, бірақ ол әрбір қауіптен қорғамайды. Зиянды браузер кеңейтімі, бұзылған құрылғы, фишинг беті немесе қауіпсіз емес алмасу буферімен жұмыс істеу құпияны жасағаннан кейін әлі де аша алады.
Ең көп таралған мәселелер - болжауға болатын псевдо-кездейсоқ тізбектер, модульдік бейімділік, теңшелетін кездейсоқ функциялар және өндіріске көшірілген демо код. Бұл мәселелер маңызды, өйткені шабуылдаушылар адам әдеттері оларға жеңіл жол бергенде, әрбір мүмкін құпия сөзді брутфорс арқылы табуға сирек тырысады. Есептік жазба деректерін толтыру, фишинг, ағып кеткен құпия сөздер тізімдері және есептік жазбаны қалпына келтіруді теріс пайдалану көбінесе таза математикалық іздеуден гөрі шынайы. Сондықтан ең жақсы кеңес құпия сөз сапасын MFA, passkeys, қалпына келтіру кодтарын сақтау және қалпына келтіру электрондық поштасын немесе телефон параметрлерін жүйелі түрде қарап шығу сияқты есептік жазба деңгейіндегі басқару элементтерімен біріктіреді.
Ұсынысты қолданған кезде осы тексеру тізімін пайдаланыңыз:
- Құпия сөздер үшін Math.random пайдаланбаңыз.
- Браузерлерде Web Crypto пайдаланыңыз.
- CLI кодында Node crypto немесе тексерілген пакетті пайдаланыңыз.
- Кездейсоқ резервтік кодты тексеріңіз.
Егер веб-сайт идеалды параметрді қабылдамаса, құпия сөзді қолмен әлсіз үлгіге мәжбүрлемеңіз. Бір айнымалыны бір уақытта реттеңіз. Егер таңбалар қабылданбаса, бас әріптерді, кіші әріптерді және сандарды қосып, ұзындықты арттырыңыз. Егер максималды ұзындық төмен болса, ең үлкен қабылданған ұзындықты пайдаланыңыз және мәннің бірегей екеніне көз жеткізіңіз. Егер құпия сөзді дауыстап оқу, басып шығару немесе теледидар немесе маршрутизатор экранында теру қажет болса, шатастыратын таңбаларды алып тастауды және кішірек әліпбиді өтеу үшін ұзындықты арттыруды қарастырыңыз.
Ақырында, құпия сөз кеңесінің шекарасын есте сақтаңыз. Күшті құпия сөз - бұл қорғаныстың бір қабаты, кепілдік емес. Ол фишинг бетін қауіпсіз ете алмайды, зиянды бағдарламаны түзете алмайды немесе деректерді нашар сақтайтын қызметтің орнын толтыра алмайды. Пайдалы әдет - бұл қызықсыз, бірақ берік: бірегей мәнді жасаңыз, оны қауіпсіз сақтаңыз, қалпына келтіру жолын қорғаңыз және әшкерелеуге күдіктенсеңіз, оны тез ауыстырыңыз.
Қауіпсіз келесі қадам
Осы нұсқаулықты оқығаннан кейін, бәрін бірден түзетуге тырысудың орнына, бір шағын есептік жазба аудитін жасаңыз. Егер ол басып алынса, ең көп қиындық тудыратын есептік жазбаны таңдаңыз, оның құпия сөзінің бірегей екенін растаңыз және қалпына келтіру электрондық поштасын, қалпына келтіру телефонын, MFA әдісін және резервтік код сақтауын тексеріңіз. Егер осы тізбектің кез келген бөлігі әлсіз болса, төменгі тәуекелді есептік жазбаларға көшпес бұрын, сол бөлікті жақсартыңыз. Бұл рет жұмысты басқарылатын етеді және шабуылдаушылардың адымдау тасы ретінде пайдалануы ықтимал есептік жазбаларды қорғайды. Math.random неліктен құпия сөздер үшін қауіпсіз емес екеніне қатысты ең жақсы нәтиже - қайталанатын әдет: жергілікті түрде жасау, мұқият сақтау және қайта пайдаланудан аулақ болу.
Жиі қойылатын сұрақтар
Math.random ешқашан қолайлы ма?
Иә, визуалды эффектілер, симуляциялар және қарапайым UI кездейсоқтығы үшін, бірақ есептік жазба деректері немесе қауіпсіздік токендері үшін емес.
Құпия сөз генераторлары оның орнына нені пайдалануы керек?
Олар браузерде crypto.getRandomValues() сияқты криптографиялық кездейсоқ көзді пайдалануы керек.
PwdGen Math.random-ға резервтік көшірме жасайды ма?
Жоқ. Егер Web Crypto қолжетімсіз болса, PwdGen үйлесімділік ескертуін көрсетеді және Math.random() көмегімен құпия сөздерді жасамайды.