Безопасная отправка / получение данных - PullRequest
3 голосов
/ 13 июня 2011

Я хотел бы иметь возможность отправлять и извлекать данные в полузащищенном режиме без использования HTTPS или SSL.

В настоящее время я отправляю данные на сервер, используя соленый хэш-дайджест MD5, как показано ниже (для предотвращения подделки аргументов):

http://www.myserver.com? Имя = John & переваривать = ed076287532e86365e841e92bfc50d8c

Но я бы также хотел зашифровать текстовые данные на клиенте, а затем расшифровать их на сервере обратно в обычный текст, чтобы данные выглядели примерно так:

http://www.myserver.com? Имя = sK5E4Ld4sw5ie & переваривать = ed076287532e86365e841e92bfc50d8c

Какой хороший способ использовать для достижения этой цели?

Ответы [ 2 ]

3 голосов
/ 13 июня 2011

Самый простой способ - включить предварительный общий ключ (например, AES) на клиенте и тот же на сервере. Или используйте пару ключей RSA (общедоступная на клиенте, частная на сервере), однако зашифрованный параметр RSA займет больше места.

0 голосов
/ 13 июня 2011

Отправка дайджеста (MD5 или другого) не предотвратит фальсификацию, если ее нельзя проверить (как правило, с помощью подписи и сертификата, которые знает сервер). В противном случае злоумышленник может легко изменить сущность запроса и дайджест в URI одновременно. Вам непременно нужно подписать дайджест своим закрытым ключом, предполагая, что он заранее знает ваш открытый ключ, чтобы проверить его.

Несмотря на то, что вы говорите, что не хотите использовать SSL / TLS, вам действительно следует изучить его, поскольку самодельная криптография редко бывает настолько безопасной, как вам бы хотелось (см. Собственный пример). Это должно обеспечить вам целостность (без вмешательства) и конфиденциальность (шифрование), при условии, что вы правильно используете ключи и / или сертификаты.

Если вы хотите зашифровать объект, вы можете рассмотреть:

  • PGP / OpenPGP / GPG (вы можете использовать его в C # с BouncyCastle)
  • Шифрование XML (и, вероятно, XML DSig).
  • HTTPsec (хотя я не уверен, насколько это «доказано», и я не знаю ни о какой реализации C #)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...