I am working with Gurux GXDLMSDirector configured as:
Authentication: HighGMAC
Interface: HDLC
Media: Serial
Security: AuthenticationEncryption
When I use the 8.2.1912.0501 version gurux works fine with my meter, but when I try to establish a connection with 8.1.2002.0101 version, gurux sends the message:
ACCESS Error: Devise reports a hardware fault.
Gurux.DLMS.GXDLMSException: Access Error : Device reports a hardware fault.
en GXDLMSDirector.GXDLMSDevice.InitializeConnection()
en GXDLMSDirector.MainForm.Connect(Object sender, GXAsyncWork work, Object[] parameters)
¿Why is happening this difference betwen versions?
Reviewing I found that with version 8.2.1912.0501, when gurux sends an AARQ its IC is equal with 0 and when gurux sends f(StoC) its IC is equal with 1.
On the other hand with version 8.2.2002.0501 when gurux sends an AARQ its IC is equal with 0 and when when gurux sends f(StoC) its IC is equal with 2.
It seems that gurux is skipping the value 1 for the IC.
The error is that previously I took the value of the IC received from the AARQ and used it to obtain the gmac function tag.
With the new version I have to take the value of the IC received along with the f (StoC) minus 1 and use it to obtain the gmac function tag. This works for both versions.
Is this correct?
Why did you modify the management of the invocation vector that gurux handles?
Yes, Invocation Vector counting was changed. Old version was using same number that is read from the meter Frame counter attribute. It was causing problems with several meters and we was forced to increase it by 1. For this reason first IV value is 1.
Then we was increasing IV for GMAC and second time for CtoS. That was the reason why it was 2. This was causing problems with some meters.
IV is not defined on the DLMS standard and it seems to be implemented differently for different meters.
Hi Rafael,
Hi Rafael,
I'm sorry about this. This is now fixed. Update to the latest version.
BR,
Mikko
Hi Mikko,
Hi Mikko,
I am getting the same message with the 8.2.2002.0501 versión:
Gurux.DLMS.GXDLMSException: Access Error : Device reports a hardware fault.
en GXDLMSDirector.GXDLMSDevice.InitializeConnection()
en GXDLMSDirector.MainForm.Connect(Object sender, GXAsyncWork work, Object[] parameters)
Did you change the management of the client invocation counter?
It is an authentication problem with the authentication tag of the gmac function in the
Response to challenge: f (StoC).
Hi Mikko,
Hi Mikko,
Reviewing I found that with version 8.2.1912.0501, when gurux sends an AARQ its IC is equal with 0 and when gurux sends f(StoC) its IC is equal with 1.
On the other hand with version 8.2.2002.0501 when gurux sends an AARQ its IC is equal with 0 and when when gurux sends f(StoC) its IC is equal with 2.
It seems that gurux is skipping the value 1 for the IC.
The error is that previously I took the value of the IC received from the AARQ and used it to obtain the gmac function tag.
With the new version I have to take the value of the IC received along with the f (StoC) minus 1 and use it to obtain the gmac function tag. This works for both versions.
Is this correct?
Why did you modify the management of the invocation vector that gurux handles?
Regards!
Hi,
Hi,
Yes, Invocation Vector counting was changed. Old version was using same number that is read from the meter Frame counter attribute. It was causing problems with several meters and we was forced to increase it by 1. For this reason first IV value is 1.
Then we was increasing IV for GMAC and second time for CtoS. That was the reason why it was 2. This was causing problems with some meters.
IV is not defined on the DLMS standard and it seems to be implemented differently for different meters.
BR,
Mikko
Mikko,
Mikko,
Apparently this does not represent a security problem and both cases can be handled.
Thanks for your answer.
Regards!