Содержание
- 2. Handshake (напоминание) Client ClientHello ? ? ServerHello ? EncryptedExtensions ? CertificateRequest ? Certificate ? CertificateVerify ?
- 3. CertificateRequest T = 13 L ID запроса (может быть пустым) extensions: signature_algorithms signature_algorithms_cert certificate_authorities
- 4. Certificate T = 11 L ID запроса certificate_list массив сертификатов должен составлять сертификационный путь первым должен
- 5. Certificate Формат «сертификата» в сообщении Certificate: Сертификат X.509 extensions Или «Сокращенный» сертификат (subjectPublicKeyInfo) extensions extensions: ocsp_status
- 6. Certificate «Сокращенный» сертификат: Использование согласовывается при помощи расширений client_certificate_type и server_certificate_type Только один сертификат в массиве
- 7. Справка: DANE DNS-Based Authentication of Named Entities RFC 6698 (2012) Ресурсная запись типа TLSA содержит (либо)
- 8. CertificateVerify T = 15 L algorithm - код алгоритма ЭЦП (как в расширении signature_algotithms) signature Вычисляется
- 9. Finished T = 20 L verify_data (длина = длина отклика Hash()) verify_data = HMAC(finished_key, Messages) Здесь:
- 10. Прочие сообщения EndOfEarlyData KeyUpdate смена текущих ключей
- 11. Вычисления ключей Для каждой цели в TLS 1.3 используется отдельный ключ, который выводится из основного ключа
- 12. Вычисления ключей - функции HKDF-Extract PRK = HKDF-Extract(salt, IKM) = HMAC-Hash(salt, IKM) salt – случайная, длины
- 13. Вычисления ключей - функции HKDF-Expand OKM = HKDF-Expand(PRK, info, L) PRK – фикс. длины info –
- 14. Вычисления ключей - функции HKDF-Expand T(0) = пустая строка T(1) = HMAC-Hash(PRK, T(0) | info |
- 15. Вычисления ключей - функции HKDF-Expand-Label HKDF-Expand-Label(Secret, Label, Context, Length) = HKDF-Expand(Secret, _info_, Length) Где _info_ =
- 16. Вычисления ключей - функции Derive-Secret Secret’ = Derive-Secret(Secret, Label, Messages) = HKDF-Expand-Label(Secret, Label, Hash(Messages), Hash.length) Здесь
- 17. Вычисление ключей - схема PSK 0000 EXTRACT Early Secret DERIVE “res binder” “” binder_key DERIVE “c
- 18. Вычисление ключей - схема [EC]DHE Handshake Secret DERIVE “c hs traffic” ClientHello..ServerHello client_handshake_traffic_secret DERIVE “s hs
- 19. Вычисление ключей - схема 0000 master_secret Handshake Secret DERIVE “derived” “” EXTRACT
- 20. Вычисление ключей - схема DERIVE “c app traffic” ClientHello..(server)Finished client_application_traffic_secret_0 DERIVE “res master” ClientHello.. (client)Finished resumption_master_secret
- 21. Вычисление ключей - KeyUpdate {client|server}_application_traffic_secret_{n+1} = HKDF-Expand-Label( {client|server}_application_traffic_secret_{n}, “traffic upd”, Hash.Length)
- 22. Вычисление ключей – finished_key server_finished_key = HKDF-Expand-Label( server_handshake_traffic_secret, “finished”, “”, Hash.length) client_finished_key = HKDF-Expand-Label( client_handshake_traffic_secret, “finished”,
- 24. Скачать презентацию