Используйте OpenSSL для расшифровки сеанса TLS из файлов PCAP

#ssl #encryption #openssl #tls1.2 #pcap

#ssl #шифрование #openssl #tls1.2 #pcap

Вопрос:

Я сгенерировал файл PCAP с сеансом TLS, и у меня есть соответствующий закрытый ключ, используемый моим HTTPS-сервером.

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

Я знаю, что OpenSSL можно использовать для подключения к сокету для «активной» обработки сеанса TLS, но есть ли способ «пассивно» декодировать и расшифровывать сеанс?

Как я могу «передавать» пакеты (в обоих направлениях) в библиотеку OpenSSL?

Или, может быть, у другой библиотеки есть такой интерфейс? (Я знаю, что Wireshark / tshark / ssldump может это сделать, я ищу программный способ)

Комментарии:

1. openssl имеет абстракции, которые отделяют источник и назначение «пакетов» от обработки SSL. В принципе, это должно позволить вам считывать зашифрованные пакеты SSL из файла PCAP (для этого вам нужен libpcap) и записывать расшифрованные пакеты куда угодно, включая, возможно, другой файл PCAP. Эта абстракция необходима для реализации неблокирующего ввода-вывода с помощью SSL, поэтому поиск в Google «openssl с неблокирующим вводом-выводом» должен дать вам несколько соответствующих ссылок. Вот пример, который, возможно, не потребуется сильно модифицировать для ваших нужд.

2. У меня есть другая библиотека, считывающая PCAP и выполняющая реконструкцию TCP, так что теперь у меня есть двунаправленный поток пакетов TLS. Я до сих пор не понимаю, как использовать биографию для «подачи» обоих направлений в один и тот же контекст SSL. Похоже, что API BIO также ведет себя как активное участие в преобразовании и ожидает только одно направление пакетов (клиент или сервер). Как мне также передать другую сторону?