Расшифровка данных приложения с помощью файла журнала (Pre) -Master-Secret в Wireshark

551
cwanjt

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

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

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

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

0

1 ответ на вопрос

2
Frank Thomas

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

По 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 может выполнить позднее, при условии, что он захватил поток с самого начала, но без начального числа вы не сможете найти ключ для конкретного сообщения.

Похожие вопросы