Skip to content

Безопасность ​

Что библиотека берёт на себя ​

  • Случайность только из CSPRNG хоста — любой k, r и приватный ключ d берутся из globalThis.crypto.getRandomValues (в Node — из webcrypto). Встроенного RNG нет.
  • Отбор с отбраковкой для приватных ключей — 256-битные кандидаты пересоздаются, пока не окажутся меньше порядка кривой, а не приводятся по модулю.
  • Открытый ключ обязан лежать на кривой — sm2.encrypt проверяет y² ≡ x³ + ax + b (mod p) и бросает InvalidPublicKeyError. sm2.verify в таком случае просто возвращает false.
  • Повторное использование потока ключей запрещено — zuc.zucEncrypt помнит использованные тройки (key, iv, counter) и бросает InvalidKeyError при повторе. Таблица ограничена (4096 записей, FIFO).
  • Сравнение подтверждений за постоянное время — S_A / S_B в обмене ключами SM2 / SM9 сравниваются побайтово за постоянное время.

Что решаете вы ​

  • Кеш вывода открытого ключа SM2 (включён по умолчанию) — ускоряет sign с 252 до 142 µs, ценой хранения hex приватного ключа и выведенного открытого ключа в памяти процесса. Отключается через sm2.configurePublicKeyCache({ enabled: false }).
  • ECB и шифрование без аутентификации — ECB раскрывает структуру; CTR / OFB / ECB не дают целостности. Нужны и конфиденциальность, и целостность — используйте SM4-GCM.
  • Уникальность IV / nonce — повтор IV в GCM при том же ключе фатален. Библиотека не генерирует IV за вас.
  • Хранение и жизненный цикл ключей — библиотека делает алгоритмы, а не управление ключами. Она не пишет на диск и в логи, но localStorage / логирование / отчёты об ошибках — ваш код.

Вне области ​

HSM / PKCS#11; X.509 / PKCS#7 / CMS; жёсткие гарантии стойкости к утечкам по сторонним каналам (поведение WASM за постоянное время не полностью под контролем библиотеки).

Рекомендуемые сочетания ​

ЗадачаВыбор
ХешированиеSM3
Симметричное шифрование + целостностьSM4-GCM
Только конфиденциальностьSM4-CTR (уникальный IV) или SM4-CBC (непредсказуемый IV)
Цифровая подписьSM2 + SM3withSM2
Шифрование открытым ключомSM2 (C1C3C2)
Идентификационная криптографияSM9
Протоколы мобильной связиZUC (EEA3 + EIA3)

Полный справочник

Китайская страница разбирает каждый пункт подробнее.

Лицензия Apache-2.0