Кіріспе

Парольге негізделген кілт туындыту функциясының стандарты. Криптографияда PBKDF1 және PBKDF2 (Парольге негізделген кілт туындыту функциясы 1 және 2) – күшпен сынап табу шабуылдарына қарсы тұруды азайту үшін қолданылатын, есептеу шығындары реттелетін кілт туындыту функциялары. 2017 жылы жарияланған RFC8018 (PKCS#5 v2.1) парольдерді хэштеу үшін PBKDF2 қолдануды ұсынады.

Мақсаты мен жұмыс істеуі

PBKDF2 кіру пароліне немесе пароль фразасына тұздық мәнімен бірге хэш негізделген хабарламаны аутентификациялау коды (HMAC) сияқты псевдорандомдық функцияны қолданады және процесті көптеген рет қайталайды, содан кейін криптографиялық кілт ретінде пайдаланылатын туынды кілтті шығарады. Қосылған есептеу жұмысы парольді бұзуды әлдеқайда қиындатады, бұл кілт созу деп аталады. Стандарт 2000 жылы жазылған кезде ұсынылатын ең аз итерация саны 1000 болды, бірақ процессор жылдамдығы артаған сайын бұл параметр уақыт өте келе ұлғая түсуі керек. 2005 жылы Kerberos стандарты 4096 итерацияны ұсынды; Apple iOS 3 үшін 2000, ал iOS 4 үшін 10000 итерация қолданды; 2011 жылы LastPass JavaScript клиенттері үшін 5000 итерация, ал серверлік хэштеу үшін 100000 итерация қолданды. 2023 жылы OWASP PBKDF2 HMAC SHA256 үшін 600 000 итерацияны және PBKDF2 HMAC SHA512 үшін 210 000 итерацияны пайдалануды ұсынды. Парольге тұз қосылуы шабуылдар үшін алдын ала есептелген хэштерді (көшетін кестелерді) пайдалану мүмкіндігін азайтады және бірнеше парольді бірден емес, жеке-жеке тексеру қажеттігін білдіреді. Ашық кілт криптографиясы стандарты кемінде 64 бит ұзындығындағы тұзды ұсынады. АҚШ Ұлттық Стандарттар және Технология Институты тұз ұзындығын кем дегенде 128 бит деп ұсынады.

PBKDF2-ге балама

PBKDF2-нің бір кемшілігі – оның итерациялар санын кез келген үлкен есептеу уақытын қажет ету үшін реттеуге болады, бірақ оны кішкентай тізбек және өте аз RAM арқылы іске асыруға болады, бұл арнайы интегралдық схемаларды немесе графикалық процессорларды қолдана отырып, күшпен бұзу шабуылдарын салыстырмалы түрде арзан етеді. bcrypt парольді хэштеу функциясы үлкен көлемде RAM қажет етеді (бірақ әлі де бөлек реттелмейді, яғни берілген CPU уақытына бекітіледі) және мұндай шабуылдарға қарсы сәл мықтырақ, ал қазіргі заманғы scrypt кілт тудыру функциясы кез келген үлкен көлемде жадты пайдалана алады, сондықтан ASIC және GPU шабуылдарына қарсы тұрақтырақ. Тағы бір балама – NIST парольдік нұсқауларында ұсынылған Balloon хэштеуі. Күшпен бұзу шабуылдарын шектеу үшін парольдің құпиялылығына зиян келтірмей, әр парольді тексеру әрекеті үшін онлайн өзара әрекеттесуді талап етуге болады. Бұл парольді нығайту үшін ұмытылмас псевдокезеңдік функцияны пайдалану арқылы жасалуы мүмкін. Бұл PBKDF-қа балама ретінде немесе қосымша қадам ретінде орындалуы мүмкін.