Можете подсказать как мне правильней реализовать шифрование данных между клиентом и сервером.
Есть веб сервер , сервер и клиент.
Я хочу чтоб клиент получил данные от веб сервера один раз за сессию.
То бишь я хочу передать зашифрованные данные с веб сервера -> клиенту при этом потом эти данные должны быть расшифрованы на клиентской но только один раз за сессию.
Что можете посоветовать лучше использовать, и безопасен ли данный метод ?
Если есть "что расшифровать" и "чем расшифровать", я могу это расшифровывать ровно столько сколько захочу раз.))))
Используйте RSA с применением сеансового ключа.
Я конечно хотел использовать RSA но не смог правильно все продумать. Нужно передать шифрованные данные с веб сервера в клиент игры и расшифровать. Но если у клиента будет закрытый ключ то не будет ли это странным ?
xmoonlight, Я имел ввиду , я буду шифровать сообщение с сервера открытым ключом пользователя(в игре) , а расшифровывать то будет пользователь своим закрытым ключом.... Разве я не прав ?. Или вы хотите сказать чтоб я шифровал сообщение открытым ключом сервера чтоб пользователь расшифровывал его своим закрытым ? Но разве тогда он не сможет все сообщения расшифровать которые не нужно ему видеть.
Gigabait, открытый ключ сервера - всегда уникальный для пользовательской сессии. Новая сессия - новый открытый ключ сервера.
Инициализация:
1. Сервер даёт этот (открытый) ключ пользователю.
2. Пользователь шифрует свой открытый ключ ключом сервера и отдаёт серверу.
Обмен:
3. Сервер использует открытый ключ пользователя для передачи ему шифрованных данных.
4. После получения пользователем данных от сервера - он их расшифровывает своим закрытым ключом.
Если данные очень важные, то для большей защиты сессию можно переинициализировать каждые N-пакетов (и/или N-минут/секунд, и/или по какому-либо событию) в "прозрачном" режиме для конечного пользователя (человека). Т.е., в нужный момент выполняем шаги, начиная с п.1.