Алгоритм шифрования SM 3: безопасный, эффективный и широко используемый инструмент шифрования.
Алгоритм шифрования SM 3: безопасный, эффективный и широко используемый инструмент шифрования.

Введение

Криптографический хэш-алгоритм SM3 — это криптографическая хэш-функция, которая широко используется в таких областях, как сетевая безопасность и проверка целостности данных. SM 3 — это китайский стандарт коммерческого криптографического хэш-алгоритма, объявленный Государственным управлением криптографии Китая в 2010 году. Подходит для цифровых подписей и проверки в коммерческих криптографических приложениях.

SM3 находится в SHA-256 Алгоритм, усовершенствованный на основе SHA-256 довольно. СМ3 и MD5 Итерационный процесс аналогичен, также используется MD(Merkle-Damgard)структура。группировка длина сообщений 512 бит, длина значения дайджеста равна 256 Кусочек.

Принцип алгоритма SM 3

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

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

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

Процесс расчета SM3.png
Процесс расчета SM3.png

Заполнение сообщений

SM3 израсширение Шаги сообщения начинаются с 512 биты данных, сгруппированные как входные. Поэтому нам нужно заполнить длину данных до 512 кратное битам. данные Правила заполнения MD5 То же, конкретные шаги заключаются в следующем:

  1. Предположим, что длина сообщения mmm равна lll бит, сначала заполните «1», а затем добавьте ккк «0». где kkk — наименьшее неотрицательное целое число, удовлетворяющее условию (l+1+k)≡448mod 512(l+1+k)\equiv 448\mod512(l+1+k)≡448mod512.
  2. Дополнительное выражениеданныедлинаиз 64 битовая строка, то есть lll двоичное представление. (кусочек это единица измерения, сохраняется последовательность с обратным порядком байтов 1)
  3. Двоичная длина дополненного сообщения m’m’m’ является целым числом, кратным 512.

Заполнение сообщений означает данные, как показано ниже:

sm3Заполнение сообщений.png
sm3Заполнение сообщений.png

группировка сообщений

Заполнение Нужно нажать после сообщения 512 bit Группировать, то есть m′=B0B1⋅⋅⋅Bn−1m'=B^{0}B^1···B^{n-1}m′=B0B1⋅⋅⋅Bn−1 ,в n=l+k+65512n=\frac{l+k+65}{512}n=512l+k+65​。

В дальнейшем расчет будет итеративным, а метод итерации следующий:

Язык кода:javascript
копировать
// CF() — функция сжатия, V(0) — 256-битное исходное. значениеIV, B(i) — заполненная группировка сообщений
for i=0 to n-1
	V(i+1)=CF(V(i), B(i)))

Если после группировки осталась только одна группа, то длина равна 512бит, то есть n=1n=1n=1, m´=B0m´=B_0m´=B0​, V1=CF(V0,B0)V_1=CF(V_0 ,B_0)V1​ =CF(V0​,B0​), полученное V0V_0V0​ является окончательным хеш-значением.

Если групп nnn, выполняется nnn итераций, а окончательным результатом VnV_nVn является окончательное значение хеш-функции.

расширение сообщения

SM 3 итеративное Шаг сжатия не использует группировку данных напрямую для операций, а выполняется путем группировки. сообщений BiB^iBi произведено 132 слово сообщения.

расширение сообщения должны быть группировкой сообщения расширяются в 132 слова W0,W1,,,W67,W0′,W1′,,,W63′W_0,W_1,,,W_{67},W'_0,W'_1,,,W'_{63}W0​,W1​ ,,,W67​,W0′​,W1′​,,,W63′​, то как быть с группировкой сообщений Шерстяная ткань?

  1. Сначала поставь один 512 Группировка битовых данных делится на 16 слова сообщения W0,W1,,,W15W_0, W_1,,, W_{15}W0​,W1​,,,W15​,и как сгенерированный 132 слова сообщенияизвперед 16 индивидуальный.
  2. используйте это 16 слова сообщение итеративно генерирует последующие 52 слово сообщения. for j=16 to 67 W(j) = P(W(j-16) ^ W(j-9) ^ (W(j-3) <<< 15) ^ (W(j-13)<<<7) ^ W(j-6))
  3. Получить последующее с помощью XOR 64 слова。 for j=0 to 63 W'(j)=W(j)^W(j+4)

в итоге получил 132 слова сообщения, перед 68 слова сообщения образуют последовательность WjW_jWj, после 64 слова сообщения образуют последовательность Wj′W'_jWj′​ ,в индекс jjj Начни считать с 0.

итеративное сжатие

SM3 итерационный процесс и MD5 Тоже похоже Структура МД (Меркле-Дамгарда). но СМ3 и MD5 Разница в том, что SM3 использоватьрасширение сообщение получает слово сообщения для выполнения операций.

Процесс расчета SM3.png
Процесс расчета SM3.png

Как рассчитывается сжатие?

  1. Начальное значение IVIVIV присваивается словному регистру A,B,C,D,E,F,G,H{A,B,C,D,E,F,G,H}A,B,C,D, Э, Ф, Г, Х. Хранилище слов использует режим прямого порядка байтов
  2. После этого итоговое значение вычисляется путем итерации и сохраняется в A,B,C,D,E,F,G,H{A,B,C,D,E,F,G,H}A,B,C,D,E,F,G,H середина. for j=0 to 63 SS1 = ((A <<< 12) + E + (Ti <<< (j % 32))) <<< 7 SS2 = SS1 ^ (A <<< 12) TT1 = FFi(A,B,C) + D + SS2 + W' TT2 = GGi(E,F,G) + H + SS1 + W(i) D = C B = A A = TT1 H = G G = F <<< 19 F = E E = P0(TT2) V(i+1) = ABCDEFG ^ V(i)

Основная и самая сложная часть всего алгоритма — это функция сжатия. Функция сжатия объединяет эти восемь переменных. 64 тот же раундизвычислить,водин раундизвычислить过程如下图所示:

sm3итеративное сжатие.png
sm3итеративное сжатие.png

Соедините последнюю итерацию A, B, C, D, E, F, G, HA, B, C, D, E, F, G, HA, B, C, D, E, F, G, H, That то есть ABCDEFGH=VnABCDEFGH=V_nABCDEFGH=Vn — это окончательное значение хеш-функции.

Особенности алгоритма SM 3

  • Безопасность: алгоритм SM 3 обладает высокой способностью к предотвращению столкновений и атаке по второму прообразу.,Может гарантировать целостность данных и безопасность.
  • Эффективность: алгоритм СМ 3 обладает высокой вычислительной эффективностью и подходит для крупномасштабных сценариев шифрования и проверки данных.
  • Применимость: алгоритм СМ 3 подходит для цифровых подписей.、Код аутентификации сообщения、Различные сценарии применения криптографии, такие как генерация случайных чисел.

Применение алгоритма SM 3

Приложения в сетевой безопасности: Метод SM 3 широко используется при проверке целостности и аутентификации личности при передаче данных в сети, обеспечивая надежность сетевой связи.

Применение в криптографии: Алгоритм SM 3 может использоваться в протоколах криптографии, цифровых сертификатах, обмене ключами и других сценариях, обеспечивая надежную безопасность данных.

Заявление в ЭЦП: алгоритм СМ 3 способен генерировать хэш-значение цифровой подписи,Используется для проверки целостности и подлинности документов.,Обеспечивает базовую поддержку электронной коммерции и электронных контрактов.

в заключение

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

Ссылки

Сообщение Государственного управления криптозоологии о выпуске «Алгоритма криптозоологии SM3» (Объявление Государственного управления криптозоологии № 22)_Государственное управление криптозоологии

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose