#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 также ведет себя как активное участие в преобразовании и ожидает только одно направление пакетов (клиент или сервер). Как мне также передать другую сторону?