Открытые и закрытые ключи - путь.Я предполагаю, что вы не заботитесь о шифровании данных, но вам важно, чтобы данные были «авторизованы».
Допустим, у вас есть 3 компьютера
Comp1 Comp2 Comp3
Допустим также, что вы хотите, чтобы Comp1 отправил сообщение Comp3.вас не волнует, было ли сообщение перехвачено, но вы заботитесь о том, чтобы оно не было подделано.
Comp1 подпишет сообщение цифровым ключом с закрытым ключом
Comp2 перехватит сообщение от Comp1в Comp3, но не может изменить сообщение без аннулирования подписи
Comp2 перенаправит сообщение на Comp3
Comp3 будет использовать открытый ключ Comp1 для расшифровки подписи и использовать хэш в подписидля проверки содержимого.
Теперь, если вы хотите зашифровать данные, вам нужно добавить дополнительный шаг
Comp1 подпишет сообщение с помощью секретного ключа
Comp1сгенерирует случайный ключ шифрования (обычно AES) и зашифрует сообщение.
Comp1 возьмет этот ключ шифрования и зашифрует его с помощью открытого ключа Comp3
Comp2 перехватит сообщение, но не сможет его прочитатьбез закрытого ключа Comp3
Comp2 перенаправит сообщение на Comp3
Comp3 будет использовать свой закрытый ключ длярасшифровать ключ AES
Comp3 расшифрует все сообщение с помощью ключа AES
Comp3 проверит сообщение, расшифровав подпись открытым ключом Comp1.
Подпись содержит хэшсообщения, если хеш и хеш сообщения совпадают, то данные остаются нетронутыми.
Вы можете включить GUID в полезную нагрузку для использования в качестве поиска, чтобы решить, какие открытые ключи использовать.
PS. Вы захотите использовать встроенные методы для подписи сообщения.Пусть Framework делает хеширование / etc