У ключей сеанса одинаковое значение с обеих сторон во время TLS?

Aug 15 2020

У меня есть два вопроса о ключах сеансов, сгенерированных на последних этапах фазы рукопожатия:

  1. Имеют ли «ключ записи клиента» и «ключ записи сервера» одно и то же значение, даже если оба ключа генерируются независимо с обеих сторон?

  2. (Тот же вопрос) Имеют ли «MAC-ключ записи клиента» и «MAC-ключ записи сервера» одно и то же значение?

Общий вопрос: достигают ли клиент и сервер одинаковых результатов при генерации ключей сеанса?

Ответы

5 MaartenBodewes Aug 15 2020 at 21:49

Имеют ли «ключ записи клиента» и «ключ записи сервера» одно и то же значение, даже если оба ключа генерируются независимо с обеих сторон?

Нет, см. Следующий ответ.

Для ключей шифрования это менее важно, поскольку сообщение в любом случае имеет MAC-адрес. Однако в рамках TLS 1.2 и до того, как будет использоваться MAC-then-encrypt, что может выявить некоторые нежелательные уязвимости. Например, если отправитель уязвим для атак оракула, вы можете использовать это для расшифровки сообщений, когда будет использоваться тот же ключ. Это показывает, что разделение ключей всегда является хорошей идеей, так как атаки оракула с заполнением изначально не предполагались.

(Тот же вопрос) Имеют ли «MAC-ключ записи клиента» и «MAC-ключ записи сервера» одно и то же значение?

Нет, они намеренно разные, чтобы отправители не могли воспроизвести их собственное сообщение. По сути, KDF (PRF на языке TLS 1.2) использует разные метки для каждого ключа, что означает, что каждый производный ключ будет зависеть только от главного ключа (с использованием односторонней функции).

Общий вопрос: достигают ли клиент и сервер одинаковых результатов при генерации ключей сеанса?

Да, это так. Но они просто имеют одинаковые значения для каждого конкретного ключа . Клиент и сервер получают одинаковые главные секреты, а затем переходят к использованию одних и тех же меток для конкретных ключей. Таким образом, обе стороны будут иметь «ключ записи клиента», но сервер будет использовать его для расшифровки сообщений.