我有以下系统
Android应用-> kafka->侦听器服务(Java)。
我想确保在此过程中数据完整性。
我想在Android应用程序中对消息进行加密,将其插入主题,然后让听众将其拾取并解密消息。
我想知道在系统之间进行加密和解密的最佳方法(算法和实践)。是否可以通过简单的方式(无需证书或密钥)来实现?
假定将有5个移动应用程序将消息推送到代理。
答案 0 :(得分:1)
我想确保此过程中数据的完整性。
如果要确保在传输过程中消息的完整性,则在大多数情况下,使用TLS(ssl,https)可以解决问题。如果需要其他组件(kafka-> Java)之间的端到端安全性(签名的加密消息),则需要对消息进行签名。在大多数情况下,您可以选择第一个选项(https)。
这可以通过简单的方式(没有证书或密钥)来实现吗?
PKI(证书和密钥)使我们能够确保完整性和机密性,而无需对机密进行硬编码(对于移动应用程序而言,这不是很明智的选择)。您已经有了现成的SSL库,因此可以将其视为“简单方法”。构建用于签名和验证消息的自定义协议只会更复杂,而且安全性可能会更低。
我想知道在系统之间进行加密和解密的最佳方法(算法和实践)。
为了基本的传输安全性,我建议依赖TLS,您仍然需要对用户进行身份验证(用户名,密码?)以确保客户端的身份。 TLS提供了到SSL终止点(https服务器,kafka侦听器等)的安全通道。
如果您需要其他组件(kafka-> Java)之间的端到端安全性(签名,加密的消息),则可以使用一些标准来加密和签名消息,例如用于Web服务的WS-Security。使用经过签名和加密的JWT传递消息。
但是-您将必须在客户端和验证后端之间安全地交换密钥(使用单独的服务或某些密钥交换协议)。
答案 1 :(得分:0)
我认为最简单的实现方法是使用某种安全传输(https,sftp等)来使用和加密通道
如果要实现自定义协议,则需要使用一些可用的库对消息进行加密/解密。
是的,我建议使用标准的加密算法(需要使用证书)。