Java服务器和Arduino客户端之间的安全通信:需要一个建议

时间:2013-03-17 17:31:24

标签: java c encryption arduino vpn

有一个Java服务器和许多Arduino设备,它们通过TCP连接连接。我们可以使用的董事会:Arduino UnoArduino Mega 2560

每个Arduino设备实际上都是记者(比如,它从水表获取数据并将数据传输到服务器)或某些设备的某种遥控器。

目前,此连接并不安全。我需要确保它安全,即实施VPN。

我在这个知识领域是全新的,我正试图找出应该使用的方式。

我真的希望我能找到某些协议的现有实现,并将其构建到这个系统中。

但是哪种协议?

我已经发现我不能使用IPSec,因为TCP / IP堆栈是在这些Arduino设备中硬件实现的,所以,我们无法修改它。

因此,我需要使用一些比TCP更高的协议,我需要在C(用于客户端设备)和Java(用于服务器)中实现。

我正在尝试查找SSL,PPTP或L2TP的实现,或者我还不知道的其他内容。

如果有人有这方面的经验,我很乐意看到你的建议。

3 个答案:

答案 0 :(得分:2)

对你的跟进问题的回应太长了......

VPN通常会在基础设施(例如大学计算机系统)中创建“隧道”。也就是说,VPN集中器“位于大学网络的周边”,当你连接到时,你会在防火墙后面的系统中创建一个“传递” - 任何协议,任何IP防火墙内的地址变得可访问。关键是观察从您的计算机到集中器(也称为“VPN网关”)的流量流量的任何人只看到您与集中器交谈 - 他们不知道您正在与之交谈的防火墙内的IP地址,使用什么协议或者是什么数据。相比之下,如果您不需要隐藏所有这些内容,则只需加密数据本身;简单的加密算法很容易实现,特别是如果您不需要担心人们窃取您的设备并获取代码。加密需要多大程度取决于您的应用程序 - 在速度,内存使用和安全性之间存在折衷。

goog。 le“Arduino加密库”的一些例子;选择一个密钥,然后加密您的数据,只需POST它......

告诉我们你是如何知道的!

答案 1 :(得分:1)

我非常同意 @Floris 。为此添加一些想法:

  • HTTPs怎么样?如果您的通信是单向的(Arduino - > PC),那么它应该足以满足您的需求。 this帖子中讨论了此问题,并参考了this讨论。 Arduino上的HHTP并不容易,但可能已经完成了。

  • 显然,XXTEA是另一种选择,关于这个主题也有几个stackoverflow问题。

  • 如果你选择自行修建路线,请查看electronics.SE上的this post:显然AVR有一个cryptography library,还有一些有用的攻击列表需要考虑在electronic.SE帖子:你是否只担心MitM攻击?如果有人撕开你的设备打开读取密钥怎么办?这是一个问题吗?

答案 2 :(得分:-1)

Here描述了针对Arduino / AVR设备的[CHAP](en.wikipedia.org/wiki/Challenge-Handshake_Authentication_Protocol)的实现。

here描述了类似的[HMAC](en.wikipedia.org/wiki/Hash-based_message_authentication_code)和[SHA256](en.wikipedia.org/wiki/SHA-2)的Arduino实现/ AVR。

[ Cryptosuite ](github.com/wgoulet/Cryptosuite)是针对Arduino的HMAC-SHA-256的实现。

最后,[此处](github.com/arpitchauhan/cryptographic-protocols-arduino-and-PC)演示了Arduino的一些加密规则,包括使用RSA进行密钥交换。

因此,确保Arduino与服务器之间的通信成为可能。