Add AES-128/192/256 support to secured packet builder (v1.6.0)

- Bundle aes-js as aes-bundle.js (standalone aesjs global), precache in SW (v7)
- Add AES-CBC (zero IV, 16/24/32B) + AES-CMAC (SP 800-38B, 8-octet) helpers
- genSp(): algorithm dispatch, AES counter hard-block (b5b4 = 10/11 per Rel-18)
- Cross-checked AES vectors against pySim OtaDialectSms.encode_cmd
- Docs: AES + 3DES deprecation, fix stale SPI1 value table
This commit is contained in:
2026-08-13 22:56:35 +03:00
parent 6e2a670fc8
commit 3c03b04157
10 changed files with 1082 additions and 55 deletions
+22 -14
View File
@@ -267,18 +267,23 @@ CLA = `80` (GlobalPlatform v2.3.1). Команды удалённого упра
### SPI1 (Уровень безопасности)
| Значение | Безопасность | Шифрование | Счётчик |
Битовое поле SPI1 (TS 102 225 §5.1.1): `b8b6` — паддинг, `b5b4` — счётчик, `b3` — шифрование, `b2b1` — RC/CC/DS.
| Значение | Безопасность | Шифрование | Счётчик (b5 b4) |
|---|---|---|---|
| 00 | Нет | Нет | Нет |
| 01 | RC | Нет | Нет |
| 02 | CC/MAC | Нет | Нет |
| 06 | CC/MAC | Да | Нет |
| 12 | CC/MAC | Нет | Available |
| 16 | CC/MAC | Да | Available |
| 22 | CC/MAC | Нет | Check higher |
| 26 | CC/MAC | Да | Check higher |
| 32 | CC/MAC | Нет | Check +1 |
| 36 | CC/MAC | Да | Check +1 |
| 00 | Нет | Нет | 00 нет |
| 01 | RC | Нет | 00 нет |
| 02 | CC/MAC | Нет | 00 нет |
| 06 | CC/MAC | Да | 00 нет |
| 0A | CC/MAC | Нет | 01 available |
| 0E | CC/MAC | Да | 01 available |
| 12 | CC/MAC | Нет | 10 higher |
| 16 | CC/MAC | Да | 10 higher |
| 1A | CC/MAC | Нет | 11 +1 |
| 1E | CC/MAC | Да | 11 +1 |
> **AES требует `b5 b4 = 10` (higher) или `11` (+1)** согласно TS 102 225 §5.1.2 и §5.1.3.1.
> Значения `00/01/02/06` (без счётчика) допустимы только для 3DES.
### SPI2 (PoR)
@@ -295,15 +300,18 @@ CLA = `80` (GlobalPlatform v2.3.1). Команды удалённого упра
### Крипто
- **3DES-CBC** шифрование, ключи 8/16/24 байт
- **Retail MAC** (ISO 9797-1 MAC algorithm 3)
- **3DES-CBC** шифрование, ключи 8/16/24 байт — устарело с Rel-18, но поддерживается для обратной совместимости
- **AES-CBC** шифрование (нулевой ICV, дополнение нулями до 16), ключи 16/24/32 байта (TS 102 225 §5.1.2, KIc `x2`)
- **Retail MAC** (ISO 9797-1 MAC algorithm 3) для DES/3DES
- **AES-CMAC** (NIST SP 800-38B, усечённый до 8 октетов) для AES (TS 102 225 §5.1.3.1, KID `x2`)
- Padding byte: `00` (по умолчанию) или `FF`
### Ссылки
- ETSI TS 102 225 V13.0.0
- ETSI TS 102 225 V18.1.0
- ETSI TS 102 226
- ISO 9797-1
- NIST SP 800-38B (CMAC)
---