扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
介绍
网络通信(和互联网)是不安全的。网络提供商和设备制造商已经意识到这一点,并且已经开发出相应技术来保障重要数据流量的安全。这其中包括我们目前使用的标准技术,比如企业网络中的IPsec/SSL VPN、浏览器上进行在线采购和捐赠的SSL/TLS流量、用于手机通话和数据的空中加密。不过在使用这些技术时,需要依赖密钥和其他敏感的安全参数。怎样能够保证密钥的安全呢?如果攻击者能够取得你的密钥,流量的安全何在?更严重的是,如果你不知道有人已经获得了你的密钥或者私人数据,情况会怎么样?攻击者可以在你不知道的情况下,自行获取你的重要信息。但是风险还不止于此,精通技术的攻击者实际上能够在你的系统上安装代码,采集敏感的安全参数或者其他数据,或者让你的系统进行异常操作。
移动宽带网络飞速发展,设备的数量不断增多,在整个移动网络内确保用户的安全具有极端重要的意义。另一项变革是无线回程正在向基于IP的共享回程转型,这使得设备更加容易使用,技术更容易被掌握和理解。共享IP网络的缺陷在于安全机制也是通用的且为人所熟知,也就更容易受到挑战。另外,移动宽带网络引入了更加丰富的基站种类,并且布置在非安全位置(尤其是毫微微蜂窝基站)。最后,由运营商共享设施、设备和/或回程的多租户模式正在变得更加流行。后两个因素使得网络更容易受到来自本地的物理攻击,也使得设备可以进行物理改变从而增加远程攻击的力度和可能性。
本文将讨论为了防范攻击、改善系统安全性而在嵌入式系统和处理器(尤其是针对无线基础设施和企业而设计的嵌入式系统和处理器)中所使用的几种不同技术。
威胁——我们需要防范的
很重要的一点是通过加密服务确保“传输中数据”和“静态数据”的安全。如前文所述,当今有大量协议可用于提供这些安全服务。“传输中数据”指在网络中移动的数据。传输协议中的标准数据存在于协议栈的几个不同层级中,比如L2层的以太网MACsec、L3层的IPsec和L4层及以上的SSL/TLS/DTLS、SRTP、SSH等等。“静态数据”指存储在硬盘驱动器或者其他静态介质上的数据。静态数据安全标准包括IEEE®标准1619和ANSIT光纤通道安全。传输中数据和静态数据协议中使用的加密技术都依赖于密钥和其他敏感安全参数(SSP)。SSP不仅包含密钥本身,也包含其他可用于理解所用安全机制的关键信息(比如在IPsec协议下:使用什么密码;防止重送窗口处于什么状态;或者这种安全关联的密钥超时状态是什么)。必须确保平台或者系统本身的安全,才能保护这些关键信息和其他关键信息。
对系统的攻击可以是本地的,也可以是远程的。本地攻击指攻击者通过物理方式连接系统,远程攻击指通过附属网络发起的攻击。一般来说,本地攻击更具侵入性和破坏性,因为攻击者是通过物理的方式连接到系统、板件、设备或者设备上的端口。但远程攻击,尤其是由内部人员发起的远程攻击(比如软件编程人员在安全漏洞中编码)也具有破坏性。没有哪个平台能够提供“万无一失”的安全性。
所能实现的安全水平取决于投入的时间和资金。我们的目标是创建足够的准入障碍,让攻击者不得不权衡侵入平台所花的时间和资金会不会超过成功攻击所带来的效益(见图1)。
另一个需要考虑的项目是“谁”可能攻击系统,如果攻击成功会造成什么样的破坏。潜在的攻击者包括短时黑客、客户、竞争对手、政府机构乃至集团犯罪。攻击的复杂程度以及为系统入侵所提供的资金量都会有很大差异。系统架构人员会在这个清单中的某个地方划一条线,并决定愿意花多少钱来保护这个特定的平台。例如,防范某个客户入侵自己的基站(毫微微蜂窝)所需的成本以及如果入侵成功所带来的风险可能都比较低。与此相反,如果一个资金雄厚的大型机构购买了你的平台(合法或者非法渠道),然后系统地分解平台并逐一分析各个组成部分和缺陷,防范这种攻击所带来的成本可能会超过开发机构的承受上限。
就威胁而言,最后需要讨论的是攻击者最可能想获得什么样的信息以及如何保护这样的信息。如前文所述,首先需要保护的是SSP和密钥。这很关键。因为传输中数据和静态数据的安全协议依靠的就是这些密钥和SSP。重要的是使攻击者不能读取或者修改这类数据。系统可能还含有与其他安全方法有关或者无关的其他敏感数据,比如口令、使用信息和用户数据(当存储在系统中的时候)。
系统制造商必须防范其系统被置入流氓软件。根据攻击者意图的不同,这类软件可能会执行各种恶意任务,比如进行拒绝服务攻击;用代码替代制造商软件以达到清除功能和(或)安全机制的目的;在制造商软件中植入代码用来恶意收集信息;升级某个用户的授权水平;通过安全漏洞获取和(或)探查操作系统版本或者应用代码。
最后,系统制造商们花费大量资源开发出了新产品,他们希望投资成果不会被他人复制和克隆。为什么让你的辛苦工作落入竞争对手的手中呢?
图1:实例:选择投资,保护您的设计
这项技术看似复杂而且昂贵,你是否真的需要?
系统安全,或称为“平台信任”,正在嵌入式行业中日益普及。有几组标准在规格制定方面是完全或部分针对平台自身的安全而制定的。
第三代合作伙伴项目(3GPP)为世界大多数移动无线基础设施制定了标准。3GPP有多项标准要求使用受信的执行环境和SSP保护。这其中包括“TS 33.401 – 系统架构演进(SAE);安全架构”和“TS 33.320 – 家庭基站(HNB)安全/演进的家庭基站(HeNB)”。
美国国家标准和技术研究所(NIST)已经制定出FIPS 140标准,规定了加密模块的安全要求。该标准有多个版本,设定了四个层次的安全等级,逐级提高对SSP创建、存储和归零的要求。最新的“版本3”草案还加入了对软件和固件完整性检查的要求。
作为使用最广泛的TCG标准,受信任的平台模块(TPM)依照TCG标准被部署在几乎全部的企业级PC和许多服务器上。TPM是一种微控制器,用于存储密钥、口令和数字证书。虽然TPM对PC/企业市场有效,但并非针对嵌入式市场而开发。
安全环境边界
在讨论具体的安全系统技术之前,我们必须首先讨论安全环境边界,因为这会影响所需的保护类型。
系统架构师首先要采取的步骤之一是在自己的系统中设定安全边界。安全边界在不同标准中的命名也有所不同。例如,TS 33.401规范称之为“安全环境”,而TS 33.320称其为“受信任的环境”。NIST FIPS140标准称之为“加密边界”。不管其命名如何,安全环境边界都是一个明确定义的连续界限,用于为模块建立物理边缘,并包含所有的安全、加密操作 和敏感安全参数。所有支持安全操作的硬件、固件和软件功能都发生在这个边界内部。常见的安全边界定义方式为将整个系统包含在内,即包含全部板件。但也可以 定义出更加紧凑的边界(例如,包含单个IC)。
图2:安全边界示例
安全边界的定义对接口保护和SSP、固件、软件的保护方式有影响。例如,在使用板/系统级边界的时候,可以用明文方式将敏感参数存储在DRAM等板级存 储器中。与此相反,在采用基于IC的边界时,任何存储在DRAM中的SSP都会落在已经建立的安全边界之外;因此要对这类数据进行加密并提供完整的保护。 尽管如此,使用比较紧凑的边界(例如基于IC的边界)仍然有其合理性,因为它具备多种优势,允许将单个安全设计重复用于多个系统或多种封装。
不管安全边界的位置在什么地方,关键在于系统硬件要能够支持系统架构人员所要求的模型。
硬件可信根
所有安全系统的基础是“可信根”。“可信根”是一种无条件受信任的组件。该组件一般存储对系统具有关键意义的机密,提供受信任功能,并通过这些功能和机 密将信任扩展到其他实体。在可信根向系统其余部分和外部实体扩展信任的过程中,必须具备对攻击的抗御能力。另外可信根必须以硬件而非软件的方式提供。
硬件可信根一般为系统将要执行的功能类型存储密钥。其中部分密钥公开,部分密钥保密。公共密钥指在安全系统中使用的密钥,虽然值是公开的但不会破坏系统 的安全性。保密密钥指在可信根中以保密方式持有的密钥,不会以任何形式直接提供。如果保密密钥被攻击和发现,系统就会被侵入。在嵌入式系统设计中,存储在 硬件可信根中的数据包括:芯片主机密钥或者根密钥;公共安全引导密钥;认证密钥;安全数据存储密钥;其他用于描述系统行为的系统特定参数。
安全引导
“安全引导”指提供软件和配置完整性检查和认证的过程。在软件镜像或配置被允许在处理器上运行之前,应首先检查镜像以确保镜像未经修改(即完整性检查) 并确保镜像由系统制造商创建(即认证)。安全引导的过程包括:利用加密散列函数(比如SHA-256)来确保完整性;利用公共密钥加密(比如RSA或者 ECC椭圆曲线加密)为镜像进行数字签名。系统制造商在工厂中留存私钥,而把公钥当作硬件可信根的组成部分提供给系统。只有经过正确私钥数字签名的软件才 能在器件上运行,进而在系统上运行。由于使用了公钥加密技术,即便攻击者获得了公共安全引导密钥,也不会增大系统的安全风险。
除完整性 检查和认证之外,系统制造商有权废除被认定为不安全的旧软件版本。产品进入现场使用阶段后,通常会发现一些软件安全漏洞。除非进行防回滚检查,否则经过正 确签名的较早镜像将在系统上运行。软件的当前版本是安全引导头的组成部分。防回滚检查功能将在安全引导阶段对当前软件版本与最低限度可接受软件版本进行比 较。当前版本信息作为完整性检查的组成部分受到保护,在不修改SHA-256散列结果(最终是签名)的情况下不能单独进行修改。如果当前版本低于最低可接 受的版本,系统将不会引导和运行。
系统制造商可能还希望为软件提供保密性,保护开发商的知识产权不被克隆。如果系统使用现成的硬件,安 全引导流程将防止竞争对手通过简单购买或构建相同硬件并克隆软件的方式制作出相同或极其类似的产品。软件镜像在存储到板载闪存之前会事先进行加密和实施完 整性保护,在网络中传输时也是如此(以升级为例)。安全引导流程还包含解密操作,并作为镜像认证流程的一部分。密钥块(key Blob)也是安全引导头的组成部分。“密钥块”是一种加密密钥存储结构,作用是在加密密钥处于安全边界之外时对它们进行保护。一旦密钥块位于安全边界之 内,系统会使用芯片主机密钥对密钥块进行解密,以得出真正的解密密钥。芯片主机密钥是一种保密密钥,不会提供给除安全引导硬件之外的任何资源。当解密密钥 恢复后,将被安全引导流程用于解密源代码。
分层安全引导流程
引导嵌入式处理器和 系统一般会涉及多个引导阶段(图4)。安全引导依赖于可信且不可改变的初始引导加载程序。为满足这些要求,处理器使用存储在ROM中的第一级引导代码。按 原理来说,ROM是不可修改的。初始引导代码随即检查下一引导阶段的完整性并使用硬件可信根密钥对其进行认证。一旦下一阶段软件认证通过,CPU将开始执 行经过验证的潜在的解密代码。这个过程可以根据系统制造商的需要在多个阶段反复进行。这样会创建一个“信任链”,在这个“信任链”中,软件和配置文件层叠 在前一个阶段之上,并可以确保安全性(前提是前一个阶段的安全性得到保证)。每个阶段都经过逐步检查,以确保其合规性。如果任何一个阶段未能通过安全引导 检查,则系统将无法引导和运行。
敏感安全参数(SSP)和数据存储
一般来说,我 们定义SSP的目的是用来包含任何短期密钥、安全会话状态和其他不需要在电源重启后保留的安全参数。FIPS 140-3标准的定义包含SSP定义中的关键安全参数和公共安全参数。他们将关键安全参数(CSP)定义为“任何安全相关的机密信息(例如秘密的加密私 钥、共享机密、口令和PIN等认证数据),这些信息一旦被泄漏或者修改就会损害加密模块的安全性”;将公共安全参数定义为“任何安全相关的公共信息,这些 信息一旦被修改同样会损害加密模块的安全性。”不管具体的定义如何,SSP以及设备制造商认定的任何关键数据都必须得到保护。
图4:分层安全引导流程和信任链
一旦系统安全地完成引导,就会产生需要保护的短期数据。如果该数据存储在安全环境边界之外或者在安全环境边界之内用明文存储,都必须使用某种加密技术予以保护。如果数据存储在安全边界之内,全部边界接口都必须是安全的,同时要防止对明文数据的访问。
在SSP和敏感数据存储中普遍采用的几种方法:
· 内部安全存储器
· 缓存加锁
· 为存往DRAM中的数据加密
第一种方法是提供一种内部安全存储器,不在DRAM中进行外部缓存,一般采用小型SRAM。这个存储器可以用来存储少量数据,但无法为容纳大量数据而进行扩展。
缓存加锁是指在DRAM或数据缓存中指定一个范围,防止存储在这个缓存范围中的数据被回写到外部DRAM中。这样做的效果相当于将缓存加锁部分安放到片 上RAM中。缓存加锁可以在任何一级缓存上实现,但对于处理器的系统缓存来说效果最好。以处理器为参考点,系统缓存一般属于3级缓存,比1级缓存大128 到256倍。加锁1级或者2级缓存也可以实现,但不能过度,以免过多地降低处理器和系统的性能。系统缓存加锁有多个优势。首先,加锁范围大小比经济可行的 专用内部安全存储器更大,从而提供更大的安全数据存储空间。系统缓存加锁的第二个优势在于,它可用于锁定片上安全数据和指令。出于对性能或者安全的考虑, 可将指令锁定在缓存中。例如,可能需要防止某些关键代码段被暴露。在安全引导过程中,该代码可从闪存中解密,然后存放在加锁的系统缓存中,避免在DRAM 中以明文方式暴露。系统缓存加锁适用于少量或中量数据。但是,当缓存线被加锁后,缓存和存储系统的总体性能会受到影响。如果缓存被“过度加锁”,系统性能 就会严重下降。
最后一种方法是为存往DRAM的数据提供某种加密。为DRAM数据加密的这种方法具有更强的扩展性,因为不存在内部 SRAM或者系统缓存加锁带来的大小限制。有两种方案可供讨论。第一种方案是通用的方法,即“确切”地找出哪些是敏感数据,然后给这些数据加密。安全引擎 使用名为“安全上下文”的数据结构来存储密钥和与特定安全会话有关的其他信息。通用解决方案为安全上下文提供解密和加密,或者仅在上下文进入和离开安全引 擎时提供上下文的密钥。这种方法在保护上下文数据方面性能良好,但无法保护尚未被识别的敏感数据。第二种方案是一种可覆盖大量数据的优秀技术,用于为整个 或更大的DRAM段提供可选加密。TS 33.320这样规定:“包括加密密钥、认证证书、用户信息、用户层数据和控制层数据在内的敏感数据不得在家庭基站(HeNB)中以明文方式提供给非授权 的访问。”这项要求可以通过DRAM加密予以满足。
安全的长期数据存储
除了短期数据,系统可能还需要安全地存储长期数据。长期数据是那些不会因电源重启而丢失的数据,一般存储在板载非易失性存储器中。需要长期存储的数据有 口令、预共享密钥、证书和文件。安全系统处理器可使用从芯片主机密钥或安全数据存储密钥中派生出的密钥,或者使用由芯片主机密钥随机生成并封装的密钥,为 长期敏感数据提供数据保密性和完整性。不管是哪种方法都会把数据关联到处理器本身,使得在芯片主机密钥或者安全数据存储密钥具有统计唯一性的前提下,只有 该特定处理器才可以解密数据、对数据进行完整性检查和使用数据。
上述方法一般用于长期数据,因为解密和完整性检查对于实时数据来说速度太慢。不过如果恢复数据造成的延迟对应用来说可以接受,那么短期数据也可以使用这种方法。
边界接口保护
如上文所述,处理器或附加存储器中可能存有SSP和敏感数据。不管处理器或板件是否是安全环境边界,处理器提供的部分接口将在边界上可用。因此,必须将 每个接口考虑在内,评估有哪些数据直接或间接通过这些接口进行访问。接口可以是网络接口(比如以太网)、外设接口(比如UART或者PCI-e总线)、调 试接口(比如JTAG)和测试接口(比如扫描)。必须采用接入控制方法来限制对外部接口敏感数据的访问。这些方法包括:
· 存储器保护单元。保护存储器区域不受非安全总线主控器和非安全DMA的控制和访问。
· 外设资产保护。为外设限制性访问分配安全和非安全状态。
· 扫描保护。保证没有敏感数据在IC扫描过程中被访问。
· 安全调试。保护敏感数据不被调试端口访问,比如JTAG和处理器调试端口。
敏感安全参数归零
归零指通过修改或者删除数据存储内容的方式来擦除SSP和其他敏感数据,进而防止数据被恢复。根据NIST FIPS 140规范的要求,应按照安全水平的不同进行不同程度的归零。FIPS 140要求针对维护和篡改检测进行归零。维护包括从系统中以标准操作移除板件。归零必须对安全边界内所有位置(包括硬件逻辑、寄存器和存储器)的敏感数据 进行重写。归零必须清除全部明文敏感数据和SSP。还可能需要删除用于对安全边界外数据进行加密的密钥。
即便系统不需要通过清零来满足 某种标准(比如NIST FIPS 140),也必须认真考虑清零功能,以防范“冷启动攻击”。“冷启动攻击”指通过系统重启开关或者简单断开和恢复电源的方式进行冷启动。这种攻击的原理是 DRAM和SRAM的内容即便在断电后数秒到数分钟内仍然可读。而且通过冷却存储器,还能让这个时间显著延长。如果没有归零功能,冷启动攻击会导致包括 SSP在内的存储器内容被恢复。
Axxia®通信处理器
用于安全系统的AXM2502解决方案
LSI的AXM2502是首款通过片上安全系统复合体(SSC)来实现安全系统功能的Axxia产品。将安全系统功能直接集成到通信处理器中,可以减少潜在的攻击点,便于运营商和设备制造商:
· 保护软件和配置的机密性、完整性、可靠性并防止回滚
· 保护敏感安全参数和数据免遭窃取和修改
· 通过反克隆技术保护知识产权
SSC提供下列技术:
· 硬件可信根
· 灵活的安全环境边界
· 安全引导和受信任执行
· 安全的敏感参数和数据存储
· 安全的长期数据存储
· 边界接口保护
· 敏感安全参数归零
· 安全调试
用于满足多标准基站要求的AXM2502解决方案支持2G、3G和4G基站设计。AXM2502产品支持GSM、WCDMA、LTE和LTE Advanced基站架构,并提供从CDMA和WCDMA HSPA 3G基站到LTE和LTE Advanced eNode基站的无缝升级。它还具有很强的扩展性,可以满足微型基站到超级宏基站等不同规模配置的需求,并且支持很高的用户密度,同时能够在各种 AXM2502产品以及Axxia通信处理器3400(ACP3400)系列的不同产品间实现软件兼容。
基于铜缆、光纤和微波的汇聚型 移动回程(使用IP无线电接入网络)快速增长,正在促使网络运营商采用流量整形、互联网卸载、安全和安全网络等先进的数据包过滤功能。这就要求具备对流量 的分析和控制能力。这个能力可通过使用AXM2502多核CPU架构以及包含深度数据包检测、流量管理、安全系统复合体和安全协议处理器在内的多种片上加 速器来实现。安全协议处理器加速器为用户面和IPsec等传输安全技术提供安全通信。
AXM2502解决方案针对性能和物料清单 (BOM)成本进行了优化。该单芯片解决方案集成了多个中央处理单元、数据路径、以太网交换功能、流量管理功能、服务质量功能、安全系统功能、安全网络功 能、多业务TDM处理功能(用于传统协议,比如伪线支持)和时序分组功能。作为补充,它还提供可支持移动回程、IP传输和以太网交换的完整软件套件。
最后,有了LSI的基于API的软件,系统架构人员和软件开发人员就可以更加轻松地使用AXM2502解决方案开发自己的系统。LSI软件可以协助系统设计人员配置AXM2502解决方案,并提供构建安全设备所需的必要属性。
图5:AXM2502 Axxia通信处理器
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。