对两个系统之间的消息进行加密和解密



我有以下系统

Android应用程序->kafka->listener服务(Java)。

我想确保在这个过程中有数据的完整性。

我想在安卓应用程序中加密消息,将其插入主题,然后让侦听器拾取并解密消息。

我想知道在系统之间加密和解密的最佳方式(算法和实践)是什么。这可以用一种简单的方式(没有证书或密钥)实现吗?

假设将有5个移动应用程序将消息推送给经纪人。

我想确保这个过程中有数据完整性。

如果您担心在传输过程中确保消息的完整性,那么在大多数情况下,使用TLS(ssl、https)就可以了。如果您需要其他组件(kafka->Java)之间的端到端安全性(已签名、加密的消息),则需要对消息进行签名。在大多数情况下,您应该可以使用第一个选项(https)。

这可以用一种简单的方式实现吗(没有证书或密钥)?

PKI(证书和密钥)使我们能够确保完整性和机密性,而无需对机密进行硬编码(这对移动应用程序来说不是很明智)。您已经有了用于SSL的现成库,所以可以将其视为"简单的方法"。构建用于签名和验证消息的自定义协议只会更加复杂,而且可能不那么安全。

我想知道在系统之间加密和解密的最佳方式(算法和实践)是什么。

对于基本的传输安全性,我建议依赖TLS,您仍然需要对用户(用户名、密码?)进行身份验证,以确保客户端的身份。TLS提供了到达SSL终止点的安全通道(https服务器、kafka侦听器等)

如果您需要其他组件(kafka->Java)之间的端到端安全性(已签名、加密的消息),则有一些标准可以对消息进行加密和签名,例如web服务的WS-security,或者您可以使用已签名和加密的JWT来传递消息。

但是,您必须在客户端和验证后端之间安全地交换密钥(使用单独的服务或某种密钥交换协议)。

我认为实现这一点的最简单方法是使用一些安全传输(https、sftp等)并加密通道

如果您正在实现自定义协议,那么您将需要使用一些可用的库来加密/解密消息。

是的,我建议使用标准的加密算法(需要使用证书)。

最新更新