人类正处于一个具革命性的发展时期:“IOT--物联网”,顾名思义,物联网是通过连接世界上所有的东西来达成,也可做为互联网本身的逻辑顶点。我们已经看到它对我们的生活和商业等应用层面的影响,越來越多的企业开始进军iot,开发iot软件,使硬件智能化。
举凡智能手机、平板电脑和其他移动设备等不仅仅让我们与他人交流,它们还可跟踪我们的位置,监测我们的健康状况,了解我们的兴趣偏好,并将我们与其他设备连接起来。这种现象将影响所有企业的生产、营销和增长方式。如此复杂的事情需要一些深谋远虑和数据,所以,你需要了解物联网的四个重要发展。利用它们对你的业务做出更明智的决定。
一、智能家居设备转移到办公室:
智能家居物联网设备越来越受欢迎。到2022年,美国使用智能家居的家庭比例预计将可达到总数的28%,此一上升趋势部分源于设备价格的下跌。但是,市场偏好也在改变。千禧一代喜欢家居科技,因而促使业主将智能恒温器和安全系统整合到新房子内部,更不用说智能家居技术是环保的,有助于节省能源成本。但是,这些好处不再是家庭独有的。企业也可望从办公室自动化中受益。到2020年,将有更多的公司出于同样的原因在办公室采用上述的智能设备和技术。
企业主可以通过智能照明和传感器来减少每月的电力消耗。智能视频门铃、摄像头和门锁让你为送货或员工提供远程控制的通道,它也能让你的办公室更加安全。另外,智能恒温器通过了解员工的温度偏好进行智能控制,也有助于减少能源浪费。
二、医疗保健物联网的增长:
医疗行业是物联网应用的下一个理想目标。这是一个不断增长、高度监管和依赖科技的市场。如今,许多“智能”医院正在使用物联网设备,通过可穿戴设备和健康传感器远程监控病人,或者综合监控系统如“室内GPS”一样追踪病人、工作人员和设备,这将可以最大限度地节约资源和金钱。医疗服务提供者也在使用小型的可食用设备,例如“智能药丸”可以传输有关药物疗效的数据,从而更好地对病人的护理做出决策。
预计医疗行业将采用更多的物联网设备,以简化医疗流程、降低成本并提高患者护理水平。增加的投资还将推动相关市场(如理疗和疗养院)采用类似的技术,以保持与医院的一体化。
随着技术的不断进步,个人和组织利用物联网设备来提高生产力和盈利能力非常重要。
三、人工智能和物联网的结合:
每年都有越来越多的物联网摄像头、设备和传感器被使用,2020年将继续稳步增长。国际数据公司(InternationalData
Corporation)的一项新预测统计,到2025年,将有超过410亿台联网设备产生80ZB的数据。连接设备的价值在于所有这些数据。在这种规模下,人类将不得不依靠人工智能来进行分析和解释。如果你不能通过连接设备来优化用户体验、节约能源或提高流程效率,那么连接设备就没有什么用。
随着亚马逊(Amazon)和微软(Microsoft)等公司开发出相互竞争的人工智能和机器学习技术,预计到2020年,医疗保健和卡车运输等行业将引入更多相关技术。这些行业拥有庞大的基础设施和复杂的网络,可望推动人工智能的采用并将它们整合到更高效的系统中。企业将需要评估和审计自己的流程,以了解这些人工智能服务在哪些方面带来了最大的好处。
四、智能语音助理的盛行:
智能语音助理设备和服务在2020年将继续增长,因为消费者和企业会有新的应用程序出现。最新的市场调查估计,到2023年,数字语音助手的装置量将达到80亿。由于几个因素,2020年的需求将会激增:首先,技术正在进步,语音识别软件更加准确,现在它可以区分不同的声音,允许多个用户使用同一设备;另一个因素是,语音识别是一个相对便宜的功能,从硬件的角度来看,制造商只需要让设备增加一个麦克风或者连接到有麦克风的设备便可实现。因此,该技术对几乎所有的家庭或办公室而言是一个简单的附加功能。
IOT设备与服务器对接:我一贯推荐用户使用SSL/TLS这种标准方式来实施设备的服务器接口。当然我也清楚许多嵌入式设备采用SSL依然是有困难。困难来自以下几点:
嵌入式设备多采用嵌入式C/C++编程;
如果采用标准库,耗费RAM/ROM和计算时间;
如果没有使用标准库,自行开发验证安全算法耗费太多、时间。
即使SSL/TLS,不同Cloud供应商和证书供应商的安全套件不尽相同。
RSA/ECC等非对称算法在某些阶段过于耗费时间。
互联网常见的Base64/ASCII传输方式,在嵌入式领域比较耗费资源。
TLS证书的存储。
所以,根据安全设计原则来提供一个私有设备接口规范,是非常必要的。这里,还需要区分TCP长连接、短连接和UDP方式。
TCP长连接:如果设备使用WiFi/以太网/SocketCAN等方式连接到服务器上,则TCP长连接很适合。在Linux中,TCP称之为Stream,这一点在长连接上会造成信息在接收端所特有的沾包、半包现象。所以承载在TCP长连接之上的应用层协议,必须设计合理地帧结构来隔断、截取完整的信息。
如果TCP安全加密后,TLS其实是AES这种block加密方式,所以TCP长连接Stream中位数不足的可以采用padding方式,接收端部分地解决了此类问题。但是由于AES中IV的存在,需要增设一个问答方式来不断地重置IV。
TCP短连接:一些无线传感器网络如BLE/WiFi网关、Sub-1GHzWSN网关、LoRa网关,蜂窝数据等,采用短连接也很适合。TCP短连接一般没有沾包现象,典型的HTTP就是使用ASCII字符串以及回车来实现各个字段的划分的。
针对TCP短连接,如果每次重新连接,走密钥交换流程太费时间,往往在后续TCP连接中继续使用AESSessionKey,同时应用层中使用Token+cookie等实现。
某些设备如NB-IoT天生的传输方式就是UDP方式。TCP/UDP的区别在于UDP是不保证信息一定送达,先后次序和重复发送的。也就是说UDP接收端会出现报文丢失、报文重复、次序颠倒等现象。而TCP接收端则不会出现此类现象。
虽然UDP有DTLS,但是我目前还没有研究透彻。
设备端的简化,一般常见的TLS安全套件由以下几个部分组成:
keyexchangealgorithm(RSA/DH/ECDH/SRP/PSK)
authentication(RSA/ECDSA/DSA)
bulkencryptionalgorithm(DES/3DES/AES)
messageauthenticationcode(MAC)
典型套件有:
TLS_RSA_WITH_3DES_EDE_CBC_SHA,其中3DES_EDE_CBC是一个加密算法
TLS_PSK_WITH_AES_128_CCM_8,IoT设备常用安全套件
TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8,IoT设备常用安全套件
假设设备采用长连接服务器,而且设备可以通过预先分配AES初始密码的(PSK,Pre-sharedkey)方式下发到设备和服务器中,那么安全算法中的KeyAgreement已经完成了。所以剩下的就是产生SessionKey启动AES加密,然后在AES加密通道中完成HMAC签名,实现双向认证即可。
在开发过程中,针对SHA1/SHA256的C/C++/Python源码了解了以下,发现SHA仅仅是散列算法,而HMAC-SHA才是签名算法,需要使用密钥来签名。虽然HMAC底层也是调用SHA散列算法的。
应用层协议:
由于是TCP长连接,带AES128块加密,所以信息的截取问题不大。但是许多嵌入式开发的资深工程师会尝试将串口协议照搬使用来实现预定义的二进制协议。但是这是在为服务器端工程师埋坑。
虽然在工程上马最初,双方使用ctype/struct等可以很简单地解决这个问题。但无论何种领域的工程师,都知道需求更改是肯定会发生的。而预先定义二进制协议,会在后续协议升级维护阶段造成很大困扰,甚至无法维护。
当一个端口面临多个版本的二进制协议,服务器端工程师心里绝对是崩溃的。所以补救措施:
增设VERSION字段,一旦发现版本差异,马上提示OTA,并断开连接。
采用更加通用的带语义解释的应用协议。
至于采用何种协议,需要双方讨论。可以使用:CSV;JSON;msgpack;某种二进制JSON。
如果工程师一定要采用自己的二进制协议,那么服务器端团队应该提供某种透传协议工具,比如JSONschema实现二进制与JSON的互相转换,让设备端工程师和应用端工程师直接对接,而规避这种麻烦事情。
作者:华云神舟 轉自:智客号
免责声明:本文来智客号作者,不代表yuendong的观点和立场。若有侵权或异议请联系我们删除