Шифровать и дешифровать сообщения между двумя системами

В Python 3.3 +:

from subprocess import STDOUT, check_output

output = check_output(cmd, stderr=STDOUT, timeout=seconds)

output представляет собой байтовую строку, содержащую объединенные stdout команды, данные stderr.

Этот код повышает значение CalledProcessError при ненулевом статусе выхода, как указано в тексте вопроса, в отличие от метода proc.communicate().

Я удалил shell=True, потому что он часто используется без необходимости. Вы всегда можете добавить его обратно, если cmd действительно требует его. Если вы добавите shell=True, то есть, если дочерний процесс порождает своих потомков; check_output() может вернуться намного позже, чем указывает таймаут, см. Ошибка тайм-аута подпроцесса .

Функция тайм-аута доступна на Python 2.x через subprocess32 backport модуля подпроцесса 3.2+.

0
задан ajroot 15 January 2019 в 22:27
поделиться

1 ответ

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

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

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

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

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

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

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

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

0
ответ дан gusto2 15 January 2019 в 22:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: