OpenSSL - найти ключ AES - PullRequest
       6

OpenSSL - найти ключ AES

1 голос
/ 06 апреля 2011

Я создал сокет SSL в C между клиентом и хостом, используя библиотеку OpenSSL. Мне нужен ключ AES сеанса SSL для правильного шифрования сообщения, и я не могу использовать стандартные функции ssl_write и ssl_read. Я обнаружил, что есть структура с именем AES_KEY, но я не знаю, как я могу ее найти!

SSL_write и SSL_read работают корректно только с типом пакета: 23 («Протокол приложения»)

Как я могу расшифровать, например, приветственное сообщение SSL, пришедшее с сервера (я открыл канал SSL с этим сервером)? Как я могу зашифровать приветственный клиент SSL (он в порядке), полученный от другого клиента?

Я пытаюсь продемонстрировать атаку на этапе «Пересоглашение TLS» протокола TLS. Я пытаюсь смоделировать атаку MITM с помощью собственного прокси.

Теперь сервер отправляет на прокси определенное количество зашифрованных сообщений типа 22 (Handshake) и 20 (ChangeCipherSpec). Как я могу прочитать эти сообщения и расшифровать их? Стандартная библиотека ssl_read работает только с сообщениями 23 (Приложение).

Более того, клиент отправляет на прокси клиент Hello и другие сообщения типа 22 и 20. Как я могу написать эти сообщения и зашифровать их? Я пытался использовать ssl_write, но сервер не понимает эти сообщения.

Ответы [ 2 ]

3 голосов
/ 06 апреля 2011

Вместо того, чтобы вручную (en | de) шифровать записи, вы должны использовать SSL_CTX_set_info_callback , чтобы получить необходимую информацию.

0 голосов
/ 27 апреля 2011

Я нашел решение. Функции:

int ssl3_read_bytes (SSL *s, int type, unsigned char *buf, int len, int peek);
int ssl3_write_bytes (SSL *s, int type, const void *buf_, int len);
...