
125 Кібербезпека / Фаховий екзамен (Бакалавр) / Прикладна криптологія
.pdf

17. Системи шифрування RSA та Ель-Гамаля





18. MDC (коди перевірки повідомлень). Безключові хеш-функції
MDC[ред. • ред. код]
Хеш-функції для обчислення коду перевірки цілісності повідомлень належать до підкласу безключових хеш-функцій. В реально існуючих криптосистемах ці хеш-функції - криптографічні, тобто крім мінімальних властивостей хеш-функцій (стиснення даних, простота обчислення дайджесту (англ. digest) від повідомлення) задовольняють таким властивостям:
безповоротність (англ. preimage resistance);
стійкість до колізій першого роду (англ. weak collision resistance);
стійкість до колізій другого роду (англ. strong collision resistance).
Взалежності від того, яким із цих властивостей задовольняють MDC хеш-функції, можна виділити два їх підкласи:
односпрямовані хеш-функції (OWHF, від англ. one-way hash function), які задовольняють властивості безповоротності та стійкі до колізій першого роду;
стійкі до колізій хеш-функції (CRHF, від англ. collision resistant hash function), які стійкі до колізій першого і другого роду (взагалі кажучи, на практиці CRHF хешфункції задовольняють і властивості незворотності).
Існує три основних типи MDC алгоритмів хеш-функцій, за способом їх побудови:
на блокових шифрах; наприклад: алгоритм «Matyas-Meyer-Oseas», алгоритм «Davies-
Meyer», алгоритм «Miyaguchi-Preneel», MDC-2, MDC-4;
спеціальні (англ. customized) алгоритми хешування, в яких робиться наголос на швидкість, і які незалежні від інших компонент системи (в тому числі блочних шифрів або компонент модульного множення, які можуть бути використані для інших цілей). Наприклад: MD4, MD5, SHA-1, SHA-2, RIPEMD-128, RIPEMD-160;
на модульної арифметики; наприклад: MASH-1, MASH-2.
19. MAC’и (Коди аутентифікації повідомлень), як ключові хеш функції
Код аутентифікації повідомлення (Message authentication code - MAC) є криптографічний контрольну суму повідомлення.
алгоритм HMAC
Алгоритм HMAC (Hash-based Message Authentication Code - код аутентифікації повідомлення на основі хешування). Даний вид аутентифікації має на увазі наявність у клієнта і сервера якогось секретного ключа, який відомий тільки їм двом. Тобто це механізм, який використовує криптографічні хеш-функції в поєднанні з секретним ключем. HMAC є одним з варіантів MAC і, отже, використовується для контролю цілісності повідомлень. В даному випадку в основі алгоритму лежить функція хешування, яка дозволяє обчислити код аутентифікації повідомлення.
Принцип роботи
##Розмір ключа вирівнюється з розміром блоку використовуваного алгоритму хешування;
##якщо ключ key довше блоку, він коротшає шляхом застосування до нього використовуваного алгоритму хешування hash:
key = hash (key);
відзначимо, що розмір вихідного значення алгоритму хешування зазвичай багато менше розміру блоку хешіруемих даних - наприклад, відповідно 128 і 512 бітів для алгоритму MD4; рекомендується мінімальний розмір ключа, рівний розміру вихідного значення алгоритму хешування;

##якщо розмір ключа менше розміру блоку, то вирівняний ключ k виходить шляхом доповнення до розміру блоку нульовими бітами вихідного (або укороченого) ключа key.
##Вирівняний ключ k складається по модулю 2 з константою C1, яка представляє собою блок даних, заповнений байтами з шістнадцятковим значенням 36; аналогічним чином ключ k також складається з константою C2, яка представляє собою блок даних, заповнений байтами з шістнадцятковим значенням 5С:
ki = k C1; ko = k C2.
## Обчислюється хеш-значення від результату конкатенації модифікованого ключа ki і повідомлення m:
t = hash (ki || m).
## Вихідним значенням алгоритму HMAC є хеш-значення від результату конкатенації модифікованого ключа ko і отриманого на попередньому кроці значення t:
hmac = hash (ko || t).
Таким чином, при обчисленні HMAC використовується алгоритм хешування застосовується двічі; кожен раз за участю модифікованого ключа. Розмір вихідного значення алгоритму HMAC дорівнює розміру вихідного значення алгоритму хешування, а загальна формула обчислення HMAC (без урахування вирівнювання ключа) виглядає наступним чином:
HMAC (k, m) = hash ((k C2) || hash ((k C1) || m)).
Алгоритми, побудовані за допомогою HMAC, традиційно називають наступним чином:
##«HMAC-x», де «x» - використовуваний алгоритм хешування, наприклад, HMAC-MD4;
##«HMAC-x-k» в тих випадках, де вихідне значення алгоритму хешування може бути усечено (т. Е. Може використовуватися частково); в даному випадку «k» - розмір вихідного значення алгоритму HMAC в бітах; приклад - алгоритм HMAC-SHA1-80.
Принцип використання та швидкодія
Використання алгоритму дозволяє переконатися в цілісності даних, відсутність яких-небудь змін з моменту створення, передачі або збереження довіреною джерелом. Для перевірки такого роду необхідно, щоб дві сторони, які беруть участь в процесі обміну, довіряли один одному і заздалегідь домовилися про використання секретного ключа, який відомий тільки
їм. Тим самим гарантується автентичність джерела та шляхів сполучення. Недолік цього підходу - необхідна наявність двох довіряють один одному сторін.
Швидкодія HMAC не набагато гірше, ніж у використовуваної функції хешування, що особливо помітно при хешування довгих повідомлень, оскільки саме повідомлення при використанні HMAC обробляється одноразово.
крипостійкість
Крипостійкість HMAC залежить, перш за все, від наступних факторів:
##криптостойкость використовуваного алгоритму хешування;
##розмір вихідного значення алгоритму;
##розмір і якість ключа.
Контексти атак на HMAC і «класичне» використання алгоритму хешування помітно різняться. Атакуючий алгоритм HMAC може переслідувати наступні цілі:
##підібрати повідомлення, HMAC якого дорівнює еталонному або дорівнює HMAC еталонного повідомлення;
##це схоже на атаки на класичне застосування алгоритму хешування з пошуку першого або другого прообразу;
##знайти коректну пару «повідомлення - код аутентифікації даного повідомлення» або обчислити код аутентифікації повідомлення для заданого повідомлення без знання секретного ключа;
##отримати ключ, який використовується для обчислення HMAC.

20. Асиметричні перетворення для цифрового підпису.