基于MCU、MPU或FPGA的嵌入式M2M系统安全解决方案
针对基于MCU、MPU或FPGA的嵌入式无线或有线M2M系统,特别是在当今普遍联网但易受攻击的世界中,良好的安全性要求采取以下这些全部使用了标准加密算法的措施: 使用TLS的网络通信安全 使用IPSec的虚拟专用网安全(VPN) 使用SSH的安全登录和系统交互 使用SFTP的安全文件传送 安全的电子邮件——加密的电子邮件和安全的邮件服务器链路 安全的网站服务器——https 安全的管理——SNMP v3 使用加密和检查过的映像进行安全启动 本文简要讨论了上述各项安全措施应用到M2M的情况以及总的系统级考虑因素。M2M系统要求高度的安全性来保护信息和系统。没有这种无缝的集成和测试,就会存在安全漏洞,系统很容易受到攻击,并可能发生可怕的后果。 使用TLS进行网络通信 在M2M系统中,不管是哪种无线类型,所有无线链路都会使用某种加密技术来保护无线传输的数据。在一个节点内或两个有线节点之间,负荷数据以明码的方式存在于有线/无线混合系统中。一种方法是使用传输层安全(TLS)协议。TLS作为网络中两个节点之间的端到端加密技术,可确保数据不管走哪条路径总是安全的。 如图1所示,TLS很容易配置和使用,正是这个原因,TLS是人们非常青睐的一种通信安全方法。TLS的典型实现遵照的是针对应用程序可移植性开发的事实上的openSSL接口标准。这种应用程序编程接口(API)是套接字(socket)接口中的表示层,可为应用程序提供安全性。
图1:TLS可保证端到端通信的安全。 在套接字通信之上提供TLS层可以为安全应用提供安全的套接字通信,而直接使用套接字的通信是不安全的,因为所有数据都是明码传输。 使用IPSec协议的虚拟专用网(VPN) 许多时候,网络中两个节点之间的所有通信都要求是安全的。在这种情况下,可以建立虚拟专用网(VPN)(图2)。这种协议深入TCP/IP实现内部,对两个节点间传输的所有数据包进行加密。因为IPSec是作为网络层的一部分,因此节点之间的所有套接字调用都会自动加密。
图2:在两个节点之间使用VPN和IPSec可以确保节点之间所有通信业务的安全。 有人可能会问,既然如此,为什么我们还要使用其它方法,用这一种方法不就可以了吗?原因有两个。第一个原因很好理解:VPN的建立相当麻烦,会遇到很多问题。正是这个原因使得它的使用面不如想像的那么广。 第二个原因是最好的安全性需要建立在各层中。通过提供各个安全层,被攻破的难度就要大得多。这与打开多重锁着的门才能进入金库是一个道理——每个层都增加了入侵难度。基于这个理由,最好采用更多的安全措施,而不仅是VPN. 安全壳 为了登录并在远程系统上工作,小型系统上经常使用telnet.现在通过增加额外的闪存空间,你可以运行安全壳(SSH)(图3)。SSH就像是一种安全的telnet,但并不是运行在TLS之上的telnet.SSH有它自己的协议。它通过在MCU上运行的SSH服务器提供安全壳访问。
图3:SSH代替Telnet提供节点间的安全通信。MCU产品只提供SSH服务器,该服务器。 安全文件传送 只是因为在使用文件传送协议(FTP)时使用了登录身份和口令,许多人就认为这是安全的传送。事实上,即使是口令在网络上也是明码传送的。更好的方法是使用安全文件传送协议(SFTP)。SFTP并不是在TLS上运行的FTP.而是如图4所示那样,是另外一种用于加密文件传送的特殊协议。
图4:SFTP是一种新的协议,支持文件传送时的加密和认证通信,可替代所有数据都是明码传送的FTP 安全的电子邮件 邮件服务器之间的业务通常用TLS加以保护。但TLS只能保证只有授权和认证的用户才能使用服务器,而监视网络业务的任何人都无法阅读邮件。基于这个理由,如果你使用SMTP协议从基于MCU的M2M传感设备安全地发送通知,你也需要TLS(图5)。
图5:使用TLS的SMTP传输可以确保只有授权用户才能使用电子邮件服务器,并加密发送数据。如果消息在发送前得到了加密和签名,那么这些消息就能被拥有正确消息密钥的人加以鉴权,确保其私密性。 当然,在服务器上使用的安全性并不能应用于任何给定节点中的消息内容。因此消息需要签名和加密才能确保自身的安全性。 安全的网站服务器访问 为了安全地进行网站页面访问和数据传送,可以使用HTTP Secure(HTTPS)。采用任何M2M配置的网站服务器(图6)都要求支持HTTPS.HTTPS是联合运用TLS以及HTTP协议实现的。网站服务器本身可以通过HTTPS获得加密的数据包进行处理,并提供传送之前加密的解过密的网页。
图6:浏览器具有足够的智能使用TLS上的http进行连接,从而支持安全的网站访问。http服务器也接受TLS上的请求,以便提供安全的网页访问和更新。 安全管理 为了管理远程设备,我们经常使用安全网络管理协议(SNMP)。SNMP提供了查看设备内部细节、重新配置设备、执行各种命令、读取数据、读取记录和设置变量的一种方式。为了做到这一点,要求使用最新的安全版本(SNMP v3)(图7)。许多实现人员试图使用较早版本的SNMP,但这些版本都是不安全的。
图7:客户端和服务器都要求支持SNMPv3才能实现安全的管理。如果服务器只支持SNMPv1和2c,是无法实现加密或认证的。为了提供完整的安全性,加密和认证都是必须的。 安全启动 当在系统上执行远程更新时,需要一个安全的系统来下载新的映像、重新编程器件,并确保程序工作正常,但这方面的安全性经常被人们所忽视。如果没有安全的启动措施,新的映像可能被加载到设备上,控制被暗中破坏,或者算法被篡改,从而可能导致严重的后果。 系统安全问题 所有这些安全服务都需要与操作系统一起工作。认为这种复杂程度不需要实时操作系统(RTOS)就可以对付恐怕是痴心妄想。只有将这些组件无缝地集成进操作系统然后经过严格的测试才能保证其安全性。 有些人试图提供附加模块来实现上述多种安全功能,但没有操作系统的集成和测试,很容易留下安全隐患。通过无缝集成和基于工厂的测试,安全性将得到改进和修复(如果需要的话),并在系统级别完成。 |