RE: [TLS] TLS state machine
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [TLS] TLS state machine



The state machine is (sort of implicitly) described in these two
figures, copied from RFC 4346:

      ClientHello                  -------->
                                                      ServerHello
                                                     Certificate*
                                               ServerKeyExchange*
                                              CertificateRequest*
                                   <--------      ServerHelloDone
      Certificate*
      ClientKeyExchange
      CertificateVerify*
      [ChangeCipherSpec]
      Finished                     -------->
                                               [ChangeCipherSpec]
                                   <--------             Finished
      Application Data             <------->     Application Data

And the session resumption case:

      ClientHello                   -------->
                                                       ServerHello
                                                [ChangeCipherSpec]
                                    <--------             Finished
      [ChangeCipherSpec]
      Finished                      -------->
      Application Data              <------->     Application Data

I'm not sure if using a state machine description language would
actually help understanding, but it could look something like this
(server's initial state):

  State: WAITING_FOR_CLIENT_HELLO 
  Event: ClientHello received
    process the client hello
    if (didn't work out)
      send alert
      next state: FAILED
    else if (session being resumed)  
      send ServerHello, ChangeCipherSpec, Finished
      next state: WAITING_FOR_CCS
    else
      send ServerHello [Certificate] [ServerKeyExchange] 
         [CertificateRequest] ServerHelloDone
      next state: WAITING_FOR_CERT_OR_CLIENT_KEY_EXCHANGE
  Event: anything else
    maybe send alert
    go to state FAILED

(The TLS implementations I've taken a look at actually have code
that resembles this.)

Best regards,
Pasi 

> -----Original Message-----
> From: ext Stefan Santesson [mailto:stefans at microsoft.com] 
> Sent: 21 March, 2007 16:37
> To: tls at ietf.org
> Subject: [TLS] TLS state machine
> 
> We have had lots of discussions around GSS-TLS ending in 
> arguments that this would do too many changes to the TLS 
> state machine.
> 
> It would be a lot easier to hold that discussion 
> constructively if the TLS state machine was clearly 
> described. A search for the term "state machine" in current 
> TLS 1.2 returns empty. I can't find any other text that would 
> clearly resemble such description.
> 
> Would it be possible to add an annex in TLS 1.2 describing 
> the TLS state machine?
> 
> It would then be a lot easier to analyze and discuss the 
> impact of any changes caused by various usages of the TLS 
> extensibility mechanisms.
> 
> 
> Stefan Santesson
> Senior Program Manager
> Windows Security, Standards

_______________________________________________
TLS mailing list
TLS at lists.ietf.org
https://www1.ietf.org/mailman/listinfo/tls




Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.