SHA-2

Матеріал з Вікіпедії — вільної енциклопедії.
Версія від 14:50, 27 листопада 2021, створена Andriy.vBot (обговорення | внесок) (виправлення дат)
Перейти до навігації Перейти до пошуку
SHA-2
SHA-224, SHA-256, SHA-384 і SHA-512
Клас сімейство криптографічних хеш-функцій


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

Історія

Геш-функції 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]

Алгоритм

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

Схема однієї ітерації алгоритмів 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 2 128  — 1 64 80

Приклади

Нижче наведені приклади гешів 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

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

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

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

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

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

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

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

Див також Застосування гешування

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

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

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

Примітки

  1. http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf посилання= FIPS PUB 180-2
  2. http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf посилання=
  3. http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf посилання=
  4. U.S. Patent 6,829,355
  5. Licensing Declaration for US patent 6829355. Процитовано 17 лютого 2008. (англ.)
  6. Архівована копія. Архів оригіналу за 18 жовтня 2011. Процитовано 18 червня 2012.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  7. Somitra Kumar Sanadhya, Palash Sarkar. 22-Step Collisions for SHA-2 (англ.)
  8. Somitra Kumar Sanadhya, Palash Sarkar. Deterministic Constructions of 21-Step Collisions for the SHA-2 Hash Family (англ.)
  9. / nist_hash_works_4.html Schneier on Security: NIST Hash Workshop Liveblogging (5) (англ.)
  10. --/features/75686/2 Hash cracked — heise Security (англ.)
  11. Tentative Timeline of the Development of New Hash Functions (англ.)
  12. FIPS 180-2: Secure Hash Standard (SHS): 6. Applicability] (англ.)
  13. SHA-1, SHA-256 в результатах пошукової системи Google
  14. Speed Comparison of Popular Crypto Algorithms [1] (англ.)

Література

Див. також

Посилання

Стандарти

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

Реалізації

  • The OpenSSL Project — широко використовувана бібліотека OpenSSL crypto включає вільні реалізації SHA-224, SHA-256, SHA-384 і SHA-512.
  • Crypto++ Library — вільна реалізація криптографічних алгоритмів на C++
  • Bouncy Castle Library — вільна бібліотека Java і C # класів, яка включає реалізації SHA-224, SHA-256, SHA-384 і SHA-512, а також інших геш-алгоритмів Whirlpool, Tiger, RIPEMD, ГОСТ Р 34.11-94, MD2, MD4 і MD5
  • jsSHA — Онлайн калькулятор та вільна бібліотека Javascript, що включає повне сімейство геш-функцій SHA2, SHA3.
  • Febooti fileTweak Hash & CRC — програма для обчислення різних (MD5, SHA-1, SHA-2 та ін) гешів файлів
  • ReHash — консольна утиліта обчислення SHA1, SHA-256, SHA-384 і SHA-512.