2016-10-26 2 views
1

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

У меня есть часть шифрования/дешифрования, рассчитанная и работающая. Моя проблема связана с ключом и солью. Оба они генерируются случайным образом во время выполнения перед отправкой по сети на сервер.

Мои вопросы:

  • Как получить сервер для дешифрования данных, если ключ и соль случайны ??

Мое настоящее решение - отправить ключ и соль с зашифрованными данными.

  • Но разве это не сводит на нет мои усилия по защите моих данных?
  • Должен ли я «скрывать» ключ и соль среди данных? (Добавить в начале/конце)

Client server AES encryption

Люди на этой должности предлагают связаться с сервером, чтобы дать ему понять, что мы хотим, чтобы послать защищенное сообщение. он затем генерирует ключ и отправляет его обратно вам. Разве это не слишком «слишком много» для игровой сети, где вы хотите, чтобы все было упаковано, насколько это возможно?

Что делается обычно?

Спасибо.

+1

Да; ваше решение бесполезно. Вам необходимо определить модель безопасности, чтобы вы знали, какие секреты живут там, где и где/как должна выполняться аутентификация. Вам необходимо прочитать https://blogs.msdn.microsoft.com/ericlippert/2011/09/27/keep-it-secret-keep-it-safe/ – SLaks

+1

Возможно, вам понадобится асимметричное шифрование (тогда у вас будет другой набор проблем с передачей и проверкой открытых ключей). – SLaks

ответ

2

Похоже, вы случайно споткнулись и свернули свой крипто. О, о. Не беспокойтесь, просто заберите себя, удалите весь свой криптокод, а затем просто используйте SSLStream.

Почему?

  1. TLS является результатом многолетней работы, исследований и анализа людьми, которые намного лучше крипто, чем вы, и я поставил вместе, раз в миллиард.

  2. Это будет быстрее и менее болезненно, чем написание собственного решения. Вам нужно будет реализовать комбинацию Diffie-Hellman, RSA/DSA Signatures, AES, HMAC или двух, если вы не используете аутентифицированный режим для AES, и, чтобы все это сделать, вам нужно следить за прописью оракулов , вперед секретность и целая куча других вещей.

Шутки в сторону, вы никогда не должны откатывать свой собственный крипто. Положитесь на испытанную технологию.

+0

Я не занимался своим криптованием. Я использую AES с HMACShA256. Я просто не знал, как безопасно отправлять ключи клиенту. Я действительно хочу узнать, как это работает.Вы указали пару решений в RSA/DSA и Diffie-Hellman. – user1505230

+0

@ user1505230 Нет, решение заключается в использовании TLS через SSLStream. RSA/DH - это то, что вы использовали бы, если бы вы сами сворачивали. –

 Смежные вопросы

  • Нет связанных вопросов^_^