DTLS connection aborts after several minutes (rekeying problem?)
Michael Fritscher <michael.fritscher-yKeiVCf8cfZ30C+yQOVkaBRJbrLmWrcZ@public.gmane.org> Wed, 3 Jul 2019 08:25:01 +0200
| Newsgroups | gmane.comp.encryption.bouncy-castle.devel |
|---|---|
| Organization | Zentrum für Telematik e.V. |
| Message-ID | <[email protected]> |
Good day, I'm using bouncy castle to get DTLS functionality. I first tried to use adapt the DTLS test included in the package, but it doesn't seem to verify the certificates. So I tried https://github.com/mobius-software-ltd/java-dtls . It seems to work, but it seems to have problems with the rekeying process - so it aborts the connections after ca. 10 minutes with medium traffic. With a GCM suite, I get "GCM cipher cannot be reused for encryption, with CBC I get "org.bouncycastle.crypto.tls.TlsFatalAlert: bad_record_mac(20)" Backtrace at Client: > org.bouncycastle.crypto.tls.TlsFatalAlert: bad_record_mac(20) > at com.mobius.software.iot.dal.crypto.AsyncDtlsRecordLayer.receive(AsyncDtlsRecordLayer.java:243) > at com.mobius.software.iot.dal.crypto.AsyncDtlsClientProtocol.receivePacket(AsyncDtlsClientProtocol.java:125) > at com.mobius.software.iot.dal.crypto.AsyncDtlsClientHandler.decode(AsyncDtlsClientHandler.java:49) > at com.mobius.software.iot.dal.crypto.AsyncDtlsClientHandler.decode(AsyncDtlsClientHandler.java:1) > at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) > at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) > at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) > at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) > at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:93) > at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:697) > at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632) > at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549) > at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511) > at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918) > at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) > at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) > at java.base/java.lang.Thread.run(Thread.java:844) Backtrace at server: > org.bouncycastle.crypto.tls.TlsFatalAlert: bad_record_mac(20) > at org.bouncycastle.crypto.tls.TlsBlockCipher.decodeCiphertext(Unknown Source) > at com.mobius.software.iot.dal.crypto.AsyncDtlsRecordLayer.receive(AsyncDtlsRecordLayer.java:220) > at com.mobius.software.iot.dal.crypto.AsyncDtlsServerProtocol.receivePacket(AsyncDtlsServerProtocol.java:409) > at com.mobius.software.iot.dal.crypto.AsyncDtlsServerHandler.decode(AsyncDtlsServerHandler.java:76) > at com.mobius.software.iot.dal.crypto.AsyncDtlsServerHandler.decode(AsyncDtlsServerHandler.java:1) > at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) > at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) > at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) > at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) > at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) > at io.netty.channel.nio.AbstractNioMessageChannel$NioMessageUnsafe.read(AbstractNioMessageChannel.java:93) > at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:697) > at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:632) > at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:549) > at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:511) > at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918) > at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) > at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) > at java.base/java.lang.Thread.run(Thread.java:844) I've also opened an issue at https://github.com/mobius-software-ltd/java-dtls/issues/1 , but I hope that you have an hint how to cope with this problem. If you know other ways to get DTLS in Java 8 up & running I'll interested as well. Best regards, Michael Fritscher -- ZfT - Zentrum für Telematik e.V. Michael Fritscher Magdalene-Schoch-Straße 5 97074 Würzburg Tel: +49 (931) 615 633 - 57 Fax: +49 (931) 615 633 - 11 Email: michael.fritscher-yKeiVCf8cfZ30C+yQOVkaBRJbrLmWrcZ@public.gmane.org Web: http://www.telematik-zentrum.de Vorstand: Prof. Dr. Klaus Schilling, Prof. Dr. Andreas Nüchter, Hans-Joachim Leistner Sitz: Gerbrunn USt.-ID Nr.: DE 257 244 580, Steuer-Nr.: 257/111/70203 Amtsgericht Würzburg, Vereinsregister-Nr.: VR 200 167
michael_fritscher.vcf
(text/x-vcard, 416 B)
begin:vcard fn:Michael Fritscher n:Fritscher;Michael org;quoted-printable:Zentrum f=C3=BCr Telematik adr;quoted-printable;quoted-printable:;;Magdalene-Schoch-Stra=C3=9Fe 5;W=C3=BCrzburg;Bayern;97074;Deutschland email;internet:michael.fritscher-yKeiVCf8cfZ30C+yQOVkaBRJbrLmWrcZ@public.gmane.org tel;work:+49 (931) 615 633 - 57 tel;fax:+49 (931) 615 633 - 11 url:http://www.telematik-zentrum.de version:2.1 end:vcard