[!WARNING]
Technical Redaction & Safe Harbor Notice:
All communication captures, system titles, and cryptographic parameters in this thread have been sanitized and neutralized. Real utility meter identifiers, production encryption keys (GUEK/GAK/MK), SIM IMSIs, and proprietary network envelopes have been substituted with standard IEC 62056 synthetic test vectors. Do not post unredacted production captures or live cryptographic keys.
We are implementing High-Level Security Mechanism 5 (HLS 5 GMAC, Security Suite 1) against commercial three-phase electricity meters over IEC 62056-47 TCP Wrapper. The initial Association establishment (0x60 AARQ $\rightarrow$ 0x61 AARE) succeeds, exchanging the 16-byte Client Challenge ($C_{\text{to}}S$) and Server Challenge ($S_{\text{to}}C$).
However, when the client sends Pass 3 via Action-Request-Normal calling Method 1 reply_to_HLS_authentication on Association LN (0.0.40.0.0.255, Class 15), the meter consistently rejects the authentication proof with an action error.
Pass 3 Client Action-Request (reply_to_HLS_authentication
00 01 00 01 00 01 00 24 C3 01 81 00 0F 00 00 28 00 00 FF 01 01 09 10 5B 3A 8F 21 C8 91 44 E2 70 66 A3 11 9D 52 04 7A
Meter Error Response:
00 01 00 01 00 01 00 05 C7 01 81 01 01
Dissecting the response:
C7 01:Action-Response-Normal81:invoke-id-and-priority01: Choice =action-result(error)01: Result enum =hardware-fault(access-error: authentication-failure / other-reason)
We verified that both the Global Authentication Key (GAK) and Global Unicast Encryption Key (GUEK) are configured in the client. Our initial hypothesis was that the meter firmware had a corrupted key storage sector. Why is the GMAC authentication tag rejected by the meter?
ī¸ Technical Redaction & Safe Harbor Warning: