我正在制作一个 Android 应用程序,其中涉及两部手机在几分钟内交换大量数据。我希望对这种通信进行加密,并且一直在研究各种可用的加密选项。似乎最适合的是混合算法,它使用非对称加密(如 RSA)来交换会话密钥和对称算法(如 AES)来实际加密/解密数据。
根据我对混合加密的了解,两个设备之间发送的每个数据包都应该使用一个新的会话密钥,该密钥嵌入在数据包中(使用对方的公钥加密),以便于另一端的解密。
为了节省 CPU,我正在考虑只使用一个使用 RSA 交换的会话密钥,然后使用此密钥加密/解密所有数据,这样我就可以节省昂贵的 RSA 操作。但是,我知道不建议这样做?有人可以确认一下并告诉我应该如何进行吗?
编辑:
以为我会在这里添加更多信息-
通信协议完全是我自己定制的。数据以未加密的 UDP 数据包形式发送,其中包含大量元数据和加密的有效负载。这样就排除了使用常规 SSL / TLS。
此外,对于每个会话,我都会生成新的私钥和公钥,交换公钥,然后使用它来交换 AES 中使用的会话密钥。我使用的是 2048 位 RSA 和 256 位 AES。AFAIK,这对于大多数交流来说已经绰绰有余,而且可能有点矫枉过正。我承认我的密码学知识并不出色,但我正在尽可能多地阅读和学习以使其尽可能安全。