有些移动银行应用程序使用 SMS 通道与其服务器进行通信。其中一些提供互联网和短信渠道,客户可以从中选择。
虽然 OWASP、Enisa、Gartner 和其他组织提供了大量关于通过互联网进行安全通信的数据(如何实现 TLS、证书固定等),但似乎缺乏关于如何通过 SMS 通道安全传输数据的指南和教程。
关于 SMS 数据传输的安全架构,我想到了几个选项:
类似于 PGP 的系统,其中服务器的公钥与应用程序捆绑在一起并驻留在客户手机上。应用程序使用此密钥和对称密钥来加密其数据。
类似于 HTTPS 的系统,每次客户端和服务器通信时,他们就会话密钥达成一致,并使用该密钥对数据进行加密。
在客户端存储或生成对称密钥并且不使用公钥加密的其他解决方案通常是不安全的。
SMS 的长度有限,因此我们在此系统中的目标之一必须是使消息尽可能短,我们有哪些方法可以在不失去系统安全性的情况下实现这一目标。(它是否使第一个提议的选项(类似 PGP)更合适?)
在这种情况下,数据由服务器和客户端加密,完整性也是我们关心的问题,我们希望保持传输消息的数量/长度尽可能短,以最大限度地减少往返时间和发送的文本消息数量。