GmSSL
GmSSL — это открытый криптографический инструментарий, который обеспечивает поддержку первого уровня китайских национальных криптографических алгоритмов и протоколов, указанных в стандартах серии GM/T. Являясь ответвлением проекта OpenSSL, GmSSL обеспечивает совместимость на уровне API с OpenSSL и поддерживает все функции последнего. Существующие проекты, такие как веб-сервер Apache, могут быть легко перенесены на GmSSL с небольшими изменениями и простой перестройкой. С момента своего первого выпуска в конце 2014 года GmSSL был выбран в качестве одного из шести рекомендуемых криптографических проектов Open Source China и стал победителем Китайской премии за программное обеспечение Linux 2015 года.
Особенности:
Поддерживаемые алгоритмы:
GmSSL поддерживает следующие криптографические алгоритмы GM/T:
GmSSL также поддерживает множество полезных криптографических алгоритмов и схем:
В GmSSL доступны также алгоритмы OpenSSL, такие как ECDSA, RSA, AES, SHA-1.
Протоколы GM/T
Стандарты GM/T охватывают два протокола:
Протокол SSL VPN GM/T 0024-2014 отличается от IETF TLS следующими аспектами:
Наборы шифров GM/T 0024-2014:
1. {0xe0,0x01} GMTLS_SM2DHE_SM2SIGN_WITH_SM1_SM3
2. {0xe0,0x03} GMTLS_SM2ENC_WITH_SM1_SM3
3. {0xe0,0x05} GMTLS_SM9DHE_SM9SIGN_WITH_SM1_SM3
4. {0xe0,0x07} GMTLS_SM9ENC_WITH_SM1_SM3
5. {0xe0,0x09} GMTLS_RSA_WITH_SM1_SM3
6. {0xe0,0x0a} GMTLS_RSA_WITH_SM1_SHA1
7. {0xe0,0x11} GMTLS_SM2DHE_SM2SIGN_WITH_SMS4_SM3
8. {0xe0,0x13} GMTLS_SM2ENC_WITH_SMS4_SM3
9. {0xe0,0x15} GMTLS_SM9DHE_SM9SIGN_WITH_SMS4_SM3
10. {0xe0,0x17} GMTLS_SM9ENC_WITH_SMS4_SM3
11. {0xe0,0x19} GMTLS_RSA_WITH_SMS4_SM3
12. {0xe0,0x1a} GMTLS_RSA_WITH_SMS4_SM3
GmSSL поддерживает стандартный протокол TLS 1.2 с наборами шифров SM2/SM3/SM4 и протокол GM/T SSL VPN с наборами шифров. В настоящее время поддерживаются следующие наборы шифров:
ECDHE-SM2-WITH-SMS4-SM3
ECDHE-SM2-WITH-SMS4-SHA256
API Кроме нативного C-интерфейса и командной строки gmssl, GmSSL также предоставляет следующие интерфейсы:
— Java: криптография, X.509 и SSL API через JNI (Java Native Interface).
— Go: криптография, X.509 и SSL API через CGO.
— SKF C API: спецификация прикладного интерфейса криптографии смарт-токенов GM/T 0016–2012.
— SDF C API: спецификации интерфейсов приложений устройств криптографии GM/T 0018–2012.
— SAF C API: спецификация универсального интерфейса сервисов криптографии GM/T 0019–2012.
— SOF C/Java API: спецификация интегрированного интерфейса служб сертификатов GM/T 0020–2012.
Поддерживаемые криптографические устройства:
— USB-ключ через SKF ENGINE и SKF API.
— PCI-E карта через SDF ENGINE и SDF API.
— Наборы инструкций GM (SM3/SM4) через GMI ENGINE.
Это краткое руководство описывает сборку, установку и типичное использование инструмента командной строки gmssl. Посетите сайт http://gmssl.org для получения дополнительной документации.
Скачайте (GmSSL-master.zip), распакуйте его и перейдите в папку с исходным кодом. В Linux и OS X выполните следующие команды:
$ ./config
$ make
$ sudo make install
После установки вы можете выполнить команду gmssl version -a
, чтобы вывести подробную информацию.
Инструмент командной строки gmssl поддерживает генерацию ключей SM2 через опции ecparam
или genpkey
, подписывание и шифрование SM2 через опцию pkeyutl
, SM3 через опции sm3
или dgst
и SM4 через опции sms4
или enc
.
Вот несколько примеров.
Генерация дайджеста SM3:
$ echo -n "abc" | gmssl sm3
(stdin)= 66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0
Шифрование и дешифрование SM4:
$ gmssl sms4 -in README.md -out README.sms4
$ gmssl sms4 -d -in README.sms4
Шифрование и дешифрование ZUC:
$ gmssl zuc -in README.md -out README.zuc
$ gmssl zuc -d -in README.zuc
Генерация закрытого ключа SM2:
$ gmssl sm2 -genkey -out skey.pem
Получение открытого ключа из сгенерированного закрытого ключа SM2:
$ gmssl sm2 -pubout -in skey.pem -out vkey.pem
Создание подписи SM2 и проверка:
$ gmssl sm2utl -sign -in README.md -inkey skey.pem -out README.md.sig
$ gmssl sm2utl -verify -in README.md -pubin -inkey vkey.pem -sigfile README.md.sig
Сгенерируйте пару ключей шифрования SM2 и выполните шифрование открытого ключа SM2. Следует отметить, что pkeyutl -encrypt
следует использовать только для шифрования коротких сообщений, таких как сеансовый ключ и пароль.
$ gmssl sm2 -genkey -out dkey.pem
$ gmssl sm2 -pubout -in dkey.pem -out ekey.pem
$ echo "Top Secret" | gmssl sm2utl -encrypt -pubin -inkey ekey.pem -out ciphertext.sm2
$ gmssl sm2utl -decrypt -inkey dkey.pem -in ciphertext.sm2
Идентифицированное шифрование с помощью SM9:
$ echo "Message" | gmssl pkeyutl -encrypt -pubin -inkey params.pem -pkeyopt id:Alice -out ciphertext.der
$ gmssl pkeyutl -decrypt -inkey sm9key.pem -in ciphertext.der
Самоподписанный сертификат SM2:
$ gmssl req -new -x509 -key skey.pem -out cert.pem
TLS/DTLS с SM2 ciphersuites:
$ gmssl s_server [-tls1_2|-dtls1_2] -port 443 -cipher SM2 -key sm2key.pem -cert sm2cert.pem &
$ gmssl s_client [-tls1_2|-dtls1_2] -connect localhost:443 -cipher SM2 -CAfile cacert.pem
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )