本文翻译自:Security for Connected Devices
原文作者:Martin Bergenwall
校审:Kenny Zhang,Richard Lin
在这篇文章中,我想讨论安全性问题,并重点关注互联设备或物联网(IoT)。物联网通常代表一个物理对象(或“事物”)网络,这些物理对象嵌入电子、软件、传感器和连接性,使这些对象能够与制造商、运营商、云和/或其他连接设备交换数据。物联网设备通常被认为是“智能设备”,例如具有远程监控或控制的联网家用电器;“智能家居”组件,例如有远程管理/监控通道的照明、供暖或通风装置;工业自动化传感器网络; 联网车辆远程信息处理传感器,以及许多其他嵌入式设备,这些设备可以联网并具有计算能力。
如果您对互联设备的安全性感兴趣,请联系Qt公司 ,以了解有关如何将Inside Secure的解决方案与Qt集成的更多信息。如果您想了解更多,请继续阅读。
建立在异构基础架构上的大量连接设备增加了被攻击的风险。对物联网基础设施(网络或终端设备)的潜在攻击会产生风险,包括应用程序失控、拒绝服务、关机(例如智能电网应用)、用户隐私丢失、欺诈、恐怖袭击等......带来严重的社会后果,如收入损失、责任问题、品牌损害、人员健康、工作破坏等。
在搭建物联网基础设施前,建议进行安全分析,以评估被攻击得手后的后果,定义要实施的最佳的安全解决方案。黑客或恶意用户受到各种因素的激励,例如金钱,娱乐,技术挑战,恐怖主义等。为了达到他们的目的,他们会在设备上部署恶意破解的功能或能从设备中提取信息的各种手段。
通常情况下,黑客会对攻击得手后的回报与攻击的“成本”和“风险”相比较:他执行攻击所花费的时间与进行攻击所需的设备成本(经济壁垒)。执行攻击所需的专业知识是“成本”的一个很好的例子。“风险”的一个例子包括如果被抓住的法律处罚(罚款、监禁等)。
我想强调的是,我们应该根据黑客执行攻击的后果而不是设备本身的价值来确定安全性。
连接的设备可能会遭受到大量攻击。可以在如下的级别执行攻击:
以下是一些例子:
密码学是隐藏信息的实践和研究,是用于保持信息秘密和安全的科学。密码学可分为三个主要功能:
这三个功能可以单独使用,也可以组合使用来建立完整的解决方案。
最后,我想强调的是,任何加密的安全性都取决于对敏感密钥的保密。
不论何种使用场景,互联设备都有共同的基本安全需求,这些需求是安全的支柱:
密码学是这四大支柱的基础,因为它用于验证、加解密、签名和数据完整性检查。
身份验证:确认通信对端的身份
身份验证是通信对端识别并相互保证其身份的过程。每个终端必须受控,以确保每个对端都是可信赖的,以避免将假冒设备接入网络。
最常见的身份验证形式是基于共享一个密钥。AES或SHA-256是使用对称密钥算法进行身份验证的一个典型例子。但请记住,这种算法非常容易受到攻击,因为如果共享密钥被泄露,整个安全机制就会崩溃。
一个更好的验证方法是依赖于非对称的公钥加密。公钥认证通常用于连接Internet的服务器和设备,以提供强身份验证。ECDSA是用于身份验证的非对称算法的典型例子。
通信中的一大挑战是创建初始信任以确保所接收的公钥属于预期的通信对等方并且可以被信任。设备需要获得“信任”,即用于验证签名的公钥确实属于它“想要与之通信”的设备,或属于它可信任的设备。
这总是需要在设备中存储一些公钥。虽然公钥不需要保密,但它必须是不可变的,也就是说攻击者不能修改密钥而导致设备使用其他密钥。
配置和加载设备中的密钥并存储它们是至关重要的。Inside Secure提供了一个屡获殊荣的灵活安全的配置解决方案,可满足设备供应商的不同需求。
顾名思义,互联设备利用现有的互联网技术和协议。这些协议都提供了经过验证的安全通信解决方案。实际使用中,节点通常会遵循一些有影响力的通信协议的安全标准- 例如,在“智能电网”应用中,通信模型通常遵循C/S架构,使用诸如SSL / TLS或DLTS之类的协议,而在“全网状”型网络中,则更适合使用IPsec之类的网络级安全协议。
互联设备中执行的代码必须按预期运行:不应被修改或损坏,敏感数据也不应该被泄漏。当代码处理加密密钥或执行加密算法时,这一点尤为重要。密钥必须在完整的加密过程中保持加密状态而且不可变,加载密钥、执行加密函数的代码必须按预期运行。某些敏感应用程序(如可穿戴设备中的支付应用程序)可能需要某些特定级别的进一步保护。
代码可以通过两种方式进行保护:一是在安全可信环境中执行代码,二是使用软件代码保护技术进行执行过程的保护。
软件代码保护技术大致可分为三类:
混淆阻碍了攻击者静态分析软件的能力。鉴于现代软件的“永远在线”的要求,将在客户端设备上安装大量敏感逻辑和知识产权(IP)。同时,许多新功能需要部署在包含商业敏感算法的设备中,安全敏感功能是指指纹验证或者设备和用户验证,或解密敏感内容流的设备。
应用程序中的这类代码可以使用各种公开的调试工具和黑客工具轻松获取,从而就产生了黑客攻击和知识产权盗窃的重大风险。
强大的混淆技术(如Inside Secure提供的技术)极大的增加了对应用程序敏感功能进行逆向工程所需的复杂性,同时也极大的阻碍了静态或动态分析其操作的尝试,使得除了最熟练的攻击者之外的人都不能进行分析,并确保即便是精英黑客也会转移到更温和、更有成就感的目标。
Inside Secure提供了一个插件,可将代码混淆技术集成到构建工具链中。这使得代码混淆变得非常简单,可以用于任何需要防止逆向工程的Qt应用程序上。
应用程序及其功能的完整性是通过应用代码本身的防篡改功能来实现的。防篡改意味着攻击者无法进行下面的操作:
插入代码中的完整性检查可在运行时保护软件的完整性。甚至在他们开始控制设备之前,自动检测代码更改以阻止攻击尝试。
Inside Secure提供的技术可以自动为Qt应用程序添加完整性检查,这些检查可以作为构建工具链的一部分。完整性检查对目标设备的硬件有一定的依赖性,在调整检查时需要考虑到这一点。
如上所述,加密是为了保护物联网设备及其更广泛生态系统的关键部分,但所有标准加密算法都存在越来越多地可以被攻击者利用的缺陷。如果攻击者可以直接访问设备上运行的软件,那么他们通常很容易窃取与这些算法一起使用的任何密钥。在大多数情况下,获取了对这些机密的访问权限会抵消从使用加密技术中获得的好处。
使用白盒技术最明显的效果是,即使秘密被使用,它们也永远不会在内存中泄露出来。一个好的白盒实现,例如Inside Secure的Whitebox技术,专门用于防止旨在通过利用原始算法或白盒版本中的弱点来重建秘密的高级攻击。
虽然数据在操作期间受到保护,但存储的数据也必须受到保护。存储期间有两种必须保护的数据:
在互联设备中,静态数据存储在各种介质中,但主要存储在半导体工业提供的存储器设备中。可以通过加密、存储在防篡改设备中或两者的组合来保护数据。在任何情况下,必须仔细控制授权人员对机器和进程的访问。
虽然一些与安全性相关的技术可能很复杂,但将其集成到Qt应用程序中并不困难。Qt用户可以轻松地从最新和最先进的Whitebox技术中受益,以实现安全存储或安全文件系统。Inside Secure为Qt Creator IDE提供了一个插件,并通过简单明了的API提供相关的接口。
物联网是一个新兴的技术市场,在安全性方面有很大的需求。安全需求类似于前几代联网设备、嵌入式设备或安全令牌化的安全要求,但需要战略性地组合在一起以匹配每个特定场景。互联设备的安全设计可以从平台安全、支付或金融交易等高度敏感的应用、政府相关应用、内容保护等领域的经验中受益匪浅。
Inside Secure已经在全球范围内保护了数十亿台设备,可提供满足互联设备所有安全需求的解决方案。从面向芯片供应商的安全配置解决方案和安全知识产权开始,涵盖安全引导和安全通信解决方案,一直到最先进的软件保护技术。这些技术已成功通过了外部安全实验室的广泛渗透和攻击测试。
Inside Secure的产品允许设备供应商在恶劣的环境中安全地处理和存储敏感数据。它简化了安全性与软件的集成,并可以防御恶意攻击。
如果您有兴趣保护您的应用程序或嵌入式设备,请联系Qt公司以获取有关如何将Inside Secure的解决方案与Qt集成的更多信息。
【译者注:Inside Secure于2019年7月1日更名为Verimatrix,并在Euronext Paris交易所上市、交易。】