Добрый вечер!
Начать изучать TLS - помогите разобраться с обменом ключами (пока в голове каша).Насколько я понял для получения сеансового симметр. ключа, в своем сообщении ServerHello :
1) сервер передает клиенту свой сертификат, затем сообщение HelloDone,
2.1) если используется RSA, клиент генерит случайное число зашифровывает открытым ключом сервера из сертификата и передает его серверу,
В этом варианте в ServerHello передается только 1 расширение - supported_versions.
2.2) сервер расшифровывает это случайное число и использует его как premaster-key
если используется алгоритм DH (без эллипт. кривых), то в п. 2.1 клиент и сервер должны обменяться параметрами для него.
Вопрос1: правильно ли я понимаю порядок действий в ServerHello ?
Вопрос2: в р. 4.1.3. RFC (перевод) говорится следующее когда речь идет о расширениях в ServerHello - см. цитату далее:
Можете более понятно объяснить фразу в фигурных скобках - в каком соотношении она находится с алгоритмом, описанным выше ?
Вопрос3: какую роль играют pre_shared_key и key_share (пока не очень понимаю) в обмене ?
----------читата из р. 4.1.3 к вопросу -----------------
• extensions: список расширений. ServerHello ДОЛЖЕН включать только расширения, необходимые для установления криптографического контекста и согласования версии протокола. Все сообщения TLS 1.3 ServerHello ДОЛЖНЫ содержать расширение «supported_versions».
{{ Текущие сообщения ServerHello дополнительно содержат либо расширение «pre_shared_key», либо расширение «key_share», или оба (при использовании ключа PSK с (EC) DHE). }}
Другие расширения (см. Раздел 4.2) отправляются отдельно в сообщении EncryptedExtensions.