| SHA-1 (Secure Hash Algorithm 1) — это криптографическая хеш-функция, разработанная Национальным агентством безопасности США (NSA) и опубликованная в 1993 году как часть стандарта FIPS PUB 180-1. Она предназначена для преобразования входных данных произвольной длины в фиксированный 160-битный (20-байтный) хеш, который обычно представлен в виде 40-символьной шестнадцатеричной строки. SHA-1 широко использовалась в различных криптографических приложениях, таких как цифровые подписи, проверка целостности данных и аутентификация, но на сегодняшний день считается устаревшей из-за обнаруженных уязвимостей.  Как работает SHA-1 SHA-1 принимает входные данные (сообщение) и выполняет ряд математических операций, чтобы создать уникальный хеш. Алгоритм работает следующим образом: 
 Подготовка входных данных (padding):
 
 Входное сообщение дополняется, чтобы его длина стала кратной 512 битам.Сначала добавляется бит 1, затем нули до достижения нужной длины, и в конце добавляется 64-битное представление длины исходного сообщения.Например, для сообщения длиной 24 бита дополнение добавит 1 бит, 423 нуля и 64 бита для длины.Разбиение на блоки: Дополненное сообщение разбивается на блоки по 512 бит (64 байта). 
 Инициализация буфера:
 
 SHA-1 использует пять 32-битных регистров (A, B, C, D, E), инициализированных фиксированными константами: A = 0x67452301B = 0xEFCDAB89
 C = 0x98BADCFE
 D = 0x10325476
 E = 0xC3D2E1F0
 
 Обработка каждого блока:
 
 Каждый 512-битный блок делится на 16 слов по 32 бита.Эти 16 слов расширяются до 80 слов с помощью определённых операций (XOR и сдвигов).Затем выполняется 80 шагов обработки, разбитых на четыре раунда по 20 шагов. На каждом шаге:
 
 Выполняются логические операции (AND, OR, XOR) и побитовые сдвиги.Используются нелинейные функции и заранее определённые константы.Значения регистров A, B, C, D, E обновляются.Обновление хеша:
 
 После обработки блока текущие значения регистров добавляются к промежуточному хешу.Этот процесс повторяется для всех блоков.Финальный хеш:
 
 После обработки всех блоков значения регистров объединяются, образуя 160-битный хеш.  Свойства SHA-1 
 Односторонняя функция: Невозможно восстановить исходное сообщение по его хешу.Фиксированная длина вывода: Всегда возвращает 160-битный хеш, независимо от размера входных данных.Чувствительность к изменениям: Даже минимальное изменение входных данных (например, один бит) приводит к совершенно другому хешу.Быстрота: Алгоритм оптимизирован для быстрого вычисления на аппаратном и программном уровне.  Применение SHA-1 SHA-1 использовалась в множестве приложений, включая: 
 Цифровые подписи: Для подтверждения подлинности и целостности сообщений.Сертификаты SSL/TLS: В протоколе HTTPS для защиты веб-соединений (до запрета в 2017 году).Контроль версий: В системах вроде Git для идентификации коммитов и проверки целостности.Хранение паролей: Для создания хешей паролей (хотя это устаревшая практика).  Уязвимости и проблемы SHA-1 больше не считается криптографически безопасной из-за обнаруженных уязвимостей: 
 Коллизии: В 2005 году исследователи показали теоретическую возможность нахождения двух разных сообщений с одинаковым хешем (коллизии) за меньшее время, чем ожидалось. В 2017 году Google и CWI Amsterdam впервые продемонстрировали практическую атаку на коллизии, создав два разных PDF-файла с одинаковым SHA-1 хешем (проект SHAttered).Снижение стойкости: Современные вычислительные мощности делают атаки на SHA-1 всё более осуществимыми.Рекомендации по замене: NIST официально объявила SHA-1 устаревшей в 2011 году и рекомендовала переход на более безопасные алгоритмы, такие как SHA-2 или SHA-3.  Сравнение с другими хеш-функциями 
 MD5: Более старая и менее безопасная, чем SHA-1, с ещё более выраженными уязвимостями.SHA-2: Семейство хеш-функций (SHA-256, SHA-512) с большей длиной хеша и улучшенной криптографической стойкостью.SHA-3: Более новая функция, основанная на другой конструкции (Keccak), устойчивая к атакам, уязвимым для SHA-1 и SHA-2.  Пример хеша SHA-1 Входное сообщение: Hello, World! SHA-1 хеш: 0a0a9f2a6772942557ab5355d76af442f8f65e01 Если изменить сообщение на Hello, World!! (добавлен один символ), хеш станет совершенно другим: SHA-1 хеш: a6c2a6c90b4d68a9c7abaca23a8078e6dd49cd1f  Современное состояние На 16 июня 2025 года SHA-1 не рекомендуется для криптографических целей, таких как цифровые подписи или сертификаты. Однако она всё ещё используется в некриптографических задачах, например, в Git для идентификации объектов, хотя даже там переходят на более безопасные альтернативы, такие как SHA-256.  Заключение SHA-1 была важным этапом в развитии криптографии, но её уязвимости сделали её непригодной для современных требований безопасности. Для новых проектов рекомендуется использовать SHA-2 или SHA-3. |