Как я могу передать данные от клиента J2ME на сервер без предварительной фиксации ключа?

Я программист J2ME. Теперь мой проект связан с отправкой данных на сервер по HTTP. Здесь я шифрую данные на стороне J2ME, используя библиотеку Bouncy Castle (Triple DES). Я также поддерживаю кодирование на стороне сервера.

Затем на стороне сервера полученные данные расшифровываются и сохраняются в базе данных. Здесь я предполагаю, что ключ статически зафиксирован в моем коде. На стороне сервера и на стороне J2ME я использую одно и то же значение ключа.

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

Если я зашифрую данные каким-то ключом в части J2ME, то как сервер сможет их расшифровать, не зная ключа? Или есть какой-то другой механизм, который я могу использовать для решения этой проблемы? Может ли асимметричная криптография помочь мне здесь?


person SIVAKUMAR.J    schedule 22.05.2011    source источник
comment
Э, что? Пожалуйста, потратьте немного больше времени на ваш вопрос, это непонятно. Кстати, 3DES в значительной степени устарел и, конечно, не асимметричен.   -  person Cat Plus Plus    schedule 22.05.2011


Ответы (1)


асимметричная криптография работает следующим образом:

  1. Сервер генерирует пару открытых/закрытых ключей
  2. Он отправляет открытый ключ клиенту
  3. Клиент использует открытый ключ для шифрования некоторого секретного сообщения.
  4. Сервер использует закрытый ключ для расшифровки сообщения.

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

person Darin Dimitrov    schedule 22.05.2011
comment
Если объясните, то объясните правильно. Дополнения: нужно выдать всем клиентам публичный ключ или какой-то способ установления доверия (PKI). Клиент может сгенерировать (случайный) секретный ключ, используемый для шифрования, например. использовать АЕС. Они шифруют сообщение. Затем клиент может отправить зашифрованное сообщение и секретный ключ, зашифрованный с помощью открытого ключа. Другая сторона расшифровывает секретный ключ с помощью закрытого ключа, а затем расшифровывает сообщение. Вам также нужен какой-то способ проверки целостности зашифрованного сообщения (например, используйте два случайных ключа и используйте один для MAC-адреса. Наконец, сначала купите хорошую книгу). - person Maarten Bodewes; 23.05.2011
comment
Привет, Дарин Димитров и owlstead, спасибо за ваши ответы и комментарии. Это очень полезно для меня. - person SIVAKUMAR.J; 26.06.2011