> -- Сергей Губанов писал(а):
> Пожалуй, в этом случае нужно использовать хеширование и сравнивать хешкоды. В моём случае пользователь ничего не вводит. У меня просто две программы общающиеся по TCP. Программы должны быть уверены, что общаются со своими "родными" копиями, а не хакерскими заглушками. Для этого, по всей видимости, надо использовать протокол SSL. Ключ шифрования ключей придётся захардкодить - вот в этом-то и проблема.
Никакой "ключ шифрования ключей" не нужен
Есть n участников. Все они используютa.
1)Для каждого (i-го) берется секретное число x_i и публичное число yi=a^x_i. (по y_i вычислить x_i очень сложно). Далее если i и j хотят поболтать, они передают в общий доступ ключи y_i и y_j (и свои координаты).
2)Таким путем генерятся секретные (возможно, одноразовые) ключи z_ij (для i-го) и z_ji (для j-го) по формуле z_ij=y_j^x_i=a^x_i^x_j =y_i^xj. Ими они шифруют и дешифруют свою дальнейшую переписку.
В итоге используется симметричное шифрование без осо. Нужно только "захардкодить" собственно алгоритм симметричного шифрования (из непрошибаемых-ГОСТ 89 года) и генератор x_i. Хотя это все-таки чтобы никто не вклинился без спросу.
Для зашиты от посторонних требуется подпись.