Шифровать и дешифровать сообщения между двумя системами - PullRequest
0 голосов
/ 16 января 2019

У меня есть следующая система

Android-приложение -> kafka -> служба прослушивания (Java).

Я хотел бы убедиться в целостности данных в этом процессе.

Я хочу зашифровать сообщение в приложении для Android, вставить его в тему, а затем прослушать и расшифровать сообщение.

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

Предполагается, что 5 мобильных приложений будут отправлять сообщения брокеру.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Я хотел бы убедиться в целостности данных в этом процессе.

Если вы заинтересованы в обеспечении целостности сообщения во время транспортировки, использование TLS (ssl, https) поможет в большинстве случаев. Если вам нужна сквозная защита (подписанное, зашифрованное сообщение) между другими компонентами (kafka-> Java), вам нужно будет подписать сообщение. В большинстве случаев вы должны быть в порядке с первым вариантом (https).

Может ли это быть достигнуто простым способом (без сертификатов или ключей)?

PKI (сертификаты и ключи) позволяет нам гарантировать целостность и конфиденциальность без жесткого кодирования секретов (что не очень разумно для мобильных приложений). У вас уже есть готовые библиотеки для SSL, так что считайте это «простым способом». Создание собственного протокола для подписи и проверки сообщений является только более сложным и, возможно, менее безопасным.

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

Для обеспечения базовой безопасности транспорта я бы рекомендовал полагаться на TLS, но вам все равно нужно аутентифицировать пользователя (имя пользователя, пароль?), Чтобы гарантировать идентичность клиента. TLS обеспечивает безопасный канал до точки завершения SSL (сервер https, слушатель kafka, ..).

Если вам нужна сквозная защита (подписанное, зашифрованное сообщение) между другими компонентами (kafka-> Java), существуют некоторые стандарты для шифрования и подписи сообщений, такие как WS-Security для веб-служб или вы можете использовать подписанные и зашифрованные JWT для передачи сообщений.

Однако - вам придется безопасно обмениваться ключами между клиентом и проверяющим бэкэндом (с отдельной службой или некоторым протоколом обмена ключами).

0 голосов
/ 16 января 2019

Я думаю, что самый простой способ реализовать это использовать зашифрованный канал с использованием некоторого безопасного транспорта (https, sftp и т. Д.)

Если вы реализуете собственный протокол, вам нужно будет зашифровать / расшифровать сообщения, используя некоторые из доступных библиотек.

И да, я предлагаю использовать стандартный алгоритм шифрования (который потребует использования сертификатов).

...