Я прочитал несколько статей, описывающих процесс дешифрования трафика SSL/TLS без закрытого ключа. Ключи сеанса генерируются в файле журнала, который затем считывается из Wireshark по точке в файл журнала.

Расшифровка трафика SSL с помощью ключей сеанса

Однако мой конкретный файл журнала с ключами сеанса был создан после того, как мы предварительно сформировали сеанс захвата пакетов с помощью Wireshark. Можно ли использовать ключи, записанные в этот файл журнала, для расшифровки пакетов, которые были ранее перехвачены в Wireshark, или этот процесс должен выполняться параллельно (запись в файл журнала и захват пакетов в Wireshark)?

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

1 ответ1

2

Нет, вероятно нет, если ключ не был зарегистрирован позже в том же сеансе. Каждый сеанс использует свой собственный ключ.

По MSDN:

сессия

An exchange of messages under the protection of a single piece of 
keying material. For example, SSL sessions use a single key to send
multiple messages back and forth under that key. 

сеансовый ключ

A relatively short-lived cryptographic key, often negotiated by a   
client and a server based on a shared secret. A session key's lifespan
is bounded by the session to which it is associated. A session key
should be strong enough to withstand cryptanalysis for the lifespan of
the session. When session keys are transmitted, they are generally
protected with key exchange keys (which are usually asymmetric keys)
so that only the intended recipient can access them. Session keys can
be derived from hash values by calling the CryptDeriveKey function.

источник

Таким образом, почти наверняка, что сообщения, которые вы захватили, используют предыдущий ключ, если вы не регистрировали захваченный ключ до начала нового сеанса.

TLS и SSL используют детерминированный генератор случайных чисел Psuedo (DPRNG) для генерации последовательности потоков для ключа, генерируемой параллельно как на хосте, так и на клиенте, на основе общего начального значения, о котором они договариваются, поэтому вам необходимо знать начальное начальное число, а затем смещение для каждого сообщения (поскольку оно является потоковым шифром) и средства для быстрой пересылки DPRNG в правильную позицию для части сообщения в потоке. Скорее всего, Wireshark может выполнить позднее, при условии, что он захватил поток с самого начала, но без начального числа вы не сможете найти ключ для конкретного сообщения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .