Информационная безопасность

SHA-256

SHA-256

В 2001 году было принято решение о том, чтобы в качестве информационного стандарта принять хэш-функции с существенно большей длиной хэш-кода. Такой хэш-функцией является SHA-2 или SHA-256 . Её алгоритм отличается не только длиной создаваемого хэш-кода, но и длиной обрабатываемого блока, длиной слова и используемыми внутренними функциями.

SHA-256 использует шесть логических функций, при этом каждая из них выполняется с 32-битными словами, обозначенными как x, y и z. Результатом каждой функции тоже является 32-битное слово.

Ch (x, y, z) = (x y) (¬x z)
Maj (x, y, z) = (x y) (x z) (y z)
Σ0{256} (x) = ROTR2 (x) ROTR13 (x) ROTR22 (x)
Σ1{256} (x) = ROTR6 (x) ROTR11 (x) ROTR25 (x)
σ0{256} (x) = ROTR7 (x) ROTR18 (x) SHR3 (x)
σ1{256} (x) = ROTR17 (x) ROTR19 (x) SHR10 (x)


Если хэш-функция достаточно надежна, т. е. устойчива к коллизиям, то никто не сможет найти файл с заданным хэшем за разумный промежуток времени, для этого потребуется несколько сотен лет .
Хэш MD5 на сегодняшний день считается ненадежным, так как существуют способы найти два сообщения, которые имеют одинаковое значение хэш-функции.
CRC32 не является устойчивой к коллизиям по определению, так как это контрольная сумма, а не хэш.
В алгоритме SHA-256 никаких уязвимостей пока найдено не было, поэтому эта хэш-функция считается безопасной.

Сравнительная характеристика хэш-функций: