Знаймо

Додати знання

приховати рекламу

Цей текст може містити помилки.

SHA-2



План:


Введення

SHA-2 ( англ. Secure Hash Algorithm Version 2 - безпечний алгоритм хешування, версія 2) - збірна назва односпрямованих хеш-функцій SHA-224, SHA-256, SHA-384 і SHA-512. Хеш-функції призначені для створення "відбитків" або "дайджестів" повідомлень довільної бітової довжини. Застосовуються в різних додатках або компонентах, пов'язаних з захистом інформації.


1. Історія

Хеш-функції SHA-2 розроблені Агентством національної безпеки США і опубліковані Національним інститутом стандартів і технологій у федеральному стандарті обробки інформації FIPS PUB 180-2 в серпні 2002. [1] У цей стандарт також увійшла хеш-функція SHA-1, розроблена в 1995. У лютому 2004 в FIPS PUB 180-2 була додана SHA-224 [2]. У жовтні 2008 вийшла нова редакція стандарту - FIPS PUB 180-3. [3]

У липні 2006 з'явився стандарт RFC 4634 "Безпечні хеш-алгоритми США (SHA та HMAC-SHA)", що описує SHA-1 і сімейство SHA-2.

Агентство національної безпеки від особи держави випустило патент на SHA-2 [4] під ліцензією Royalty Free. [5]


2. Алгоритм

2.1. Загальний опис

Схема однієї ітерації алгоритмів SHA-2

Хеш-функції сімейства SHA-2 побудовані на основі структури Меркле - Дамгарда.

Вихідне повідомлення після доповнення розбивається на блоки, кожен блок - на 16 слів. Алгоритм пропускає кожен блок повідомлення через цикл з 64-ма або 80-ма ітераціями (раундами). На кожній ітерації 2 слова перетворюються, функцію перетворення задають інші слова. Результати обробки кожного блоку складаються, сума є значенням хеш-функції. Докладніше - див псевдокод.

Алгоритм використовує наступні бітові операції:

У наступній таблиці показані деякі технічні характеристики різних варіантів SHA-2. "Внутрішній стан" позначає проміжну хеш-суму після обробки чергового блоку даних:

Хеш-функція Довжина дайджесту повідомлення (біт) Довжина внутрішнього стану (біт) Довжина блоку (біт) Максимальна
довжина повідомлення (біт)
Довжина слова (біт) Кількість ітерацій в циклі
SHA-256/224 256/224 256 512 2 64 - 1 32 64
SHA-512/384 512/384 512 1024 2128 - 1 64 80

2.2. Псевдокод SHA-256

 Пояснення: Всі змінні беззнакові, мають розмір 32 біта і при обчисленнях підсумовуються по модулю 2 32 message - вихідне двійкове повідомлення m - перетворене повідомлення  Ініціалізація змінних (перші 32 біта дрібних частин квадратних коренів перших восьми простих чисел [від 2 до 19]):  h0: = 0x6A09E667 h1: = 0xBB67AE85 h2: = 0x3C6EF372 h3: = 0xA54FF53A h4: = 0x510E527F h5: = 0x9B05688C h6: = 0x1F83D9AB h7: = 0x5BE0CD19  Таблиця констант  (Перші 32 біта дрібних частин кубічних коренів перших 64-х простих чисел [від 2 до 311]):  k [0 .. 63]: = 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F , 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624 , 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2  Попередня обробка:  m: = message ǁ [одиничний біт] m: = m ǁ [k нульових біт],  де k - До наименш невід'ємне число, таке що (L + 1 + K) mod 512 = 448, де L-число біт в повідомленні ( порівнянна по модулю 512 c 448)  m: = m ǁ Довжина (message)  - Довжина вихідного повідомлення в бітах у вигляді 64-бітного числа з порядком байтів від старшого до молодшого  Далі повідомлення обробляється послідовними порціями по 512 біт:  розбити повідомлення на шматки по 512 біт для кожного шматка розбити шматок на 16 слів завдовжки 32 біта: w [0 .. 15]  Згенерувати додаткові 48 слів:  для i від 16 до 63 s0: = (w [i-15] rotr 7) xor (w [i-15] rotr 18) xor (w [i-15] shr 3) s1: = (w [i-2 ] rotr 17) xor (w [i-2] rotr 19) xor (w [i-2] shr 10) w [i]: = w [i-16] + s0 + w [i-7] + s1  Ініціалізація допоміжних змінних:  a: = h0 b: = h1 c: = h2 d: = h3 e: = h4 f: = h5 g: = h6 h: = h7  Основний цикл:  для i від 0 до 63 Σ0: = (a rotr 2) xor (a rotr 13) xor (a rotr 22) Ma: = (a and b) xor (a and c) xor (b and c) t2: = Σ0 + Ma Σ1: = (e rotr 6) xor (e rotr 11) xor (e rotr 25) Ch: = (e and f) xor ((not e) and g) t1: = h + Σ1 + Ch + k [ i] + w [i] h: = gg: = ff: = ee: = d + t1 d: = cc: = bb: = aa: = t1 + t2  Додати отримані значення до раніше обчисленому результату:  h0: = h0 + a h1: = h1 + b h2: = h2 + c h3: = h3 + d h4: = h4 + e h5: = h5 + f h6: = h6 + g h7: = h7 + h  Отримати підсумкове значення хешу:  digest = hash = h0 ǁ h1 ǁ h2 ǁ h3 ǁ h4 ǁ h5 ǁ h6 ǁ h7 

SHA-224 ідентичний SHA-256, за винятком:

  • для ініціалізації змінних h0 - h7 використовуються інші початкові значення.
  • в підсумковому хеше опускається значення h7.
 Початкові значення змінних h0 - h7 в SHA-224:  h0: = 0xC1059ED8 h1: = 0x367CD507 h2: = 0x3070DD17 h3: = 0xF70E5939 h4: = 0xFFC00B31 h5: = 0x68581511 h6: = 0x64F98FA7 h7: = 0xBEFA4FA4 

SHA-512 має ідентичну структуру, але:

  • слова мають довжину 64 біта.
  • використовується 80 раундів замість 64.
  • початкові значення змінних і константи розширені до 64 біт.
  • в зсув в операціях rotr і shr проводиться на інше число позицій.

SHA-384 ідентичний SHA-512, за винятком:

  • змінні h0 - h7 мають інші початкові значення.
  • в підсумковому хеше опускаються значення h6 і h7.
 Початкові значення змінних h0 - h7 в SHA-384 (перші 64 біта дрібних частин квадратних коренів простих чисел з 9-го по 16-е [від 23 до 53]):  h0: = CBBB9D5DC1059ED8 h1: = 629A292A367CD507 h2: = 9159015A3070DD17 h3: = 152FECD8F70E5939 h4: = 67332667FFC00B31 h5: = 8EB44A8768581511 h6: = DB0C2E0D64F98FA7 h7: = 47B5481DBEFA4FA4 

3. Приклади

Нижче наведені приклади хешів SHA-2. Для всіх повідомлень мається на увазі використання кодування ASCII.

 SHA-224 ("The quick brown fox jumps over the lazy dog") = 730E109B D7A8A32B 1CB9D9A0 9AA2325D 2430587D DBC0C38B AD911525 
 SHA-256 ("The quick brown fox jumps over the lazy dog") = D7A8FBB3 07D78094 69CA9ABC B0082E4F 8D5651E4 6D3CDB76 2D02D0BF 37C9E592 
 SHA-384 ("The quick brown fox jumps over the lazy dog") = CA737F10 14A48F4C 0B6DD43C B177B0AF D9E51693 67544C49 4011E331 7DBF9A50 9CB1E5DC 1E85A941 BBEE3D7F 2AFBC9B1 
 SHA-512 ("The quick brown fox jumps over the lazy dog") = 07E547D9 586F6A73 F73FBAC0 435ED769 51218FB7 D0C8D788 A309D785 436BBB64 2E93A252 A954F239 12547D1E 8A3B5ED6 E1BFD709 7821233F A0538F3D B854FEE6 

Найменша зміна повідомлення в переважній більшості випадків призводить до абсолютно іншого хешу внаслідок лавинного ефекту. Наприклад, при зміні dog на cog вийде:

 SHA-256 ("The quick brown fox jumps over the lazy cog") = E4C4D8F3 BF76B692 DE791A17 3E053211 50F7A345 B46484FE 427F6ACC 7ECC81BE 

4. Криптоаналіз

В 2003 Гілберт і Хандшух провели дослідження SHA-2, але не знайшли жодних вразливостей. [6] Однак у березні 2008 року індійські дослідники Сомітра Кумар Санада і Палаш Саркар опублікували знайдені ними колізії для 22 ітерацій SHA-256 і SHA-512. [7] У вересні того ж року вони представили метод конструювання колізій для усічених варіантів SHA-2 (21 ітерація). [8] [9]

Криптоаналіз хеш-функції увазі дослідження стійкості алгоритму по відношенню, щонайменше, до наступних видів атак:

  • знаходження колізій, тобто різних повідомлень з однаковим хешем.
  • знаходження прообразу, тобто невідомого повідомлення по його хешу.

Від стійкості хеш-функції до знаходження колізій залежить безпека електронного цифрового підпису з використанням даного хеш-алгоритму. Від стійкості до знаходження прообразу залежить безпека зберігання хешей паролів для цілей аутентифікації.

Зважаючи алгоритмічної схожості SHA-2 з SHA-1 і наявності у останньої потенційних вразливостей ведуться пошуки поліпшених альтернатив. [10] [11] Новий стандарт буде названий SHA-3, він буде визначений конкурсом, проведеним Національним інститутом стандартів і технологій у 2008-2012 гг. [12]


5. Застосування та сертифікація

SHA-224, SHA-256, SHA-384 і SHA-512 законом США допускаються до використання в деяких урядових додатках, включаючи використання в рамках інших криптографічних алгоритмів і протоколів, для захисту інформації, що не має грифу таємності. Стандарт також допускає використання SHA-2 приватними і комерційними організаціями. [13]

Хеш-функції SHA-2 використовуються для перевірки цілісності даних і в різних криптографічних схемах. На 2008 сімейство хеш-функцій SHA-2 не має такого широкого розповсюдження, як MD5 і SHA-1 [14], незважаючи на виявлені в останніх недоліки.

Деякі приклади застосування SHA-2 вказані в таблиці:

Область застосування Деталі
S / MIME SHA-224, SHA-256, SHA-384 або SHA-512 дайджести повідомлень [15]
OpenLDAP SHA-256, SHA-384 або SHA-512 хеш-кодування паролів [16]
DNSSEC SHA-256 дайджести DNSKEY в протоколі DNSSEC [17]
X.509 SHA-224, SHA-256, SHA-384 і SHA-512 використовуються для створення електронного цифрового підпису сертифіката [18]
PGP SHA-256, SHA-384, SHA-512 використовуються для створення електронного цифрового підпису [19]
IPSec Деякі реалізації підтримують SHA-256 в протоколах ESP і IKE [20]
DSA Сімейство SHA-2 використовується для створення електронного цифрового підпису [21]
SHACAL-2 Блоковий алгоритм шифрування SHACAL-2 побудований на основі хеш-функції SHA-256
Передача файлів Для надійності передачі файлів по мережі іноді вказуються їх SHA-2 дайджести [22]

Як показали дослідження [23], алгоритми SHA-2 працюють в 2-3 рази повільніше інших популярних хеш-алгоритмів MD5, SHA-1, Tiger і RIPEMD-160.


5.1. Сертифікація

Реалізації SHA-2, як і всіх Федеральних стандартів обробки інформації, можуть бути сертифіковані для використання в деяких додатках на території США. Сертифікація відбувається в рамках процедури Cryptographic Module Validation Program (Англ.) , Яка проводиться Національним інститутом стандартів і технологій США спільно з канадським Бюро безпеки зв'язку.

На 5 листопада 2008 року було сертифіковано понад 250-ти реалізацій SHA-2, чотири з яких могли оперувати повідомленнями з довжиною в бітах некратності восьми. [24]


Примітки

  1. FIPS PUB 180-2 - csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf (Англ.) . - Первинний варіант стандарту для SHA-2. Читальний - www.webcitation.org/66GOBWCaL з першоджерела 18 березня 2012.
  2. FIPS PUB 180-2 with change notice - csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf (Англ.) . - Варіант стандарту з SHA-224. Читальний - www.webcitation.org/66GOBwst5 з першоджерела 18 березня 2012.
  3. FIPS PUB 180-3 - csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf (Англ.) . - Редакція Secure Hash Standard від жовтня 2008 року. Читальний - www.webcitation.org/66GOCOl1l з першоджерела 18 березня 2012.
  4. US Patent 6829355 - www.google.com/patents?vid=6.829
  5. " Licensing Declaration for US patent 6829355. ". Перевірено 2008-02-17. (Англ.)
  6. Henri Gilbert; Helena Handschuh. " Security analysis of SHA-256 and sisters - cat.inist.fr /? aModele = afficheN & cpsidt = 15735289 "(fee required). Lecture notes in computer science (Springer, Berlin). ISSN 0302-9743 - worldcat.org/issn/0302-9743. Перевірено 2008-01-30.
  7. Somitra Kumar Sanadhya, Palash Sarkar. 22-Step Collisions for SHA-2 - arxiv.org/abs/0803.1220 (Англ.)
  8. Somitra Kumar Sanadhya, Palash Sarkar. Deterministic Constructions of 21-Step Collisions for the SHA-2 Hash Family - dx.doi.org/10.1007/978-3-540-85886-7_17 (Англ.)
  9. Презентація "Deterministic Constructions of 21-Step Collisions for the SHA-2 Hash Family" - (Англ.)
  10. Schneier on Security: NIST Hash Workshop Liveblogging (5) - www.schneier.com/blog/archives/2005/11/nist_hash_works_4.html (Англ.)
  11. Hash cracked - heise Security - www.heise-online.co.uk/security/Hash-cracked--/features/75686/2 (Англ.)
  12. Tentative Timeline of the Development of New Hash Functions - csrc.nist.gov / groups / ST / hash / timeline.html (Англ.)
  13. FIPS 180-2: Secure Hash Standard (SHS): 6. Applicability - csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf (Англ.)
  14. SHA-1 - www.google.com/search?q=SHA-1, SHA-256 - www.google.com/search?q=SHA-256 в результатах пошукової системи Google
  15. draft-ietf-smime-sha2-08 - tools.ietf.org/html/draft-ietf-smime-sha2-08 (Англ.) : Using SHA2 Algorithms with Cryptographic Message Syntax
  16. SHA-2 hash support in OpenLDAP - www.openldap.org/its/index.cgi/Contrib?id=5660 (Англ.)
  17. RFC 4509 : Use of SHA-256 in DNSSEC Delegation Signer (DS) Resource Records (RRs)
  18. RFC 4055 : Additional Algorithms and Identifiers for RSA Cryptography for use in the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
  19. RFC 4880 : OpenPGP Message Format
  20. Overview of Windows Vista Service Pack 1: New Standards - technet.microsoft.com/en-us/library/cc749132.aspx (Англ.)
  21. FIPS-186-2 - csrc.nist.gov/publications/fips/fips186-2/fips186-2-change1.pdf: Digital Signature Standard (DSS)]
  22. [1] - lists.freebsd.org/pipermail/freebsd-stable/2008-September/045016.html, [2] - bugs.debian.org / cgi-bin / bugreport.cgi? bug = 379251 - приклади використання SHA- 256 дайджестів файлів
  23. Speed ​​Comparison of Popular Crypto Algorithms [3] - www.cryptopp.com / benchmarks.html (Англ.)
  24. SHS Validation List - csrc.nist.gov / groups / STM / cavp / documents / shs / shaval.htm (Англ.)

Література


Цей текст може містити помилки.

Схожі роботи | скачати

Схожі роботи:
SHA-1
© Усі права захищені
написати до нас