SHA1
В 1993 году NSA совместно с NIST разработали алгоритм безопасного хеширования (сейчас известный как SHA-0) (опубликован в документе FIPS PUB 180) для стандарта безопасного хеширования. Однако вскоре NSA отозвало данную версию, сославшись на обнаруженную ими ошибку, которая так и не была раскрыта. И заменило его исправленной версией, опубликованной в 1995 году в документе FIPS PUB 180-1. Эта версия и считается тем, что называют SHA-1. Немного спустя, на конференции CRYPTO в 1998 году два французских исследователя представили атаку на алгоритм SHA-0, которая не работала на алгоритме SHA-1 Возможно, это и была ошибка, открытая NSA.
Описание алгоритма
Одна итерация алгоритма SHA1
SHA-1 реализует однонаправленную хеш-функцию, построенную на идее функции сжатия. Входами функции сжатия являются блок сообщения длиной 512 бит и выход предыдущего блока сообщения. Выход представляет собой значение всех хеш-блоков до этого момента. Иными словами хеш блока Mi равен hi = f(Mi,hi − 1) . Хеш-значением всего сообщения является выход последнего блока.
Инициализация
Исходное сообщение разбивается на блоки по 512 бит в каждом. Последний блок дополняется до длины, кратной 512 бит. Сначала добавляется 1 а потом нули, чтобы длина блока стала равной 512 — 64 бит. В оставшиеся 64 бита записывается длина исходного сообщения в битах. Дополнение последнего блока осуществляется всегда, даже если сообщение уже имеет нужную длину. Таким образом, число добавляемых битов находится в диапазоне от 1 до 512.
Инициализируются пять 32-битовых переменных.
A = a = 0x67452301 B = b = 0xEFCDAB89 C = c = 0x98BADCFE D = d = 0x10325476 E = e = 0xC3D2E1F0
Определяются четыре нелинейные операции и четыре константы.
Kt = 0x5A827999 | 0≤t≤19 | |
Kt = 0x6ED9EBA1 | 20≤t≤39 | |
Kt = 0x8F1BBCDC | 40≤t≤59 | |
Kt = 0xCA62C1D6 | 60≤t≤79 |
Главный цикл
Главный цикл итеративно обрабатывает каждый 512-битный блок. Итерация состоит из четырех этапов по двадцать операций в каждом. Блок сообщения преобразуется из 16 32-битовых слов Mi в 80 32-битовых слов Wj по следующему правилу:
Mt при 0≤t≤15
для от 0 до 79
temp = (a<<5) + Kt
e = d
d = c
c = b b = a
a = temp
После этого a, b, c, d, e прибавляются к A, B, C , D , E соответственно. Начинается следующая итерация.
Итоговым значением будет объединение пяти 32-битовых слов в одно 160-битное хеш-значение.
Псевдокод SHA-1
Псевдокод алгоритма SHA-1 следущий:
Замечание: Все используемые переменные 32 бита. Инициализация переменных: h0 = 0x67452301 h1 = 0xEFCDAB89 h2 = 0x98BADCFE h3 = 0x10325476 h4 = 0xC3D2E1F0 Предварительная обработка: Присоединяем бит '1' к сообщению присоединяем k битов '0', где k наименьшее число ≥ 0 такое что длина получившегося сообщения(в битах) сравнима с 448 (mod 512) добавленная длина сообщения в битах, (после предварительной обработки), в битах. В процессе сообщение разбивается последовательно по 512 бит: for перебираем все такие части разбиваем этот кусок на 16 частей, слов по 32-бита w[i], 0 16 слов по 32-бита расширяются в 80 32-битовых слов: for i from 16 to 79 w[i] = (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) битовый сдвиг 1 Инициализация хеш-значений этой части: a = h0 b = h1 c = h2 d = h3 e = h4 Основной цикл: for i from 0 to 79 if 0 ≤ i ≤ 19 then f = (b and c) or ((not b) and d) k = 0x5A827999 else if 20 ≤ i ≤ 39 f = b xor c xor d k = 0x6ED9EBA1 else if 40 ≤ i ≤ 59 f = (b and c) or (b and d) or (c and d) k = 0x8F1BBCDC else if 60 ≤ i ≤ 79 f = b xor c xor d k = 0xCA62C1D6 temp = (a leftrotate 5) + f + e + k + w[i] e = d d = c c = b leftrotate 30 b = a a = temp Добавляем хеш-значение этой части к результату: h0 = h0 + a h1 = h1 + b h2 = h2 + c h3 = h3 + d h4 = h4 + e Итог конечное хеш-значение: digest = hash = h0 append h1 append h2 append h3 append h4
Вместо оригинальной формулировки FIPS PUB 180-1 приведены следующие эквивалентные выражения и могут быть использованы на компьютере f в главном цикле:
(0 ≤ i ≤ 19): f = d xor (b and (c xor d)) (альтернатива 1) (0 ≤ i ≤ 19): f = (b and c) xor ((not b) and d) (альтернатива 2) (0 ≤ i ≤ 19): f = (b and c) + ((not b) and d) (альтернатива 3) (40 ≤ i ≤ 59): f = (b and c) or (d and (b or c)) (альтернатива 1) (40 ≤ i ≤ 59): f = (b and c) or (d and (b xor c)) (альтернатива 2) (40 ≤ i ≤ 59): f = (b and c) + (d and (b xor c)) (альтернатива 3) (40 ≤ i ≤ 59): f = (b and c) xor (b and d) xor (c and d) (альтернатива 4)
Примеры
Ниже приведены примеры хешей SHA-1. Для всех сообщений подразумевается использование кодировки панграммы на русском:
SHA-1("В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!") = 9e32295f 8225803b b6d5fdfc c0674616 a4413c1b
Хеш панграммы на английском:
SHA-1("The quick brown fox jumps over the lazy dog") = 2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12
SHA-1("sha") = d8f45903 20e1343a 915b6394 170650a8 f35d6926
Небольшое изменение исходного текста (одна буква в верхнем регистре) приводит к сильному изменению самого хеша. Это происходит вследствие лавинного эффекта.
SHA-1("Sha") = ba79baeb 9f10896a 46ae7471 5271b7f5 86e74640
Даже для пустой строки вычисляется нетривиальное хеш-значение.
SHA-1("") = da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709
Криптоанализ
Криптоанализ хеш-функций направлен на исследование уязвимости к различного вида атакам. Основные из них:
- нахождение коллизий — ситуация, когда двум различным исходным сообщениям соответствует одно и то же хеш-значение.
- нахождение прообраза — исходного сообщения — по его хешу.
- вторая задача требует 2 160 операций.
- первая же требует в среднем 2 160/2 = 2 80 операций, если использовать парадокс дней рождения.
От устойчивости хеш-функции к нахождению коллизий зависит безопасность электронной цифровой подписи с использованием данного хеш-алгоритма. От устойчивости к нахождению прообраза зависит безопасность хранения хешей паролей для целей аутентификации.
В январе 2005 года Vincent Rijmen и Elisabeth Oswald опубликовали сообщение об атаке на усеченную версию SHA-1 (53 раунда вместо 80), которая позволяет находить коллизии меньше, чем за 2 80 операций.
В феврале 2005 года Сяоюнь Ван, Йицунь Лиза Йинь и Хунбо Ю представили атаку на полноценный SHA-1, которая требует менее 2 69 операций.
О методе авторы пишут:
Мы представляем набор стратегий и соответствующих методик, которые могут быть использованы для устранения некоторых важных препятствий в поиске коллизий в SHA-1. Сначала мы ищем близкие к коллизии дифференциальные пути, которые имеют небольшой «вес Хамминга» в «векторе помех», где каждый 1-бит представляет 6-шаговую локальную коллизию. Потом, мы соответствующим образом корректируем дифференциальный путь из первого этапа до другого приемлемого дифференциального пути, чтобы избежать неприемлемых последовательных и усеченных коллизий. В конце концов мы преобразуем два одноблоковых близких к коллизии дифференциальных пути в один двухблоковый коллизионный путь с удвоенной вычислительной сложностью. [1]
Оригинальный текст (англ.)
We introduce a set of strategies and corresponding techniques that can be used to remove some major obstacles in collision search for SHA-1. Firstly, we look for a near-collision differential path which has low Hamming weight in the «disturbance vector» where each 1-bit represents a 6-step local collision. Secondly, we suitably adjust the differential path in the first round to another possible differential path so as to avoid impossible consecutive local collisions and truncated local collisions. Thirdly, we transform two one-block near-collision differential paths into a twoblock collision differential path with twice the search complexity.
Также они заявляют:
В частности, наш анализ основан на оригинальной дифференциальной атаке на SHA-0, «near-collision» атаке на SHA-0, мультиблоковой методике, а также методикам модификации исходного сообщения, использованных при атаках поиска коллизий на HAVAL-128, MD5.
Оригинальный текст (англ.)
In particular, our analysis is built upon the original differential attack on SHA-0, the near collision attack on SHA-0, the multi-block collision techniques, as well as the message modification techniques used in the collision search attacks on HAVAL-128, MD4, RIPEMD and MD5.
Статья с описанием алгоритма была опубликована в августе 2005 года на конференции CRYPTO.
В этой же статье авторы опубликовали атаку на усеченный SHA-1 (58 раундов), которая позволяет находить коллизии за 2 33 операций.
В августе 2005 года на CRYPTO 2005 эти же специалисты представили улучшенную версию атаки на полноценный SHA-1, с вычислительной сложностью в 2 63 операций. В декабре 2007 года детали этого улучшения были проверены Мартином Кохраном.
Кристоф де Каньер и Кристиан Рехберг позже представили усовершенствованную версию атаки на SHA-1, за что были удостоены награды за лучшую статью на конференции ASIACRYPT 2006. Ими была представлена двух-блоковая коллизия на 64-раундовый алгоритм с вычислительной сложностью около 2 35 операций. [2]
Существует масштабный исследовательский проект, стартовавший в технологическом университете австрийского города Грац, который : «… использует компьютеры соединенные через Интернет, для проведения исследований в области криптоанализа. Вы можете поучаствовать в проекте загрузив и запустив бесплатную программу на своем компьютере.» [3]
Хотя теоретически SHA-1 считается взломанным (количество вычислительных операций сокращено в 2 80-63 = 131 000 раз), на практике подобный взлом неосуществим, так как займет пять миллиардов лет.
Бурт Калински, глава исследовательского отдела в «лаборатории RSA» предсказывает, что первая атака по нахождению прообраза будет успешно осуществлена в ближайшие 5-10 лет.
Ввиду того, что теоретические атаки на SHA-1 оказались успешными, NIST планирует полностью отказаться от использования SHA-1 в цифровых подписях. [4]
2 ноября 2007 года NIST анонсировало конкурс по разработке нового алгоритма SHA-3, который продлится до 2012 года. [5]
Сравнение SHA-1 с другими алгоритмами
Сравнение с MD5
- Четыре этапа.
- Каждое действие прибавляется к ранее полученному результату.
- Размер блока обработки равный 512 бит.
- Оба алгоритма выполняют сложение по модулю 2 32 , они рассчитаны на 32-битную архитектуру.
- В SHA-1 на четвертом этапе используется та же функция f, что и на втором этапе.
- В
- В SHA-1 добавлена пятая переменная.
- SHA-1 использует циклический код исправления ошибок.
- В SHA на каждом этапе используется постоянное значение сдвига.
- В
- В
- SHA-1 содержит больше раундов (80 вместо 64) и выполняется на 160-битном буфере по сравнению со 128-битным буфером MD5 на той же аппаратуре.
Брюс Шнайер делает следующий вывод : «SHA-1 — это MD5 — это
Сравнение с ГОСТ Р 34.11-94
Ряд отличительных особенностей ГОСТ Р 34.11-94:
- При обработке блоков используются преобразования по алгоритму ГОСТ 28147—89;
- Обрабатывается блок длиной 256 бит, и выходное значение тоже имеет длину 256 бит.
- Применены меры борьбы против поиска коллизий, основанном на неполноте последнего блока.
- Обработка блоков происходит по алгоритму шифрования ГОСТ 28147—89, который содержит преобразования на S — боксах, что существенно осложняет применение метода дифференциального криптоанализа к поиску коллизий алгоритма ГОСТ Р 34.11-94. Это существенный плюс по сравнению с SHA-1.
- Теоретическая криптостойкость ГОСТ Р 34.11-94 равна 2 128 , что во много раз превосходит 2 80 для SHA-1.
- Скорость обработки данных для SHA-1 — 48.462*2 20 байт/с, а для ГОСТ Р 34.11-94 — 9.977*2 20 байт/с.
Сравнение с другими SHA
В таблице, «промежуточный размер хеша» означает «размер внутренней хеш-суммы» после каждой итерации.
Вариации алгоритма | Размер выходного хеша (бит) | Промежуточный размер хеша (бит) | Размер блока (бит) | Максимальная длина входного сообщения (бит) | Размер слова (бит) | Количество раундов | Используемые операции | Найденные коллизии | |
---|---|---|---|---|---|---|---|---|---|
SHA-0 | 160 | 160 | 512 | 2 64 − 1 | 32 | 80 | +,and,or,xor,rotl | Есть | |
SHA-1 | 160 | 160 | 512 | 2 64 − 1 | 32 | 80 | +,and,or,xor,rotl | 2 52 операций | |
32 | 64 | +,and,or,xor,shr,rotr | Нет | ||||||
SHA-512/384 | 512/384 | 512 | 1024 | 2 128 − 1 | 64 | 80 | +,and,or,xor,shr,rotr | Нет |
Использование
Хеш-функции используются в системах контроля версий, системах электронной подписи, а также для построения кодов аутентификации.
SHA-1 является наиболее распространенным из всего семейства SHA и применяется в различных широко распространенных криптографических приложениях и алгоритмах.
SHA-1 используется в следующих приложениях:
- S/MIME — дайджесты сообщений.
- IPSec — для алгоритма проверки целостности в соединении «точка-точка».
- SHA-1 является основой блочного шифра
Примечания
- ↑Finding Collisions in the Full SHA-1 (англ.) . — Статья китайских исследователей о взломе SHA-1.
- ↑Finding SHA-1 Characteristics: General Results and Applications (англ.) .
- ↑SHA-1 Collision Search Graz (англ.) . — Исследовательский проект технологического университета Граца.
- ↑NIST Comments on Cryptanalytic Attacks on SHA-1 (англ.) . — Официальный комментарий NIST по поводу атак на SHA-1.
- ↑NIST Hash Competition (англ.) . — Конкурс на разработку SHA-3.
Ссылки
- RFC 3174 (англ.)
- Обзор SHA-1 от Консорциума Всемирной паутины (англ.)
- Взлом SHA-1 (англ.)
- Онлайн Взлом SHA1
- Поиск по базам и восстановление SHA1
- Доклад о взломе SHA1 (англ.)
- Брюс Шнайер о взломе SHA (англ.)
- Последствия удачных атак на SHA-1 (англ.)
Литература
- Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — М .: Триумф, 2002. — 816 с. — 3000 экз. — ISBN 5-89392-055-4
- Нильс Фергюсон, Брюс Шнайер Практическая криптография = Practical Cryptography: Designing and Implementing Secure Cryptographic Systems. — М.: «Диалектика», 2004. — С. 432. — ISBN 0-471-22357-3
Как и зачем переходить с SHA-1 на SHA-2 и почему это важно
Индустрия инфраструктуры открытых ключей (ИОК, англ. PKI — Public Key Infrastructure) рекомендует, чтобы любой объект инфраструктуры, использующий SHA-1, был переведён на более безопасный SHA-2. В этой статье описано, почему и как стоит это сделать.
В 2016 году миграция на SHA-2 была хорошей подготовкой к всеобщему дедлайну, сейчас же этот переход обязателен для обеспечения безопасности. Многие устройства и приложения, использующие электронные сертификаты, уже сейчас выводят предупреждения или ошибки или отказываются работать, если сертификат использует алгоритмы хеширования SHA-1 или старше. Зачем эти принудительные изменения? Потому что в хеше SHA-1 обнаружены серьёзные криптографические уязвимости, и дни, когда его защита ещё надёжна, уже сочтены.
Вплоть до 2017 года SHA-1 был самым популярным хешем, используемым для криптографической подписи, и некоторые, в особенности старые, приложения и устройства не принимали или не понимали хеши или сертификаты, основанные на алгоритме SHA-2. Это было основной проблемой перехода на новый стандарт.
Что такое хеш?
Криптографическая хеш-функция — это математический алгоритм, преобразующий любое уникальное сообщение (текст, видео, аудио, изображение и т. д.) в уникальную комбинацию, которую чаще всего называют «хешем» или «хеш-кодом». Два разных сообщения ни в коем случае не должны преобразовываться в одинаковый хеш, а два идентичных сообщения всегда должны возвращать один и тот же хеш. Благодаря этим свойствам хеш-код может использоваться для сравнения двух различных сообщений на идентичность. Криптографические хеши являются основой для практически любой цифровой аутентификации и проверки целостности файла.
Службы центра сертификации (ЦС) ИОК используют криптографические хеш-функции для подтверждения идентификационных данных и запросов цифровых сертификатов. Кроме этого, хеши используются для подтверждения цифровых сертификатов (например, цифровой подписью) и списка аннулированных сертификатов (CRL, certificate revocation list), которые выдают другие доверенные стороны. Доверенные стороны не смогут полагаться на достоверность цифровых сертификатов и другого контента, подписанного ЦС, если службы ИОК используют ненадёжный криптографический хеш. Стойкость криптографического хеша создаёт доверие ко всей системе ИОК.
Примечание: контрольные суммы — это хеш-подобные верификаторы, но без криптографических доказательств, подтверждающих, что они обеспечивают статистически уникальные результаты для уникальных входных сообщений.
В общем, криптографические хеши считаются более безопасными, чем контрольные суммы, хотя последние часто используются для некритических проверок целостности и подлинности.
Атаки на хеши
Стойкость криптографической хеш-функции в том числе обеспечивается тем, что для любого уникального сообщения формируется уникальный хеш. В то же время необходимо, чтобы по одному только хешу нельзя было воспроизвести исходное сообщение. На попытке обойти это свойство строится атака нахождения прообраза. Кроме того, два разных сообщения ни в коем случае не должны преобразовываться в одинаковые хеши, иначе возникнет явление, которое называется коллизией. На этом явлении основывается атака «дней рождения».
Общепринятые криптографические хеш-функции изначально считаются криптографически стойкими, но со временем злоумышленники находят математические уловки, ослабляющие их защиту.
Вычислительная сложность криптостойкого хеша равна заявленной эффективной длине последовательности бит минус 1. Таким образом, когда неизвестны его недостатки, 128-битный хеш будет иметь сложность вычисления 2^127. Как только кто-то найдёт математический алгоритм, который позволит взломать хеш за время меньшее, чем эффективная длина бит минус 1, такой хеш будет считаться ослабленным. Как правило, все общепринятые хеши становятся слабее со временем. Когда эффективная длина бит сокращается, хеш становится менее защищённым и менее ценным. Когда считается, что хеш может быть взломан за разумный период времени и с не столь значительными вычислительными ресурсами (стоимостью от сотен тысяч до миллионов долларов), то хеш считается «взломанным» и не должен больше использоваться. Взломанные хеши используются вредоносными программами и злоумышленниками для создания якобы законного программного обеспечения с цифровой подписью. Хороший пример такого ПО — Flame malware program. В общем, слабые хеши могут сыграть свою роль и не должны использоваться.
Введение в семейство SHA
Алгоритм SHA-1 был разработан Агентством национальной безопасности США (АНБ) и опубликован Национальным институтом стандартов и технологий США (NIST) в качестве федерального стандарта в 1995 году. Выпущенные NIST криптографические стандарты пользуются доверием по всему миру и как правило требуются на всех компьютерах, используемых правительством или вооружёнными силами Соединённых Штатов. SHA-1 заменил предыдущие ослабевшие хеш-функции, например, MD5.
Со временем несколько непрерывных криптографических атак на SHA-1 уменьшили эффективность длины ключа. Из-за этого в 2002 году АНБ и NIST выбрали SHA-2 новым рекомендуемым стандартом хеширования. Это случилось задолго до того, как SHA-1 начали считать взломанным. В феврале 2017 года обнаружили успешную атаку на хеш с помощью коллизий, которая сделала SHA-1 бесполезным для защиты электронной подписи.
Отличное обсуждение взлома SHA-1 и пример документации можно найти здесь.
Семейство SHA-2
SHA-2 — стандарт криптографического хеширования, который программное и аппаратное обеспечение должны использовать по крайней мере ближайшие пару лет. SHA-2 очень часто называется семейством хеш-функций SHA-2, поскольку содержит много хешей разных размеров, включая 224-, 256-, 384- и 512-битные последовательности. Когда кто-то говорит, что использует SHA-2, длина его хеша неизвестна, но сейчас самый популярный — 256-битный. Хотя некоторые математические характеристики SHA-2 совпадают с SHA-1, и в нём обнаружены незначительные недостатки, в криптомире он по-прежнему считается «стойким». Без сомнения, он лучше, чем SHA-1 и чем любой критический сертификат, приложение или аппаратное устройство, использующие SHA-1. Всё, что использует SHA-1, лучше перевести на SHA-2.
Обработка устаревших хэшей SHA-1
Все крупные поставщики веб-браузеров (например, Microsoft, Google, Mozilla, Apple) и другие доверенные стороны рекомендовали всем клиентам, сервисам и продуктам, в настоящее время использующим SHA-1, перейти на SHA-2, хотя что и когда должно перейти зависит от поставщика. Например, многие поставщики заботятся только о сертификатах TLS (т. е. веб-серверах), и только компания Microsoft озабочена использованием SHA-1 в цифровом сертификате от «публичного» центра сертификации. Но можно ожидать, что все поставщики потребуют перевести на SHA-2 все приложения и устройства, даже если они не готовы к этому. Сейчас большинство браузеров покажет сообщение об ошибке, если на веб-сайте используется публичный цифровой сертификат, подписанный SHA-1, но некоторые из них позволят вам обойти всплывающее окно и перейти на такой сайт. Возможно, в скором времени, все главные поставщики браузеров запретят обход сообщений об ошибке и переходы на сайты, использующие цифровые сертификаты SHA-1.
К сожалению, переход с SHA-1 на SHA-2 является односторонней операцией в большинстве сценариев сервера. Например, как только вы начнёте использовать цифровой сертификат SHA-2 вместо SHA-1, пользователи, не понимающие сертификаты SHA-2, начнут получать предупреждения и уведомления об ошибках, или даже отказы. Для пользователей приложений и устройств, не поддерживающих SHA-2, переход будет опасным скачком.
План перехода ИОК с SHA-1 на SHA-2
Каждая компания с внутренним ИОК, не использующая SHA-2, должна будет создать ИОК SHA-2 или перевести существующую ИОК с SHA-1 на SHA-2. Для перехода нужно:
- Обучить вовлечённых членов команды тому, что такое SHA-2 и почему требуется его использование (эта статья будет хорошим началом).
- Провести инвентаризацию всех критических хешей или цифровых сертификатов, используемых в приложениях или устройствах.
- Определить, какие критически важные устройства или приложения могут использовать SHA-2, какой размер ключа может быть использован и какие операционные проблемы могут возникнуть (этот этап зачастую включает обращение к поставщику и тестирование).
- Определить, какие компоненты ИОК могут или должны быть перенесены в SHA-2.
- Составить план перехода для преобразования компонентов SHA-1 в SHA-2, включая потребителей и компоненты ИОК, плюс резервный план на случай сбоя.
- Провести PoC-тестирование.
- Принять управленческий риск и решение о переходе или отказе от него.
- Внедрить план перехода в производственную среду.
- Провести тестирование и получить обратную связь.
Самая сложная часть перехода — определение того, какие устройства и приложения работают с SHA-2. Если используемые устройства не понимают SHA-2, вас ждёт неудача или сообщение об ошибке, которое вряд ли будет звучать как «SHA-2 не принят». Вместо этого готовьтесь к: «Сертификат не распознан», «Соединение нестабильно», «Соединение не может быть установлено», «Повреждённый сертификат» или «Непроверенный сертификат».
Подумайте о своей миссии, чтобы определить, какие важные части вашей инфраструктуры будут или не будут работать. Начните с попытки инвентаризации каждого уникального устройства, ОС и приложения, которые должны понимать SHA-2. Затем соберите команду людей, которые протестируют, работает ли SHA-2. Можно предварительно полагаться на информацию от поставщиков, но вы не будете знать наверняка пока не проверите самостоятельно.
Обновление приложений и устройств — задача не из лёгких, и потребует больше времени, чем кажется. Даже сейчас существует множество устройств и приложений, использующих старые версии OpenSSL, которые следовало бы обновить после атаки Heartbleed, но администраторы серверов этого так и не сделали.
Если у вас есть внутренняя ИОК, вам понадобится подготовить её к переходу на SHA-2. Иногда это означает обновление ваших центров сертификации, получение новых сертификатов или установку полностью новых ИОК. Последнее рекомендуется по множеству причин, в основном потому, что новая ИОК даст вам шанс начать сначала без груза старых ошибок.
Модели перехода ИОК
Ниже перечислены сценарии для внедрения SHA-2 в компоненты ИОК (для этих примеров используется двухуровневая ИОК — автономная корневая система, онлайн центры сертификации), каждый из которых может быть либо новым компонентом, либо перенесённым:
- Два ИОК дерева, один полностью SHA-1, другой полностью SHA-2.
Остальные сценарии предполагают одно дерево ИОК:
- Всё дерево ИОК, от корня до конечных точек, — SHA-1.
- Всё дерево ИОК, от корня до конечных точек, — SHA-2.
- Корень — SHA-1, выдающие ЦС — SHA-2, сертификаты конечных точек — SHA-2.
- Корень — SHA-1, выдающие ЦС — SHA-2, сертификаты конечных точек — SHA-1.
- Корень — SHA-1, выдающие ЦС — SHA-2 и SHA-1, сертификаты конечных точек — SHA-2 и SHA-1.
- Корень — SHA-2, выдающие ЦС — SHA-1, сертификаты конечных точек — SHA-1.
- Корень — SHA-2, выдающие ЦС — SHA-2, сертификаты конечных точек — SHA-1.
- Корень — SHA-2, выдающие ЦС — SHA-2 и SHA-1, сертификаты конечных точек — SHA-2 и SHA-1.
Также возможно существование выдающего центра сертификации, который переключается между SHA-1 и SHA-2 по необходимости, но это с большой вероятностью вызовет путаницу в службах ИОК (и не особо рекомендуется). Если возможно, для облегчения перехода можно запустить параллельные ИОК, один — с SHA-1, другой — с SHA-2, а потом переводить используемые устройства после того, как позволит тестирование.
Примечание: собственный сертификат ЦС корневого ЦС не нужно переносить на SHA-2, даже если он всё ещё использует SHA-1. Все программы проверки устаревших SHA-1 заботятся обо всём после собственного сертификата корневого ЦС (и будут заботиться, по крайней мере, в обозримом будущем). Тем не менее, имеет смысл переместить всё, включая собственный сертификат ЦС корневого ЦС на SHA-2, чтобы можно было сказать, что вся ИОК — SHA-2, и избежать дальнейших изменений, связанных с SHA-1, в обозримом будущем.
Публичные ЦС уже перешли с SHA-1 на SHA-2 для любых сертификатов со сроком жизни, заканчивающимся после 1 января 2017, поэтому вы должны сосредоточить свои усилия на серверах и приложениях с ещё не перешедшими на SHA-2 публичными цифровыми сертификатами. После решения этой проблемы можно начать смотреть на внутренние ИОК и доверенные стороны. Переход с SHA-1 на SHA-2 технически не сложен, но это массовое логистическое изменение с множеством последствий, которое требует продолжительного тестирования.
Вряд ли большинство поставщиков знают точную дату смерти SHA-1 (т. е. дату, когда его использование в приложении или устройстве будет приводить к «фатальным» ошибкам), но скорее всего это произойдёт раньше, чем вы ожидаете, так как всё больше пользователей переходит на SHA-2. Поэтому вам действительно стоит совершить переход уже сейчас.
SHA-3 уже здесь, но стоит ли его использовать?
Хотя в SHA-2 не обнаружено существенных криптографических слабостей, он считается алгоритмически схожим с SHA-1. Большинство экспертов думают, что его время жизни будет схожим с SHA-1. В августе 2015 NIST утвердило новый алгоритм криптографического хеширования SHA-3. Он не обладает теми же математическими свойствами, что SHA-1 и SHA-2 и должен быть более устойчив к криптографическим атакам, чем его предшественники.
К сожалению, люди, откладывающие свой переход на SHA-2 в надежде сразу перейти на SHA-3, будут очень расстроены. Общемировое принятие стандарта SHA-3 может затянуться на долгие годы, а переход на SHA-2 следует сделать уже сейчас. Если вы перейдёте на SHA-3 сейчас, то большинство, если не все, ваших криптографически-зависимых приложений или устройств, скорее всего, сообщат об ошибке (не смогут распознать цифровой сертификат).
Итак, если вы ещё не перешли на SHA-2, то переходите сейчас. И когда SHA-2 начнёт ослабевать, мы все вместе перейдём на SHA-3.
SHA1
В криптографии SHA-1 (Secure Hash Algorithm 1) — это криптографическая хэш-функция, которая принимает входные данные и создает 160-битное (20-байтовое) хэш-значение, известное как дайджест сообщения, обычно отображаемое как шестнадцатеричное число длиной 40 цифр. Он был разработан агентством национальной безопасности США и Федеральному стандарту обработки информации США.
С 2005 года SHA-1 не считается защищенным от хорошо финансируемых оппонентов, и с 2010 года многие организации рекомендовали его замену на SHA-2 или SHA-3. Microsoft, Google, Apple и Mozilla объявили, что их соответствующие браузеры прекратят принимать SSL-сертификаты SHA-1 к 2017 году.
В 2017 году CWI Амстердам и Google объявили, что они совершили атаку столкновения против SHA-1, опубликовав два разнородных PDF-файла, которые произвели тот же хэш SHA-1.
SHA-1, SHA-2, SHA-256, SHA-384 — Что такое хеш ( Hash — hashing algorithm )
Алгоритм хеширования — это математическая функция, которая уплотняет данные до фиксированного размера. Иногда хеширование называется односторонним шифрованием. Например берем предложение «Что такое хеширование и как с ним бороться» пропускаем его через специальный алгоритм хеширования и получаем щось типа «078945aDf» — этот результат называется хешем (hash) от приведенного предложения. Если необходимо сравнить два файла, то проще сначала вычислить их хеши и сравнить их хеши, чем посимвольно сравнивать два файла. Очень удобно и безопасно получается например для хранения паролей в базе — достаточно сравнить хеш установленного пароля и хеш введенного пароля чтобы удостовериться что введен правильный пароль, плюс сам то пароль не хранится в базе, и это прекрасно с точки зрения безопасности
Существуют сотни алгоритмов хеширования, и все они имеют конкретные цели — некоторые оптимизированы для определенных типов данных, другие — для скорости, безопасности и т. д. SHA расшифровывается как алгоритм безопасного хеширования, он предназначен для криптографической безопасности.
Криптографические алгоритмы хеширования SHA создают необратимые и уникальные хэши.
Необратимый хеш означает, что если у вас есть хеш вы не сможете восстановить исходный фрагмент данных.
Уникальный хеш означает что два разных фрагмента данных никогда не могут создавать один и тот же хеш.
Протокол SSL / TLS используется для обеспечения безопасной передачи данных с одного устройства на другое. SSL сертификат обеспечивает «шифрование» а также обеспечивает аутентификацию. Задача сертификата SSL — предоставить необходимую информацию для аутентификации. Сертификаты SSL связывают определенный открытый ключ с организацией. Протокол SSL / TLS обеспечивает соединение с использованием асимметричного шифрования. Это означает, что есть два ключа шифрования, каждый из которых обрабатывает половину процесса: открытый ключ для шифрования и закрытый ключ для дешифрования. Каждый SSL-сертификат содержит открытый ключ, который используется клиентом для шифрования данных, а владелец SSL-сертификата использует закрытый ключ для расшифровки этих данных. В конечном счете, основной задачей асимметричного шифрования для HTTPS является безопасный обмен сеансовыми симметричными ключами .
Цифровые подписи являются важной частью того, как сертификаты SSL обеспечивают аутентификацию. SSL сертификат подписывается цифровой подписью центра сертификации DigiCert. Эта подпись предоставляет криптографическое доказательство того, что ЦС подписал сертификат SSL и что сертификат не был изменен или воспроизведен. Подпись является доказательством того, что информация, содержащаяся в сертификате, была проверена доверенной третьей стороной — Центром сертификации. ЦС сначала хэширует файл сертификата и подписывает полученный хэш. Это более эффективно, чем подписывать весь сертификат. Цифровая подпись обеспечивают необходимое доказательство того, что сертификат, который вы получили, является точным сертификатом, выданным доверенным центром сертификации для данного веб-сайта. Цифровые подписи чрезвычайно чувствительны — любое изменение в файле приведет к изменению хеша подписи. Это делает невозможным для злоумышленника изменить законный сертификат или создать поддельный сертификат, который выглядит законным.
SHA-1 и SHA-2
SHA обозначает алгоритм безопасного хеширования. SHA-1 и SHA-2 — две разные версии этого алгоритма. Они отличаются как полученный хеш создается из исходных данных и по длине в битах подписи. SHA-1 — это 160-битный хеш. SHA-2 является «семейством» хэшей и имеет различную длину, наиболее популярной из которых является 256-битная. Есть «SHA-224», «SHA-384» «SHA-512». С 2011 по 2015 год SHA-1 был основным алгоритмом, с 2016 года SHA-2 является новым стандартом. (Хронология перехода сохранена ниже для истории 😉
Переход с алгоритма хэширования SHA-1 на SHA-2 ( SHA-256 ) с 1 января 2017
Использование SHA-1 в качестве алгоритма хеширования для подписи сертификатов не одобрялось, а теперь и вовсе не рекомендуется. 😉
Основная причина проблемы — известная уязвимость алгоритма хэширования SHA-1, которая делает возможными атаки, приводящие к конфликтам. Эти атаки могут позволить злоумышленнику создать дополнительные сертификаты, обладающие той же цифровой подписью, что и исходный сертификат.
Microsoft опубликовал рекомендации по безопасности «Deprecation of SHA-1 Hashing Algorithm for Microsoft Root Certificate Program». и перестал принимать SHA-1 сертификаты с 1 января 2017 года. Чтобы работать с платформами Microsoft, все SHA-1 SSL сертификаты должны быть заменены на SHA-256 (SHA-2).
SSL сертификаты с окончанием срока действия после 1 января 2017 должны использовать SHA-2
CodeSigning сертификаты с окончанием срока действия после 1 января 2016 должны использовать SHA-2
Copyright © 1997-2023 adgrafics