О SM4
SM4 — китайский национальный блочный шифр с размером блока 128 бит и ключом 128 бит. Широко используется в экосистеме стандартов GM/T, включая SM TLS/SSL, WAPI для безопасности WLAN, электронное правительство и финансы.
Связь с AES
- Общее:
- Оба являются 128-битными блочными шифрами; поддерживают общие режимы (ECB/CBC) и стандартные дополнения (PKCS#5/7).
- Очень похожая модель работы: требуется ключ (Key), опциональный IV, выбор режима и дополнения, затем обработка открытого текста поблочно.
- Различия:
- Стандарты и экосистема: AES — международный стандарт (FIPS 197) и принят по всему миру; SM4 — китайский национальный стандарт (серия GM/T), используемый для соблюдения местных норм и требований регуляторов.
- Длина ключа: AES поддерживает ключи 128/192/256 бит; SM4 фиксирован на 128 бит.
- Производительность и аппаратное обеспечение: современные CPU/GPU имеют более широкое аппаратное ускорение для AES; аппаратное ускорение SM4 улучшается и зависит от платформы.
- Соответствие: в Китае или сценариях, ориентированных на Китай, SM4 часто требуется для соответствия «GuoMi»; в трансграничных/глобальных сценариях обычно используется AES.
ECB против CBC
| Параметр |
ECB |
CBC |
| Использует IV |
Нет |
Да (16 байт) |
| Распространение ошибок |
Нет |
Да (по блокам) |
| Параллелизм |
Высокий |
Низкий (связанный) |
| Безопасность |
Низкая (раскрывает структуру) |
Высокая (рекомендуется) |
| Типичное применение |
Случайные данные, тестирование |
Реальные бизнес-данные |
- ECB: шифрует каждый 16-байтовый блок независимо; раскрывает структурные шаблоны. Не рекомендуется для структурированных/повторяющихся данных.
- CBC: использует случайный и непереиспользуемый 16-байтовый IV; связывает соседние блоки, эффективно маскируя шаблоны и повышая безопасность для бизнеса.
Дополнение и выравнивание
- PKCS#5/PKCS#7: автоматически дополняет до кратности 16 байтам; подходит для большинства текстовых/бинарных данных.
- NoPadding: без дополнения; открытый текст/шифротекст должны быть кратны 16 байтам; подходит для заранее выровненных данных или пользовательских протоколов.
Рекомендации
- Выбор режима: предпочитайте CBC; избегайте ECB для структурированных данных.
- Управление IV: IV режима CBC должен быть криптографически стойким случайным и уникальным для каждого шифрования.
- Генерация ключа: используйте стойкие случайные 128-битные ключи; избегайте слабых/предсказуемых значений.
- Формат вывода: используйте HEX или Base64 для шифротекста; Base64 рекомендуется для межсистемной передачи.
- Соответствие: в Китае или системах, совместимых с GuoMi, используйте SM4; в международных экосистемах обычно основным является AES.