TASSL
Поддержка криптографических сертификатов и протоколов Государственной системы коммерческих криптоалгоритмов компанией Beijing Jiangnan Tianan Technology Co., Ltd.
OpenSSL — это набор открытых исходных кодов библиотек для криптографии, включающий основные криптографические алгоритмы, функции управления ключами и сертификатами, а также протоколы SSL/TLS. Он предоставляет богатый набор API для использования в разработке, тестировании или других целях. OpenSSL широко интегрирован в различных операционных системах и используется как базовый компонент, любимый многими любителями IT. Даже если некоторые операционные системы не включают его как компонент, его легко можно скомпилировать и использовать, скачав исходный код.
Хотя функциональность OpenSSL и обширна, она далека от китайской коммерческой криптографической системы, так как включает только международные стандартные криптографические алгоритмы, системы аутентификации и протоколы, но не поддерживает китайские открытые алгоритмы SM2, SM3, SM4 и другие криптографические алгоритмы. Это создает проблемы для любителей криптографии, которые хотят продвигать и изучать китайскую коммерческую криптографическую систему.В Китае есть много специалистов по криптографии, которые пытаются адаптировать OpenSSL для использования с криптографическими сертификатами Государственной системы коммерческих криптоалгоритмов, но большинство таких попыток ограничиваются внутренним использованием в компаниях, что затрудняет продвижение таких решений. В ответ на эту ситуацию компания Beijing Jiangnan Tianan провела длительное исследование и в первой половине 2017 года выпустила версию OpenSSL, поддерживающую китайскую коммерческую криптографическую систему, известную как TaSSL. Это решение позволяет решить проблему отсутствия поддержки китайской коммерческой криптографической системы в OpenSSL. Компания предоставляет исходный код для использования и исследования, чтобы способствовать продвижению и применению криптографических сертификатов Государственной системы коммерческих криптоалгоритмов.### (1) Функциональные особенности Tianan TaSSL
- Включить в OpenSSL криптографические алгоритмы ГНУЦ (SM2, SM3, SM4) и криптографическую последовательность Цзу Чжун-Цзы и пометить их OID, строго соблюдая требования ГОСТ Р 34.10-2012 «Нормы и правила применения криптографических алгоритмов»;
- Включить SM2 в качестве встроенной кривой EC, что позволяет использовать ECDSA и ECDH для подписи и обмена ключами соответственно;
- Использовать функции
EVP_DigestSignInit,
EVP_DigestSignUpdate,
EVP_DigestSignFinal,
EVP_DigestVerifyInit,
EVP_DigestVerifyUpdate,
EVP_DigestVerifyFinal
для автоматизированного и умного выполнения процесса подписи и проверки подписи SM2;
- Реализовать алгоритм шифрования с открытым ключом SM2, а также добавить в OpenSSL алгоритм шифрования с открытым ключом ECIES для шифрования ключей по международным кривым EC;
- Реализовать использование алгоритма SM1 с помощью движка;
- Реализовать криптографические наборы TLSv1.1 для ГНУЦ, описанные в ГОСТ Р 34.11-2014 «Технический стандарт SSL-VPN»;
- Добавить поддержку двойных сертификатов для коммерческой криптографической системы Китая;
- Улучшить поддержку командной строки OpenSSL для алгоритмов коммерческой криптографической системы Китая;
- Улучшить поддержку X509 для коммерческой криптографической системы Китая.
(2) Добавленные и улучшенные API в TianAnTaSSL#### API, связанные с криптографией
- EVP_sm3(): функция-указатель на вызов EVP для алгоритма SM3.
- EVP_sm4(), EVP_sm4_cbc(): функции-указатели на вызов EVP для симметричного шифрования SM4 в режиме CBC.
- EVP_sm4_cfb(): функция-указатель на вызов EVP для симметричного шифрования SM4 в режиме CFB.
- EVP_sm4_ecb(): функция-указатель на вызов EVP для симметричного шифрования SM4 в режиме ECB.
- EVP_sm4_ofb(): функция-указатель на вызов EVP для симметричного шифрования SM4 в режиме OFB.
- Функции серии EVP_PKEY: улучшены для вызова алгоритма SM2.
- EVP_DigestSignInit(), EVP_DigestVerifyInit(): улучшены для вычисления значения Z при подписи SM2.
- EVP_PKEY_CTX_set_sm2_peer_id(): устанавливает идентификатор и длину идентификатора для стороны, с которой происходит согласование ключей SM2.
- EVP_PKEY_CTX_set_sm2_self_id(): устанавливает идентификатор и длину идентификатора для стороны, которая согласовывает ключи SM2.
- EVP_PKEY_CTX_set_sm2_server_tag(): устанавливает идентификатор сервера или клиента для согласования ключей SM2.
- EVP_PKEY_CTX_set_sm2_peer_ecdhe(): устанавливает временное публичное ключевое значение SM2 для стороны, с которой происходит согласование ключей.
- EVP_PKEY_CTX_gen_sm2_ecdhe_key(): генерирует и получает временное ключевое значение SM2 для стороны, которая согласовывает ключи.
- EVP_PKEY_CTX_get_sm2_ecdhe_key(): получает временное ключевое значение SM2 для стороны, которая согласовывает ключи.
14.EVP_PKEY_CTX_set_sm2_ecdhe_key(): устанавливает временное ключевое значение SM2 для стороны, которая согласовывает ключи.
- EVP_PKEY_CTX_set_sm2_encdata_format(): устанавливает формат зашифрованных данных для вызова функций EVP_PKEY, где формат 0 соответствует DER-кодировке, то есть стандарту SM2; не 0 соответствует двоичному формату C1C3C2.
- Функции серии ECDSA: улучшены для вызова алгоритмов подписи и проверки подписи SM2.
- ECDSA_sm2_get_Z(): вычисляет значение Z для алгоритма подписи SM2. Подробности см. раздел 5.5 документа GMT 0003-2012 "Дополнительная информация пользователя".
- ECDH_compute_key(): улучшена для вызова согласования ключей SM2.
- SM2Kap_compute_key(): функция вычисления общего ключа для TLSv1.1 по стандарту ГОСТ.
- SM3(), SM3_Init(), SM3_Transform(), SM3_Update(), SM3_Final(): функции серии алгоритма SM3.
- SM4_set_key(), SM4_encrypt(), SM4_decrypt(), SM4_ecb_encrypt(), SM4_cbc_encrypt(), SM4_cfb_encrypt(), SM4_ofb_encrypt(): функции серии алгоритма SM4.
- sm2_encrypt(), sm2_decrypt(), sm2_do_sign(), sm2_do_verify(), i2d_sm2_enc(), d2i_sm2_enc(): функции подписи, проверки подписи, шифрования и расшифрования для алгоритма SM2.
- EVP_sm1(), EVP_sm1_cbc(), EVP_sm1_cfb(), EVP_sm1_ecb(), EVP_sm1_ofb(): зарезервированные функции для алгоритма SM1, используемые для реализации алгоритма SM1 с помощью движка. #### API, связанные с SSL
- CNTLS_client_method(): Получает методы SSL/TLS, соответствующие стандарту ГОСТ TLSv1.1, для использования клиентом при установлении соединения и передаче данных с использованием стандартного протокола TLSv1.1;
2.SSL_CTX_check_enc_private_key(), SSL_check_enc_private_key(), SSL_use_enc_PrivateKey(), SSL_use_enc_PrivateKey_ASN1(), SSL_CTX_use_enc_PrivateKey(), SSL_CTX_use_enc_PrivateKey_ASN1(), SSL_use_enc_PrivateKey_file(), SSL_CTX_use_enc_PrivateKey_file()
Функции, добавленные для поддержки двойной сертификации ГОСТ.### (3) Использование TASSL
- Открытая версия основана на OpenSSL 1.0.2o, 27 марта 2018 года;
- Вопросы разработки, компиляции, тестирования сертификатов и синхронизации с браузером 360 ГОСТ могут быть найдены в разделе Issues;
- Основная цель нашего открытия — продвижение и применение алгоритмов ГОСТ, чтобы все вокруг знали о TASSL, и чтобы больше компаний и людей использовали TASSL, создавая активное сообщество и расширяя применение алгоритмов ГОСТ.
(4) О компании Tianan Jiangnan
Адрес: 11-й этаж, офис 1110, здание Jin'ao International, 17 Maodian East Road, район Хай뎬, Пекин, Китай
Почтовый индекс: 100088
Телефон: 010-82326383
Факс: 010-82328039
Электронная почта: tassl@tass.com.cn
Веб-сайт: www.tass.com.cn
Комментарии ( 0 )