Дата статьи 22.11.2018

Метод повторного хеширования: разница между SHA-1, SHA-2 и SHA-256 алгоритмами хеширования 

SHA-1, SHA-2, SHA-256, SHA-384 – что всё это значит!? Если вы слышали о «SHA» в множестве его форм, но до сих пор полностью не уверены в том, что означает эта аббревиатура или почему это так важно, то мы попытаемся пролить немного света на эту тему сегодня.

Прежде чем мы коснемся самого SHA, нам нужно узнать, что такое хеш, рассмотреть, как SSL-сертификаты используют хеш для формирования цифровых подписей. Это важные концепции, которые важны для понимания до того, чем вы сможете разобраться, что такое SHA-1 и SHA-2. Давайте начнем.

Что такое хеш?



Алгоритм хеширования — это математическая функция, которая сокращает данные до фиксированного размера. Так, например, если бы мы взяли предложение «Быстрая Коричневая Лиса Прыгает Через Ленивую Собаку» И прогнали его через специальный алгоритм хеширования, известный как CRC32, мы бы получили следующий результат: «07606bb6». Этот результат называется хеш или хеш-значением. Иногда хеширование называют односторонним шифрованием. Хеш удобен, когда компьютеру нужно идентифицировать, сравнивать или иными способами выполнять вычисления в файлах и строках данных. Компьютеру проще сначала вычислить хеш, а затем сравнить значение, нежели сравнивать исходные файлы.  

Одним из ключевых свойств алгоритмов хеширования является детерминизм. Любой компьютер в мире, который понимает алгоритм хеширования, который вы выберете, может локально вычислить хеш предложения из нашего примера и получить тот же самый ответ. Алгоритмы хеширования используются всевозможными способами – они используются для хранения паролей, в базах данных и т.д. Существуют сотни алгоритмов хеширования и все они имеют конкретные цели – некоторые из них оптимизированы для определенных типов данных, другие для обеспечения высокой скорости, третьи – безопасности и т.д. В сегодняшнем разборе нас интересует только SHA алгоритм. SHA расшифровывается как Защитный алгоритм хеширования – его название уже говорит само за себя – он используется для криптографической защиты. Криптографические хеш-алгоритмы производят необратимые и уникальные хеши. Необратимость состоит в том, что, если бы у вас был только хеш, вы не смогли бы его использовать, чтобы выяснить, каков был исходный фрагмент данных, поэтому исходные данные остаются безопасными и неизвестными. Уникальность означает, что две разных части данных никогда не могут превратиться в один и тот же хеш – в следующем разделе объясним, почему это так важно.

Примечание: чтобы было легче читать и понимать эту статью, мы используем примеры в виде строк данных и алгоритмов хеширования, которые значительно короче, чем то, что на самом деле используется на практике. Хеши, которые вы видели в этой статье, не являются хешами SHA любого типа.

Цифровые подписи

Теперь, когда мы знаем, что такое хеш, мы можем объяснить, как он используется в SSL-сертификатах. Протокол SSL/TLS используется для обеспечения безопасной передачи данных с одного устройства на другое через Интернет. Для краткости создается впечатление, что SSL часто понимается, как шифрование. Однако не забывайте, что SSL обеспечивает также аутентификацию. В файле сертификата SSL задается необходимая информация, которая необходима для аутентификации. Или, другими словами, SSL-сертификаты связывают определенный открытый ключ с идентификатором. Запомните, что SSL/TLS протокол способствует соединению с использованием асимметричного шифрования. Это означает, что есть два ключа шифрования, каждый из которых обрабатывает половину процесса: открытый ключ для шифрования и закрытый для дешифровки. Каждый сертификат SSL содержит открытый ключ, который может использоваться для шифрования данных клиентом, а владелец указанного SSL-сертификата надежно хранит закрытый ключ на своем сервере, который они используют для дешифрования данных и делает их доступными для чтения. В конечном счете, основной целью асимметричного шифрования является безопасный обмен ключами.




Асимметричные ключи требуют большой вычислительной мощности, поэтому они также используют (и все еще безопасно) небольшие симметричные ключи для фактической части соединения. Таким образом, клиент генерирует сеансовый ключ, шифрует его копию и отправляет ее на сервер, где он может быть расшифрован и использован для связи в течение всего времени соединения (или до его поворота). Именно поэтому аутентификация невероятно важна для обеспечения того, чтобы SSL/TLS фактически обеспечивал значимую безопасность. Представьте, что ваш компьютер не имел бы надежного способа узнать, кому принадлежит ключ шифрования, который вы использовали?

Шифрование ключа сеанса с помощью такого ключа не будет полезным, потому как вы не знаете, кто владеет соответствующим закрытым ключом, который его расшифрует. В конце концов, шифрование данных малопригодно, если вы отправляете его непосредственно злоумышленнику, посреднику злоумышленника на другом конце провода.

Цифровые подписи являются важной частью того, как SSL-сертификаты предоставляют аутентификацию. Когда выдается сертификат, он подписывается цифровой подписью центром сертификации (CA), выбранным вами в качестве поставщика сертификатов (например, Sectigo, Thawte, Geotrust и т.д.). Эта подпись обеспечивает криптографическое доказательство того, что центр сертификации подписал сертификат SSL, что сертификат не был изменен или воспроизведен. Что еще более важно, подлинная подпись является криптографическим доказательством того, что информация, содержащаяся в сертификате, была проверена доверенной третьей стороной.

Теперь давайте поговорим о том, как цифровая подпись создается, применяется, прикрепляется – выберите удобную терминологию. Асимметричные ключи, о которых мы упоминали ранее, используются снова, но с целью подписи не зашифрованных данных. Математически подписание включает в себя просмотр того, как объединяются данные и ключи (мы не будем заходить слишком далеко в дебри по поводу того, как создаются подписи, потому что они быстро усложняются. Если вас это интересует, Джошуа Дэвис написал отличную статью о том, как работают цифровые подписи). Чтобы упростить работу компьютеров, но все же надежно создать и проверить эти подписи, центр сертификации сначала хеширует файл сертификата и подписывает полученный хеш. Это более эффективно, чем подписание всего сертификата. Эти цифровые подписи затем предоставляют необходимое доказательство того, что предоставленный вам сертификат является достоверным сертификатом, выданным доверенным центром сертификации на соответствующий веб-сайт. Никаких трюков. Никакой имитации. Никаких манипуляций с файлом сертификата SSL/TLS не происходит. Цифровые подписи невероятно чувствительны - любое изменение файла приведет к изменению подписи.

Если бы мы взяли наш пример из предыдущего раздела и сделали его полностью строчным («быстрая коричневая лиса прыгает через ленивую собаку»), получившийся хеш был бы совсем другим. Это означает, что итоговая подпись этого хеша также будет отличаться. Даже изменение одного бита многотысячного гигабайтного документа приведет к совершенно другому хешу. Это делает невозможным для злоумышленников изменение законного сертификата или создание мошеннического сертификата, который выглядит законным. Другой хеш означает, что подпись больше недействительна, и ваш компьютер узнает об этом, когда аутентифицирует сертификат SSL. Если на вашем компьютере обнаружена недопустимая подпись, это приведет к ошибке и полностью предотвратит небезопасное соединение.

SHA-1 и SHA-2



Теперь, когда нами заложенфундамент ваших знаний, можем переходить к звезде сегодняшнего шоу.  Как уже говорилось выше, SHA – это защитный алгоритм хеширования. SHA-1 и SHA-2 – это две разные версии этого алгоритма. Они различаются в конструкциях (как создается хеш из исходных данных) и в битовой длине подписи. Вам следует воспринимать SHA-2, как преемника SHA-1. В первую очередь, люди сосредоточены на бит-длине, как на важном различии. SHA-1 — это 160-битный хеш. SHA-2, на самом деле, является «семейством» хешей и имеет множество длин, наиболее популярной из которых является 256-бит. Разнообразие хешей SHA-2 может привести к путанице, поскольку сайты и авторы обозначают их по-разному. Если вы видите «SHA-2», «SHA-256» или «SHA-256 бит», эти имена относятся к одной и той же вещи. Если вы видите «SHA-224», «SHA-384» или «SHA-512», это относится к чередованию бит-длины SHA-2. Вы также можете увидеть, что некоторые сайты выписывают как алгоритм, так и длину бита, например «SHA-2 384.». Но это неприятно, как заставлять людей называть себя по имени и отчеству, когда вы просите их представиться.

SSL-индустрия выбрала SHA в качестве своего алгоритма хеширования для цифровых подписей

С 2011 по 2015 год SHA-1 был основным алгоритмом. Растущее число исследований, показывающих недостатки SHA-1, вызвало переоценку. Фактически, Google даже зашел так далеко, что создал конфликт SHA-1 (когда две части разрозненных данных создают одно и то же значение хеш-функции). Таким образом, с 2016 года SHA-2 является новым стандартом. Если вы получаете сегодня сертификат SSL/TLS, он должен использовать эту подпись. Иногда вам будут встречаться сертификаты, использующие SHA-2 384-бита. Реже будут встречаться 224-битные типы, поскольку они не одобрены для использования с публично доверенными сертификатами, или 512-битные типы, которые очень редко поддерживаются программным обеспечением. SHA-2, вероятно, останется актуальным еще не меньше, чем на 5 лет. Тем не менее, можно ожидать и некоторую атаку на алгоритм, которая вызвала бы более ранний переход. Вот хеш SHA-1 и SHA-2 сертификата SSL сайта выглядят так: Это то, о чем и шла речь. Возможно, это не так много, но цифровые подписи невероятно важны для обеспечения безопасности SSL\TLS.

Более высокий хеш может обеспечить большую безопасность, поскольку возможны более вероятные комбинации. Помните, что одна из важных функций алгоритма криптографического хеширования заключается в том, что он создает уникальные хеши. Опять же, если два разных значения или файла могут создать один и тот же хеш, то это то, что мы называем конфликтом. Безопасность цифровых подписей может быть гарантирована только при условии, что конфликтов не происходит. Конфликты опасны потому, что они позволяют двум файлам создавать одну и ту же подпись, поэтому, когда компьютер проверяет подпись, она может показаться действительной, даже если файл никогда не был подписан.

Сколько хешей?

Если алгоритм хеширования должен создавать уникальные хеши для каждого возможного ввода, сколько всего возможных хешей? Бит имеет два возможных значения: 0 и 1. Возможное количество уникальных хешей может быть выражено как количество возможных значений увеличенных на количество бит. Для SHA-256 имеется 2 256 возможных комбинаций. Итак, 2 256 комбинаций. Сколько это? Ну, это огромное количество. Шутки в сторону. Это делает цифры, подобные триллиону и септилию, ничтожными. Это намного превышает количество зерен песка в мире. Чем больше число возможных хешей, тем меньше вероятность того, что два значения создадут один и тот же хеш. Обратите внимание, что большая длина бит вовсе не означает, что алгоритм хеширования производит более безопасный хэш. Построение алгоритма также невероятно важно - поэтому индустрия SSL использует алгоритмы хеширования, специально разработанные для криптографической защиты.

Переход на SHA-2

В 2015 году индустрия SSL прошла «переход на SHA-2». Это включало повторную выдачу тысяч существующих сертификатов, чтобы новые файлы могли быть созданы и подписаны с SHA-2. Это также связано с крупными обновлениями программного обеспечения для выпуска, которым работают централизованные доверенные центры сертификации (их десятки). Как и ожидалось, были сбои. Крайний срок для выдачи новых SSL сертификатов с SHA-1 был назначен на 31 декабря 2015. По большей части, выдача была осуществлена к назначенному сроку. С тех пор было сделано несколько ошибок, и произошло несколько особых случаев. Но за последние три года сертификаты SHA-1 почти полностью исчезли. Сегодня, если вы столкнулись с сертификатом SHA-1, вы увидите предупреждение.

В Google Chrome все сертификаты SHA-1, срок действия которых истекал в 2016 году, не показывали зеленый замок в защищенных соединениях и вместо этого отображали тот же значок, что и незащищенное HTTP-соединение. Вы можете щелкнуть на значок, чтобы получить более конкретную информацию о том, почему он отображается, если есть другие причины, не связанные с подписью. Браузеры обрабатывали подписанные сертификаты SHA-1, срок действия которых истекал в 2017 году с более интенсивным предупреждением. Это связано с тем, что безопасность подписи напрямую связана с тем, как долго она действительна.

Сегодня, в 2018 году, Google просто суммарно удаляет незащищенные сайты, оставляя только напоминание о них в качестве предупреждения другим, кто может осмелиться совершить те же ошибки.

Обеспечение безопасности подписей

По прошествии времени атаки на криптографию станут лучше, а мощность компьютерной обработки станет дешевле. Это делает действительную подпись SHA-2 менее безопасной в 2020 году, чем в 2016 году. По этой причине выбирать придется еще более сильный алгоритм, чем это необходимо, чтобы краткосрочные улучшения не привели к компрометации безопасности в будущем. Для алгоритма хеширования нереально не оставаться в безопасности на протяжении десятилетия.

Отраслевые эксперты и исследователи безопасности во всем мире постоянно анализируют алгоритмы SHA-2 и другие криптографические алгоритмы хеширования, поэтому будьте уверены, что SSL-сертификаты будут иметь надежные и безопасные цифровые подписи на протяжении какого-то времени. Это не означает, что криптографы будут просто сидеть и ждать, пока не возникнет проблема. Преемник SHA-2, удобно названный SHA-3, уже создан. Когда придет время сделать другой коммутатор, индустрия SSL может использовать SHA-3 в качестве своего следующего выбора, или сможет воспользоваться совершенно другим алгоритмом.

Требуются годы, чтобы правильно исследовать и проверять новые криптографические стандарты, а затем разрабатывать программное обеспечение, которое их поддерживает. Надеюсь, это обнадеживает, потому что вы знаете, что индустрия всегда, по крайней мере, на один шаг впереди.


Войти Регистрация
Корзина 0 позиций
на сумму 0 ₽
Связаться со мной
Отправить
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Оформить заказ
Заказать
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Сообщение отправлено!
Спасибо за обращение! Мы свяжемся с Вами в ближайшие рабочие часы
Отправка не удалась
Во время отправки запроса произошла ошибка. Пожалуйста, подождите и попробуйте снова через некоторое время или позвоните на мой номер телефона
Авторизация
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Забыли пароль?
\
Регистрация
Восстановление пароля
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Авторизация
\
Регистрация
Ошибка авторизации
Пожалуйста, проверьте корректность данных.
Форма будет автоматически закрыта через 5 секунд
Успешная авторизация
Через 5 секунд страница будет перезагружена и вы сможете войти в свой аккаунт
Ошибка регистрации
Пожалуйста, проверьте корректность данных.
Форма будет автоматически закрыта через 5 секунд
Успешная регистрация
Вам на почту должно прийти письмо с ссылкой на подтверждение аккаунта. Пожалуйста перейдите по ней и активируйте свой аккаунт
Ошибка регистрации
Такой пользователь уже существует. Пожалуйста, проверьте корректность данных.
Регистрация
Ошибка восстановления пароля
Пожалуйста, проверьте корректность email.
Успех
Ваш новый пароль был выслан вам на email
Регистрация
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Авторизация
Создать тикет
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Свяжитесь с нами
Отправляя форму Вы автоматически подтверждаете, что ознакомились и принимаете Политику конфиденциальности сайта
Сообщение отправлено!
Ваше сообщение получено. Наш менеджер свяжется с вами в ближайшие рабочие часы
Проверка DNS валидации
Скачать файл валидации
Для валидации домена разместите скачанный текстовый файл в указанную директорию на Вашем сервере:
Выберите подходящий вариант

К сожалению, выбранный сертификат от данного центра сертификации не может быть выдан. Так как ЦС приостановил выпуск новых/продление заказов для доменов в зоне .ru, .рф, .by, .su, .moscow и для сертификатов с OV, EV проверкой, где фигурирует компания из России.

Пожалуйста рассмотрите возможность выпуска сертификатов от AlphaSSL или Globalsign.