SHA-2

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з SHA2)
Перейти до навігації Перейти до пошуку
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 [Архівовано 2012-04-26 у Wayback Machine.] [[https://web.archive.org/web/20220122042946/https://docs.google.com/viewer?url=http%3A%2F%2Fcsrc.nist.gov%2Fpublications%2Ffips%2Ffips180-2%2Ffips180-2.pdf&embedded=true&chrome=false&dov=1 Архівовано 22 січня 2022 у Wayback Machine.] посилання=] FIPS PUB 180-2
  2. http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf [Архівовано 2012-03-12 у Wayback Machine.] [[https://web.archive.org/web/20220120172104/https://docs.google.com/viewer?url=http%3A%2F%2Fcsrc.nist.gov%2Fpublications%2Ffips%2Ffips180-2%2Ffips180-2withchangenotice.pdf&embedded=true&chrome=false&dov=1 Архівовано 20 січня 2022 у Wayback Machine.] посилання=]
  3. http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf [Архівовано 2012-03-12 у Wayback Machine.] [[https://web.archive.org/web/20220123063739/https://docs.google.com/viewer?url=http%3A%2F%2Fcsrc.nist.gov%2Fpublications%2Ffips%2Ffips180-3%2Ffips180-3_final.pdf&embedded=true&chrome=false&dov=1 Архівовано 23 січня 2022 у Wayback Machine.] посилання=]
  4. U.S. Patent 6,829,355
  5. Licensing Declaration for US patent 6829355. Архів оригіналу за 16 червня 2016. Процитовано 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 [Архівовано 30 березня 2010 у Wayback Machine.] (англ.)
  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) [Архівовано 25 квітня 2022 у Wayback Machine.] (англ.)
  10. --/features/75686/2 Hash cracked — heise Security (англ.)
  11. Tentative Timeline of the Development of New Hash Functions [Архівовано 4 червня 2009 у Wayback Machine.] (англ.)
  12. FIPS 180-2: Secure Hash Standard (SHS): 6. Applicability] (англ.)
  13. SHA-1, SHA-256 в результатах пошукової системи Google
  14. Speed Comparison of Popular Crypto Algorithms [1] [Архівовано 15 жовтня 2008 у Wayback Machine.] (англ.)

Література[ред. | ред. код]

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]

Стандарти[ред. | ред. код]

Криптоаналіз[ред. | ред. код]

Реалізації[ред. | ред. код]