1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhaoxm-GmSSL

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

GmSSL

GmSSL — это открытый криптографический инструментарий, который обеспечивает поддержку первого уровня китайских национальных криптографических алгоритмов и протоколов, указанных в стандартах серии GM/T. Являясь ответвлением проекта OpenSSL, GmSSL обеспечивает совместимость на уровне API с OpenSSL и поддерживает все функции последнего. Существующие проекты, такие как веб-сервер Apache, могут быть легко перенесены на GmSSL с небольшими изменениями и простой перестройкой. С момента своего первого выпуска в конце 2014 года GmSSL был выбран в качестве одного из шести рекомендуемых криптографических проектов Open Source China и стал победителем Китайской премии за программное обеспечение Linux 2015 года.

Особенности:

  • Поддержка китайских стандартов криптографии GM/T;
  • Поддержка аппаратных криптографических модулей от китайских производителей;
  • Коммерчески дружелюбная лицензия с открытым исходным кодом;
  • Поддерживается исследовательской группой по криптографии Пекинского университета.

Поддерживаемые алгоритмы:

GmSSL поддерживает следующие криптографические алгоритмы GM/T:

  • SM3 (GM/T 0004-2012): криптографическая хеш-функция с длиной дайджеста 256 бит;
  • SM4 (GM/T 0002-2012): блочный шифр с длиной ключа 128 бит и размером блока 128 бит, также известный как SMS4;
  • SM2 (GM/T 0003-2012): схемы эллиптической кривой криптографии, включая схему цифровой подписи, шифрование с открытым ключом, протокол обмена ключами (аутентифицированный) и одну рекомендованную кривую поля 256-битного простого числа sm2p256v1;
  • SM9 (GM/T 0044-2016): схемы криптографии на основе сопряжения, включая цифровую подпись на основе идентификации, шифрование, протокол обмена ключами (аутентифицированный) и одну рекомендуемую кривую BN 256-бит;
  • ZUC (GM/T 0001-2012): потоковый шифр, с алгоритмом шифрования 128-EEA3 и алгоритмом целостности 128-EIA3;
  • SM1 и SSF33: блочные шифры с длиной ключа 128 бит и размером блока 128 бит без публичной спецификации, предоставляются только вместе с чипом.

GmSSL также поддерживает множество полезных криптографических алгоритмов и схем:

  • Схемы с открытым ключом: Paillier, ECIES (схема интегрированного шифрования на эллиптических кривых);
  • Криптография на основе сопряжений: BF-IBE, BB1-IBE;
  • Блочные шифры и режимы: Serpent, Speck;
  • Режимы блочного шифра: FPE (шифрование с сохранением формата);
  • OTP (одноразовый пароль) на основе SM3/SM4 (GM/T 0021-2012);
  • Кодирование: Base58.

В GmSSL доступны также алгоритмы OpenSSL, такие как ECDSA, RSA, AES, SHA-1.

Протоколы GM/T

Стандарты GM/T охватывают два протокола:

  • Протокол SSL VPN (GM/T 0024-2014);
  • IPSec VPN протокол (GM/T 0022-2014).

Протокол SSL VPN GM/T 0024-2014 отличается от IETF TLS следующими аспектами:

  • Текущая версия TLS — 1.3 (0x0304), а версия GM/T SSL — 1.1 (0x0102);
  • Протокол рукопожатия GM/T SSL отличается от протокола рукопожатия TLS;
  • В GM/T SSL есть дополнительный протокол записей, предназначенный для приложений VPN;
  • GM/T SSL имеет 12 наборов шифров, некоторые из которых не обеспечивают прямую секретность.

Наборы шифров 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zhaoxm-GmSSL.git
git@api.gitlife.ru:oschina-mirror/zhaoxm-GmSSL.git
oschina-mirror
zhaoxm-GmSSL
zhaoxm-GmSSL
master