Назад | Перейти на главную страницу

Где найти определения символов для блок-схемы протокола RFC?

я читаю RFC5077, и наткнулся на следующую диаграмму:

        ClientHello
        (empty SessionTicket extension)-------->
                                                         ServerHello
                                     (empty SessionTicket extension)
                                                        Certificate*
                                                  ServerKeyExchange*
                                                 CertificateRequest*
                                      <--------      ServerHelloDone
         Certificate*
         ClientKeyExchange
         CertificateVerify*
         [ChangeCipherSpec]
         Finished                     -------->
                                                    NewSessionTicket
                                                  [ChangeCipherSpec]
                                      <--------             Finished
         Application Data             <------->     Application Data

я думаю Certificate* означает, что может быть один или несколько Certificate, и [ChangeCipherSpec] означает, что это необязательно. Но я не могу найти точных определений в этом документе или в Интернете. Где я могу найти объяснения этих символов для RFC?

Ваша интерпретация будет соответствовать общепринятой (E) нотации BNF и регулярного выражения, но на самом деле

* message is sent once or not at all, depending

[ChangeCipherSpec] is a different record-level type;
technically it is not a 'handshake' message even though 
it is a critical element of the handshake protocol.

RFC5077 (и 4507) - это модификация RFC4346 для TLS1.1 и RFC2246 для TLS1.0; это также относится к RFC5246 для TLS1.2, выпущенному впоследствии. (Это не относится к TLS1.3 в RFC8446; 1.3 заменяет как старую форму возобновления сеанса, так и билеты типа 5077 новым методом временного PSK для повторного использования параметров сеанса, а также повторно использует сообщение NewTicket код для данных, совершенно отличных от 5077.) Значение * указано сразу после рис. RFC5246 на странице 36, RFC4346 на странице 33, или RFC2246 на стр. 31. Это не стандарт для других протоколов или RFC в целом. Четный RFC8446 для TLS1.3 существенно меняет его.