我使用的是一个使用手动配置TCP端口与Raspberry Pi设备通信的exe应用程序。应用程序将从端口1234发送数据到Raspberry,后者正在监听19000。但通讯没有加密。有人能建议我如何在这两个端口之间进行加密吗?
我浏览了一下,并得到了一个想法,我可以通过TCP实现SSL。如果有人有更好的解决方案,我很想听听。
发布于 2018-10-05 10:48:45
我想了一下,我可以在TCP上实现SSL。
在TCP上使用SSL/TLS是个好主意。
它是一种建立起来的、众所周知的、经过广泛研究的协议,在协议中可以找到大量的库,并存在大量的文档。而且,适当的使用它提供了强大的加密和保护,防止被动嗅探和主动的中间人攻击。
但是,请确保使用最近的TLS库,并遵循当前和广泛发布的文档,以便实际使用TLS提供的安全性。此外,不要试图通过禁用证书验证等来“欺骗”--尽管它看起来会工作,但通常是不安全的。
考虑到您在这方面的经验不多,您不应该尝试创建您自己的保护层,因为您很可能会引入一些您不会意识到的问题-请参见我们为什么不自己动手呢?。
发布于 2018-10-05 11:11:16
您没有提到所涉及的操作系统(我想是rPi上的Linux ),也没有提到您是否对修改代码感到满意。
虽然您可以在客户机和服务器中应用加密,但在这两个设备之间实现一个隧道要简单得多--您可以将当前客户端指向客户端主机上的一个新服务,并限制服务器侦听在rPi上运行的补充服务。在这两个新服务之间,连接是加密的。
对于使用新服务的技术,有很多选择,但最实际的选择是基于TLS或ssh。对于TLS,您可以使用眩晕或stud (在每个端配置不同的相同服务)用于ssh,您可以从ssh客户机(如putty/plink/ssh )到rPi上的opensshd使用端口转发。在这两种情况下,您都应该将rPi上的防火墙配置为仅接受来自本地主机的端口19000上的连接。
这两种方法都依赖于密钥对,但是基于TLS的机制有更多的选择和潜在的复杂性。OTOH,如果您使用的是一个MSWindows客户端,那么这个令人震惊的用户界面可能比putty或plink更容易使用。
发布于 2018-10-05 07:55:11
嗨,扎帕和惠康,
我的建议是,您应该从一个简单的算法(例如RC4 )开始,当您正在学习时,您可以以TLS作为最终目标来改进解决方案和目标。根据您正在使用的语言,我将建议您使用库,使您的加密更容易,没有意义实现AES由您自己。作为您可以使用的库,我建议您从openssl和start开始,这两个库在大多数语言中都得到支持,而且您可以很容易地在程序中进行集成。
https://security.stackexchange.com/questions/195111
复制相似问题