0

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

每个 Arduino 设备实际上都是报告器(例如,它从水表获取数据并将数据传输到服务器)或某些设备的某种远程控制。

目前,此连接不安全。我需要使其安全,即实施VPN。

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

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

但是哪个协议?

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

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

我正在尝试找到 SSL、PPTP、L2TP 或其他我仍然不知道的实现。

如果有人在这方面有经验,我会很高兴看到你的建议。

4

3 回答 3

2

对您的后续问题的回复太长了...

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

古格。le “Arduino 加密库” 用于一些示例;选择一个密钥,然后加密你的数据,就POST这样......

让我们知道你是怎么做的!

于 2013-03-23T19:17:07.583 回答
1

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

  • HTTPs 呢?如果您的通信是单向的(Arduino -> PC),那么它应该足以满足您的需求。这个问题在这篇文章中进行了讨论,并参考了这个讨论。Arduino 上的 HHTP 并不容易,但它可能已经完成。

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

  • 如果你走 -build-it-yourself 路线,请查看有关 electronics.SE 的这篇文章:显然有 AVR 的密码库,以及在 electronics.SE 文章中要考虑的有用攻击列表:你是否只担心中间人攻击?如果有人撕开您的设备打开读取密钥怎么办,这是一个问题吗?

于 2013-03-18T04:34:26.787 回答
-1

这里描述了用于 Arduino/AVR 设备的 [CHAP] (en.wikipedia.org/wiki/Challenge-Handshake_Authentication_Protocol) 的实现。

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

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

Finally, [here] (github.com/arpitchauhan/cryptographic-protocols-arduino-and-PC) are demonstrated some cryptographic procolos for Arduino, including key exchange using RSA.

So it is definitely possible to secure communication between Arduino and a server.

于 2015-08-17T20:25:17.817 回答