OpenSSL TLS / DTLS PSK - PullRequest
       82

OpenSSL TLS / DTLS PSK

0 голосов
/ 08 марта 2019

Я работаю над приложением, в котором сервер ключей (K) генерирует симметричный ключ и делит его с сервером (A) и клиентом (B).А и Б соединяются через UDP.Я использую Memory BIO и пытался использовать шифр "PSK-AES128-CBC-SHA".

У меня есть несколько вопросов, связанных с этим:

  1. Когда у нас естьдолжен ли мы по-прежнему вызывать симметричный ключ SSL_do_handshake?
  2. Когда я задаю шифр с этим вызовом SSL_CTX_set_cipher_list(context, "PSK-AES128-CBC-SHA");, я получаю сообщение об ошибке SSL routines:ssl_cipher_list_to_bytes:no ciphers available

Я пытался использовать TLSV1_2_server_method, TLSV1_2_server_method, DTLS_server_methoDTLS_client_method, но в каждом методе произошла ошибка с вышеуказанной ошибкой.

Существует ли какой-либо пример кода, доступного для шифрования TLS-PSK?Я не мог найти хороший учебник или пример в Интернете.

Я имел в виду эту статью, когда делал это, но вместо этого я использую БИО памяти https://bitbucket.org/tiebingzhang/tls-psk-server-client-example/src/783092f802383421cfa1088b0e7b804b39d3cf7c/psk_server.c?at=default&fileviewer=file-view-default

1 Ответ

2 голосов
/ 13 марта 2019

Я не могу сказать вам, почему шифр не существует. Я могу только предположить, что он не существует в имеющейся у вас версии openssl или его нужно добавить в openssl для начала.

Знаете ли вы, что поддержка PSK встроена в tls1.3? Если вы используете openssl 1.1.1, вы можете использовать PSK из командной строки openssl.

Сервер:

# use a 48 byte PSK
$ PSK=63ef2024b1de6417f856fab7005d38f6df70b6c5e97c220060e2ea122c4fdd054555827ab229457c366b2dd4817ff38b 
$ openssl s_server -psk $PSK -cipher TLS13-AES-256-GCM-SHA384 -nocert -accept 2020

Клиент:

$ openssl s_client -psk $PSK -connect localhost:2020 
CONNECTED(00000003)
---
no peer certificate available
---
No client certificate CA names sent
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 195 bytes and written 475 bytes
Verification: OK
---
Reused, TLSv1.3, Cipher is TLS13-AES-256-GCM-SHA384
…

Поэтому я бы порекомендовал вам поискать исходный код для команд openssl 1.1.1 s_server и s_client, чтобы увидеть пример использования PSK в tls1.3.

...