现在有一个系统模型:A代表硬件设备(基于单片机C语言编程),B为移动设备(基于手机IOS编程),S为服务器端(基于JAVA编程)。A要求“永远在线”连接服务器S,B要求连接服务器S转发控制命令给A,达到控制A目的,有什么方案可以使A、B、S三方通讯的网络安全,可以不用明文传输,不会担心被窃取通讯命令的危险。谢谢!!!
------解决方案--------------------
在开放环境下进行安全通讯,你可以使用对称算法,也可以使用不对称算法,尤其是这种只发几个字符的命令时,可以直接用不对称算法进行加密。但肯定要用到不对称算法,这是身份认证时无法避免的。
A/S两者、S/B两者相互间肯定要先交换并确认对方的公钥。最低限度,S要知道A、B要知道S的公钥。B向A发指令的操作如下:
B将指令用S的公钥加密,发送给S。空中公开传递的数据,是加密的,只有S能在收到后用自己的公钥密钥,其他人窃听去是没有意义的。
S将指令用自己的公钥对应的私钥解密,此时可能需要进行一些审核,无异常后,再把指令(原文,或者说明文)用A的公钥进行加密,发送给A。A将指令用自己的公钥对应的私钥解密,即得知B的指令明文,知道自己该干吗了。
如果要求更高,不能让S知道指令,其只承担传递的角色,则需要B知道A的公钥,用A的公钥加密指令,并对指令进行签名,S只审核指令的签名,看其是否为A所为,不承担内容审核。签名审核通过,就转发给A,由A自己解密指令的内容。
个人猜测,估计你不会想自己开发完整的算法吧?网上有现成的,虽然我没有试过,应该能找到免费的用RSA/ECC等的现成模块,可以使用。
我有个自己用VB制作的DLL,且需要50M的空间,已经上传资源,怕不合你用,毕竟A是单片机C语言编程