Sobre SM4
SM4 es el cifrado de bloque nacional chino con bloque de 128 bits y clave de 128 bits. Se utiliza ampliamente en el ecosistema de estándares GM/T, incluyendo SM TLS/SSL, WAPI para seguridad WLAN, gobierno electrónico y finanzas.
Relación con AES
- Puntos en común:
- Ambos son cifrados de bloque de 128 bits; admiten modos comunes (ECB/CBC) y rellenos estándar (PKCS#5/7).
- Modelo operativo muy similar: requiere clave (Key), IV opcional, selección de modo y relleno, y procesamiento por bloques del texto plano.
- Diferencias:
- Estándares y ecosistema: AES es un estándar internacional (FIPS 197) con adopción global; SM4 es un estándar nacional chino (serie GM/T) para cumplir requisitos locales.
- Longitud de clave: AES admite 128/192/256 bits; SM4 es fijo en 128 bits.
- Rendimiento y hardware: AES tiene aceleración por hardware más extendida en CPU/GPU; la aceleración de SM4 está mejorando y depende de la plataforma.
- Cumplimiento: en China o escenarios orientados a China, a menudo se requiere SM4 para la conformidad “GuoMi”; en escenarios internacionales se usa comúnmente AES.
Comparación ECB vs CBC
| Ítem |
ECB |
CBC |
| ¿Usa IV? |
No |
Sí (16 bytes) |
| Propagación de errores |
No |
Sí (por bloque) |
| Paralelismo |
Alto |
Bajo (encadenado) |
| Seguridad |
Baja (revela estructura) |
Alta (recomendado) |
| Uso típico |
Datos aleatorios, pruebas |
Datos de negocio reales |
- ECB: cifra cada bloque de 16 bytes de forma independiente; revela patrones estructurales. No recomendado para datos estructurados/repetitivos.
- CBC: usa un IV de 16 bytes aleatorio y no reutilizable; encadena bloques adyacentes, enmascarando patrones y mejorando la seguridad en uso empresarial.
Relleno y alineación
- PKCS#5/PKCS#7: relleno automático hasta múltiplos de 16 bytes; adecuado para la mayoría de datos de texto/binario.
- NoPadding: sin relleno; texto plano/cifrado debe ser múltiplo de 16 bytes; útil para datos ya alineados o protocolos personalizados.
Recomendaciones
- Selección de modo: preferir CBC; evitar ECB para datos estructurados.
- Gestión de IV: el IV en CBC debe ser aleatorio criptográficamente y único por cifrado.
- Generación de clave: usar claves seguras aleatorias de 128 bits; evitar valores débiles/predecibles.
- Formato de salida: HEX o Base64 para el cifrado; Base64 recomendado para transporte entre sistemas.
- Cumplimiento: en sistemas dentro de China o que requieran conformidad nacional, usar SM4; en ecosistemas internacionales, AES suele ser principal.