Хэш SHA3-256 онлайн
Победитель конкурса NIST 2012 года — построен на губчатой конструкции Keccak, принципиально иначе, чем SHA-2. Считается прямо в браузере — текст никуда не отправляется.
Вычислить SHA3-256
Результат пересчитывается сам, пока вы печатаете. В режиме «По строкам» пустые строки тоже хэшируются — результат всегда совпадает по числу строк со входом. Нужна другая функция — на полной странице калькулятора их 32.
История SHA3-256
К середине 2000-х, после того как для SHA-1 нашли практические слабости, у криптографов возникло беспокойство: SHA-1 и SHA-2 построены по одной и той же схеме (Меркла — Дамгора), и в теории удачная атака на одну могла подсказать способ атаковать и другую. NIST решил подстраховаться и в 2007 году объявил открытый конкурс на новый стандарт хэширования — по образцу конкурса, на котором раньше выбрали AES.
Из 64 присланных алгоритмов в 2012 году победил Keccak — разработка бельгийской команды Гвидо Бертони, Йоана Даймена, Микаэля Петерса и Жиля Ван Ассча. Ключевым аргументом жюри была не скорость (Keccak не самый быстрый из финалистов), а то, что он устроен принципиально иначе, чем SHA-2, — на случай, если у конструкции Меркла — Дамгора когда-нибудь найдут фундаментальный изъян. Стандартизирован как SHA-3 в документе FIPS 202 в 2015 году.
Как устроен алгоритм
SHA-3 использует не конструкцию Меркла — Дамгора, а губчатую конструкцию (sponge construction) — и в этом его принципиальное отличие от MD5/SHA-1/SHA-2. Внутреннее состояние — массив из 1600 бит, разделённый на две части: rate (та часть, куда «впитывается» сообщение и откуда «выжимается» результат) и capacity (запас стойкости, который никогда напрямую не взаимодействует с данными — именно его размер и определяет криптографическую надёжность). Для SHA3-256 rate = 1088 бит, capacity = 512 бит.
Работа идёт в две фазы. Впитывание (absorb): сообщение дополняется особым паддингом и режется на блоки по 1088 бит; каждый блок через XOR накладывается на rate-часть состояния, после чего применяется перестановка Keccak-f[1600] — 24 раунда из пяти шагов (θ, ρ, π, χ, ι — вращения, перестановки строк/столбцов и нелинейное преобразование), перемешивающих весь массив целиком, включая capacity. Выжимание (squeeze): из rate-части состояния читаются первые 256 бит — этого хватает для SHA3-256 за один проход, для более длинного вывода потребовалось бы чередовать чтение с ещё одной перестановкой.
Характеристики
| Параметр | Значение |
|---|---|
| Длина хэша | 256 бит (64 hex-символа) |
| Внутреннее состояние | 1600 бит (rate 1088 + capacity 512) |
| Перестановка | Keccak-f[1600], 24 раунда |
| Конструкция | Губчатая (sponge), не Меркла — Дамгора |
| Опубликован | 2015, FIPS 202; Keccak выбран в 2012 |
| Авторы | Bertoni, Daemen, Peeters, Van Assche |
Где применяется
- Задачи, требующие соответствия FIPS 202 / официального SHA-3
- Как структурно независимый «запасной вариант» рядом с SHA-2 в криптобиблиотеках
- Внутренний строительный блок для расширяемых функций (SHAKE128/256) и некоторых схем постквантовой криптографии
Не путайте с Keccak-256 — это оригинальная версия алгоритма-победителя конкурса, до финальной правки паддинга NIST. Из-за этой правки Keccak-256 и SHA3-256 дают на одной и той же строке разный результат. Именно Keccak-256 (а не SHA3-256) используют Ethereum и многие блокчейны.
Криптостойкость
SHA3-256 не взломан и с момента стандартизации не показал никаких структурных слабостей — губчатая конструкция как раз и вводилась, чтобы иметь алгоритм, принципиально не похожий на SHA-2, на случай будущих прорывов в криптоанализе конструкции Меркла — Дамгора. На практике сегодня и SHA-2, и SHA-3 считаются одинаково надёжными; выбор между ними чаще определяется требованиями стандарта или скоростью на конкретной платформе, а не соображениями стойкости.