Обзор алгоритма шифрования SHA-256
История создания алгоритма SHA-256
SHA - сокращение от словосочетания Secure Hashing Algorhitm. Является популярным криптографическим алгоритмом хеширования, разработанным АНБ (Агентством Национальной Безопасности) США.
Этот алгоритм относится к семейству алгоритмов шифрования SHA-2 с размером хеша в 224-512 бит, которые, в свою очередь, были разработаны на основе алгоритма хеширования SHA-1 с размером хеша в 160 бит, впервые созданного в 1995 году для использования в гражданских целях (федеральный стандарт обработки информации FIPS PUB 180-1).
Само семейство SHA-2 было разработано Агентством национальной безопасности США весной 2002 года (FIPS PUB 180-2, в который входила и SHA-1). В течение трех лет NSA выпустила патент на использование технологии SHA также и в гражданских проектах(в феврале 2004 года в FIPS PUB 180-2 была добавлена хеш-функция SHA-224). В октябре 2008 года вышла новая редакция стандарта, FIPS PUB 180-3. В марте 2012 года вышла последняя на данный момент редакция FIPS PUB 180-4, в которой были добавлены функции SHA-512/256 и SHA-512/224, основанные на алгоритме хеширования SHA-512 (по причине того, что на 64-битных архитектурах функция SHA-512 работает много быстрее, чем стандартная SHA-256, разработанная для 32 бит).
В 2012 году Национальный институт стандартов и технологий создал обновленную версию алгоритма: SHA-3 (Keccak). SHA-3 является алгоритмом хеширования переменной разрядности. Был разработан и опубликован в 2008 году группой авторов во главе с Йоаном Дайменом, соавтором Rijndael, автором алгоритмов и шифров MMB, SHARK, Noekeon, SQUARE и BaseKing. 2 октября 2012 года SHA-3 стал победителем конкурса алгоритмов криптографии, проводимым NIST (Национальным Институтом Стандартов и Технологий США). Сам конкурс был анонсирован в ноябре 2007, был создан и проведён для дополнения и дальнейшей замены уже устаревших семейств хеш-функций SHA-1 и SHA-2. 5 августа 2015 года новый алгоритм был опубликован и утверждён в качестве нового стандарта FIPS 202. В реализации SHA-3 создатели сообщают, что для его работы требуется всего 12,5 циклов на байт при выполнении на обычном ПК с процессором аналогичным Intel Core2Duo. Однако на самом деле, при реализации в железе, Keccak оказался намного быстрее, чем прочие финалисты конкурса. Со временем новый алгоритм хеширования будет вытеснять как уже устаревший, но все еще иногда используемый SHA-1, так и базовый алгоритм, которым является SHA-2.
Как и для чего используется SHA-256?
Задачей данного алгоритма является создание определенных значений с фиксированной длиной из набора случайных данных, который будет служить идентификатором для этих данных. Полученное значение сравнивается с дубликатами исходных данных, которые невозможно извлечь (расшифровать) каким-либо образом. Основной сфера использования SHA-256 это использование его в различных службах или приложениях, связанных с шифрованием/дешифрованием, а также защитой информации, где эта функция очень широко используется. Также алгоритм SHA-256 используется в качестве технологии для майнинга нескольких популярных криптовалют (Bitcoin, Steemit, DigiByte, PeerCoin, NameCoin и некоторых других), но об этом ниже.
Хэш-сумма не является технологией шифрования данных в ее классическом понимании, именно этим обуславливается невозможность расшифровать данные в обратном направлении. Это одностороннее шифрование в принципе для любого количества данных и любого их типа. Все алгоритмы SHA основаны на методе Merkla-Damgard: вначале данные делятся на однородные группы, далее каждая из таких групп проходит через необратимую и одностороннюю функцию сжатия, в результате действия которой длина данных значительно уменьшается.
Метод имеет два существенных преимущества:
- Быстрая скорость шифрования и почти невозможное дешифрование без ключей
- Минимальный риск возникновения коллизий (идентичных образов).
Где еще используется алгоритм SHA-256?
Каждый день каждый пользователь сети Интернет, зная это или нет, использует SHA-256 практически ежедневно: сертификат безопасности SSL, которым защищены почти все сайты, воснован на использовании алгоритма SHA-256. Это необходимо для установления и аутентификации защищённого и безопасного соединения с сайтом.
Плюсы SHA-256
SHA-256 является наиболее распространенным алгоритмом интеллектуального шифрования среди всех остальных. Он зарекомендовал себя как устойчивый к взлому (за редким исключением) и эффективный алгоритм для задач майнинга криптовалют, а также и для других целей.
Минусы SHA-256
Основным недостатком алгоритма в случае майнинга является чрезмерный его контроль со стороны майнеров: владельцы крупнейших вычислительных мощностей (в основном Китай) получают большую часть намайненной криптовалюты, что исключает децентрализацию как один из основных принципов почти всех криптовалют.
Майнинг, основанный на алгоритме SHA-256
Майнинг на SHA-256, как и майнинг, основанный на любом другом алгоритме шифрования, - это процесс решения любой сложной криптографической задачи, создаваемой программой майнинга на основе данных предыдущих блоков.
Используя SHA-256, можно майнить тремя разными способами:
- CPU (центральный процессор) - самый медленный и невыгодный способ
- Графический процессор (графический процессор)
- ASIC (выделенный процессор или интегральная схема) - один из самых быстрых и выгодных способов
В процессе майнинга хешсумма используется как идентификатор уже существующих блоков и создания новых блоков, основанные на предыдущих. Основной блок состоит из огромного количества подобных хешсумм. Таким образом майнинг с использованием алгоритма SHA-256 - это безостановочный выбор правильного значения хэш-функции и поиск значений для создания нового блока. Чем больше вычислительная мощность вашего оборудования, тем больше шанс получить правильный блок: скорость перебора хешсумм напрямую зависит от возможностей оборудования.
Ввиду того, что майнинг биткойна, как и некоторых других криптовалют, построен на алгоритме SHA-256, для конкурентноспособной добычи требуется чрезвычайно высокая вычислительная мощность. Это связано с тем, что для добычи биткойна уже давно успользуются ASIC'и (Application Specific Integrated Circuit), то есть интегральных схем специального назначения, которые предназначены только для одного определенного алгоритма шифрования. ASIC позволяют быстрее и эффективнее (и дешевле) добывать биткойны и другую криптовалюту, добыча которой основана на алгоритме SHA-256.
SHA-256 по праву можно нахвать классическим криптовалютым алгоритмом, ведь на нем основано "цифровое золото" - биткоин, а также все многочисленные его форки (Bitcoin Cash, Gold, Diamond и прочие).
SHA-256 также используется как часть программного кода в Litecoin, одной из самых популярных криптовалют, но при этом основным алгоритмом майнинга является все же Scrypt.
Спасибо за чтение!