сокет java SSL с использованием известного общего ключа - PullRequest
0 голосов
/ 01 мая 2018

У меня есть установка, где у меня есть несколько компьютеров / узлов, взаимодействующих по локальной сети с TCP, работающим во время выполнения Java 8. Все они знают один общий ключ, который одинаков для всех компьютеров. Ключ известен только во время выполнения. Цель состоит в том, чтобы зашифровать связь по TCP с помощью общего ключа. И шифрование, и дешифрование должны быть возможны из общего ключа.

Я бы хотел использовать класс java Socket для связи TCP между узлами, поэтому класс java SSLSocket кажется логичным решением, но я не уверен, как настроить его для использования простого общего ключа, известного узлы на любом конце. Насколько я понимаю, SSLSocket использует сертификаты для аутентификации другого конца, но я не вижу, как адаптировать его для использования общего ключа.

1 Ответ

0 голосов
/ 01 мая 2018

Я бы не стал заставлять сокет ssl работать иначе, чем он. ИМХО, это потребует больше работы и обходных путей, чем расширение собственного сокета или потока для достижения поставленной цели

Цель состоит в том, чтобы зашифровать связь по TCP с помощью общего ключа.

Я бы постарался сделать это простым. Возможно, наличие настроенного потока (или канала), который будет отправлять / получать случайный IV для инициализации шифра, а затем использовать некоторый потоковый шифр (или режим шифрования ctr), сделает эту работу. Закончил это подход не обеспечит целостность данных.

если вы можете расширить провайдеров безопасности, как уже отмечалось, вы можете использовать BC PSK TLS , который является более надежным, чем простой вариант выше

...