Безопасность
Что библиотека берёт на себя
- Случайность только из 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) |
Полный справочник
Китайская страница разбирает каждый пункт подробнее.