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

SHA-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.

ПриміткиРедагувати

ЛітератураРедагувати

Див. такожРедагувати

ПосиланняРедагувати

СтандартиРедагувати

КриптоаналізРедагувати

РеалізаціїРедагувати

  • 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.