Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
full-2.doc
Скачиваний:
11
Добавлен:
10.11.2018
Размер:
936.96 Кб
Скачать
    1. Аналіз відомих функцій хешування

Проведемо аналіз відомих криптографічних функцій хешування. Так, сьогодні існує ряд хеш-функцій, які в тій чи іншій мірі стійкі до вказаних вище атак. Розглянемо односпрямовані і безколізійні функції хешування, які на сьогодні застосовуються у криптографічних системах захисту інформації, а зокрема в схемах ЦП. Це такі функції хешування як SHA-1, SHA-2.

Хеш-функція SHA-1 [2, 11, 4]. Безпечний хеш-алгоритм (Secure Hash Algorithm) був розроблений національним інститутом стандартів і технології (NIST) і опублікований у якості федерального інформаційного стандарту (FIPS PUB 180) у 1993 році.

Логіка виконання sha-1. Алгоритм одержує на вході повідомлення максимальної довжини 264 бітів і створює як вихід хеш-код повідомлення довжиною 160 бітів. Алгоритм складається з таких кроків:

Крок 1: додавання відсутніх бітів. Повідомлення доповнюється таким чином, щоб його довжина складала 448 за модулем 512. Це означає, що довжина доданого повідомлення на 64 біта менше, ніж число, кратне 512. Додавання виконується завжди, навіть якщо повідомлення має потрібну довжину. Наприклад, якщо довжина повідомлення 448 бітів, воно доповнюється 512 бітами до 960 бітів. Таким чином, число бітів що додаються знаходиться в діапазоні від 1 до 512. Додавання складається з одиниці, за якою слідує необхідна кількість нулів.

.Крок 2: додавання довжини. 64-бітне представлення довжини вихідного повідомлення в бітах приєднується до результату першого кроку. Якщо первісна довжина більше, ніж 264, то використовуються тільки останні 64 біта. Таким чином, поле містить довжину вихідного повідомлення за модулем 264.

У результаті перших двох кроків створюється повідомлення, довжина якого кратна 512 бітам. Це розширене повідомлення представляється як послідовність 512-бітних блоків , при цьому загальна довжина розширеного повідомлення дорівнює бітів. Таким чином, довжина отриманого розширеного повідомлення кратна шістнадцятьом 32-бітним словам.

Крок 3: ініціалізація SHA-1 буфера. Використовується 160-бітний буфер для збереження проміжних і остаточних результатів хеш-функції. Буфер може бути представлений як чотири 32-бітних регістри (A, B, C, D та E). Ці регістри ініціалізуються такими шістнадцятковими числами:A = 67452301, B = EFCDAB89, C = 98BADCFE, D = 10325476, E = C3D2E1F0.

Крок 4: обробка повідомлення в 512-бітних (16-слівних) блоках. Основою алгоритму є модуль, що складається з 80 циклічних обробок. Усі 80 циклічних обробок мають однакову структуру. Кожен цикл одержує на вході поточний 512-бітний оброблюваний блок Yq і 160-бітне значення буфера ABCDE, і змінює вміст цього буфера.

У кожному циклі використовується додаткова константа Кt, що приймає тільки чотири різних значення приведені в табл. 1.2.

Таблиця 1.2 - Цикли виконання функції хешування SHA-1.

0 ≤ t ≤ 19

Kt = 5A827999

(ціла частина числа [230 × 2½])

20 ≤ t ≤ 39

Kt = 6ED9EBA1

(ціла частина числа [230 × 3½])

40 ≤ t ≤ 59

Kt = 8F1BBCDC

(ціла частина числа [230 × 5½])

60 ≤ t ≤ 79

Kt = CA62C1D6

(ціла частина числа [230 × 10½])

Для одержання SHAq+1 вихід 80-го циклу складається зі значенням SHAq. Додавання за модулем 232 виконується незалежно для кожного з п'яти слів у буфері з кожним з відповідних слів у SHAq.

Крок 5: вихід. Після обробки всіх 512-бітних блоків виходом L-ої стадії є 160-бітний хеш-код повідомлення.

Розглянемо більш детально логіку в кожнім з 80 циклів обробки одного 512-бітного блоку. Кожен цикл можна представити у такому вигляді:

,

де A, B, C, D, E - п'ять слів з буфера; t - номер циклу, 0 ≤ t ≤ 79; ft - елементарна логічна функція; CLSs – циклічний зсув в ліво 32-бітного аргументу на s біт; Wt - 32-бітне слово, отримане з поточного вхідного 512-бітного блоку; Kt - додаткова константа; „+” - додавання за модулем 232.

Кожна елементарна функція отримує на вході три 32-бітних слова і створює на виході одне 32-бітне слово. Елементарна функція виконує набір побітнових логічних операцій, тобто n-ий біт виходу є функцією від n-их бітів трьох входів. Функції мають вигляд приведений в табл. 1.3.

Таблиця 1.3 - Виконання функцій в залежності від номеру циклу

Номер циклу

(0 ≤ t ≤ 19)

(20 ≤ t ≤ 39)

(40 ≤ t ≤ 59)

(60 ≤ t ≤ 79)

Насправді використовуються тільки три різні функції. Для 0 ≤ t ≤ 19 функція є умовною: if B then C else D. Для 20 ≤ t ≤ 39 і 60 ≤ t ≤ 79 функція створює біт парності. Для 40 ≤ t ≤ 59 функція є істиною, якщо два або три аргументи істині. 32-бітні слова Wt виходять з чергового 512-бітного блоку повідомлення в такий спосіб.

Перші 16 значень Wt беруться безпосередньо з 16 слів поточного блоку.

Значення, що залишилися, визначаються в такий спосіб:

.

У перших 16 циклах вхід складається з 32-бітного слова даного блоку. Для 64 циклів вхід складається з XOR декількох слів із блоку повідомлення.

Алгоритм SHA-1 можна узагальнити в такий спосіб:

, , ,

де IV - початкове значення буфера ABCDE; ABCDEq - результат обробки q-того блоку повідомлення; L - число блоків у повідомленні, включаючи поля додавання і довжини; ∑32 - сума за модулем 232, яка виконується окремо для кожного слова буфера; SHA - значення хеш-коду повідомлення.

Хеш-функції SHA-2 [4, 12]. У 2001 році NIST прийняв як стандарт три хеш-функції з істотно більшою довжиною хеш-кода. Часто ці хеш-функції називають SHA-2 або SHA-256, SHA-384 і SHA-512 (відповідно, у назві вказується довжина створюваного ними хеш-кода). Ці алгоритми відрізняються не тільки довжиною створюваного хеш-кода, але і довжиною оброблюваного блоку, довжиною слова і використовуваних внутрішніх функцій. В даних алгоритмах використовуються звичайні булеві операції над словами, а також додавання за модулем 2w, зсув вправо на n бітів SHRn (x), де х - w-бітне слово, і циклічні (ротаційні) зсуви вправо та вліво на n бітів ROTRn (x) і ROTLn (x), де х - w-бітне слово.

Розглянемо SHA-256, яка використовує шість логічних функцій, при цьому кожна з них виконується з 32-бітними словами, позначеними як x, y і z. Результатом кожної функції теж є 32-бітне слово.

Попередня підготовка повідомлення, тобто додавання визначених бітів до цілого числа блоків і наступна розбивка на блоки виконується аналогічно тому, як це робилося в SHA-1 (звичайно, з урахуванням довжини блоку кожної хеш-функції). Після цього кожне повідомлення можна представити у вигляді послідовності N блоків

У цьому випадку ініціалізуються вісім 32-бітних змінних (a, b, c, d, e, f, g, h), які будуть виступати в якості проміжного значенн хеш-кода.

Основою алгоритму є модуль, що складається з 64 циклічних обробок кожного блоку M(i):

де Ki{256} - шістдесят чотири 32-бітних константи, кожна з яких є першими 32-ма бітами дробової частини кубічних коренів перших 64 простих чисел; Wt обчислюються з чергового блоку повідомлення за наступними правилами:

, 0 ≤ t ≤ 15,

, 16 ≤ t ≤ 63.

i-те проміжне значення хеш-кода H(t) обчислюється в такий спосіб:

, , , ,

, , , .

Кінцевий хеш-код формується з лівих 256 бітів остаточного хеш-коду H(n)= H0(n) || H1(n) || H2(n) || H3(n) || H4(n) || H5(n) .

В зв’язку з тим, що до таких криптографічних перетворень, як функції хешування висуваються жорсткі вимоги щодо стійкості проти створення колізій [2] проведемо оцінювання небезпеки криптоаналітичних атак методом створення колізій. Цей метод атаки на основі двох поставлених задач досить вдало розглянутий в роботі [13].

Отримані в роботі [13] рівняння та формули дозволяють точно вирішити задачу визначення кількості експериментів, які необхідно виконати для створення колізії із заданою імовірністю на множині певної величини. Отримані в результаті розв’язання викладених задач в [13] і результати дозволяють отримати як залежність кількості експериментів потрібних для створення колізії від її імовірності та величини множини, так і протилежну залежність. Зазначене може використовуватися при синтезі й аналізі алгоритмів різних криптографічних перетворень, наприклад, блокових криптографічних хеш-функцій.

Таким чином, як основні критерії оцінювання функцій хешування можна використовувати стійкість проти створення колізій та інших атак і обчислювальну складність (швидкість) обчислення значення хеш-функції.

Мінімальні вимоги по стійкості, визначені при розробці стандарту AES, відповідають складності атаки [14, 15]. Таким чином, для нових криптографічних систем можна рекомендувати тільки односпрямовані хеш-функції, що мають стійкість до колізій не менш , тобто функції з довжиною хеш-значення не менш ніж 256 бітів.

Для більшості криптографічних систем можна рекомендувати функції хешування з хеш-значенням довжиною 256 бітів, такі як SHA-2 (256). В Україні як державний стандарт прийнятий алгоритм ГОСТ 34.311-95, що повинен використовуватися в системах, що підлягають сертифікації. Слід зазначити, що ГОСТ 34.311-95 є одним з найбільш повільних алгоритмів.

Серед існуючих функцій хешування, особливу увагу варто звернути на функцію хешування Elliptic curve only hash (ECOH) [16] вперше була представлена у конкурсі на стандарт SHA-3. Однак, ця функція хешування на основі матиматичного апарату еліптичних кривих була не допущена до другого туру конкурсу через те, що для неї була успішно виконана атака на обчислення другого прообразу [17].

ECOH заснована на алгоритмі MuHASH [18], для якого на сьогоднішній день не було знайдено успішних атак [16]. Однак, MuHASH є досить неефективним для практичного застосування, тому в алгоритм були внесені деякі зміни. Головною відмінністю є те, що MuHASH використовує генератор псевдовипадкових послідовностей, а ECOH – функцію зсуву. Основним джерелом для атак на ECOH є саме його відмінності від MuHASH. MuHASH відноситься до хеш-функцій, захищеність яких базується на складній математичній задачі, а саме – дискретного логарифмування. Це означає, що знаходження колізій для MuHASH є задачею такої ж складності, як і вирішення складної математичної проблеми. Однак, знаходження рішень з малими ступенями певних багатомірних поліноміальних рівнянь, отриманих з поліномів додавання Самаєва, дозволяють знайти колізії в ECOH. Самаєв вперше відзначив зв‘язок проблеми додавання поліноміальних рівнянь над бінарним полем та проблеми дискретного логарифмування в групі точок еліптичної кривої [19]. Ефективного вирішення проблеми додавання поліноміальних рівнянь (Semaev's Summation Polynomial Problem) над бінарним полем ще не знайдено. Тому безпека ECOH не зовсім заснована на проблемі дискретного логарифмування [16]. ECOH є гарним прикладом побудови хеш-функції на складній математичній проблемі, а не на класичному перемішуванні бітів вхідного повідомлення.

ECOH має такі властивості [16]:

  • інкрементальність. ECOH повідомлення може бути оновлений достатньо швидко за умови незначної зміни повідомлення;

  • паралелизм. Обчислення значень може відбуватися в параленьному режимі;

  • швидкість. Швидкість роботи ECOH в сотні разів менша за швидкість роботи SHA-1. Однак, завдяки розвитку апаратних засобів паралельних обчислень та беззнакового множення, ECOH може через декілька років зрівнятися по швидкості з SHA-1 для довгих повідомлень. Для коротких повідомлень ECOH є відносно повільним, якщо не використовувати додаткові таблиці розширення.

ECOH не потрапила до другого туру конкурсу SHA-3 через те, що для неї була знайдена атака другого прообразу, яка за часом проведення не відповідає вимогам SHA-3. Для атаки другого прообразу потрібно для заданого вхідного повідомлення знайти таке вхідне повідомлення , хеш-значення якого дорівнює хеш-значенню . В даній атаці знаходиться таке , для якого результуюча точка буде такою ж самою, як і при обчисленні хеш-значення . Це дозволяє ігнорувати кінцеву функцію перетворення точки еліптичної кривої у хеш-значення, яка виконується на останньому кроці алгоритму ECOH та містить операцію скалярного множення числа на базову точку еліптичної кривої [17].

Вхідне повідомлення розбивається на 6 блоків: . Обирається різних випадкових значень для та обчислюється . Потім обчислюються відповідних точок на еліптичній кривій та зберігаються у списку. Потім обирається різних випадкових значень для , визначається , обчислюються значення та зберігаються у другому списку. Варто відзначити, що значення є відомим, значення залежить від довжини повідомлення, яке є однаковим, а значення залежить від довжини повідомлення та виконання операції XOR над всіма його блоками, яке також є однаковим адже блоки повідомлення підібрані так, щоб операція XOR завжди повертала нуль [17].

Якщо значення більше за квадратний корінь числа точок на еліптичній кривій, тоді буде існувати колізія між двома обчисленими вище списками. Це дає повідомлення таке, що , а тому доводить те, що повідомлення приводиться до цільової точки , що і є другим прообразом [17].

Для функцій ECOH-224 та ECOH-256 використовується еліптична крива B-283 з приблизною кількістю точок на кривій. Якщо обрати значення , складність атаки буде дорівнювати . Для функції ECOH-384 використовується еліптична крива B-409 з приблизною кількістю точок на кривій. Якщо обрати значення , складність атаки буде дорівнювати . Для функції ECOH-512 використовується еліптична крива B-571 з приблизною кількістю точок на кривій. Якщо обрати значення , складність атаки буде дорівнювати [17].

Дана атака цілком залежить від кількості точок на еліптичній кривій. Саме тому розробники ECOH запропонувалу підсилену модифікацію функції хешування – ECOH2, яка використовує еліптичні криві зі збільшеною у 4 рази кількістю точок [20]. У табл. 1.4 наведені основні характеристики ECOH2.

Таблиця 1.4 - Модифікації ECOH2

Модифікація

ECOH2-224

224

1132

384

64

64

ECOH2-256

256

1132

384

64

64

ECOH2-384

384

1636

640

64

64

ECOH2-512

512

2284

768

128

128

Як видно з табл. 3, функція хешування ECOH2 використовує також збільшені майже у 3 рази (у порівнянні з оригінальним алгоритмом ECOH) розміри блоків, на які розбивається вхідне повідомлення.

Варто зазначити, що в специфікації ECOH2 не вказані параметри еліптичних кривих, в той час коли ECOH використовувала еліптичні криві зі стандарту FIPS PUB 186-3 Національного інституту стандартів та технологій США.

Основні характеристики хеш-функцій представлені в табл. 1.5.

Таблиця 1.5 - Характеристики відомих хеш-функції

Функція хешування

Клас функції

Базові перетворення

Довжина хеш-значення, біт

Whirlpool

односпрямована

у кінцевих полях і матрицях

512

SHA-2

односпрямована

логічні і арифметичні

256, 384, 512

ГОСТ 34.311-95

односпрямована

блоковий симетричний шифр

256

HAVAL

односпрямована

логічні і арифметичні

128, 160, 192, 256

SHA-1

односпрямована

логічні і арифметичні

160

RIPEMD-160

односпрямована

логічні і арифметичні

160

MD5

односпрямована

логічні і арифметичні

128

MD4

односпрямована

логічні і арифметичні

128

UMAC

односпрямована і формування коду автентифікації повідомлення

у кільцях

128, 64

Rijndael CBC–MAC

формування коду автентифікації повідомлення

блоковий симетричний шифр

128

ГОСТ 28147-89 (режим 4)

формування коду автентифікації повідомлення

блоковий симетричний шифр

64

Теорія еліптичних кривих дозволяє збільшувати обчислювальну складність криптографічних алгоритмів, зменшуючи довжини ключів та необхідні обчислювальні потужності, а відповідно – час обчислень, залишаючи при цьому необхідний рівень захисту.

Слід відзначити, що успіхи математичних досліджень в області еліптичної криптографії дали можливість отримати [1,10]:

1. Достатньо прості алгоритми генерації еліптичної кривої.

2. Прості, необхідні та достатні умови, виконання яких дає можливість виділити з множини одержуваних еліптичних кривих ті, що мають необхідні властивості і придатні для криптографічних застосувань.

3. Достатні гарантії того, що задача дискретного логарифмування в полі точок еліптичної кривої буде залишатися в межах експоненційної складності.

За час, який минув з моменту перших публікацій про криптосистеми на еліптичних кривих (1985-1986 р. Н. Кобліц, В. Міллер), помітного падіння стійкості алгоритмів, заснованих на еліптичних кривих, не відбулося. У той час як, стійкість систем RSA, що заснована на задачі розкладання на множники, знижувалася приблизно на порядок у рік. Усе це свідчить про високий рівень криптостійкості алгоритмів на еліптичних кривих. Але, вони ніколи широко не використовувалися на практиці і не залучали до себе такої пильної уваги наукової громадськості як, наприклад, RSA.

Іншою перевагою криптосистем на еліптичних кривих є висока швидкість обробки інформації. Зрозуміло, що, володіючи більш високою криптостійкістю, криптосистеми на еліптичних кривих дозволяють використовувати ключ значно меншої довжини (160 біт еліптичної кривої проти 1024 RSA). Однак прийнятна для роботи в мережах швидкість обчислень досягається лише при використанні спеціалізованих обчислювачів і полів спеціальних характеристик. Якщо використовується еліптична крива над простим полем з характеристикою у вигляді великого простого числа, то про високу швидкість обчислень говорити важко. Зручно використовувати розширені поля характеристики 2, але, на жаль, вони підходять лише для криптографії не ізоморфних еліптичних кривих, яких занадто мало. Але, якщо використовувати еліптичні криві над розширеними полями характеристики виду , де вибирається відповідно до розрядності процесора, то можна прискорити виконання модульних операцій. А для прискорення іншої трудомісткої операції множення точки еліптичної кривої на число, пропонується використовувати комплексне множення за допомогою ендоморфізму Фробеніуса [2].

Для шифрування даних за допомогою криптосистеми на еліптичних кривих необхідно переводити інформацію, що підлягає шифруванню, у точку еліптичної кривої. По-перше, це додаткова процедура протоколу шифрування, а по-друге – це нетривіальна задача. Для її розв’язання потрібно підбирати підходящий базис векторного простору над полем і з його допомогою асоціювати повідомлення з елементом поля, а потім з точкою еліптичної кривої. При цьому на повідомлення, представлене цілим числом, накладається обмеження, що воно не повинно перевищувати порядок групи еліптичної кривої. Це приводить до того, що повідомлення доведеться розбивати на блоки і повторювати цю операцію для кожного блоку.

Однією з переваг криптографії еліптичних кривих можна вважати наявність бібліотек до різних мов програмування, які дозволяють працювати з математичним апаратом еліптичних кривих з достатнім рівнем абстрагування.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]