Алгоритм шифрования 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
Учебное пособие по 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 и детали кода