Кіріспе

Компьютерлік байланыс хэш алгоритмі

Криптографияда HMAC (кейде кілті бар хабарламаны аутентификациялау коды немесе хэш негізделген хабарламаны аутентификациялау коды деп толықтырылады) – криптографиялық хэш функциясы және құпия криптографиялық кілтті қолданатын хабарламаны аутентификациялау кодының (MAC) нақты түрі. Кез келген MAC сияқты, ол хабарламаның деректерінің бүтіндігі мен нақтылығын бірдей тексеру үшін қолданылуы мүмкін. HMAC – кілтті қолданатын хэш функциясының бір түрі, оны кілт алу схемасында немесе кілт созу схемасында да пайдалануға болады. HMAC асимметриялық криптографиямен цифрлық қолтаңбаларды пайдаланудың орнына ортақ құпияны қолдану арқылы аутентификацияны қамтамасыз ете алады. Бұл күрделі ашық кілт инфрақұрылымының қажеттілігін жояды, себебі кілт алмасуын байланыс жасайтын тараптар жүзеге асырады, олар кілтті келісу үшін сенімді арнаны орнатуға және пайдалануға жауапты.

Құрылыс қағидалары

HMAC спецификациясының дизайны кілтті хэш-функциямен біріктірудің қарапайым механизмдеріне жасалған шабуылдардың болуымен негізделген. Мысалы, HMAC қамтамасыз ететін қауіпсіздікті MAC = H(кілт ∥ хабарлама) арқылы қол жеткізуге болады деп болжауға болады. Алайда, бұл әдіс үлкен кемшілікке ұшырайды: көптеген хэш-функциялар үшін кілтті білмей хабарламаға деректерді қосып, басқа жарамды MAC ("ұзындығын кеңейту шабуылы") алу оңай. Балама ретінде, MAC = H(хабарлама ∥ кілт) кілтін қосу (алып қою), (кілтсіз) хэш-функциясында соқтығысуды таба алатын шабуылшы MAC-те соқтығысуға себеп болады (екі хабарлама m1 және m2 бірдей хэшті беретін болса, қосылған кілт хэштелгенге дейін хэш-функцияға бірдей бастапқы жағдайды береді, сондықтан соңғы хэш бірдей болады). MAC = H(кілт ∥ хабарлама ∥ кілт) пайдалану жақсырақ, бірақ әртүрлі қауіпсіздік мақалалары екі түрлі кілт қолданылған кезде де осы тәсілдің осалдықтарын көрсеткен. Қазіргі HMAC спецификациясына қарсы белгілі кеңейту шабуылдары табылмады, ол H(кілт ∥ H(кілт ∥ хабарлама)) деп анықталған, өйткені хэш функциясын сырттан қолдану ішкі хэштің аралық нәтижесін жасырады. Ipad және opad мәндері алгоритмнің қауіпсіздігі үшін маңызды емес, бірақ бір-бірінен үлкен Хамминг қашықтығына ие болу үшін анықталды, сондықтан ішкі және сыртқы кілттерде ортақ биттердің саны азаяды. HMAC-тің қауіпсіздігін төмендетуі олардың кем дегенде бір битке өзгеше болуын қажет етеді. NIST SHA 3 конкурсының жеңімпазы ретінде таңдалған Keccak хэш функциясы осы ұялы тәсілді қажет етпейді және оны хабарламаның басына кілтті қосып MAC құру үшін қолдануға болады, өйткені ол ұзындығын кеңейту шабуылдарына осал емес.

Қауіпсіздік

HMAC-тің криптографиялық беріктігі қолданылатын құпия кілтінің мөлшеріне және қолданылатын негізгі хэш-функцияның қауіпсіздігіне байланысты. HMAC құрылымының қауіпсіздігі қолданылған хэш-функцияның қауіпсіздік қасиеттеріне тікелей байланысты екені дәлелденді. HMAC-қа қарсы ең көп таралған шабуыл – құпия кілтті ашу үшін күш қолдану. HMAC-тер өздерінің негізгі хэштеу алгоритмдеріне қарағанда соқтығысуларға (коллизияларға) әлдеқайда аз сезімтал. Атап айтқанда, Михир Белларе HMAC псевдорандомдық функция (PRF) екенін дәлелдеді, бұл қысым функциясы PRF болған жағдайда ғана дұрыс. Сондықтан HMAC MD5, MD5-те табылған әлсіздіктерге ұшырамайды. RFC 2104 талап етеді, "B байттан ұзын кілттер алдымен H арқылы хэштелді", бұл шатастыратын жалған соқтығысуға (псевдоколлизияға) әкеледі: егер кілт хэш блогының мөлшерінен ұзын болса (мысалы, SHA 1 үшін 64 байт), онда HMAC(k, m) есептелуі тиіс HMAC(H(k), m) ретінде. Бұл қасиет кейде парольді хэштеу сценарийлерінде HMAC-тің әлсіздігі ретінде қарастырылады: ұзын ASCII жолы мен кездейсоқ мәнді табу мүмкін, олардың хэштері де ASCII жолы болады, және екі мән де бірдей HMAC нәтижесін береді. 2006 жылы Джонгсун Ким, Алекс Бирюков, Барт Пренел және Сёкхие Хонг, MD5 және SHA 1-дің қысқартылған нұсқаларымен немесе HAVAL, MD4 және SHA 0-дің толық нұсқаларымен HMAC-ты кездейсоқ функциядан немесе кездейсоқ функциялы HMAC-тан қалай ажыратуға болатынын көрсетті. Дифференциалдық ажыратушылар шабуылшыға HMAC-қа қарсы жалған шабуыл жасауға мүмкіндік береді. Сонымен қатар, дифференциалдық және тіктөртбұрышты ажыратушылар екінші преобразды шабуылдарға әкелуі мүмкін. MD4-тің толық нұсқасы бар HMAC осы біліммен жасалуы мүмкін. Бұл шабуылдар HMAC-тің қауіпсіздік дәлеліне қайшы келмейді, бірақ қолданыстағы криптографиялық хэш-функцияларға негізделген HMAC-ты түсінуге көмектеседі. 2009 жылы Xiaoyun Wang және басқалар, HMAC MD5-ке байланысты кілттерді пайдаланбай, ерекше шабуыл жасауды ұсынды. Ол HMAC-тің MD5 инстанциясын 297 сұраныспен 0.87 ықтималдықпен кездейсоқ функциямен инстанцияланған нұсқадан ажырата алады. 2011 жылы MD5 және HMAC MD5 қауіпсіздік мәселелерін қорытындылау үшін ақпараттық RFC 6151 жарияланды. HMAC MD5 үшін RFC қорытындылайды, MD5 хэш-функциясының қауіпсіздігі қатты зардап шеккенімен, қазіргі кезде белгілі "HMAC MD5-ке жасалған шабуылдар хабарламаны аутентификациялау коды ретінде қолданғанда практикалық осалдықты көрсетпейді", бірақ ол "жаңа протокол дизайны үшін HMAC MD5 шифр жиынтығын қосуға болмайды" деп қосады.