SM4について
SM4は中国の国家標準のブロック暗号で、ブロック長 128ビット・鍵長 128ビット です。SM TLS/SSL、WAPI(無線LANセキュリティ)、電子政府・金融分野など、国密標準のエコシステムで広く利用されています。
AESとの関係と違い
- 共通点:
- いずれも128ビットブロック暗号で、一般的なモード(ECB/CBC)や標準パディング(PKCS#5/7)をサポート。
- 運用モデルは類似:キー(Key)と必要に応じてIVを用い、モード・パディングを選択して平文をブロック処理します。
- 相違点:
- 標準とエコシステム:AESは国際標準(FIPS 197)で世界的に普及、SM4は中国国家標準(GM/T)で国内のコンプライアンス要件に対応。
- 鍵長:AESは128/192/256ビットをサポート、SM4は128ビット固定。
- 性能とハードウェア:AESはCPU/GPUのハードウェアアクセラレーションが広く整備、SM4はプラットフォームによって整備状況が異なります。
- コンプライアンス:国内/中国向けの業務ではSM4が求められる場面が多く、国際的なエコシステムではAESが主流です。
ECB と CBC の比較
| 項目 |
ECB |
CBC |
| IVの使用 |
なし |
あり(16バイト) |
| エラー伝播 |
なし |
あり(ブロック単位) |
| 並列性 |
高い |
低い(連鎖依存) |
| セキュリティ |
低い(構造が露呈) |
高い(推奨) |
| 用途 |
ランダムデータ・テスト |
実業務データ |
- ECB:16バイトごとに独立して暗号化するため、データの構造が露呈しやすく、構造化/繰り返しの多いデータには不向きです。
- CBC:16バイトの乱数IV(使い回し不可)を用いてブロックを連鎖し、パターンを覆い隠すことで実業務に適した安全性を提供します。
パディングと整列
- PKCS#5/PKCS#7:自動的に16バイト倍数へパディング、テキスト/バイナリデータに広く適用可能。
- NoPadding:パディングなし。平文/暗号文の長さは16バイトの倍数である必要があり、整列済みデータや独自プロトコルに適します。
推奨事項
- モード選択:CBCを推奨、構造化データではECBを避ける。
- IV管理:CBCのIVは暗号論的に安全な乱数で、暗号化毎に一意であること。
- キー生成:安全な乱数で128ビット鍵を生成、弱い/予測可能な値を避ける。
- 出力形式:暗号文は HEX または Base64 を使用、システム間伝送には Base64 が推奨。
- コンプライアンス:国内/国密準拠が必要なシステムではSM4、国際的なエコシステムではAESが一般的です。