Применение криптографии в блокчейне: алгоритм хеширования и алгоритм шифрования и дешифрования
Применение криптографии в блокчейне: алгоритм хеширования и алгоритм шифрования и дешифрования

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

Благодаря быстрому развитию компьютерных сетей и коммуникационных технологий в последние годы,,криптография получила беспрецедентное внимание и быстро распространилась.,В то же время области применения также были широко расширены.。Эта статья выбрана из«Коммерческая технология и практика блокчейна»книга,В основном объясняет применение криптографии в Блокчейн.

Хэш-алгоритм

Хэш-алгоритм (хеш-алгоритмы), также известный как хеш-алгоритм, хэш-алгоритм или цифровой отпечаток пальца.,Это алгоритм, который может сжимать сообщение любой длины в сообщение фиксированной длины. Хэш-алгоритм — важная часть технической системы Блокчейн.,Это также важная отрасль современной области криптографии.,Он имеет широкий спектр приложений во многих областях, таких как аутентификация личности и цифровые подписи. Глубокое понимание принципа Хэш-алгоритма,Он играет жизненно важную роль в разработке и внедрении системы Блокчейн.

▊Определение

Хэш-алгоритм можно сделать за очень короткое время,Сопоставьте двоичную строку произвольной длины с двоичной строкой фиксированной длины.,Выходное значение называется хеш-значением (Hash значение) или цифровое резюме (Цифровое Дайджест). Вообще говоря, математическое выражение хеш-функции выглядит следующим образом:

в формуле,Это выходное значение фиксированной длины; это входное значение произвольной длины. Двоичное кодирование любого входного значения (Сообщения) рассчитывается с помощью хеш-функции.,Можно сделать выводnНемного0、1Хэш-значение строки,безразличныйалгоритмсерединаnСтоимость может быть разной,Например, 128, 160, 192, 256, 384 или 512 и т. д. Хэш-алгоритм широко используется в технологии Блокчейн.,Каждый блок связан через хеш-указатели, образуя Блокчейн.,Проверка целостности каждого блока будет выполняться с помощью хэш-операции.

Основной характеристикой криптографии Хэш-алгоритм является односторонность.,то есть по алгоритму,Выходное значение может быть рассчитано только на основе входного значения.,Невозможно вычислить входное значение по выходному значению. Поскольку выходное значение Хэш-алгоритма имеет фиксированную длину,Итак, в Хэш-алгоритме существует проблема коллизий.,Прямо сейчас Хэш-алгоритм Длина выходного значения равнаnбиты,Так,Бери как хочешь2n+1разные входные значения,Должно быть два разных входных значения, которые приведут к одному и тому же выходному значению. поэтому,С определенным количеством входных значений,Чем длиннее выходное значение, тем дольше Хэш-алгоритм,Вероятность столкновения будет меньше.

▊ Обычно используется Хэш-алгоритм

Обычно используется Хэш-алгоритмвключать Алгоритм серии MDи Алгоритмы серии SHA-алгоритм серии MDиметьMD2、MD4、MD5、RIPEMDалгоритмждать,Алгоритмы серии SHAиметьSHA0、SHA1、SHA2、SHA3алгоритмждать。существовать Хэш-алгоритмсередина,Алгоритмы MD5 и SHA1 являются наиболее широко используемыми.,Принципы этих двух случаев не сильно отличаются,Но длина выходного значения после алгоритма шифрования MD5 составляет 128 бит.,Длина выходного значения после алгоритма шифрования SHA1 составляет 160 бит. На Международном конгрессе по криптографии 2004 г.,Профессор Ван Сяоюнь представил метод поиска реальных столкновений для серии Хэш-алгоритмов.,И тут же взломал различные Хэш-алгоритмы, включая MD4, MD5, HAVAL128алгоритмы. 2005 г.,Профессор Ван Сяоюнь дополнительно оптимизировал план,Коллизионные атаки также были успешно выполнены на алгоритмах SHA0 и SHA1. Эти методы атак представляли на тот момент большую угрозу безопасности Хэш-алгоритма.,Но это также способствует разработке и исследованию новых Хэш-алгоритмов.

1. Алгоритмы серии МД

Алгоритм серии MD представляет собой очень широко используемый набор алгоритмов. Самый известный алгоритм MD5 был предложен Рональдом Л. Ривестом из компании RSA в 1992 году и в настоящее время широко используется для проверки целостности данных, дайджеста сообщений, аутентификации сообщений и т. д. Алгоритм MD2 имеет более низкую скорость работы, но относительно безопасен. Алгоритм MD4 имеет более высокую скорость работы, но менее безопасен. Алгоритм MD5 безопаснее и быстрее, чем алгоритм MD4. Хотя безопасность этих алгоритмов постепенно улучшалась, профессор Ван Сяоюнь доказал, что все они недостаточно безопасны. После того, как алгоритм MD5 был взломан, Рональд Л. Ривест в 2008 году предложил более полный алгоритм MD6, но алгоритм MD6 не получил широкого распространения.

В конструкции алгоритма MD5 используется метод построения Меркла-Дамгарда в области криптографии, который представляет собой общий метод, использующий устойчивую к коллизиям одностороннюю функцию сжатия для построения хеш-функции. Основной принцип алгоритма MD5 заключается в сжатии информации данных в 128 бит в виде дайджеста информации. Сначала данные заполняются до целого числа, кратного 512 битам, и заполненные данные группируются, а затем каждая группа делится на 16. 32-битные блоки. Подгруппировка. После расчета подгруппы с помощью определенного алгоритма выходным результатом являются четыре 32-битных данных группировки. Наконец, эти четыре 32-битных данных группировки объединяются для создания 128-битного хэша. значение, которое является окончательным результатом расчета.

2. Алгоритмы серии SHA

SHA(Secure Hash Алгоритм (Безопасный Хэш-алгоритм) — это национальный стандарт, выпущенный Национальным институтом стандартов и технологий, который определяет SHA1, SHA224, SHA256, SHA384 и SHA512 однонаправленного Хэш-алгоритма. SHA1, SHA224 и алгоритм SHA256 работает с сообщениями длиной до 264 бит. SHA384 и SHA512 подходят для сообщений длиной до 2128 бит. Алгоритмы серии SHA в основном применяется к стандартам цифровой подписи (Digital Signature Стандарт, DSS), определенный в алгоритме цифровой подписи (Digital Signature Алгоритм, DSA). Для сообщений длиной менее 264 бит алгоритм SHA1 создает 160-битный дайджест сообщения. Однако было доказано, что алгоритм SHA1 не обладает «сильной устойчивостью к коллизиям». В 2005 году профессор Ван Сяоюнь взломал алгоритм SHA1 и доказал, что 160-битный алгоритм SHA1 требует всего около 269 вычислений для обнаружения коллизий.

В целях повышения безопасности Национальный институт стандартов и технологий (NIST) последовательно выпустил алгоритмы SHA256, SHA384, SHA512 и SHA224, которые вместе называются алгоритмом SHA2. Эти алгоритмы названы в соответствии с длиной выходного хэш-значения. Например, алгоритм SHA256 может преобразовывать данные в хэш-значение длиной 256 бит. Хотя принципы разработки этих алгоритмов аналогичны алгоритму SHA1, эффективных атак на алгоритм SHA2 до сих пор не было. Поэтому Биткойн в начале своего проектирования решил использовать алгоритм SHA256, который был признан самым безопасным и передовым на тот момент. За исключением алгоритма RIPEMD160, в одной части процесса генерации биткойн-адресов требуются хэш-операции. в других местах все используют алгоритм SHA256 или двойной алгоритм SHA256, например, для расчета идентификатора блока, расчета идентификатора транзакции, создания адреса, процесса консенсуса PoW и т. д.

▊ Алгоритм SHA256

В блокчейн-системах Биткойн и Ethereum алгоритм SHA256 является основой алгоритма доказательства рабочей нагрузки. Конкретный алгоритм доказательства рабочей нагрузки подробно описан в следующих главах. В системе Биткойн алгоритм доказательства работы вычисляет алгоритм SHA256 только один раз, тогда как в системе Ethereum алгоритм доказательства работы вычисляет алгоритм SHA256 дважды.

Часто используемые параметры процесса Хэш-алгоритма показаны в таблице ниже.

Хэш-алгоритм

MD5

SHA1

SHA256

Длина выходного значения (биты)

128

160

256

Длина внутреннего значения состояния (биты)

128

160

256

Размер блока (биты)

512

512

512

Рассчитайте количество итераций (раз)

64

80

64

Длина значения внутреннего состояния напрямую влияет на длину конечного выходного значения.,Как Хэш-алгоритм продолжает развиваться,Длина значения внутреннего состояния продолжает увеличиваться,Длина соответствующего выходного значения также увеличивается. Просто продолжайте увеличивать длину выходного значения.,Только таким образом можно увеличить сложность взлома. Благодаря постоянным углубленным исследованиям Хэш-алгоритма,Постепенно мы найдем более дешевые решения для взлома.,Это также мотивирует нас постоянно улучшать внутренние детали Хэш-алгоритма. Мы нашли способ упростить взлом алгоритмов MD5, SHA1,Таким образом, текущая безопасность алгоритмов MD5 и SHA1 значительно снижается.,Больше не рекомендуется использовать,В настоящее время он больше используется для проверки файлов. в настоящий момент,Алгоритм SHA256 относительно безопасен.,Однако не исключено, что в ближайшем будущем,Мы откроем новые хаки.

Алгоритмы шифрования и дешифрования

Хэш-алгоритм — это только односторонняя криптосистема,То есть это необратимое преобразование сообщения в дайджест.,Только прямой процесс,Обратного процесса не существует. В системе Блокчейн,Для генерации адреса учетной записи Блокчейн и передачи данных также будет использоваться криптографическая система, поддерживающая шифрование и дешифрование. Криптосистемы делятся на Симметричную криптосистему и асимметричную криптосистему. Традиционная криптография в основном изучает симметрию шифрования.,То есть использование одного и того же ключа или правила в процессе шифрования и дешифрования.,Его преимущества в том, что он общедоступен, требует небольшого объема вычислений и работает быстро. Однако,Симметричное шифрование требует, чтобы отправитель и получатель использовали один и тот же ключ.,Поэтому сложность достижения эффективного распределения ключей и безопасного хранения является его самым большим недостатком. в то же время,Каждая пара отправителя и получателя должна использовать один и тот же ключ.,Это позволит генерировать большое количество ключей в крупномасштабных коммуникациях.,Это увеличивает нагрузку пользователя по управлению ключами.

▊ Симметричная криптосистема

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

Криптосистема состоит из двух основных компонентов: криптографического алгоритма и ключа. Ключ представляет собой частные данные и хранится у пользователя, а алгоритм является общедоступным, и любой может использовать тот же алгоритм. Принцип симметричного шифрования показан на рисунке 3-1. Симметричное шифрование — это преобразование. Пользователь А отправляет зашифрованное сообщение пользователю Б и передает его пользователю Б. Пользователь Б получает сообщение и обратно расшифровывает исходную информацию. 

На ранних этапах практического применения алгоритмов симметричной криптографии распределение ключей когда-то было сложной проблемой. 1976 Уитфилд Диффи Диффи и Мартин Германн Hellman)диссертация《криптографияновые направления》(New Directions in Cryptography)предложенныйDiffie-Hellmanобмен ключамиалгоритм,Решена проблема распределения ключей алгоритмом симметричного шифрования. В документе также указывается,шифрование и дешифрование могут использовать разные ключи и правила,Это впервые позволяет двум сторонам без общего ключа безопасно общаться. Эта эпохальная работа заложила основу асимметричной криптосистемы. Исследовательский бум в области криптографии привел к тому, что концепция использования криптографии для защиты личной жизни и свободы глубоко укоренилась в сердцах людей. в то же время,Первоначальные исследования в области цифрового шифрования валюты также находятся на подъеме.,Появились прототипы цифровых шифрованных валют, такие как криптографическая анонимная денежная система eCash, распределенное электронное шифрование валюты B-money и хэш-наличные HashCash.,Он предоставил практическое руководство для дальнейшего рождения Биткойна.

асимметричная криптосистема

Ключи для асимметричной криптосистемы появляются парами.,Разделен на две части: открытый ключ и закрытый ключ.,Открытый ключ PK используется для шифрования или проверки подписи.,Закрытый ключ SK используется для расшифровки или подписи.,Знает только расшифровщик. Закрытый ключ не может быть выведен из открытого ключа между двумя ключами.,Данные с использованием открытого ключа шифрования могут быть расшифрованы только с использованием соответствующего закрытого ключа.,Данные, подписанные закрытым ключом, можно проверить только с помощью соответствующего открытого ключа. Принцип асимметричного шифрования показан на рисунке 3-2. Пользователь A использует открытый ключ PK пользователя B для выполнения шифрования открытого текста P и получения зашифрованного текста C.,Пользователь B использует свой секретный ключ SK для расшифровки зашифрованного текста C и получения открытого текста P. Асимметричная криптосистема по сравнению с симметричной криптосистемой,Имеет не только функцию конфиденциальности,В то же время можно также обеспечить распределение ключей и аутентификацию личности. Аутентификация личности на основе цифровых подписей является типичным применением асимметричных криптосистем. в этом процессе,Пользователь A сначала подписывает сообщение M своим секретным ключом SK, чтобы получить S.,Затем пользователь B использует открытый ключ PK пользователя A для проверки M и S.,Чтобы определить, является ли S подписью пользователя от А до М. В типичной системе связи,Сообщение M — это случайное число, отправленное пользователем B пользователю A.,Если пользователь A может вычислить правильную подпись S, используя M и свой собственный секретный ключ SK,и прошел верификацию пользователя Б,Затем пользователь Б может подтвердить личность пользователя А.,В противном случае Пользователь Б откажется от дальнейшего общения с Пользователем А.

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

▊ Алгоритм ED25519

Алгоритм ED25519 — это алгоритм подписи эллиптической кривой, разработанный ученым и криптографом Дэниелом Джулиусом Бернштейном в 2006 году, который полностью отличается от любого существующего алгоритма эллиптической кривой и может использоваться для подписей блокчейна. Процесс подписи не полагается на генератор случайных чисел, не зависит от устойчивости хеш-функции к коллизиям и не подвержен атакам по временным каналам.

Алгоритм ED25519 принадлежит к семейству алгоритмов EDDSA и использует параметры эллиптической кривой Curve25519. Его сигнатура и производительность проверки чрезвычайно высоки. В системах Bitcoin и Ethereum алгоритм подписи использует параметры эллиптической кривой Secp256k1 семейства ECDSA. В следующей таблице показано сравнение характеристик этих двух алгоритмов эллиптической кривой.

Алгоритм эллиптической кривой

Secp256k1 (алгоритм ECDSA)

Curve25519 (алгоритм ED25519)

Длина закрытого ключа (байты)

32

32

Длина открытого ключа (байты)

33

32

Длина данных подписи (байты)

около 70

64

Диапазон ввода параметров (биты)

2128

2128

Как видно из сравнения основных данных в приведенной выше таблице, разница между алгоритмом ECDSA, реализованным с помощью Secp256k1, и алгоритмом ED25519, реализованным с использованием Curve25519, относительно невелика. Разница в том, что алгоритм ED25519 ориентирован на безопасность. Его процесс подписи не основан на случайных функциях, имеет характеристики защиты от хеш-коллизий и не подвергается опасности атак по временным каналам.

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

в настоящий момент,Технология Блокчейн находится на пороге масштабного коммерческого применения,Нам очень необходимо обсудить технологический прогресс и тенденции развития коммерческой технологии блокчейна.

«Коммерческая технология и практика блокчейна»Эта книга из рекламы Блокчейн Начиная с точки зрения основных потребностей,Подробно представлена ​​архитектура продукта и лежащие в ее основе ключевые технологии Блокчейн.,И о болевых точках отрасли、решение、Типичные бизнес-кейсы анализируются с точки зрения основных ценностей.

Эта книга имеет очень хорошую справочную ценность для понимания технического позиционирования и методов реализации блокчейна в сценариях коммерческого применения!

▼ Отсканируйте QR-код, чтобы получить подробную информацию об этой книге ▼

Язык кода:javascript
копировать
Если вам понравилась эта статья, добро пожаловать Смотрим丨Оставить сообщение丨Поделиться в Moments Три подряд
 Рекомендуемые горячие статьи  
Список книг: Не бойтесь простоев и аномалий в базе данных.
Сухая информация丨Котлин весной Bootсередина的应用算数orгадание,О чем именно вы имеете в виду, когда говорите о «прогнозировании» с деловыми людьми? Отец Python присоединяется к Microsoft,Как только он открыл рот, он понял, что он старый «Фан Цзянь».

НажмитеПрочитайте оригинальную статью,Узнайте больше об этой книге~

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода