Usage notes
The usage notes for CSNBT31C.
You must use a valid CCA KEK or a TR-31 K1 KEK to wrap a TR-31 external token. K0 KEKs are valid for external TR-31 tokens in CSNBT31X, CSNBT31I, and CSNBKYT2 for legacy purposes, but they are not valid in any other services.
Compliant-tagged TR-31 token notes:
- Compliant-tagged TR-31 key tokens are supported by CCA. The CSNBT31C service can be used to build compliant-tagged tokens. The compliance tag is specified in the IBM proprietary optional block, which has a block ID X’3130 (ASCII ’10’) and TLV X’3032’ (ASCII ’02’). The compliance tag flag is set in the first byte of data (bit 5) and the following three bytes are used as the KDF indicator (the last of these bytes is set to 0x04 to indicate a compliance tag for TR-31).
- To build a compliant-tagged key token in T31C, the COMP-TAG keyword must be specified in the
rule array and you must be building an internal key token. TR-31 tokens cannot be compliant-tagged
if they have
Exportability S. Additionally, you must be in active compliance mode. The returned key token contains the IBM optional block with compliance tag bit set and the KDF indicator. The token must also follow other compliance tag rules (for example, no single length DES). This token can then be used in services that require a compliant-tagged token or can be sent to services CSNBT31X orCSNBT31I to translate it.
Table 1 shows valid TR-31 key usages and Key
Form rule array keywords for a single key (Y stands for 'Yes, keyword is
allowed' and N for 'No, keyword is not allowed').
| TR-31 key usage | TR-31 mode of key use | OP | EX | IM |
|---|---|---|---|---|
| B0 | X | Y | Y | Y |
| B1 | X | Y | Y | Y |
| B3 | X | Y | Y | Y |
| C0 | C,G,V | Y | Y | Y |
| D0 | B,D,E | Y | Y | Y |
| D3 | B,D,E | Y | Y | Y |
| E0 | X | Y | Y | Y |
| E1 | X | Y | Y | Y |
| E2 | X | Y | Y | Y |
| E3 | X | Y | Y | Y |
| E4 | X | Y | Y | Y |
| E5 | X | Y | Y | Y |
| F0 | X | Y | Y | Y |
| F1 | X | Y | Y | Y |
| F2 | X | Y | Y | Y |
| F4 | X | Y | Y | Y |
| K0 | B,E | N | N | N |
| K1 | B,E | N | N | N |
| K4 | D,E | N | N | N |
| M0 | C,G,V | Y | Y | Y |
| M1 | C,G,V | Y | Y | Y |
| M3 | C,G,V | Y | Y | Y |
| M7 | C,G,V | Y | Y | Y |
| P0 | B,D,E | Y | Y | Y |
| V0 | C,G,V | Y | Y | Y |
| V1 | C,G,V | Y | Y | Y |
| V2 | C,G,V | Y | Y | Y |
Valid TR-31 key usage and Key Form rule array keywords for a key pair can be seen
on Table 2. Certain keys can not be built together as
a pair, for example, you cannot build two keys together that both have TR-31 key usage D0 and TR-31
mode of key use D, because you need to have an encryption key to pair with a decryption key.
| generated_key_identifier_1 | generated_key_identifier_2 | Key Form keywords | ||||||
|---|---|---|---|---|---|---|---|---|
| TR-31 key usage | TR-31 mode of key use | TR-31 key usage | TR-31 mode of key use | OPOP | OPOP, OPIM, IMIM | OPEX | EXEX | IMEX |
| B0 | X | B0 | X | N | Y | Y | Y | Y |
| B1 | X | B1 | X | N | Y | Y | Y | Y |
| B3 | X | B3 | X | N | Y | Y | Y | Y |
| C0 | G | C0 | G | N | Y | Y | Y | Y |
| C0 | G | C0 | V | N | Y | Y | Y | Y |
| C0 | V | C0 | G | N | Y | Y | Y | Y |
| D0 | D | D0 | E | N | Y | Y | Y | Y |
| D0 | D | D0 | E (XLATE) | N | Y | Y | Y | Y |
| D0 | E | D0 | D | N | Y | Y | Y | Y |
| D0 | E | D0 | D (XLATE) | N | Y | Y | Y | Y |
| D0 | D (XLATE) | D0 | E | N | Y | Y | Y | Y |
| D0 | D (XLATE) | D0 | E (XLATE) | N | N | Y | Y | Y |
| D0 | E (XLATE) | D0 | D | N | Y | Y | Y | Y |
| D0 | E | D0 | D | N | N | Y | Y | Y |
| D3 | B | D3 | B | N | N | Y | Y | Y |
| D3 | D | D3 | E | N | N | Y | Y | Y |
| D3 | E | D3 | D | N | N | Y | Y | Y |
| K0 | E | K0 | D | N | N | Y | Y | Y |
| K0 | D | K0 | E | N | N | Y | Y | Y |
| K1 | D | K1 | E | N | N | Y | Y | Y |
| K1 | E | K1 | D | N | N | Y | Y | Y |
| K4 | D | K4 | E | N | N | Y | Y | Y |
| K4 | E | K4 | D | N | N | Y | Y | Y |
| M* | G | M* | V | N | N | Y | Y | Y |
| M* | G | M* | G | N | Y | Y | Y | Y |
| M* | V | M* | G | N | Y | Y | Y | Y |
| P0 (ISO4 AES) | D | P0 (ISO4 AES) | E | Y | N | N | N | N |
| P0 (ISO4 AES) | E | P0 (ISO4 AES) | D | Y | N | N | N | N |
| P0 (DES) | E | P0 (DES) | D | N | Y | Y | Y | Y |
| P0 (DES) | D | P0 (DES) | E | N | Y | Y | Y | Y |
| V0 | G | V0 | V | N | N | Y | Y | Y |
| V0 | V | V0 | G | N | N | Y | Y | Y |
| 10 | G | V1 | V | N | N | Y | Y | Y |
| V1 | V | V1 | G | N | N | Y | Y | Y |
| V2 | G | V0 | V | N | N | Y | Y | Y |
| V2 | V | V0 | G | N | N | Y | Y | Y |
Table 3 describes the required ACPs for DK enabled
keys. When using CSNBT31C to
generate one or two DK keys that have DKPINOP, DKPINOPP, DKPINAD1, or DKPINAD2 set in key-usage
field (KUF) 3 of at least one skeleton key-token, Table 3 shows the valid key usage for each DK key and the
required access control command required for each TR-31 key usage.
| generated_key_identifier_1 | generated_key_identifier_2 | Key Form (see note at end of table) | |||||||
|---|---|---|---|---|---|---|---|---|---|
| TR-31 key usage | TR-31 mode of key use | KUF3 HOB usage | TR-31 key usage | TR-31 mode of key use | KUF3 HOB usage | OPOP, OPIM, IMIM | OPEX, IMEX | EXEX | OP, EX, IM |
| P0 (AES) | E | DKPINOP | P0 (AES) | D | DKPINOP | % | |||
| P0 (AES) | D | DKPINOP | P0 (AES) | E | DKPINOP | % | |||
| P0 (AES) | E | DKPINOP | D0 | D | no DK user | % | * | ||
| D0 | D | no DK user | P0 (AES) | E | DKPINOP | % | |||
| P0 (AES) | E | DKPINAD1 | P0 (AES) | D | DKPINAD1 | % | & | ||
| P0 (AES) | D | DKPINAD1 | P0 (AES) | E | DKPINAD1 | % | |||
| M* | G | DKPINOP | M* | V | DKPINOP | % | |||
| M* | V | DKPINOP | M* | G | DKPINOP | % | |||
| M* | G | DKPINAD1 | M* | V | DKPINAD1 | x | x | ||
| M* | V | DKPINAD1 | M* | G | DKPINAD1 | x | |||
| M* | G | DKPINAD2 | M* | V | DKPINAD2 | % | $ | ||
| M* | V | DKPINAD2 | M* | G | DKPINAD2 | % | |||
| V0 | G | DKPINOP | V0 | V | DKPINOP | ||||
| V0 | V | DKPINOP | V0 | G | DKPINOP | ||||
The symbols in the key form columns are as follows:
|
|||||||||