<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[HighGMAC AARE is accepted, but GET still fails — am I treating HLS like LOW authentication?]]></title><description><![CDATA[<p dir="auto">I am comparing two associations against the same DLMS stack.</p>
<p dir="auto">With <strong>LOW authentication</strong>, the client can start GET requests immediately after a successful AARE.</p>
<p dir="auto">With <strong>HighGMAC</strong>, the AARE is accepted, but the first normal GET is rejected unless I perform another authentication step.</p>
<p dir="auto">The captures below are anonymized. Meter addresses, credentials, system titles, challenges, counters and tags were replaced.</p>
<h4>LOW authentication AARQ</h4>
<pre><code class="language-text">00 01 00 01 00 01 00 38
60 36
A1 09 06 07 60 85 74 05 08 01 01
8A 02 07 80
8B 07 60 85 74 05 08 02 01
AC 0A 80 08 41 42 43 44 45 46 47 48
BE 10 04 0E 01 00 00 00 06 5F 1F 04 00 00 3E 1F 32 00
</code></pre>
<p dir="auto">What I read from this:</p>
<pre><code class="language-text">00 01 00 01 00 01 00 38
└─ DLMS Wrapper header

60 36
└─ AARQ

A1 09 06 07 60 85 74 05 08 01 01
                                    ^^
└─ application-context-name
   LN referencing, no ciphering

8B 07 60 85 74 05 08 02 01
                           ^^
└─ mechanism-name = LOW

AC 0A 80 08 41 42 43 44 45 46 47 48
            └───────────────────────┘
             8-byte authentication value
             ("ABCDEFGH" in this synthetic trace)
</code></pre>
<p dir="auto">In this case the flow is effectively:</p>
<pre><code class="language-text">AARQ
  ↓
meter validates LOW authentication value
  ↓
AARE accepted
  ↓
GET / SET / ACTION
</code></pre>
<h4>HighGMAC AARQ</h4>
<p dir="auto">The HighGMAC association looks very different:</p>
<pre><code class="language-text">60 xx
A1 09 06 07 60 85 74 05 08 01 03
A6 0A 04 08 43 4C 49 45 4E 54 30 31
8A 02 07 80
8B 07 60 85 74 05 08 02 05
AC 0A 80 08 11 22 33 44 55 66 77 88
BE xx 04 xx 30 00 00 00 2A ...
</code></pre>
<p dir="auto">The bytes that caught my attention are:</p>
<pre><code class="language-text">A1 ... 01 03
          ^^
LN referencing with ciphering

8B ... 02 05
          ^^
HighGMAC authentication mechanism

A6 ... 43 4C 49 45 4E 54 30 31
       └───────────────────────┘
       calling AP title / client system title

AC ... 11 22 33 44 55 66 77 88
       └───────────────────────┘
       client-to-server challenge
</code></pre>
<p dir="auto">The AARE then contains an accepted association, but also an authentication-related diagnostic:</p>
<pre><code class="language-text">61 ...
A1 09 06 07 60 85 74 05 08 01 03
A2 03 02 01 00
A3 05 A1 03 02 01 0E
...
</code></pre>
<p dir="auto">My current interpretation:</p>
<pre><code class="language-text">A2 03 02 01 00
            ^^
association-result = accepted

A3 05 A1 03 02 01 0E
                  ^^
authentication is still required
</code></pre>
<p dir="auto">So is the correct conclusion that <strong>AARE accepted is the end of LOW authentication, but only the middle of a HighGMAC/HLS association</strong>?</p>
]]></description><link>https://dlms.sharur.org/topic/51/highgmac-aare-is-accepted-but-get-still-fails-am-i-treating-hls-like-low-authentication</link><generator>RSS for Node</generator><lastBuildDate>Fri, 16 Oct 2026 19:50:44 GMT</lastBuildDate><atom:link href="https://dlms.sharur.org/topic/51.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Aug 2026 12:44:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to HighGMAC AARE is accepted, but GET still fails — am I treating HLS like LOW authentication? on Sat, 22 Aug 2026 12:44:26 GMT]]></title><description><![CDATA[<p dir="auto">One implementation detail that is worth logging separately:</p>
<pre><code class="language-text">associationAccepted = true
hlsAuthenticated    = false
</code></pre>
<p dir="auto">I have seen HES code collapse both into one <code>authFinish</code> flag.</p>
<p dir="auto">That works with LOW and becomes misleading with HLS.</p>
<p dir="auto">For HighGMAC, log the transition only after the Association LN Method 1 response has been verified.</p>
<p dir="auto">A successful AARE is necessary, but it is not the final authentication event.</p>
]]></description><link>https://dlms.sharur.org/post/134</link><guid isPermaLink="true">https://dlms.sharur.org/post/134</guid><dc:creator><![CDATA[david_miller]]></dc:creator><pubDate>Sat, 22 Aug 2026 12:44:26 GMT</pubDate></item><item><title><![CDATA[Reply to HighGMAC AARE is accepted, but GET still fails — am I treating HLS like LOW authentication? on Sat, 22 Aug 2026 12:44:26 GMT]]></title><description><![CDATA[<p dir="auto">If Method 1 fails after a perfectly valid AARE, I would check these before touching the OBIS layer:</p>
<pre><code class="language-text">1. Client system title
2. Server system title
3. Client-to-server challenge
4. Server-to-client challenge
5. Invocation counter
6. Security control
7. Authentication/ciphering key set
</code></pre>
<p dir="auto">A common failure is reusing the wrong invocation counter or calculating the GMAC with the wrong system title.</p>
<p dir="auto">That gives you a confusing trace:</p>
<pre><code class="language-text">AARQ  → accepted
AARE  → accepted / authentication required
ACTION → rejected
</code></pre>
<p dir="auto">The association transport is fine. The HLS proof is what failed.</p>
<p dir="auto">Also make sure the client challenge used in the GMAC calculation is the same challenge that was actually sent in the AARQ. Some test tools regenerate it automatically on reconnect.</p>
]]></description><link>https://dlms.sharur.org/post/133</link><guid isPermaLink="true">https://dlms.sharur.org/post/133</guid><dc:creator><![CDATA[elena_rostova]]></dc:creator><pubDate>Sat, 22 Aug 2026 12:44:26 GMT</pubDate></item><item><title><![CDATA[Reply to HighGMAC AARE is accepted, but GET still fails — am I treating HLS like LOW authentication? on Sat, 22 Aug 2026 12:44:25 GMT]]></title><description><![CDATA[<p dir="auto">Yes. The two captures show the important distinction.</p>
<p dir="auto">For LOW, the authentication value in the AARQ is the credential being checked during association establishment.</p>
<p dir="auto">For HighGMAC, the AARQ/AARE exchange establishes the association context and exchanges the HLS challenges. You still need the <strong>Association LN authentication method</strong>.</p>
<p dir="auto">Look for an ACTION request against:</p>
<pre><code class="language-text">Class ID : 15
OBIS     : 0.0.40.0.0.255
Method   : 1
</code></pre>
<p dir="auto">A decrypted HLS request normally has a shape similar to:</p>
<pre><code class="language-text">C3 01 C1
00 0F
00 00 28 00 00 FF
01
01
09 11
10 00 00 00 2A AA BB CC DD EE FF 00 11 22 33 44 55
</code></pre>
<p dir="auto">Breakdown:</p>
<pre><code class="language-text">C3
└─ ActionRequest

01
└─ ActionRequestNormal

C1
└─ invoke-id-and-priority

00 0F
└─ class-id = 15 (Association LN)

00 00 28 00 00 FF
└─ 0.0.40.0.0.255

01
└─ method-id = 1

01
└─ method parameters present

09 11
└─ octet-string, 17 bytes

10
└─ security control used by the HLS GMAC value

00 00 00 2A
└─ invocation counter

AA BB CC DD EE FF 00 11 22 33 44 55
└─ example GMAC authentication tag
</code></pre>
<p dir="auto">Do not mark the session <code>AUTHENTICATED</code> merely because <code>A2 ... 00</code> says the association was accepted.</p>
<p dir="auto">For HighGMAC I would keep separate states:</p>
<pre><code class="language-text">AARQ_SENT
→ ASSOCIATION_ACCEPTED
→ HLS_IN_PROGRESS
→ HLS_VERIFIED
→ BUSINESS_READY
</code></pre>
]]></description><link>https://dlms.sharur.org/post/132</link><guid isPermaLink="true">https://dlms.sharur.org/post/132</guid><dc:creator><![CDATA[alex_turner]]></dc:creator><pubDate>Sat, 22 Aug 2026 12:44:25 GMT</pubDate></item></channel></rss>