Способ для отправки ключа шифрования на небезопасную связь?
-
26-09-2019 - |
Вопрос
Я использую Botan Utility для выполнения шифрования. Когда я инициализирую мою связь с удаленной машиной, используя SSH, я могу торговать ключами через безопасное SSH-соединение. Однако иногда я использую INETD, чтобы установить соединение, и в этом случае нет безопасности на подключении INETD, но мне нужно использовать его для торговых клавиш с удаленной машиной.
Предлагаю, что есть некоторые стандартные для этого, в результате чего я отправляю открытый ключ на небезопасный канал, а удаленный конец использует это, чтобы зашифровать ключ, чтобы отправить мне на небезопасный канал, который я могу затем расшифровать, чтобы получить ключ.
Какой был бы пример такого протокола, который поддерживает ботан?
Решение
Без предыдущего доверия или общение через боковую канал, нет никакого способа сделать это. Diffie-Hellman Kex позволяет устанавливать канал безопасным для других, которые не участвуют в соединении, но вы не можете убедиться, что вы общаетесь с предполагаемым получателем.
Классика Митм Пример: вы подключаетесь к некоторой удаленной конечной точке, он получает ваш открытый ключ и отправляет вам что-то подписанное с этим ключом. Тем не менее, у вас нет способа проверить, отправили ли вы свой ключ к реальному назначению, или ответа исходит от злоумышленника - поэтому у вас есть безопасный туннель, но у вас нет информации, с которой вы надежно связываетесь ( Злоумышленник может даже подключиться к вашему предполагаемому направлению и прокси трафику, который проходит над ним незашифрованным).
Чтобы убедиться, что вы действительно обменитесь с предполагаемой конечной точкой, вам необходимо обменять некоторую идентификацию хоста заранее или через безопасный канал. SSH делает это, используя «отпечатки пальцев» - просит вас в первом соединении, если вы доверяете этого хоста, и вы должны проверить отпечаток пальца через независимый канал.
Другие советы
То, что я сделал в подобной ситуации, было сначала договориться о том, чтобы обменяться в частную / публичную ключевую пару, поэтому я имел открытый ключ каждого клиента, поэтому, когда они связаны со мной, было принято сообщение, у которого было на него , что я мог затем расшифровать.
Если это пропущено, и временные метки были действительны (я использовал 5 секунд как срок службы метки времени), тогда я обменяю ключ, поскольку у нас был способ надежно общаться.
Но это требовало сделать что-то подходящее.
Если вы ожидаете анонимного пользователя для подключения и иметь некоторую безопасность, которое невозможно.
Одна статья, которую я нашел очень полезным по таким вопросам, как это было * программирование компьютера сатаны », http://www.cl.cam.ac.uk/~rja14/papers/satan.pdf., Где вы пытаетесь получить безопасное общение с ненадежным Sysadmin.