15 октомври 2008

HMAC алгоритъм

Установяването на съобщенията е процедура, която позволява комуникиращите страни да проверят дали получените съобщения са автентични. Трябва да се провери дали не е променяно съдържаниео на съпбщението и дали източникът е автентичният. за извършване на проверка на съобщенията широко се използва техниката Message Authentication Code (MAC). Разновидност на MAC алгоритъма се използва като Интернет стандарт при голямо разнообразие от приложения - HMAC, съкратено от "Keyed-Hashing for Message Authentication."(хеширан ключ за достоверност на съобщенията). HMAC беше представен в "Keying Hash Functions for Message Authentication," от M. Bellare, R. Canetti и H. Krawczyk през 1996 година.

MAC

MAC алгоритмите включват използването на таен ключ за генериране на малък блок данни, познат като "message authentication code," , който се добавя към съобщението. Тази техника предполага, че двете комуникиращи страни, да ги наречем A и B, споделят таен ключ K. Когато A има съобщение за изпращане до B, пресмята кода за удостоверяване като функция от съобщението и ключа. Съобщението и кода се изпращат на получателя. Получателят прави същото изчисление за полученото съобщение, използвайки същият таен ключ и получава някакъв код. Полученият код се сравнява с пресметнатият.

Като предполагаме, че само изпращачът и получателят знаят тайния ключ, еднаквост на получения и изчисления код тогава:

1. Получателят е сигурен, че съобщението не е променяно. Ако някой злонамерено промени съобщението, но не промени кода изчисленият от получателя код ще се различава от получения. Но тъй като предполагаме, че никой атакуващ комуникацията не знае тайния ключ, той не може да промени кода, така че да отговаря на промененото съобщение.

2. Получателят е сигурен, че съобщението е от очаквания източник. Тъй като никой друг не знае тайния ключ никой друг не може да състави съобщение с правилен код.

3. Ако съобщението съдържа последователно число (каквито се използват при X.25, HDLC и TCP) получателят е сигурен че последователността е правилна, защити не може злонамерено да се промени числото за последоватесност.

Могат да се използват различни алгоритми за генериране на кода. Националното Бюро по Стандартите (NBS) в публикацията DES Mode of Operation (http://www.nist.gov/itl/div897/pubs/fip113.htm) препоръчва използването на DES алгоритъм. Алгоритъмът DES се използва за генериране на криптирана версия на съобщението и последните битове на криптирания текст се използват за код. Нормално се използват 16 или 32 бита за код. HMAC е по-ефективен и с нарастваща популярност алтернатива.

Описаният по-горе процес е подобен на криптиране. Има разлика е това, че алгоритъма за удостоверяване може да е необратим, както е необходимо при декриптиране. Това е така, защото поради математическите свойства на удостоверяващата функция, тя е по-трудно да бъде разбита от криптираща функция.

HMAC

В последните години се увеличи интереса в разработването на производни на MAC с криптографски хеш код като MD5, SHA-1 или RIPEMD-160. Мотивацията за това е:

  • Криптографските хеш функции по принцип се изпълняват по-бързо отколкото симетричните шифри като DES.
  • Библиотеките с код за криптографските хеш функции са широко разпространени.

  • Няма рестрикции за криптографските хеш функции, докато симетричните шифри са забранени да се ползват дори и за MAC.

Хеш функции като MD5 не са създадени за използването им като MAC и не могат да се използват пряко за тази цел, защото те не използват таен ключ. Имаше различни предложения за вмъкване на таен ключ в съществуващите хеш алгоритми. Най- голяма подкрепа получи HMAC. HMAC беше избран като задължителен за IP Security и се използва в други Интернет протоколи, като Transport Layer Security (TLS, скоро заменен от Secure Sockets Layer) и Secure Electronic Transaction (SET).

HMAC- Цел при Дизайн

Целите на дизайна, които RFC 2104 задава за HMAC съдържат:

  • Да се използват без промяна съществуващите хеш функции. В частност това са хеш функции, които са добре представени в софтуера, чиито код е свободен и широко разпространен.
  • Да позволява лесна замяна на вградената хеш функция в случай на откриване или налагане на по-бърза или по-сигурна хеш функция.

  • Да запази първоначалната производителност на хеш функцията, без да я намалява забележително.

  • Да използва и обработва по прост начин ключовете.

  • Да има добре разбран криптографски анализ на здравината на удостоверителния механизъм, базиран на обосновани предположения за вградената хеш функция.

Първите две изисквания са важни за приемливостта на HMAC. За HMAC хеш функцията е черна кутия. Това има две ползи. Първата е , че съществуваща реализация на хеш функция може да се използва като модул при реализиране на HMAC. Основата на HMAC кода е предварително пакетирана и готова за употреба без изменения. Втората е , че замяната на дадена хеш функция в реализация на HMAC е просто премахване на текущия модул и слагане на новия. Това може да се направи ако се изисква по-бърза функция. Важно е , че ако сигурността на вградената хеш функция е разбита, сигурността на HMAC моеже да се възстанови чрез проста замяна на вградената хеш функция с по-сигурна(например замяна на MD5 с SHA-1).

Последната цел в по-горния списък е всъщност главното предимство на HMAC спрямо останалите предложени хеш-базирани схеми. HMAC може да се докаже като сигурен, ако вградената хеш функция има обоснована криптографска здравина.

Алгоритъмът HMAC

Където

H- вградена хеш функция;M- съобщението( включително отместването, заради хеш функцията) ; Yi- i-тия блок от M ; К+- допълнен с нули отляво до достигане на дължината на b; ipad- 00110110( 36 шестнадесетично) повторено b/8 пъти; opad- 01011100( 5C шестнадесетично ) повторено b/8 пъти.


HMAC може да се представи чрез израз


С други думи:

1. Добавяме нули отляво на K до достигането на низ с дължина b K+ (например ако K е с дължина 160 бита и b = 512 K ще се допълни с 44 нулеви байта 0x00).

2. XOR (побитово зключващо или OR) K+ с ipad за генериране на b битов блок Si.

3. Добавяме M към Si.

4. Прилагаме H върху потока, генериран в стъпка 3.

5. XOR K+ с opad за генериране на b битов блок So.

6. Добавяме хеш резултатът от Стъпка 4 към So.

7. Прилагае H върху потока, генериран в стъпка 6 и извеждаме резулатът.

Забележете , че XOR с ipad дава като резултат промяната на половината битове на K. По същата логика XOR с opad дава като резултат промяна на половината от битовете на K,но на различни битове. В крайна сметка с преминаването на Si и So през компресиращата функция на хеш алгоритъма ще имаме два псевдослучайни ключа от K. При дълги съобщения HMAC трябва да се изпълни за приблизително същото време като вградената хеш функция.



Уйлям е консултант, лектор и автор на книги за комуникации и компютърни мрежи.

Няма коментари:

Публикуване на коментар