Any comments on using something like the NIST key-derivation proposal?

Maybe HMAC with SHA-256?:

DeviceKey = HMAC-SHA-256(UserKey, OUI || Vendor-Specific Info)

Looks good to me. This option may be the easiest to get NIST certification
for.

The Option 1 for AES key transform potentially limits the amount of vendor unique information to about 13 bytes (16 bytes - 3 byte OUI). It'd
be nice to have a bit more room than that.

If you want to have arbitrarily long vendor-specific information, you can
do something like

    K2[0:127]   = AES-CBC-MAC_k1(1 || OUI || Vendor-Specific Info)
    K2[128:255] = AES-Enc_k1(2 || OUI || pad to 16 bytes)

Like anything CBC, you want the Vendor-Specific Info to be significantly
shorter than 2^64, but other than that it can be of any length.  Also, if
you don't specify a fixed length for the Vendor-Specific Info then you
need to do some special processing on the last block (just like any other
CBC-MAC). Using the same k1 for K2[0:127] and K2[128:255] is not a problem
here.

But really, if you want a long Vendor-Specific Info then you are most
likely better off with the SHA256 solution.

And as fas as I understand, none of that will be in the normative part
of 1619.1 (since there surely will be applications that don't have this
problem, and 1619.1 has no inter-operability aspirations).

-- Shai

Reply via email to