|
CXI
|
Key blobs are encode in a simple, TLV encoded key blob format. Each item is encoded as follows:
| Tag | Lengh | Value |
|---|---|---|
| 2 bytes | 4 bytes | Length bytes |
Items can also encapsulate other items.
Currently two types of key blobs are defined:
A Simple Blob is encoded as follows:
| Simple Blob | |||||||||
|---|---|---|---|---|---|---|---|---|---|
| "KB" | length(KB) | Blob Header | Key Components | ||||||
| "BH" | length(BH) | Property List | "KC" | length(KC) | Components | ||||
| "PL" | length(PL) | Properties | |||||||
The currently defined properties and their format is described here: Key Properties
RSA key blobs may contain the following key component items:
| Item | Tag |
|---|---|
| Public Exponent | "PE" |
| Modulus | "MO" |
| Secret (Private) Exponent | "SE" |
| Prime P | "P " |
| Prime Q | "Q " |
| U := Q^-1 mod P | "U " |
| dP := D mod P-1 | "DP" |
| dQ := D mod Q-1 | "DQ" |
ECDSA key blobs may contain the following key component items:
| Item | Tag |
|---|---|
| Public Key | "PK" |
| Secret (Private) Key | "SK" |
On DES or AES key blobs the key components directly contain the key value.
A current Backup Blob is encoded as follows:
| Backup Blob | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| "BB" | length(BB) | Info item | Property List | Public Key | Initialization Vector | Secret Key | MAC | ||||||||||||
| "BI" | length(BI) | Blob Info | "PL" | length(PL) | Properties | "PK" | length(PK) | Public Key | "IV" | length(IV) | IV for encryption of SK | "SK" | length(SK) | Secret (Private) Key | "CV" | length(CV) | Check Value | ||
The Blob Info item contains information about the blob format, the MBK used to create the backup, the key derivation used for the backup keys and a timestamp.
A legacy Backup Blob (created by CXI firmware modules up to version 2.2.2.2) is encoded as follows:
| Backup Blob | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| "KB" | length(KB) | Property List | Public Key | Secret Key | MAC | ||||||||
| "PL" | length(PL) | Properties | "PK" | length(PK) | Public Key | "SK" | length(SK) | Secret (Private) Key | "CV" | length(CV) | Check Value | ||