Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Шифрування з використанням еліптичних кривих.




Більшість продуктів і стандартів, в яких для шифрування і цифрових підписів застосовується метод криптографії з відкритим ключем, базується на алгоритмі RSA. Але число бітів ключа, необхідне для надійного захисту RSA, за останні роки різко зросло, що зумовило відповідне зростання завантаження систем в програмах, що використовують RSА. На початку 2000-х років з'явився підхід, який може конкурувати з RSA - це криптографія на основі еліптичних кривих (ЕСС - Elliptic сurvе cryptography). Привабливість підходу на основі еліптичних кривих у порівнянні з RSA полягає в тому, що з використанням еліптичних кривих забезпечується еквівалентний захист при дуже невеликому числі розрядів, внаслідок чого зменшується завантаження процесора . У той же час, хоча теорія криптографії з використанням еліптичних кривих у всіх на слуху вже протягом досить довгого часу, тільки недавно почали з'являтися продукти, що представляють інтерес для криптоаналізу на предмет наявності відповідних слабких місць. Таким чином, ступінь довіри до методів кріnтографіі з використанням еліптичних кривих ще не настільки висока, як ступінь довіри до RSA.

Розглянемо найпростіший підхід до шифрування / дешифрування з використанням еліптичних кривих. Завдання полягає в тому, щоб зашифрувати повідомлення М, яке може бути представлене у вигляді точки на еліптичній кривій Pm (x, y).

Як і у випадку обміну ключем, в системі шифрування / дешифрування в якості параметрів розглядається еліптична крива Ep (a, b) і точка G на ній. Учасник B вибирає закритий ключ nB і обчислює відкритий ключ PB = nB × G. Щоб зашифрувати повідомлення Pm використовується відкритий ключ одержувача B PB. Учасник А вибирає випадкове ціле позитивне число k і обчислює зашифроване повідомлення Cm, що є точкою на еліптичній кривій.

Cm = {k × G, Pm + k × PB}

Щоб дешифрувати повідомлення, учасник У перемножує першу координату точки на свій закритий ключ і віднімає результат з другої координати:

Pm + k × PB - nB × (k × G) =
Pm + k × (nB × G) - nB × (k × G) = Pm

Учасник А зашифрувує повідомлення Pm додаванням до нього k*PB. Ніхто не знає значення k, тому, хоча PB і є відкритим ключем, ніхто не знає k × PB. Противнику для відновлення повідомлення доведеться обчислити k, знаючи G і k × G. Зробити це буде нелегко.

Одержувач також не знає k, але йому в якості підказки надсилається k × G. Помноживши k × G на свій закритий ключ, одержувач отримає значення, яке було додано відправником до незашифрованому повідомленням. Тим самим одержувач, не знаючи k, але маючи свій закритий ключ, може відновити незашифрованому повідомлення.


Забезпечення цілісності інформації. Алгоритми хешування. Стандарт MD5.

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

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

 Алгоритмхешування-це алгоритм,який використовуєтьсядлягенераціїхеш-кодів цифровихоб'єктів, такихякповідомленняабоключісеансів. Надійний алгоритмхешуванняволодієякістю, що змінавхіднихданихпризведедо змінивсіхбітівврезультуючомухеш-коді; хеш-коди кориснівсеансахдлявизначенняфактумодифікаціївеликого цифровогооб'єкта, такогояк повідомлення.Більш того, якіснийалгоритмхешуванняне дозволяєстворити дванезалежнихнаборавхіднихданих, що маютьоднаковіхеш-коди. ПрикладамиалгоритмівхешуванняєMD2, MD4, MD5іSHA-1. Алгоритмхешуванняназиваєтьсятакожхеш-функцією.

MD5 (англ.Message-Digest Algorithm 5) — 128-бітний алгоритм хешування. Призначений для створення «відбитків» або «дайджестів» повідомлень довільної довжини.

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

Алгоритм MD5

Початковий етап підготовки

· Вхідні дані вирівнюються так, щоб їхній розмір можна було порівняти з 448 по модулю з 512. Спочатку дописують одиничний біт (навіть якщо довжина порівняна з 448), далі необхідна кількість нульових бітів .

· Дописування 64-бітного представлення довжини даних по вирівнюванню. Якщо довжина перевищує 264 − 1, то дописують молодші біти.

Допоміжні таблиці та функції

· Ініціалізуть 4 змінних розміром по 32 біта:

o А = 01 23 45 67;

o В = 89 AB CD EF;

o С = FE DC BA 98;

o D = 76 54 32 10.

Вирівнювані дані розбиваються на блоки по 32 біта, і кожен проходить 4 раунда з 16 операторів. Всі оператори однотипні і мають виглядд: [abcd k s i], визначений як a = b + ((a + Fun(b,c,d) + X[k] + T<i> ) <<<s), де X — блок даних, а T[1..64] — 64х елементна таблиця побудована так: T[i] = int(4294967296 * | sin(i) | ), s — циклічний зсув вліво на s біт отриманого 32-бітного аргументу.

· В першому раунді Fun F(X, Y, Z) = XY v (not X)Z

· В другому раунді Fun G(X, Y, Z) = XZ v (not Z)Y.

· В третьому раунді Fun Н(Х, Y, Z) = Х xor Y xor Z.

· В четвертому раунді Fun I(Х, Y, Z) = Y xor (X v (not Z)).

Циклічна процедура обчислення

Саме обчислення проходить так:

· Зберігаються значення A, B, C и D, що залишились після операцій з попередніми блоками(або їх початкові значення якщо блок перший)

AA = A     BB = B      CC = C      DD = D

Раунд 1

/*[abcd k s i] a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */

[ABCD 0 7 1][DABC 1 12 2][CDAB 2 17 3][BCDA 3 22 4]

[ABCD 4 7 5][DABC 5 12 6][CDAB 6 17 7][BCDA 7 22 8]

[ABCD 8 7 9][DABC 9 12 10][CDAB 10 17 11][BCDA 11 22 12]

[ABCD 12 7 13][DABC 13 12 14][CDAB 14 17 15][BCDA 15 22 16]

Раунд 2

/*[abcd k s i] a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */

[ABCD 1 5 17][DABC 6 9 18][CDAB 11 14 19][BCDA 0 20 20]

[ABCD 5 5 21][DABC 10 9 22][CDAB 15 14 23][BCDA 4 20 24]

[ABCD 9 5 25][DABC 14 9 26][CDAB 3 14 27][BCDA 8 20 28]

[ABCD 13 5 29][DABC 2 9 30][CDAB 7 14 31][BCDA 12 20 32]

Раунд 3

/*[abcd k s i] a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */

[ABCD 5 4 33][DABC 8 11 34][CDAB 11 16 35][BCDA 14 23 36]

[ABCD 1 4 37][DABC 4 11 38][CDAB 7 16 39][BCDA 10 23 40]

[ABCD 13 4 41][DABC 0 11 42][CDAB 3 16 43][BCDA 6 23 44]

[ABCD 9 4 45][DABC 12 11 46][CDAB 15 16 47][BCDA 2 23 48]

Раунд 4

/*[abcd k s i] a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */

[ABCD 0 6 49][DABC 7 10 50][CDAB 14 15 51][BCDA 5 21 52]

[ABCD 12 6 53][DABC 3 10 54][CDAB 10 15 55][BCDA 1 21 56]

[ABCD 8 6 57][DABC 15 10 58][CDAB 6 15 59][BCDA 13 21 60]

[ABCD 4 6 61][DABC 11 10 62][CDAB 2 15 63][BCDA 9 21 64]

Проміжний результат

Виконати наступні операції

A = AA + A     B = BB + B      C = CC + C      D = DD + D

Після цього перевірити, чи є ще блоки, якщо є, то повторюють циклічну процедуру обчислення для наступного 32-х бітового блоку.

Результат

Після обчислення для всіх блоків даних, отримуємо кінцевий хеш у регістрах A B C D. Якщо вивести байти, починаючи з молодшого байту A і закінчивши старшим байтом подвійного слова D, то отримаємо MD5 хеш.










Последнее изменение этой страницы: 2018-04-12; просмотров: 707.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...