大家好!我是不知名的安全工程师Hkcoco!
欢迎大家关注我的微信公众号:TrustZone | CSDN:Hkcoco
获取更多精彩内容哦!!!
什么是安全启动?这是物联网安全的起点
什么是安全启动?这是物联网安全的起点
联网物联网设备可以在现代数字生活的各个方面找到。从自动驾驶和联网汽车到医疗设备,再到智能电表和智能手表。这些设备产生的数据和控制的过程从未如此之大。
由于其重要性,需要优先考虑物联网嵌入式设备的安全性,这对于数据和服务的完整性和可靠性至关重要。
确保物联网嵌入式系统安全的第一步是安全启动。
物联网安全应该建立在建立信任的基础上,这为系统的其他部分提供了一个安全的基础。我们需要确保这种信任的根源确实是值得信赖的,以最大限度地减少潜在的攻击及其后果。
什么是安全启动?
安全启动是指在授权在启动过程中使用操作系统启动镜像和代码之前,根据硬件对其进行身份验证的过程。硬件已预先配置为使用受信任的安全凭据对代码进行身份验证。
换句话说,安全启动确保启动技术和操作系统软件是合法的制造商版本,并且没有被任何恶意行为者或进程更改或篡改。
为什么安全启动很重要?
安全启动对于防止对手破坏操作系统或在物联网设备中安装不同的启动程序至关重要。
嵌入关键业务系统的物联网设备的激增使安全启动的使用成为保护这些设备安全和保障其可靠运行的重要因素。任何插入设备的恶意代码都可能使该设备成为僵尸网络的一部分,或者它可能被用作针对其他更敏感系统的攻击的启动平台。
例如,对手可以穿透不安全的设备,用包含恶意软件的文件替换合法的可执行文件。如果设备没有受到安全启动的保护,则恶意代码将在下次重新启动时执行,设备将受到威胁。
通过现在在设备上运行的流氓代码,恶意行为者可以操纵设备收集的数据,也可以将设备执行的任何功能视为非法或不可信。
有了安全启动过程,重新启动期间的安全检查将识别未经授权的可执行文件,阻止其运行并启动补救措施。
它是如何工作的?
安全启动过程要经过一系列步骤,以确保安装的完整性和真实性,从而使设备正确、安全地运行。这些步骤如下图所示:
验证启动加载程序是否可信对于确保和执行启动过程的其余部分至关重要。启动加载程序可执行文件的验证是使用公钥/私钥完成的。在启动加载程序代码的安全开发过程中,使用制造商的私钥对其进行数字签名。
当启动加载程序固件要安装在设备上时,会根据设备上嵌入的公钥对其进行检查,以确认其为正版。每当设备启动或需要安装更新时,都会重复相同的过程。
一旦启动加载程序文件被成功检查为可信,安全启动过程就会检查操作系统和其他功能应用程序的有效性。已签名的应用程序代码将根据嵌入的公钥进行验证,以确保其是真实的。如果操作系统和应用程序得到保证,它们就可以开始运行。
总之,设备启动过程是由受信任的启动加载程序文件启动的,只有在验证了前一阶段的真实性并成功启动后,才能运行每个阶段。
安全启动挑战
安全启动过程的基础是与用于创建唯一设备标识证书的设备相关联的根密钥。
- 在设备供应期间,应使用设备上密钥生成(ODKG)在设备内创建密钥对。
- 然后,证书签名请求(CSR)被发送到证书颁发机构(CA),以创建签名证书,然后将其安装在设备中。
这些设备密钥的安全性是安全启动过程的关键因素。
因此,最重要的挑战是维护这些密钥的安全性。设备处理器根据其存储的密钥检查启动镜像。如果这两个匹配,则执行启动镜像。**与CPU中的根密钥匹配,构成了点燃物联网设备操作的根链。**如果密钥被泄露,则整个安全启动过程都会被泄露。
每个设备都会创建唯一的私钥,并且永远不会离开边缘设备。这些私钥在设备证书到期时重新创建,并且该过程可以在物联网设备的使用寿命内重复。
物联网设备用户需要注意的另一个问题是,安全启动过程不会锁定整个系统。它只保护操作系统软件。这一点非常重要,因为如果有人插入在操作系统上运行的恶意软件,他们仍然可以破坏设备。 但是相关也有应用安全的机制如沙箱、应用签名等方式来控制。
实施安全启动的最佳实践
为了保护您的安全启动过程,从而保护您的设备,建议遵循以下最佳做法
确保流程安全
要确保安全启动进程的安全,您需要确保所有相关进程的安全。这样做的关键是使用设备上的密钥生成功能,以便私钥始终保持在设备中。这些密钥的折衷会导致整个过程的折衷,因此保护设备私钥至关重要。
使用强加密
加密是安全启动的基础。请确保您的加密算法是最新的并且适合使用。还要考虑如何在加密货币随时间变化时更新边缘设备中的加密算法。
保护您的代码
为了使安全启动有效,**必须安全地开发启动加载程序、操作系统和其他功能应用程序中使用的代码,并彻底检查是否存在任何安全缺陷。**代码应该始终使用代码签名证书进行签名,并且作为软件开发过程的一部分,应该控制和监控对该证书的访问。
使用强身份验证
为了增强物联网设备的安全性,加载的代码必须始终经过身份验证。安全启动检查代码签名,处理器认为任何签名的镜像都是安全的。此外,您应该确保每个代码组件都被调用到处理器中的安全启动库中。
确认身份验证过程
最后,必须确保身份验证过程不会中断,并且在进入下一个阶段之前,代码启动过程的每个阶段都经过了正确的身份验证。 否则要是验证通过后但是没有运行对应的文件,那这个验证的就失去了意义,尽量保持每个阶段的事件原子性。
EYE ON
无意发现了一家叫Keyfactor的公司,是做物联网身份识别平台的。
Keyfactor是一家成立于2001年的美国公司,致力于为汽车、金融、医疗保健和零售等垂直领域提供自动化数字安全管理。根据价值226.8亿美元的全球身份和访问管理市场数据,Keyfactor已经占据了相当大的份额。公司方面表示,Keyfactor的年收入已经翻了一番,并拥有排名在Global 2000内的企业客户,例如Lightspeed Systems。此外,Keyfactor还是网络安全行业权威机构,提供安全数字身份管理解决方案。有些研究表明,Keyfactor关注的物联网设备的安全性存在隐患,182个RSA证书里就有一个可能会被破解,许多RSA公钥都处于受到威胁的风险中,因为研究人员能够使用公钥通过“分解”的方法来导出其私钥。
Keyfactor Control为物联网身份提供了一个完整且可扩展的解决方案——从安全的信任根源到灵活的API和集成。我们的平台提供一系列安全功能,包括:
- 身份配置和生命周期:在连接的设备上部署、管理和更新数字证书,从配置和现场调试到续订和吊销。
- 安全的信任根:使用专门为您的物联网部署构建并由我们的专家团队运营的云托管PKI,在prem、云中或即服务中运行您的PKI。
- 安全固件签名:获得一个集中的工具,以确保大规模的代码签名操作,并启用安全固件OTA更新和实施安全启动。
- 物联网SDK:为开发人员提供灵活的开源SDK和C-Agent,以在设备中实现自定义功能,如密钥生成、密钥存储和数字签名验证。