Zigbee defines a cryptographic hash based on a block-cipher using the Matyas-Meyer-Oseas (MMO) construction. See Zigbee Specification r21 §B.6.
The MMO construction is general, requiring:
- a block cipher that has a key length equal to the block size
- a padding operation on the input message to align with the block size
- an IV (or salt) of block-size length
Zigbee specifies all of these details for its hash function based on MMO:
- AES-128 is used as the block cipher
- The padding operation is similar to that used for MD and SHA hashes to prevent length-extension attacks, and permitting messages of less than 232 bits in length
- The IV is set to 0 (all bits zero)
The existing Crypto API for hash algorithms is not parameterized or salted. So supporting this use case as a Crypto API hash algorithm requires a new hash algorithm identifier for the Zigbee-specified hash function.
Zigbee defines a cryptographic hash based on a block-cipher using the Matyas-Meyer-Oseas (MMO) construction. See Zigbee Specification r21 §B.6.
The MMO construction is general, requiring:
Zigbee specifies all of these details for its hash function based on MMO:
The existing Crypto API for hash algorithms is not parameterized or salted. So supporting this use case as a Crypto API hash algorithm requires a new hash algorithm identifier for the Zigbee-specified hash function.