我听说很多人提到他们的嵌入式IoT设备的功能不足以处理已知协议,例如HTTPS甚至套接字的TLS安全性。

他们转而创建自己的协议来生成定制通信系统以适合其特定的用例,尽管通常情况下,实际上很少花费时间来开发协议,因为这不是特别重要的因素。通常,这些自制协议包括身份验证,安全性,加密等。

本文提出了许多陷阱,其中有些陷阱似乎正在等待那些遵循自己的协议编写路线的人,众所周知,您不应该尝试编写自己的加密。

在任何情况下,您都必须编写自己的协议而不是使用经过测试的现有协议吗?如何判断自己动手是不是一个合理的想法,而不是很大的安全风险?

评论

另请参阅:xkcd.com/927

#1 楼

自己动手的时代非常有限。当涉及到设备约束时,重要的是要查看整个系统的性能。可以肯定的是,现有技术的确在发展,但是目标应该是优化端点能量性能,而不是研究如何应对没有良好熵源或没有足够内存以支持合适标准的设备。 br />
这些都是有意义的场景。


滚动自己进行学习。特别是如果您对原型制作和进行相对比较感兴趣。学习后,请根据您的研究选择最佳标准。
改进当前的最新技术。更安全,更高效的声音听起来像是一场胜利。甚至可能使您变得富有。
滚动自己以应对现有协议无法适应的环境限制(而不是产品选择)-但这可能在物理/传输层更多。例如,容易出错的渠道或对阻塞的弹性要求很高。即使这样,您所需的元素也可能已经存在,只需要组装即可。

如果是产品设计,则不太可能通过节省$ 0.5的硬件来区分。您要么为客户提供了很好的增值,要么是即使听起来很酷也没人想要的不安全的产品。

评论


在谈论扩大生产规模时,实际上,半美元或一欧元是相当大的利润杠杆。我可以从经验中看出,在那些拥有大量硬件的古典制造公司中,人们对此提出了质疑。尤其是进入每个设备的零件。如果您计划5到1千万个单位,则每单位五十美分会开始受到损害...

– Helmar♦
17年5月26日在12:34

@ Helmar,我同意。但是,当客户产品是车辆或中档白色家电时,包装上的光泽度会超过此增量。几年后,技术差异将变得更少。

– Sean Houlihane
17年5月27日在10:05

#2 楼

可维护性如何?我更喜欢加入一个说“ meh,https和blowfish”的项目,而不是“嘿,我们刚刚尝试了一种新的加密算法,该算法意味着绕椅子转3次并在屏幕前演唱base64结果”。
我' d如果您的设备缺乏协议/加密程序的功能(内存,计算等),则应使其适应最大效率,而不必等待很长时间不烧设备。您在IoT.SE中经常提到COAP,这是为特定设备编写的“新”协议的示例!
这应做为个人使用(沙盒,内部网络等)。

如何判断自己滚动是否是一个合理的想法

面对现实,如果您提交算法,每个人都会发现一些有关您的算法的问题,并且会过时。但这可以为将来的程序打开新的视角,可以从您的经验中学到东西。
; DR; DR

考虑可维护性!您的新算法有吸引力吗?易于维护吗?
如果您的设备具有与现有解决方案不匹配的特定功能,是否要
先在封闭的系统中进行测试
提交并准备提出批评

PS:HTCPCP(咖啡壶控制协议)是一个笑话,现已得到广泛实施!