GmSSL поддерживает библиотеку внутренних коммерческих паролей SM2/SM3/SM4/SM9/SSL с открытым исходным кодом.
GmSSL поддерживает библиотеку внутренних коммерческих паролей SM2/SM3/SM4/SM9/SSL с открытым исходным кодом.

Обзор

GmSSL — это набор криптографических инструментов с открытым исходным кодом, который поддерживает SM2/SM3/SM4/SM9/ZUC и другие алгоритмы национальной тайны (национального коммерческого шифрования), цифровые сертификаты национальной секретности SM2 и протоколы безопасной связи SSL/TLS на основе сертификатов SM2, а также поддерживает национальную тайну. Аппаратное обеспечение Криптографическое устройство предоставляет программные интерфейсы и инструменты командной строки, которые соответствуют стандартам национальной безопасности и могут использоваться для создания PKI/CA, защищенной связи, шифрования данных и других приложений безопасности, соответствующих стандартам национальной безопасности.

Проект GmSSL является ответвлением проекта OpenSSL и поддерживает совместимость интерфейса с OpenSSL. Таким образом, GmSSL может заменить компонент OpenSSL в приложении и позволить приложению автоматически иметь возможности безопасности, основанные на национальных секретах. Проект GmSSL использует лицензию с открытым исходным кодом, подобную BSD, которая удобна для коммерческих приложений. Это открытый исходный код, который можно использовать для коммерческих приложений с закрытым исходным кодом.

Проект GmSSL разрабатывается и поддерживается исследовательской группой по криптографии доцента Гуань Чжи из Пекинского университета, а исходный код проекта размещен на GitHub. С момента своего выпуска в 2014 году GmSSL был развернут и применен во многих проектах и ​​продуктах и ​​выиграл второй приз на китайском конкурсе программного обеспечения для Linux «Yiming Cup» 2015 года (высшая награда года) и рекомендованный проект китайской криптографии с открытым исходным кодом. . Основная цель проекта GmSSL — содействие внутренней безопасности киберпространства с помощью технологии криптографии с открытым исходным кодом.

Основные особенности

  • Ультралегкий: GmSSL 3 Он значительно снижает требования к памяти и размер двоичного кода, не использует динамическую память и может использоваться в маломощных встроенных средах без операционных систем (MCU, SOC и т. д.). Разработчикам также может быть проще использовать National. секретный алгоритм и протоколы SSL встроены в существующие проекты.
  • Более совместимо: GmSSL 3 Можно настроить так, чтобы он содержал только национальные секретный алгоритм и национальный секретный протокол (протокол TLCP), основанный на GmSSL Криптографическим приложениям легче удовлетворить требования к обнаружению модели криптографического продукта и избежать путаницы из-за ненациональности секретный Проблемы безопасности и проблемы соответствия, вызванные алгоритмом, а не Безопасностьалгоритмом и т. д.
  • Даже Безопасность:TLS 1.3 имеет огромное улучшение производительности и задержки связи по сравнению с предыдущим протоколом TLS, GmSSL. 3 Поддержка TLS 1.3 Протоколы и RFC Национальная секретная комната 8998. GmSSL 3 По умолчанию поддерживает защиту ключей с помощью шифрования, что повышает способность алгоритма паролей противостоять атакам по побочным каналам.
  • Кроссплатформенность: GmSSL. 3 Легче кроссплатформенности, система сборки больше не зависит от Perl, систему сборки CMake по умолчанию можно легко интегрировать с Visual Studio、При использовании в сочетании со стандартными инструментами компиляции, такими как Android NDK, разработчики также могут вручную писать файлы Makefile в специальных средах компилировать.、Портняжное дело.
  • Поддерживает привязку многоязычного интерфейса и интерфейсы служб REST, такие как Java, Go, PHP и т. д.

Национальный секретный алгоритм

Национальный секретный алгоритм — это аббревиатура национального коммерческого алгоритма паролей. С 2012 года,Государственное управление криптозоологии принимает «Стандарты криптографической отрасли Китайской Народной Республики».,Объявлены один за другимSM2/SM3/SM4Подождите парольалгоритм Стандарты и спецификации их применения。в“SM”представлять«Бизнес-секреты»,То есть технология шифрования, которая используется в коммерческих целях и не содержит государственной тайны.

Среди них SM2 является открытым, основанным на криптографии эллиптических кривых. стандарт ключевого криптографического алгоритма, включая цифровые подписи, обмен ключами и открытый доступ. ключшифрование,используется для заменыRSA/Diffie-Hellman/ECDSA/ECDHВ ожидании международногоалгоритм。SM3Хешировать парольалгоритм,используется для заменыMD5/SHA-1/SHA-256В ожидании международногоалгоритм。SM4для блочного шифра,используется для заменыDES/AESВ ожидании международногоалгоритм;SM9для паролей на основе личностиалгоритм,Она может заменить систему PKI/CA, основанную на цифровых сертификатах. Путем развертывания Национального секретного алгоритма,Это может снизить риски, вызванные слабыми паролями и неправильной реализацией, а также накладные расходы, вызванные развертыванием PKI/CA.

Скомпилируйте и установите

скачать

Язык кода:javascript
копировать
wget https://github.com/guanzhi/GmSSL/archive/refs/tags/v3.1.1.zip
unzip v3.1.1.zip 

Установить

Язык кода:javascript
копировать
cd GmSSL-3.1.1/
mkdir build
cd build/
sudo cmake ..

cmake компилировать

Язык кода:javascript
копировать
 sudo cmake ..
-- The C compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Looking for getentropy
-- Looking for getentropy - found
-- have getentropy
-- Configuring done
-- Generating done
-- Build files have been written to: /home/www/build/GmSSL-3.1.1/build

компилировать

Язык кода:javascript
копировать
make

Установить

Язык кода:javascript
копировать
sudo make install

Ошибка при выполнении gmssl

Язык кода:javascript
копировать
sudo /usr/local/bin/gmssl
/usr/local/bin/gmssl: error while loading shared libraries: libgmssl.so.3: cannot open shared object file: No such file or directory

这时候要编辑/etc/ld.so.confдокумент,Добавьте строку:

Язык кода:javascript
копировать
/usr/local/lib

Затем выполните команду:

Язык кода:javascript
копировать
ldconfig

Введите в командной строке gmssl version

Язык кода:javascript
копировать
sudo /usr/local/bin/gmssl version
GmSSL 3.1.1

когда ты видишьGmSSL 3.1.1когда,Это означает, что gmsslУстановить удалось.

Предоставить разрешения на выполнение текущему пользователю

Язык кода:javascript
копировать
sudo chown www:www /usr/local/bin/

Основные команды

путем выполненияgmssl --help Заказ

Язык кода:javascript
копировать
gmssl --help
gmssl: illegal option '--help'
usage: gmssl command [options]
command -help

Commands:
  help            Print this help message
  version         Print version
  rand            Generate random bytes
  sm2keygen       Generate SM2 keypair
  sm2sign         Generate SM2 signature
  sm2verify       Verify SM2 signature
  sm2encrypt      Encrypt with SM2 public key
  sm2decrypt      Decrypt with SM2 private key
  sm3             Generate SM3 hash
  sm3hmac         Generate SM3 HMAC tag
  sm4             Encrypt or decrypt with SM4
  zuc             Encrypt or decrypt with ZUC
  sm9setup        Generate SM9 master secret
  sm9keygen       Generate SM9 private key
  sm9sign         Generate SM9 signature
  sm9verify       Verify SM9 signature
  sm9encrypt      SM9 public key encryption
  sm9decrypt      SM9 decryption
  pbkdf2          Generate key from password
  reqgen          Generate certificate signing request (CSR)
  reqsign         Generate certificate from CSR
  reqparse        Parse and print a CSR
  crlget          Download the CRL of given certificate
  crlgen          Sign a CRL with CA certificate and private key
  crlverify       Verify a CRL with issuer's certificate
  crlparse        Parse and print CRL
  certgen         Generate a self-signed certificate
  certparse       Parse and print certificates
  certverify      Verify certificate chain
  certrevoke      Revoke certificate and output RevokedCertificate record
  cmsparse        Parse CMS (cryptographic message syntax) file
  cmsencrypt      Generate CMS EnvelopedData
  cmsdecrypt      Decrypt CMS EnvelopedData
  cmssign         Generate CMS SignedData
  cmsverify       Verify CMS SignedData
  sdfutil         SDF crypto device utility
  skfutil         SKF crypto device utility
  tlcp_client     TLCP client
  tlcp_server     TLCP server
  tls12_client    TLS 1.2 client
  tls12_server    TLS 1.2 server
  tls13_client    TLS 1.3 client
  tls13_server    TLS 1.3 server

Шифрование и дешифрование SM4

Язык кода:javascript
копировать
$ KEY=11223344556677881122334455667788
$ IV=11223344556677881122334455667788

шифрование

Язык кода:javascript
копировать
echo Hello Tinywan | gmssl sm4 -cbc -encrypt -key $KEY -iv $IV -out sm4.cbc

// шифрованиесодержание
more sm4.cbc 
$×񓮨ʩ#򴮙

Расшифровать

Язык кода:javascript
копировать
gmssl sm4 -cbc -decrypt -key $KEY -iv $IV -in sm4.cbc
Hello Tinywan

Краткое описание SM3

Язык кода:javascript
копировать
echo -n “Стек технологий с открытым исходным кодом” | gmssl sm3
3b944faa488763d08967e7999aa565f8035277f9b017adc8fe209e81de698465

Генерация открытых и закрытых ключей

Язык кода:javascript
копировать
gmssl sm2keygen -pass 1234 -out sm2.pem -pubout sm2pub.pem

закрытый ключ

Язык кода:javascript
копировать
cat sm2.pem 
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIBBjBhBgkqhkiG9w0BBQ0wVDA0BgkqhkiG9w0BBQwwJwQQD7UeQ0Nd0c8HjwJC
BwrZDAIDAQAAAgEQMAsGCSqBHM9VAYMRAjAcBggqgRzPVQFoAgQQJXNNiqfAxKIx
y4Ze0KxunASBoHsXGe2jtW6N1DkBROWr/QAY9r6zRlZ4JTphVjdy5MzRJo1Wa6pc
+AxPKqouSi5kfayp0nKvJijIZY2e67J3hF327g+xGHj9+keSfTZS1sJfN2c/i1CM
Zcg2IKes5/T3Zk6DRZKcGIwuuUo3cVYcw+oT3lE5onnSBYT0DXdrRpfGzM8yB3Qb
yfEcSLm+f22Xzx05AzyiMKWQHSk7n+aH50o=
-----END ENCRYPTED PRIVATE KEY-----

открытый ключ

Язык кода:javascript
копировать
cat sm2pub.pem 
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE7DOZdFLay3eY7/H8J1CECQ5s2Z8o
4flOpF1HdPjUh4mPGigJzuOp/PzrrEMTuu9cISHqMmHn6XQDP6B6cy56Rg==

открытый ключшифрование

Язык кода:javascript
копировать
echo -n "Tinywan Стек технологий с открытым исходным кодом" | gmssl sm3 -pubkey sm2pub.pem -id 1234567812345678
7b2f0eb9ce8bf75a799bccff590f38178fbe8d14ff56a2ab001ce382b05cfcf0

Подпись и проверка SM2

Язык кода:javascript
копировать
$ gmssl sm2keygen -pass 1234 -out sm2.pem -pubout sm2pub.pem

$ echo hello | gmssl sm2sign -key sm2.pem -pass 1234 -out sm2.sig #-id 1234567812345678
$ echo hello | gmssl sm2verify -pubkey sm2pub.pem -sig sm2.sig -id 1234567812345678

$ echo hello | gmssl sm2encrypt -pubkey sm2pub.pem -out sm2.der
$ gmssl sm2decrypt -key sm2.pem -pass 1234 -in sm2.der

Шифрование и дешифрование SM2

Язык кода:javascript
копировать
$ gmssl sm2keygen -pass 1234 -out sm2.pem -pubout sm2pub.pem

$ echo hello | gmssl sm2encrypt -pubkey sm2pub.pem -out sm2.der
$ gmssl sm2decrypt -key sm2.pem -pass 1234 -in sm2.der

Создайте корневой сертификат SM2 rootcakey.pem и сертификат CA cakey.pem.

Язык кода:javascript
копировать
$ gmssl sm2keygen -pass 1234 -out rootcakey.pem
$ gmssl certgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN ROOTCA -days 3650 -key rootcakey.pem -pass 1234 -out rootcacert.pem -key_usage keyCertSign -key_usage cRLSign
$ gmssl certparse -in rootcacert.pem

$ gmssl sm2keygen -pass 1234 -out cakey.pem
$ gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN "Sub CA" -days 3650 -key cakey.pem -pass 1234 -out careq.pem
$ gmssl reqsign -in careq.pem -days 365 -key_usage keyCertSign -path_len_constraint 0 -cacert rootcacert.pem -key rootcakey.pem -pass 1234 -out cacert.pem

Используйте сертификаты CA для выдачи сертификатов подписи и сертификатов шифрования.

Язык кода:javascript
копировать
$ gmssl sm2keygen -pass 1234 -out signkey.pem
$ gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN localhost -days 365 -key signkey.pem -pass 1234 -out signreq.pem
$ gmssl reqsign -in signreq.pem -days 365 -key_usage digitalSignature -cacert cacert.pem -key cakey.pem -pass 1234 -out signcert.pem

$ gmssl sm2keygen -pass 1234 -out enckey.pem
$ gmssl reqgen -C CN -ST Beijing -L Haidian -O PKU -OU CS -CN localhost -days 365 -key enckey.pem -pass 1234 -out encreq.pem
$ gmssl reqsign -in encreq.pem -days 365 -key_usage keyEncipherment -cacert cacert.pem -key cakey.pem -pass 1234 -out enccert.pem

Объедините сертификат подписи и сертификат CA с сертификатом сервера certs.pem и проверьте

Язык кода:javascript
копировать
$ cat signcert.pem > certs.pem
$ cat cacert.pem >> certs.pem
$ gmssl certverify -in certs.pem -cacert rootcacert.pem

Посмотреть содержимое сертификата

Язык кода:javascript
копировать
$ gmssl certparse -in cacert.pem

Официальная документация: http://gmssl.org/docs/quickstart.html.

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