我正在尝试在iPhone应用程序和Arduino服务器之间建立安全协议。目标是iPhone应用程序向Arduino服务器发出请求,如果服务器具有一种或另一种形式的正确凭据,则服务器仅处理它。我真的不确定如何解决这个问题。任何建议都非常感谢!
答案 0 :(得分:2)
遗憾的是,Arduino上没有真正安全的通信选项。基本问题是SSL库尚未移植到这个平台,部分原因是该平台构建的8位处理器并不是非常强大。说过你可以做一些事情,但你必须自己做:
Basic access authentication是一种非常不安全的控制HTTP页面访问的方法,因此不建议这样做。另一方面,Digest access authentication采用单向加密编码(散列)。它只需要MD5库,对于Arduino来说是actually available。您需要做的是修改Web Server类的源代码以支持摘要访问身份验证:AFAIK它不支持开箱即用。
如果这看起来很难,你可以自己实现一些相当基本的东西(而且不是很安全,但总比没有好)。它可能看起来像这样:
现在这不会保护您免受IP地址欺骗,以及我可能没有想过的许多其他事情。但是,它会给你一点安全性(如果你相信这种事情的话,通过默默无闻的一点点安全性)。您可以在superuser
上要求(稍微)更精细的方案答案 1 :(得分:0)
您可能只能使用基于共享机密的经过身份验证的消息。该消息将包含[至少]消息类型,消息正文,时间戳和消息摘要。您通过使用共享密钥对其他内容进行HMAC来创建摘要。 (在Google中键入HMAC Arduino以获取库和代码。)消息通过TCP或UDP发送(我更喜欢)。 Arduino计算消息摘要,检查消息,验证数据,然后对消息进行操作。
我喜欢做的一件事是在应用服务器前面的网络层实现端口敲击或其他东西。这可以防止不需要的流量到达自定义(可能是易受攻击的)命令服务器。这可以偷偷地进行(参见Silent Knock)或显然。网络保护也可以通过专用设备来实现,该设备在到达Arduino之前进行大量提升并使大量流氓流量失去资格。