本文将通过介绍物联网(IoT)安全的13个最佳实践以及如何在物联网应用中实施这些最佳实践来确保符合法规,从而探索开发安全设备的道路。这13项最佳实践包括无默认密码、安全更新机制、明确告知客户的报废政策等。虽然全球立法还在不断发展,但我们都知道它将包含有类似于这13项最佳实践的步骤。一旦这些措施得到实施,理论上就可以很容易地适应欧洲EN 303 645和不断发展的美国物联网安全改进法案(NISTIR 8259)可能提出的任何其他要求。
安全对于使设备能够在可信网络中协同工作、在网络内共享个人数据以及通过云服务实现私人操作至关重要。同样,管理更新和采购也需要一个安全的基础。
物联网设备供应商意识到,他们的IP(知识产权)价值等同于其业务价值。IP被盗的可能性是非常大的。事实上,根据最新的知识产权保护和执行报告,欧盟估计每年可能有高达600亿美元的IP被盗。除了经济后果外,这种IP盗窃行为仅在欧盟就可能对约30万个就业岗位产生潜在影响。
消费者保护正在推动世界各地的标准和安全立法。例如,运往欧洲的消费电子产品必须符合欧洲标准EN 303 645。此外,物联网设备还须遵守GDPR法规中概述的隐私法规。其中包括保护用户个人数据的明确义务,并确保这些数据可以在产品的生命周期内或是在产品被出售时、或是在转让时被删除。同样,作为服务的一部分提供的所有数据,即使是简单的咖啡机语音指令,也属于该法规的管辖范围。
GDPR对违法行为规定了明确的处罚措施,如果发现公司故意违法,最低罚款可达2000万欧元,相当于公司总销售额的4%。
随着EN 303 645和美国物联网安全改进法案(NISTIR 8259)的出台,消费物联网市场在遵守安全标准方面面临的压力与日俱增。然而,这不仅限于物联网消费者,其他市场的法规也在迅速发展,例如工业物联网(工业4.0)IEC 62443的要求以及医疗和汽车行业的类似要求。
EN 303 645和美国物联网安全改进法案非常相似,其根源可以追溯到物联网安全基金会的工作。
物联网安全基金会是一个成功的行业论坛,它的成立起源于确定现有“最佳实践”或安全实践准则以及如何将其应用于新兴物联网挑战的需求。
消费者物联网安全实践准则的目标是提供指导,说明如何在物联网产品的整个生命周期内,在开发、生产和维护过程中采用安全的设计方法。这些实践汇集了公认的物联网安全最佳实践。
(来源:IAR,来自英国消费者物联网安全实践准则)
指导原则和实践准则涵盖了从安全设备启动、加密设备身份、信任根、操作系统、凭证管理及加密到安全软件和软件更新策略的方方面面。
EN 303 645标准重点关注13项最佳实践要求,其中包括3个核心要素:无默认密码、漏洞披露和保持软件更新。
让我们探讨一下这些可直接应用于物联网应用的最佳安全实践:
1.无默认密码
听起来很明显,但要实现它还需要做更多的事情。理想情况下,默认密码应从设备本身派生或是注入设备中。一个明智的想法是,在序列号没有足够熵且设备使用基于哈希的算法(如SHA-256)的情况下,使用基于设备特有的哈希的多样化算法来生成密码。
2.实施漏洞披露政策
简而言之,这与公司披露政策有关,除了客户联络活动和漏洞沟通之外,还要有一位专门负责的主管。
3.保持软件更新
随着企业中使用的物联网设备数量不断增加,保持设备的更新将成为一项挑战。与没有制定物联网软件更新策略的团队相比,在部署初期就制定策略的团队会发现自己更容易管理。更新必须及时,并且不应影响设备的运行。更新策略需要强制执行防回滚机制,这样旧版本就不会成为可能的攻击媒介。
软件更新实践还包括生命周期终止政策,以便在指定期限内向设备提供和推送更新。
4.安全存储凭证和安全敏感数据
这种做法表明,任何凭证都应该安全地存储在服务内和设备上。在设备软件中,密码和银行帐户信息等硬编码凭证是不可接受的。应始终完全启用MCU的特定设备安全功能和内存管理,以保护安全敏感数据。
5.通信安全
IoT设备应使用安全传输层协议(TLS)或轻量级加密(LWC)进行安全通信,并始终使用最新版本。这意味着安全敏感数据应在传输过程中进行加密,并且密钥应得到安全管理。
6.最小化攻击面
其目标是最大限度地减少暴露的攻击面,即所有设备和服务都应按照“最小特权原则”运行。这是最重要的原则之一,与代码质量相关,因为软件缺陷或代码漏洞是黑客利用物联网设备进行攻击的大门。
代码质量需要通过设计来加强。可用的标准有很多,但其中由卡内基梅隆大学软件工程学院开发和拥有的CERT C编码标准尤为特别,它提供了C编程语言的安全编码规则。这些规则和建议的目标是开发安全、可靠和稳定的系统,例如消除可能导致未定义程序行为和可利用漏洞的未定义行为。
大多数常见的安全漏洞都是已知的,而开发人员却不断重复注入相同的错误。好消息是,这些不良的编码习惯在mitre.org的常见弱点枚举(CWE)等编码标准中都有涉及,并指出了其他值得关注的方面,如数据注入、空指针漏洞和字符串解析错误等。MISRA C和MISRA C++也倡导安全可靠的编码实践,以防止代码中出现安全漏洞。高质量的静态分析工具包括对CWE、MISRA和CERT C的检查,因此可以逐日提高代码质量。
7.确保软件完整性
这意味着物联网设备上的软件应使用安全启动机制进行验证。如果检测到未经授权的更改,设备应提醒消费者并确保软件经过验证和受到保护。
安全启动过程对于确保物联网设备的完整性至关重要。安全启动经常被称为信任根。信任根必须是一个执行大量操作并具有一系列无条件信任功能的计算引擎。然后通过安全启动加载器/管理器实现信任根。通过这种方式,就能确保用户应用程序的验证,而这是每个开机周期的关键部分。
8.保护个人数据
本文不会讨论个人数据的管理和保护方式。根据不同地区的当地标准和数据保护法律,这一点可能会略有不同。尽管如此,这一准则还是非常重要的,公司需要保持透明,允许消费者随时撤回自己的信息。
9.确保系统弹性
物联网设备应具有弹性,因为如果设备存在漏洞,有人对其进行攻击,你不一定会想直接关闭它,尤其是像心脏起搏器这样的设备。那可就糟糕了!因此,我们的想法是让设备具有一定的弹性,使其仍能提供受限制的服务,或至少告诉用户发生了什么,并且设备应该能够以合理的状态有序地返回网络,而不是大规模地重新连接。
10.监控系统遥测数据
遥测是在远程点收集测量数据或其他数据,并将其自动传输到接收设备进行监控。最佳安全实践指出,如果收集了所有遥测数据,例如来自物联网设备和服务的所有使用和测量数据,则应监控其中的安全异常情况。
11.启用简单的个人数据删除功能
物联网设备的所有权可能会发生变化,从长远来看,这些设备可能会被重复使用或丢弃。产品设计人员必须在应用中实现这一点,并对其进行配置,以便可以轻松地删除个人数据。因此,您也可以转让所有权。比如也许您想将其交给朋友,但您想在将其交给他们之前删除您的数据。
12、设备安装维护简单
物联网设备和支持服务的用户界面应该直观、用户友好,并为影响此类策略及其执行的用户操作提供适当的反馈。
建议制造商用一系列可能的配置来测试每个设备的安全性,而不是简单地使用默认配置。设备的界面应防止,或至少积极阻止用户以降低设备安全性的方式配置设备。
13.验证输入数据
最后一个最佳安全实践是验证输入数据。这一原则是指不要信任接收到的数据,并始终验证所有互连。在建立信任之前,要发现、识别和验证连接到网络的设备,并保持其完整性以获得可信赖的解决方案和服务。这可能包括检查数据类型、长度、格式、范围、真实性、来源和频率,因为攻击者会使用自动化工具来利用潜在的漏洞,例如由于不验证数据而导致的越界访问、计算错误和内存不一致错误。黑客可以利用这些漏洞来运行他们想要的任何代码,并接管物联网设备的控制权。
用于检测代码的代码分析工具对于在开发过程中测试和验证输入数据非常有帮助,从而可以保护应用免受现场的不良操作。开发和现场测试期间的自动化分析工具可以触发并指出隐藏的问题,因此可以调整源代码,并防止物联网应用被误用。
遵循所有准则和最佳实践并非易。如果没有合适的工具,通过集成和结合安全设备启动、加密设备身份、信任根、凭证管理和加密来确保软件和TLS通信的安全以及提高代码质量来实现安全基础可能是一个漫长的过程。
所以最建议的解决方案之一就是在项目一开始,即项目启动时就定义安全内容。这应该是对确保IoT应用安全并符合标准和准则所必需的安全内容的描述。尽早定义安全内容可以让开发人员快速实施所需的安全措施,确保可重复性并减少多个项目的开发工作量。安全内容可进行定制,以适应各种物联网应用。
安全内容应定义:
这些安全内容为一套核心安全功能奠定了基础,从而实现了准则所要求的设计安全。一旦集成到开发工具中,安全内容将自动实施并有效应用准则,从而使这一过程变得简单,并自然地集成到新物联网产品的开发中。
消费者物联网安全标准EN 303 645以物联网安全基金会和英国政府制定的13项最佳实践准则为基础,被广泛认为是消费者物联网的安全基准。该标准和准则都包含有开发人员应达到的应用的核心要求。企业在构建物联网应用时必须遵守这些核心要求,以符合安全法规。
总体的目标就是确保产品在设计上的安全性,并使人们更容易在数字世界中保持安全。
(原文刊登于EDN姊妹网站Embedded,参考链接:Ensuring security legislation compliance in IoT applications,由Ricardo Xie编译。)