Re: Question about DTLS implementation

Peter Dettman <[email protected]> Mon, 11 Nov 2019 17:57:33 +1030
Newsgroups gmane.comp.encryption.bouncy-castle.devel
Message-ID <[email protected]>
Hi Seung-bum,

On 8/11/19 6:56 pm, Seung-bum Jin wrote:
> Hi All,
> 
> We are trying to use the BouncyCastle 1.63 java source to implement DTLS
> protcol on our JSSE provider.
> 
> While review the source code, we found code stuffs
> handling HandshakeType.new_session_ticket, but it's not mentioned in
> RFC-6347 4.3.2. (Handshake Protocol), 4.2.4. (Figure 2).
> 
> We have question about that is the implementation correct? 

Session tickets are defined in RFC 5077; they're an optional feature of
(D)TLS. We don't fully support them, but do support the handshake
message if the extension is negotiated.


> And the DTLSServerProtocol does not sends hello_verify_request. In the
> point of design approach, it seemed to be right way to handle the
> request in clinet and server protocol class, not in DTLSVerifier class,
> regrdless of synchronous or aynchronous processing.

The idea is that DTLSVerifier can be used by a stateless server without
having to bind to a particular client. Only once a verified ClientHello
is received does the server proceed to DTLSServerProtocol (which implies
a stateful connection to the client).

> 
> And the code in the DTLSClient.java may works when
> no hello_verify_request received. We have also question about is that right.

Yes, HelloVerifyRequest (+ ClientHello resend) is an optional step in
the DTLS handshake. The server may choose to send a ServerHello immediately.

Regards,
Pete Dettman