随着嵌入式电子器件在汽车和其它产品中不断普及,连接的需求也随之增加。这种连接可以是车载设备之间的连接,也可以是SoC通过有线或无线网络与外界建立的连接。
由此,信息安全成为汽车SoC需要关注的关键问题,对于确保信息在传输中不被篡改至关重要。安全措施包括加密、数字签名、MAC计算以及身份验证等。
安全验证不仅仅是测试功能,更主要的是测试风险场景或安全攻击。在进行安全验证时,测试人员须具备黑客思维和视角。目前,许多用于安全测试的设备成本高昂,本文探讨的几种负面测试无需使用这类设备,并且可以用于后硅验证环节。
下面是几种基于场景及对抗的对安全性进行耐力测试的方法。
ECC故障在非易失性存储器中随时可能发生,所以我们应了解设备在遇到ECC故障时的行为,并检查故障是否已造成安全漏洞。出于验证目的,我们可以内部注入多个比特的ECC错误。错误可以注入至非易失性存储器、密钥区、安全固件、安全存贮镜像以及器件的配置寄存器等。
例如,在存放安全引擎输出的存储器中插入ECC。AES-128引擎将对两个128位数据块实施加密。在这种情况下,存在两种ECC场景:
1. ECC 插入第一个1 2 8 位的数据块,存储器余下部分可访问。
我们通过这一测试能够确认,当第一个数据块出现错误时,安全引擎是会终止对下个数据块实施加密,还是会忽略错误并保存可访问的第二个数据块的输出。
图1:在存放安全引擎输出的存储器中插入ECC的两种场景。
2. 存储器的前128位可访问,ECC插入下一个128位数据块。
我们通过这一测试能够确认,是第一个数据块存储在可访问的存储器中且在第二个数据块出现错误即终止操作,还是两个数据块的操作均被终止。
通过控制执行命令的顺序来检查设备行为。例如,在执行一个无效命令后执行有效的加密/解密命令。这种情形是为了确保在因执行无效命令发生错误的情况下,如果又执行了有效的加密/解密命令,错误不再存留。
取消:操作期间发出取消/中止命令。不应产生不完整输出,以免安全数据泄露。其它安全操作亦可采取相同的方式检查。
时钟对于保证安全性至关重要。多种场景可以被检测:
故障。
电源电压调整可影响设备和安全模块的性能。但即便是改变电压, 也不应该影响设备的运行。可尝试以下场景:
SoC支持不同类型的异步事件,如非屏蔽中断、功耗运行模式更改等。测试这些异步事件对于安全引擎验证至关重要。例如,在某些安全操作期间,触发低功耗模式请求,然后返回正常模式。此举不应导致安全数据泄漏。
接下来,在安全操作的不同时间间隔应用异步事件。这一操作可以帮助我们判定,在随机时间间隔或随机功耗下发生的事件并没有造成安全数据泄露或安全密钥泄露。可在安全引导、加密/解密、生成/验证签名等操作期间尝试异步事件扫描。
图2:安全操作期间按不同时间间隔生成异步事件。
异步事件可在不同或相同的供电周期内按照不同的时间间隔生成,事件生成的时间窗口可以扩大或缩小。
安全验证不可能面面俱到,总是存在一些干扰设备的方法,会造成安全信息泄露。安全验证的目的不是检查设备是否正常工作,而是发现设备可能受到的攻击,从而防患于未然。
作者:Singh Amrit,Kansal Atulesh,恩智浦半导体
《电子技术设计》2017年5月刊版权所有,谢绝转载。