Overview
MCF548x Reference Manual, Rev. 3
Freescale Semiconductor 22-7
The MDEU also supports HMAC computations, as specified in RFC 2104.
With any hash algorithm, the larger message is mapped onto a smaller output space, therefore collisions
are potential, albeit not probable. The 160-bit hash value is a sufficiently large space such that collisions
are extremely rare. The security of the hash function is based on the difficulty of locating collisions. That
is, it is computationally infeasible to construct two distinct but similar messages that produce the same
hash output.
This block is useful in many applications including hashing messages to generate digital signatures or
computation of a shared secret. The digital signature is typically computed on a small input, however if
the data to be signed is large, it is inefficient to sign the entire data. Instead, the large input data is hashed
to a smaller value which is then signed. If the message is also sent to the verifying authority along with the
signature, the verifying authority can verify the signature by recovering the hash value from the signature
using the public key of the sender, hashing the message itself, and then comparing the computed hash value
with the recovered hash value. If they match, then the verifying authority is confident that the data was
signed by the owner of the private key that matches the public key, where the private key presumably is
only known by the sender. This provides a measure of authentication and non-repudiation.
A conceptual block diagram of the MDEU module is shown in Figure 22-6. Multiple input blocks are
written to the MDEU module, and at the end, the hash value is read as the 160-bit output for SHA-160,
256-bit output for SHA-256, or 128-bit output for MD5.
Figure 22-6. MDEU Hashing Process
...
SHA160
160-bit constant
512-bit
block 1
512-bit
block 2
512-bit
block n-1
512-bit
block n
160-bit
value
Plaintext blocks Hash value
MD5
128-bit constant
128-bit
value
Hash value
Output
Register
SHA256
256-bit constant
256-bit
value
Hash value