Кіріспе
Криптографияда қолдануға қолайлы хэш функциясы
Криптографиялық хэш функциясы (КХФ) – кез келген екілік жолдан белгілі бір мөлшердегі биттері бар екілік жолға шамадан тыс картаны (хэш алгоритмі) құрайды және криптографиялық қолданыс үшін қажетті арнайы қасиеттерге ие: кездейсоқ кіріс жолының ("хабарлама") нақты биттік нәтижесінің (хэш мәні) ықтималдығы (кез келген жақсы хэш сияқты) болады, сондықтан хэш мәні хабарламаның өкілі ретінде пайдаланылуы мүмкін; барлық кіріс жолдары бірдей ықтималды деп есептесек, берілген хэш мәніне сәйкес келетін кіріс жолын табу (алдын ала бейне) мүмкін емес. Мұндай іздеуге қарсылық қауіпсіздік күші ретінде өлшенеді, хэш мәніндегі биттері бар криптографиялық хэш функциясы біттердің алдын ала бейнеге қарсылық күшіне ие болады деп күтіледі, егер мүмкін кіріс мәндерінің кеңістігі (практикалық мысалды табуға болады) қарағанда едәуір кіші болмаса; Бірдей күтулермен екінші алдын ала бейнеге қарсылық күші, берілген хэш мәніне сәйкес келетін екінші хабарламаны табудың ұқсас мәселесіне қатысты; бірдей хэш мәнін беретін әртүрлі хабарламалардың кез келген жұбын табу (соқтығысу) да мүмкін емес, криптографиялық хэш функциясы біттердің соқтығысуға қарсылық күшіне ие болады деп күтіледі (туған күн парадоксының салдарынан төмен). Криптографиялық хэш функциялары көптеген ақпараттық қауіпсіздік салаларында қолданылады, әсіресе цифрлық қолтаңбаларда, хабарламаларды аутентификациялау кодтарында (MAC) және аутентификацияның басқа да нысандарында. Олар сондай-ақ қарапайым хэш функциясы ретінде, хэш кестелеріндегі деректерді индекстеу, саусақ іздерін алу, қайталанған деректерді анықтау немесе файлдарды бірегей түрде анықтау үшін және деректердің кездейсоқ зақымдалуын анықтау үшін тексеру сомалары ретінде пайдаланылуы мүмкін. Шын мәнінде, ақпараттық қауіпсіздік контекстінде криптографиялық хэш мәндері кейде (цифрлық) саусақ іздері, тексеру сомалары немесе жай ғана хэш мәндері деп аталады, тіпті бұл терминдердің барлығы мүлдем басқа қасиеттері мен мақсаттары бар жалпы функциялар үшін тұрса да. Криптографиялық емес хэш функциялары хэш кестелерінде және кездейсоқ қателерді анықтау үшін қолданылады, олардың құрылымы қасақана шабуылға еш кедергі келтірмейді. Мысалы, егер соқтығысуларды табу оңай болса, хэш кестелеріне қызмет көрсетуден бас тартуға болады, мысалы, сызықтық циклдік артықшылықты тексеру (CRC) функцияларында.
the probability of a particular bit output result (hash value) for a random input string ("message") is (as for any good hash), so the hash value can be used as a representative of the message;
finding an input string that matches a given hash value (a pre image) is unfeasible, assuming all input strings are equally likely. The resistance to such search is quantified as security strength, a cryptographic hash with bits of hash value is expected to have a preimage resistance strength of bits, unless the space of possible input values is significantly smaller than (a practical example can be found in );
A second preimage resistance strength, with the same expectations, refers to a similar problem of finding a second message that matches the given hash value when one message is already known;
finding any pair of different messages that yield the same hash value (a collision) is also unfeasible, a cryptographic hash is expected to have a collision resistance strength of bits (lower due to the birthday paradox). Cryptographic hash functions have many information security applications, notably in digital signatures, message authentication codes (MACs), and other forms of authentication. They can also be used as ordinary hash functions, to index data in hash tables, for fingerprinting, to detect duplicate data or uniquely identify files, and as checksums to detect accidental data corruption. Indeed, in information security contexts, cryptographic hash values are sometimes called (digital) fingerprints, checksums, or just hash values, even though all these terms stand for more general functions with rather different properties and purposes. Non cryptographic hash functions are used in hash tables and to detect accidental errors, their construction frequently provides no resistance to a deliberate attack. For example, a denial of service attack on hash tables is possible if the collisions are easy to find, like in the case of linear cyclic redundancy check (CRC) functions.
Қасиеттері
Криптографиялық хэш-функциялардың көпшілігі кез келген ұзындықтағы жолды қабылдап, белгілі бір ұзындықтағы хэш-мәнді шығарады. Криптографиялық хэш-функция криптоанализдің барлық белгілі түрлеріне төтеп беруге тиіс. Теориялық криптографияда криптографиялық хэш-функцияның қауіпсіздік деңгейі келесі қасиеттер арқылы анықталады:
Алдын ала бейнеге қарсы тұру. h хэш-мәні берілгенде, h = hash(m) теңдеуін қанағаттандыратын кез келген m хабарламасын табу қиын болуы керек. Бұл түсінік бір бағытты функциямен байланысты. Бұл қасиеті жоқ функциялар алдын ала бейне шабуылдарына осал. Екінші алдын ала бейнеге қарсы тұру. Кіріс берілгенде, басқа кіріс табу қиын болуы керек, сонда h = hash(m) теңдеуі орындалады. Бұл қасиет кейде әлсіз соқтығысуға қарсы тұру деп аталады. Бұл қасиеті жоқ функциялар екінші алдын ала бейне шабуылдарына осал. Соқтығысуға қарсы тұру. Екі әртүрлі хабарламаны табу қиын болуы керек, сонда h = hash(m) теңдеуі орындалады. Мұндай жұп криптографиялық хэш-соқтығысу деп аталады. Бұл қасиет кейде күшті соқтығысуға қарсы тұру деп аталады. Ол алдын ала бейнеге қарсы тұру үшін қажеттіге қарағанда кемінде екі есе ұзын хэш-мәнін қажет етеді; әйтпесе, туылған күн шабуылдары арқылы соқтығысулар табылуы мүмкін. Соқтығысуға қарсы тұру екінші алдын ала бейнеге қарсы тұруды білдіреді, бірақ алдын ала бейнеге қарсы тұруды білдірмейді. Теориялық криптографияда әлсіз болжам әрқашан артықшылыққа ие, бірақ практикада тек екінші алдын ала бейнеге қарсы тұратын хэш-функция қауіпсіз емес деп саналады және сондықтан нақты қолданулар үшін ұсынылмайды. Формальды түрде, бұл қасиеттер зиянды қарсылас кіріс деректерін оның дайджестін өзгертпей алмастыра алмайды немесе өзгерте алмайды дегенді білдіреді. Егер екі жолдың дайджесті бірдей болса, олардың бірдей екеніне сенімді болуға болады. Екінші алдын ала бейнеге қарсы тұру шабуылдаушыға шабуылдаушы бақылай алмайтын құжатпен бірдей хэшпен құжат жасауға кедергі келтіреді. Соқтығысуға қарсы тұру шабуылдаушыға бірдей хэшпен екі түрлі құжат жасауға жол бермейді. Осы критерийлерге сәйкес келетін функция әлі де қанағаттандырмас қасиеттерге ие болуы мүмкін. Қазіргі уақытта танымал криптографиялық хэш-функциялар ұзындығын кеңейту шабуылдарына осал: hash(m) және len(m) берілген, бірақ m емес, шабуылшы қолайлы s таңдап, hash(m || s) есептей алады, мұнда || тізбектемені білдіреді. Бұл қасиет хэш-функцияларға негізделген қарапайым аутентификация схемаларын бұзу үшін пайдаланылуы мүмкін. HMAC құрылымы осы проблемаларды шешеді. Практикада соқтығысуға қарсы тұру көптеген практикалық қолданулар үшін жеткіліксіз. Соқтығысуға қарсы тұрудан басқа, қарсыластың екі хабарламаны анық ерекшеленетін дайджестермен табуы немесе тек оның дайджесті ескере отырып, дерек туралы пайдалы ақпаратты алуы мүмкін болмауы керек. Атап айтқанда, хэш-функция мүмкіндігінше кездейсоқ функция сияқты болуы керек (қауіпсіздіктің дәлелдерінде жиі кездейсоқ оракул деп аталады), сонымен бірге детерминистік және тиімді есептелуі керек. Бұл SWIFFT функциясы сияқты функцияларды жоққа шығарады, ол идеалды торлардағы кейбір проблемалар есептеу жағынан қиын болғандықтан соқтығысуға қарсы тұратыны қатаң түрде дәлелденуі мүмкін, бірақ сызықтық функция ретінде бұл қосымша қасиеттерді қанағаттандырмайды. CRC32 және басқа да циклдік артық тексерулер сияқты тексеру алгоритмдері әлдеқайда әлсіз талаптарға сай келеді және криптографиялық хэш-функциялар ретінде жарамсыз. Мысалы, WEP шифрлау стандартында хабардың тұтастығы үшін CRC қолданылды, бірақ тексеру сомасының сызықтық сипатын пайдаланған шабуыл оңай анықталды.
Қиындық дәрежесі
Криптографиялық тәжірибеде "қиын" дегені, әдетте, "жүйенің қауіпсіздігі маңызды саналатын уақыт бойы жүйені бұзудан қорғалатын кез келген қарсыластың мүмкін еместігін" білдіреді. Сондықтан, терминнің мағынасы қолданысқа байланысты, себебі зиянды агенттің міндетке жұмсай алатын күш-жігер көбінесе күтілетін пайдасына пропорционал. Дегенмен, қажетті күш-жігер әдетте дайджест ұзындығымен өседі, сондықтан өңдеу қуатындағы мың еселік артықшылықты дайджестке оншақ бит қосып бейтараптандыруға болады. Хабарлардың шектеулі жиынтығынан таңдалған хабарлар үшін, мысалы, құпия сөздер немесе басқа қысқа хабарлар үшін, жиынтықтағы барлық мүмкін хабарларды тексеру арқылы хэшті кері қайтару мүмкін болуы мүмкін. Криптографиялық хэш-функциялар көбінесе жылдам есептелуі үшін жасалғандықтан, күшті шабуылдарды қиындататын, көбірек есептеу ресурстарын қажет ететін арнайы кілт тудыру функциялары әзірленді. Кейбір теориялық талдауларда "қиын" сөзі нақты математикалық мағынаға ие, мысалы, "асимптотикалық полиномиалдық уақытта шешілмейтін". Қиындыққа қатысты мұндай түсіндірулер дәлелді түрде қауіпсіз криптографиялық хэш-функцияларды зерттеуде маңызды, бірақ көбінесе практикалық қауіпсіздікпен тікелей байланысы жоқ. Мысалы, экспоненциалды уақыт алгоритмі кейде шабуыл жасау үшін жеткілікті жылдам болуы мүмкін. Керісінше, полиномиалдық уақыт алгоритмі (мысалы, n цифрлық кілттер үшін n^20 қадамды қажет ететін) кез келген практикалық қолдану үшін тым баяу болуы мүмкін.
Үлгі
Криптографиялық хэштің мүмкін қолданылуын көрсететін мысал: Алиса Бобқа қиын математикалық есеп береді және оны шешкенін айтады. Боб өзі де оны шешіп көргісі келеді, бірақ Алиса шындықты айта ма екеніне көз жеткізгісі келеді. Сондықтан, Алиса шешімін жазып алады, оның хэшін есептейді және хэш мәнін Бобқа хабарлайды (шешімді құпия ұстап). Содан кейін, Боб бірнеше күннен соң өзі шешім тапқанда, Алиса бұл шешімді бұрын білгенін дәлелдеу үшін оны көрсете алады, ал Боб оны хэштеп, бұрын берілген хэш мәнімен сәйкес келеді-келеді жоқ екенін тексере алады. (Бұл қарапайым міндеттеме схемасының мысалы; іс жүзінде Алиса мен Боб көбінесе компьютерлік бағдарламалар болады, ал құпия есептің жауабынан гөрі жалғандау қиынрақ нәрсе болар еді.)
Хабарлар мен файлдардың тұтастығын тексеру
Қауіпсіз хэштердің маңызды қолданысы – хабарламаның толықтығын тексеру болып табылады. Хабардың (хабарға қолданылған хэш-қорытқы) жіберуге дейін және кейін есептелген қорытқыларын салыстыру арқылы хабарға немесе файлға өзгерістер енгізілгенін анықтауға болады. MD5, SHA-1 немесе SHA-2 хэш-қорытқылары кейде веб-сайттарда немесе форумдарда жүктелген файлдардың толықтығын тексеру үшін жарияланады, оның ішінде көшірмелер арқылы файлдарды бөлісу сияқты файлдарды алу кезінде де. Егер хэштер сенімді сайтта – әдетте бастапқы сайтта – және HTTPS арқылы куәландырылған болса, бұл практика сенім тізбегін құрады. Криптографиялық хэш пен сенім тізбегін пайдалану файлға қасақана енгізілген зиянды өзгерістерді анықтайды. Циклдық артық кодтар сияқты криптографиялық емес қателерді анықтау кодтары файлдың қасақана емес өзгерістеріне ғана қарсы қорғаныс береді, себебі қасақана бұрмалау үшін бірдей кодты алу оңай болады.
Қолтаңбаларды жасау және тексеру
Цифрлық қолтаңба схемаларының көбісі хабардың криптографиялық хэшін есептеуді қажет етеді. Бұл қолтаңбаны салыстырмалы түрде кішкентай, белгілі бір өлшемдегі хэш-құрамы бойынша есептеуге мүмкіндік береді. Егер қолтаңба мен хабардың қайта есептелген хэш-құрамы берілгенде қолтаңбаны тексеру сәтті аяқталуы мүмкін болса, хабар нақты деп есептеледі. Осылайша, криптографиялық хэштің хабардың толықтығын сақтау қасиеті, қауіпсіз және тиімді цифрлық қолтаңба схемаларын жасау үшін пайдаланылады.
Парольді тексеру
Парольді тексеру әдетте криптографиялық хэштерге негізделеді. Барлық пайдаланушы парольдерін ашық түрде сақтау, пароль файлы бұзылған жағдайда, ауқымды қауіпсіздік бұзушылығына әкелуі мүмкін. Осы қауіпті азайтудың бір жолы – әр парольдің хэш-қалдығын ғана сақтау. Пайдаланушыны растау үшін, пайдаланушы ұсынған пароль хэштеледі және сақталған хэшпен салыстырылады. Пароль хэштелген кезде парольді қалпына келтіру әдісі қажет; сақталған хэш мәнінен бастапқы парольдерді қайта есептеу мүмкін емес. Дегенмен, SHA сериясы сияқты стандартты криптографиялық хэш-функцияларды пайдалану қазіргі таңда парольді сақтау үшін қауіпсіз деп есептелмейді. Олар ұзақ хабарламаларға қарсы шабуылдарға, жасап жабыстыру шабуылдарына ұшырайды және параллель өңдеуге келмейді. Осының салдарынан, қазіргі заманғы хэш-функциялар кең құбырлы конструкцияларға негізделген, олардың ішкі күйінің көлемі үлкен – бұл Меркль-Дамгард конструкциясының өзгертілген нұсқаларынан тұрады. NIST хэш-функциялар конкурсына қатысушылардың ешқайсысы классикалық Меркль-Дамгард конструкциясын қолданбады. Сонымен қатар, SHA 512/256 сияқты ұзын хэштің нәтижесін қысқарту да осы шабуылдардың көптеген түрлерін жеңуге көмектеседі.
Басқа криптографиялық примитивтерді құрауда пайдалану
Хаш-функциялар басқа криптографиялық примитивтерді құру үшін қолданылуы мүмкін. Бұл басқа примитивтер криптографиялық тұрғыдан қауіпсіз болуы үшін, оларды дұрыс құруға ерекше назар қою қажет. Хабарламаларды аутентификациялау кодтары (MAC) (немесе кілті бар хэш-функциялар) көбінесе хэш-функциялардың негізінде құрылады. HMAC – осындай MAC-тың мысалы. Блок шифрлары хэш-функцияларды құру үшін қолданылғандай, хэш-функциялар да блок шифрларын құру үшін қолданылуы мүмкін. Негізгі хэш-функция қауіпсіз болса, хэш-функцияларды пайдаланатын Люби-Рэккофф конструкцияларының қауіпсіздігі дәлелденуі мүмкін. Сонымен қатар, көптеген хэш-функциялар (мысалы, SHA 1 және SHA 2) Дэвис-Мейер немесе басқа конструкциялардағы арнайы мақсаттағы блок шифрларын пайдалану арқылы жасалады. Бұл шифрды қауіпсіздік кепілдігі берілмейтін стандартты режимде де қолдануға болады, мысалы, SHACAL, BEAR және LION. Псевдорандомдық сандар генераторларын (PRNG) хэш-функцияларды пайдалана отырып құруға болады. Бұл (құпия) рандомдық бастаманы есептегішпен біріктіріп, оны хэштеу арқылы іске асырылады. Кейбір хэш-функциялар, мысалы, Skein, Keccak және RadioGatún, кез келген ұзындықтағы ағынды шығарады және оларды ағын шифры ретінде пайдалануға болады, ал ағын шифрлары да белгілі бір ұзындықтағы дайджест хэш-функцияларынан құрылуы мүмкін. Көбінесе бұл криптографиялық тұрғыдан қауіпсіз псевдорандомдық сандар генераторын құрып, содан кейін оның рандомдық байттар ағынын кілттік ағын ретінде пайдалану арқылы жасалады. SEAL – ішкі кестелерді жасау үшін SHA 1 қолданатын ағын шифры, содан кейін олар кілттік ағын генераторында қолданылады. SEAL-дың SHA 1-ге тең күшті (немесе әлсіз) болатынына кепілдік жоқ. Сол сияқты, HC 128 және HC 256 ағын шифрларының кілтті кеңейтуі SHA 256 хэш-функциясын кеңінен пайдаланады.
Бірге тірелу
Бірнеше хэш-функциялардың біріктірілген нәтижелері, біріктірілген нәтижеге кірген ең күшті алгоритмге тең соқтығысуға қарсы тұруды қамтамасыз етеді. Мысалы, Transport Layer Security (TLS) және Secure Sockets Layer (SSL) протоколдарының ескі нұсқалары MD5 және SHA 1 қосындыларын қолданды. Бұл, хэш-функциялардың біреуінде соқтығысу табу әдісі, екі хэш-функциямен қорғалған деректерді бұзбауға кепілдік береді. Меркль-Дамгард құрылымын қолданатын хэш-функциялар үшін, біріктірілген функция өзінің ең күшті компонентімен бірдей соқтығысуға төзімді, бірақ одан артық емес. Антуан Жук 2 соқтығысудың n соқтығысуға әкелетінін байқады: егер шабуылшы бірдей MD5 хэші бар екі хабарламаны таба алса, онда олар сол MD5 хэшімен кез келген саны қосымша хабарламаларды таба алады, бұл одан қиын емес. Сол MD5 хэші бар n хабарламаның ішінде SHA 1-де соқтығысу болуы мүмкін. SHA 1 соқтығысуын табуға қажетті қосымша жұмыс (экспоненциалдық туған күнінің іздеуінен басқа) тек полиномиалдық уақытты қажет етеді.
Криптографиялық хэш алгоритмдер
Көптеген криптографиялық хэш алгоритмдері бар; бұл бөлімде салыстырмалы түрде жиі айтылатын бірнеше алгоритмдер тізімделген. Көбірек алгоритмдерді криптографиялық хэш-функциялардың салыстыруы бар беттен табуға болады.
MD5
MD5 1991 жылы Рональд Ривест тарапынан әзірленген, бұрынғы MD4 хэш-функциясын алмастыру мақсатында, ал 1992 жылы RFC 1321 ретінде сипатталған. MD5-ке қатысты соқтығысулар секундтар ішінде есептелуі мүмкін, бұл криптографиялық хэш функциясы қажет болатын көптеген жағдайларда осы алгоритмді қолдануға жарамсыз етеді. MD5 128 биттік (16 байттық) дайджест жасайды.
SHA-1
SHA 1 АҚШ үкіметінің Capstone жобасының бір бөлігі ретінде әзірленді. Алгоритмнің бастапқы сипаттамасы – қазір SHA 0 деп аталатын – 1993 жылы АҚШ мемлекеттік стандарттар агенттігі NIST (Ұлттық стандарттар және технологиялар институты) «Secure Hash Standard, FIPS PUB 180» деген атпен жарияланды. Бұл жарияланғаннан кейін көп ұзамай ҰҚК (Ұлттық қауіпсіздік агенттігі) тарапынан алынып тасталды және 1995 жылы FIPS PUB 180-1 басылымында жарияланған, SHA 1 деп белгіленген жаңартылған нұсқасымен алмастырылды. Бұзған шабуылды қолдану арқылы толық SHA 1 алгоритміне қарсы соқтығыстар жасалуы мүмкін, сондықтан хэш-функция бұзылған деп есептелуі керек. SHA 1 160 биттік (20 байттық) хэш-қорытындысын (хэш-диджест) шығарады. Құжаттарда SHA 1 тек «SHA» деп аталуы мүмкін, бірақ бұл SHA 0, SHA 2 және SHA 3 сияқты басқа да Secure Hash алгоритмдерімен қақтығыс тудыруы мүмкін.
RIPEMD-160
RIPEMD (RACE Integrity Primitives Evaluation Message Digest) – Бельгияның Лювен қаласында Ханс Доббертин, Антон Босселерс және Барт Пренельдердің Католике Университеті Лювендегі COSIC зерттеу тобында әзірленген және алғаш рет 1996 жылы жарияланған криптографиялық хэш функцияларының отбасы. RIPEMD MD4 құрылымының принциптеріне негізделген және өнімділігі жағынан кең таралған SHA-1-ге ұқсас. Дегенмен, RIPEMD 160 әлі бұзылған жоқ. Аты айтқандай, RIPEMD 160 160 биттік (20 байттық) хэш-қорытындыны (хэш-диджест) шығарады.
Су айдыны
Whirlpool – Винсент Риджмен және Пауло С. Л. М. Баррето жасаған криптографиялық хэш-функция, ол алғаш рет 2000 жылы сипатталды. Whirlpool Advanced Encryption Standard (AES) стандартының күрт өзгертілген түріне негізделген. Whirlpool 512 биттік (64 байт) хэш-қорытынды шығарады.
SHA-2
SHA 2 (Secure Hash Algorithm 2) – АҚШ Ұлттық қауіпсіздік агенттігі (NSA) әзірлеген және алғаш рет 2001 жылы жарияланған криптографиялық хэш функциялары жиынтығы. Олар Merkle–Damgård құрылымын пайдалана отырып салынған, ал оның негізіндегі бір бағытты сығымдау функциясы Davies–Meyer құрылымын қолдана отырып, (классификацияланған) арнайы блок шифрінен құрылған. SHA 2 негізінен екі хэш алгоритмінен тұрады: SHA 256 және SHA 512. SHA 224 – SHA 256-ның әртүрлі бастапқы мәндері мен қысқартылған нәтижесі бар нұсқасы. SHA 384 және одан аз танымал SHA 512/224 және SHA 512/256 – барлығы SHA 512 нұсқалары. SHA 512, SHA 256-ға қарағанда қауіпсіз және әдетте AMD64 сияқты 64 биттік машиналарда SHA 256-дан жылдам. Нәтиже өлшемі биттермен «SHA» атауының жалғасымен көрсетіледі, сондықтан SHA 224-тің нәтижесі 224 бит (28 байт); SHA 256 – 32 байт; SHA 384 – 48 байт; ал SHA 512 – 64 байт.
SHA-3
SHA 3 (Secure Hash Algorithm 3) 2015 жылдың 5 тамызында NIST ұйымымен жарияланды. SHA 3 – Кеккак криптографиялық примитивтер отбасының бір бөлігі. Кеккак алгоритмін Гвидо Бертони, Джоан Деймен, Майкл Питерс және Жиль Ван Ашше жасаған. Кеккак губка тәрізді құрылымға негізделген, оны ағын шифрі сияқты басқа криптографиялық примитивтерді құру үшін де пайдалануға болады. SHA 3, SHA 2 сияқты 224, 256, 384 және 512 биттік шығыс өлшемдерін ұсынады. SHAKE 128 және SHAKE 256 функцияларын қолдану арқылы конфигурацияланатын шығыс өлшемдерін де алуға болады. Мұндағы 128 және 256 қосымшалары функцияның қауіпсіздік деңгейін, емес, биттермен өлшенген шығыс мөлшерін көрсетеді.
БЛЕЙК2
BLAKE2, BLAKE алгоритмінің жақсартылған нұсқасы, 2012 жылдың 21 желтоқсанында жарияланды. Оны Жан Филипп Аумасон, Самуэль Невс, Зооко Уилкокс О'Хирн және Кристиан Виннерлейн кеңінен қолданылатын, бірақ қателігі бар MD5 және SHA 1 алгоритмдерін алмастыру мақсатымен жасады. 64 биттік x64 және ARM архитектураларында жұмыс істегенде, BLAKE2b SHA 3, SHA 2, SHA 1 және MD5-тен жылдам. BLAKE және BLAKE2, SHA 3 сияқты стандартталмаған болғанымен, BLAKE2 жоғары тиімділігі үшін заманауи процессорларда, соның ішінде Argon2 парольдік хэштерінде көптеген протоколдарда қолданылады. BLAKE SHA 3 үміткері болғандықтан, BLAKE және BLAKE2 екеуі де SHA 3 сияқты шығыс өлшемдерін ұсынады – конфигурацияланатын шығыс өлшемі де соның ішінде.
БЛЕЙК3
BLAKE3 - бұл BLAKE2-нің жақсартылған нұсқасы, ол 2020 жылдың 9 қаңтарында жарияланды. Оны Джек О'Коннор, Жан Филипп Аумасон, Сэмюэл Невс және Зооко Уилкокс О'Хирн жасаған. BLAKE3, BLAKE және BLAKE2-ге керісінше, бірнеше түрі бар алгоритмдер отбасы емес, жалғыз алгоритм болып табылады. BLAKE3 қысу функциясы BLAKE2s-ке өте ұқсас, бірақ ең басты айырмашылығы – раундтар саны 10-нан 7-ге дейін азайтылған. Ішкі құрылымы бойынша BLAKE3 – Меркл ағашы, және ол BLAKE2-ге қарағанда жоғары деңгейде параллелизмді қолдайды.
Криптографиялық хэш алгоритмдерге шабуылдар
Криптографиялық хэш-функциялардың көптеген түрлері бар, бірақ олардың көпшілігі осал екені анықталды және қолданылмауы керек. Мысалы, NIST SHA 3 хэш-бәйгесінің бірінші кезеңіне 51 хэш-функцияны іріктеді, олардың 10-ы бұзылған деп танылды, ал 16-сы маңызды кемшіліктерді көрсеткендіктен келесі кезеңге өтпеді. Толық ақпаратты NIST хэш-функциялары бәйгесі туралы негізгі мақаладан табуға болады. Хэш-функция ешқашан бұзылмағанның өзінде, әлсіз нұсқасына жасалған сәтті шабуыл сарапшылардың сенімін күңкілдете алады. Мысалы, 2004 жылдың тамызында MD5-ті қоса алғанда, бірнеше танымал хэш-функцияларда қақтығыстар табылды. Бұл кемшіліктер әлсіз хэш-функциялар негізінде құрылған күшті алгоритмдердің қауіпсіздігіне күмән тудырды, атап айтқанда SHA 1 (SHA 0-дің күшейтілген нұсқасы), RIPEMD 128 және RIPEMD 160 (RIPEMD-дің екі күшейтілген нұсқасы). 2004 жылдың 12 тамызында Жу, Каррибо, Лемуэль және Жалби толық SHA 0 алгоритмі үшін қақтығысты жариялады. Жу және тағы басқалар Шабо мен Жу шабуылын жалпылау арқылы мұны іске асырды. Олар қақтығыстың күрделілігі 2^51 екенін анықтады және 256 Itanium 2 процессорлары бар суперкомпьютерде шамамен 80 000 процессорлық сағатты қажет етті, бұл суперкомпьютерді 13 күн бойы толық жүктемемен пайдаланумен тең. 2005 жылдың ақпанында SHA 1-ге жасалған шабуыл туралы хабарланды, ол 160 биттік хэш-функция үшін күтілген 280 операцияның орнына шамамен 269 хэш-операциясында қақтығысты табады. 2005 жылдың тамызында SHA 1-ге тағы бір шабуыл жасалғаны хабарланды, ол 263 операцияда қақтығыстарды табады. SHA 1-дің басқа да теориялық әлсіздіктері белгілі болды және 2017 жылдың ақпанында Google SHA 1-де қақтығыс тапқанын мәлімдеді. Қауіпсіздік зерттеушілері жаңа қолданбалардың осы проблемалардан сақтану үшін SHA отбасының кейінгі мүшелерін, мысалы SHA 2 немесе соқтығысу кепілдігін қажет етпейтін рандомизацияланған хэштеу сияқты техникаларды пайдалануын ұсынады. 2008 жылы Транспорттық қабаттық қауіпсіздік сертификаттарында қолданылған MD5 хэш-функциясына сәтті және тәжірибелік шабуыл жасалды. Көптеген криптографиялық хэштер Меркл-Дамгард құрылымына негізделген. Меркл-Дамгард құрылымының толық нәтижесін тікелей пайдаланатын барлық криптографиялық хэштер ұзындығын кеңейту шабуылдарына осал. Бұл MD5, SHA 1, RIPEMD 160, Whirlpool және SHA 256 / SHA 512 хэш-алгоритмдерін осы шабуылға ұшыратады. SHA 3, BLAKE2, BLAKE3 және қысқартылған SHA 2 нұсқалары осы типтегі шабуылға осал емес.
Хештік парольдерге шабуылдар
Қарапайым пайдаланушы парольдерін сақтаудың орнына, бақылаулы кіру жүйесі әр пайдаланушының паролінің хэшін файлда немесе деректер базасында жиі сақтайды. Біреу кіруді сұрағанда, олар енгізген пароль хэштелді де, сақталған мәнмен салыстырылады. Егер деректер базасы ұрланса (бұл жиі кездесетін жағдай), ұры парольдердің өзіне емес, тек хэш-мәндерге ие болады. Шабуылшы хэштерден парольдерді алуы мүмкін, себебі көптеген адамдар парольдерді болжауға оңай түсетіндей таңдайды. Көп қолданылатын парольдердің тізімі кеңінен таралған, ал көптеген парольдер қысқа болады, сондықтан хэшті есептеуге көп уақыт кетпесе, тіпті барлық мүмкін комбинациялар да тексерілуі мүмкін. Криптографиялық тұз қолдану, мысалы, хэш-мәндерді алдын ала есептеу файлдарын (мысалы, «жаңбырлы кестелер») құру сияқты кейбір шабуылдарды болдырмайды. Бірақ жоғары қуатты графикалық процессорлармен секундына 100 миллиардқа дейін тесттерді іздеуге болады, бұл тұз қолданылған жағдайда да тікелей шабуылдарға мүмкіндік береді. АҚШ Ұлттық Стандарттар және Технология Институты күшпен іздеуді баяулату үшін жасалған арнайы хэштер – кілт туындыру функцияларын (KDF) пайдалануды ұсынады. Баяу хэштерге pbkdf2, bcrypt, scrypt, argon2, Balloon және Unix crypt-тің кейбір соңғы режимдері жатады. KDF-тер бірнеше хэштерді орындау арқылы жұмысты баяулатса, NIST 10 000 немесе одан да көп итерация санын ұсынады.