Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Message Authentication Codes (MACs) are essential for guaranteeing both the integrity and the authenticity of data transmitted over untrusted networks. In the IoT ecosystem, where devices broadcast sensor readings, receive firmware updates, and exchange control commands, the absence of a MAC leaves the system vulnerable to forgery, replay, and data corruption attacks. ISO/IEC 29192-6 standardises lightweight MAC algorithms that provide strong security guarantees with minimal computational and storage overhead, complementing the encryption and hashing primitives defined in Parts 2, 3, and 5.
The standard specifies several MAC constructions built on the lightweight block ciphers from Part 2. The most notable is a lightweight variant of CMAC (Cipher-based MAC), which uses a block cipher in CBC mode with a final encryption of the last block to prevent length-extension attacks. When instantiated with PRESENT-80 or CLEFIA-128, the resulting MAC provides 64-bit or 128-bit security respectively, matching the block size of the underlying cipher. The hardware overhead is minimal — the same cipher core is reused for both encryption and MAC computation.
Beyond block-cipher-based constructions, ISO/IEC 29192-6 includes dedicated MAC algorithms designed from scratch for lightweight operation. TBC-MAC (Tweakable Block Cipher MAC) uses a tweakable block cipher as its core primitive, providing built-in domain separation without additional state. LP-MAC (Lightweight Parallel MAC) is optimised for hardware parallelism, processing multiple message blocks simultaneously to achieve higher throughput than serial CBC-MAC designs. LP-MAC is particularly well-suited for high-speed sensor interfaces such as SPI or parallel buses.
| MAC Algorithm | Core Primitive | Tag Size (bits) | Security Level | HW Gate Count | Parallelisable |
|---|---|---|---|---|---|
| CMAC-PRESENT-80 | PRESENT-80 block cipher | 64 | 64-bit | ~2 000 | No |
| CMAC-CLEFIA-128 | CLEFIA-128 block cipher | 128 | 128-bit | ~3 500 | No |
| TBC-MAC-64 | Tweakable block cipher | 64 | 64-bit | ~1 800 | No |
| TBC-MAC-128 | Tweakable block cipher | 128 | 128-bit | ~3 200 | No |
| LP-MAC-64 | Dedicated permutation | 64 | 64-bit | ~2 500 | Yes |
| LP-MAC-128 | Dedicated permutation | 128 | 128-bit | ~4 000 | Yes |
The standard allows MAC tags to be truncated to as few as 32 bits to reduce transmission overhead in bandwidth-constrained channels. However, truncation directly reduces the security level: an attacker attempting forgery needs only 2^(t/2) attempts for a t-bit tag on average due to birthday-bound effects. For a 32-bit tag, this is merely 2¹⁶ attempts — feasible for a determined attacker. The standard recommends a minimum tag length of 64 bits for most applications and 128 bits for high-security environments.
All MAC constructions in 29192-6 are deterministic: the same message and key always produce the same tag. To prevent replay attacks, the message must include a nonce (number-used-once) such as a monotonically increasing sequence number or a timestamp. The standard explicitly recommends that implementations enforce nonce uniqueness at the protocol level, and that the nonce be included in the MAC input. Failure to do so is one of the most common vulnerabilities in deployed IoT systems.