芯片安全和无线电安全底层渗透技术

和传统网络安全不同,硬件安全、芯片安全、无线电安全属于网络底层安全的重要细分领域,是网络安全的真正基石,更是国家安全的重要组成部分,“夯实网络底层安全基础,筑牢网络强国安全底座”,是底网安全重要性的另一真实写照。

硬件黑客与硬件安全攻防人员的博弈未来会愈演愈烈,但因其底层敏感性、封闭性、不可见性等特征,相关攻防渗透技术、思路、工具、漏洞成果很少对外公布或透露,同理,类似深入硬件底层的攻防渗透技术、理念、方法在未来大国博弈、军工电子技术安全、硬件安全、芯片安全、工控安全、物联网安全、车联网安全等方面起着重要作用,关键时刻甚至可起“一两拨千斤”之效果,其“杀伤力”和“威胁力”不容忽视。

常言道,“知彼知己,百战不殆”,本次议题将揭开“硬件黑客”神秘面纱,分享硬件安全、芯片安全偏冷门但又极度重要的渗透技术–芯片安全故障注入技术,并将其与芯片内部结构、芯片类别、业务属性、固件安全、CPU指令运行机制强关联,深入“骨髓”洞察底层芯片安全的神秘世界,另外本议题还将分享无线电安全底层扫描渗透技术,通过重放攻击、协议逆向还原、无线电跟踪三种不同技术原理破解、干扰某渗透对象,从反面案例提醒大家:无线安全的重要性和必要性。

《芯片安全和无线电安全底层渗透技术》

下面就让我们来回顾看雪·第七届安全开发者峰会(2023 SDC)上《芯片安全和无线电安全底层渗透技术》的精彩内容。

01

演讲嘉宾

《芯片安全和无线电安全底层渗透技术》

《芯片安全和无线电安全底层渗透技术》

赵亚平

湖南底网安全创始人&底网安全实验室负责人】

拥有通信技术中级职称,热爱并高度重视电子技术基础学科和网络底层安全,从电子技术最基础做起,拥有硬件测试/集成/开发、通信链路/协议设计、嵌入式开发、汇编设计等传统IT开发经历。依托传统基础学科的研发应用背景,无缝衔接传统网络安全、物联网安全、车联网安全、工控安全等领域。擅长从网络底层视野深度洞察信息安全本质,尤其是硬件安全、芯片安全、固件安全、通信安全、无线电安全等细分领域。曾在某安全机构、上市公司(2022中国民营企业50强)、国企分别担任车联网安全资深专家、工控物联安全资深专家、汽车&工控信息安全总工等重要岗位。

02

演讲内容

《芯片安全和无线电安全底层渗透技术》

以下为速记全文:

大家好,我是来自湖南底网安全的赵亚平。

接下来咱们把网络安全的视野开始往下沉,因为不同行业的人对于网络的底层安全可能有不同的认知。比方说对于做上位机软件开发的人员来讲,最接近他们的底层可能是各类的 API或者SDK又或者是第三方组件的调用。

比方说对于做操作系统研发的人员而言,最接近他们的底层可能是各类驱动的调用。如果再往下沉,对于做驱动的开发人员来讲,最接近他们的底层可能是里面各类芯片的寄存器的配置以及相关的时序。

如果说再往下沉的话,就进入到我们今天要分享的议题,首先是关于芯片安全的底层的渗透技术——故障注入技术。这里说明一下,因为硬件/芯片底层的渗透技术有很多种,比较典型的像侧信道攻击DPA、无线SPA、电磁/激光注入等。我们今天讨论的重点是故障注入技术。

紧接着再往下讨论的是无线电领域,就是无线电安全底层扫描渗透技术。都是从最底层的视野来看这两个议题。首先我们了解一下相关的技术背景。最开始的就是安全基石,因为底层的安全它其实就是传统网络安全或者是数字安全、硬件安全、芯片安全的真正的基石。

如果说底层安全做得不好,你上层的应用或者你的机制搭建的再完美,你的数据的保密性、完整性、抗抵赖性的算法再先进,你的身份认证再强,一旦底层有缺失的话,你的安全依然得不到保障,依然很容易遭受来自底层的攻击,所以说它是真正的安全基石。

然后它的技术相对的比较封闭,可能平常跟客户沟通过程中做的更多的是关于常规的漏扫和安全检测,但是一旦接触到这种底层的故障注入的话,一般的客户可能不太关心,但是像那些大的企业客户,他们对这个安全则是非常重视。除了从自身的技术理念和它的渗透理念,包括它的渗透工具比较封闭之外,还有一个原因就是它的被测对象也比较封闭,因为我们注入的对象是芯片或硬件,一般其内部细节很难看到,厂商设置了重重阻拦。所以说它相对比较封闭。

同时它也是相对的“去”SaaS云服务化,不像传统的网络安全渗透。如果说有一台电脑连到互联网,在全球任何一个地方可能都会给对方发起攻击,但是像底层芯片安全的这种渗透测试,它是相对的“去”云端,可能跟云端的交集不是特别大(但某些场景还是会有交集),本地化的特征比较多,这也是软件黑客和硬件黑客的主要差异。

然后其测试工具、环境也是相对不太完善,平常我们看到、用到很多的漏扫以及相应的工具可能比较普遍,但是深入到底层的这种故障注入仪,包括后面分享的无线电的扫描渗透仪,可能大家接触的不太多。

再往后随着网络底层安全的这种意识加强,企业高校以及国家其实现在已经开始越来越重视这块了。跟很多客户对接的时候,接触最多的是可能是常规的漏扫、漏洞挖掘、安全渗透检测评估,除此之外,其实已经有不少客户对于这种故障注入类的安全检测渗透,他们已经在开始发力了,发力的方向是从攻防两个维度同时的,如果说渗透的方向为攻击方向的话,他们可能在类似这种攻击武器的渗透方向发力,也有可能是从抗故障注入的防御维度发力。

最后就是硬件黑客和硬件安全攻防人员的博弈,未来必定会愈演愈烈。其实类似的这种故障注入渗透技术以及理念,不仅仅在咱们民用行业的一些作用起得非常大,在未来这种大国博弈,尤其是在军工电子技术里面,它其实也是非常的重要,当然也包括咱们物联网、车联网、工控这一块。

接着开始讨论一下芯片安全的故障注入技术。这里抛砖引玉,借用了8个提问来贯穿我们议题分享的整个过程。

《芯片安全和无线电安全底层渗透技术》

首先是芯片安全的故障注入定义,不同的人他可能有不同的定义,我们的定义是这样的,就是利用特定的装置或者工具向被测对象在合适的时间合适的位置,发出高度可调、可控、可配置的特定的故障注入信号。

因为我们主要描述的是芯片或者是硬件,如果是针对 SQL注入的话,他们的被测对象可能是SQL服务器,我们这里的被测对象包括但不限于芯片,硬件终端或者可能是某一个电路,硬件终端的话它就非常广了,像无人机、智能门锁、手机、机器人以及其他大家能想到的一些物联网的设备,包括什么物联网关、采集器之类的。

发出的故障信号必须是特定的,比方说是毛刺,你这个毛刺如果发出的时间不对的话,对方可能没有任何效果,你发出的参数比方说电压太高或者太低的话,也可能渗透不了什么成果,所以说是特定的故障注入型信号,进而影响其完整性、可用性、保密性的一些渗透测试行为。

然后关于故障注入工具的话,目前行业里边比较多的、最常见的就是专业的硬件故障注入仪,然后像之前风靡一时的特斯拉小线圈(小黑盒),其实也是类似的一种故障注入的工具。

然后再到传统行业EMC的一个测试,比如EFT瞬变、雷击浪涌测试仪,从某种程度上来讲的话,其实也是一种故障注入仪,只不过它跟我们今天要分享的一个维度不太一样,就是我们今天要分享的重点是精准的故障注入而非盲注。

然后再往下就激光电子注入,像最近诺贝尔奖有一个阿秒激光,在未来关于激光的这种注入,对于故障注入或者是侧信道攻击的话,会如虎添翼。

然后再往下关于后面6个问题,我们会逐一讨论,特点比较多,我们就重点挑蓝色的字来讨论一下,首先是0day的高危漏洞,因为我们被测的对象一般都是芯片或者硬件,如果说一旦测出有问题的话,基本上都是非常严重的,要么没测出,一旦测出,其问题非常严重。比如说某一个MCU芯片,如果说被恶意植入了某一段木马,那么一旦测出来的话,这个漏洞其实是非常严重的。

《芯片安全和无线电安全底层渗透技术》

然后封闭性、敏感性、偏冷门,所谓的偏冷门,是说大家可能平常不太关心这一块,或者说他即便意识到这一块,也觉得没必要在这一块大做文章,但是故障注入渗透又是极度的重要,尤其是对于一些敏感基础设施的客户。然后它也是属于侧信道攻击的一个子集。大家可能经常听说过侧信道攻击,其实侧信道攻击严格来讲它是分很多的细分赛道,只不过我们今天讨论的是属于侧信道攻击的一个子集。

另外就是固件安全强关联,精准的故障注入渗透。抛开盲注的概念,因为我们今天重点讨论的是精准,之所以强调精准,是以CPU或者是MCU的固件运行为基准来参考,所以说真正有杀伤力的故障注入,它一定会和被测芯片的固件强关联,或者说和它的指令集运行机制强关联,然后它会严重依赖故障注入的工具,并且人为因素也很大。

比方说同一类被测对象用同样的工具,不同的人测出来的结果可能不太一样。另外它也是属于典型的网络底层的安全领域,对基础技术学科要求也比较高。当然其他网络安全各行各业对基础技术学科要求也都比较高。

另外一个就是它可能会颠覆某些认知,大家可能知道ROM值一般都是只读的,但是在我们渗透领域里面ROM值可能会被改写,这个下面会进一步分析到,接下来我们再讨论一下它的价值,或者说用在那些不怀好意的团队里面,它会给客户造成什么危害?

《芯片安全和无线电安全底层渗透技术》

最开始的就是提供了一种新型的芯片安全0day的漏洞或者是后门的挖掘方式。

像我们刚才提到的,如果说某一个芯片它在某一个地址段里面放了1k的木马,正常的用户他是察觉不到的,但是通过硬件故障注入的渗透措施,如果你故障注入精准到位的话,可能会把它的PC的指针值,或者把它的堆栈值改写,又或者导致内存溢出,会让固件无意中跳转到不明确的地方,一旦那个地方是属于埋藏的木马区间内的话,那么随着它的芯片的外围的一些状态改变,比方说功耗特征或者是串口或者其他的一些接口状态会发生改变——因为他的木马运行肯定会执行一些动作,可能就会把木马给挖掘出来。

然后第二个就是从底层另一维度可以验证固件安全的可靠性,比方说正常情况下if(a == 1),执行开门的一个权限,如果说开发人员安全理念强的话,他在编程的时候会多加一层判断条件,if( a == 1 && b == 2) ,那么在这种固件编程情况下,可以更有效地抗故障注入攻击,所以说它也是从另一维度可以验证固件安全的可靠性。

另外它是让传统的暴力破解,可能不再受CPU的算力、加密算法的复杂性所局限。像我了解到的很多的高校,已经开始在做基于FPGA算法的芯片故障注入脆弱性验证。然后还提供了一种新的非常规的RAM敏感数据堆栈溢出、缓冲区溢出的底层渗透路径。

比方说执行一个内存的拷贝指令,你在拷贝的时候那个长度如果在这个瞬间通过故障注入把它那个值给刷写的话,那么可能就出现内存溢出,后果非常严重。再一个就是对身份认证权限绕过、加解密算法绕过,这个和暴力破解其实有点类同。

最后一个是将渗透的目标从数字信号安全向模拟信号安全蔓延了。大家可能经常讨论的都是一些网络的安全,它其实有一个共同的特征,就是数字安全,然后针对我们今天分享的芯片故障注入,它是真真切切的从数字安全渗透领域蔓延到模拟信号安全领域,也就是说很多的物联设备它会采集模拟信号、各种模拟传感器,然而这种模拟信号对毛刺最敏感,也是最害怕的。AD采集过程中,一旦有毛刺的话,如果无有效的算法、滤波机制规避,很容易对它产生一些不好的影响。

这个是针对故障注入分类定义。

《芯片安全和无线电安全底层渗透技术》

主要有4种方式,首先是按照接触方式分类,这个应该好理解,有线和无线。如果是有线的话,需要把故障注入仪类似的各种探头探针或者测试夹,接到被测的设备里边。如果是无线的话,就类似于这种小黑盒,甚至是类似那种像太阳黑子那种电磁脉冲的武器,都是类同于这种无线的故障注入。

如果按照被测芯片的对象来分的话,它主要分为接口通信类的芯片、逻辑门的控制芯片和运算处理芯片。

蓝色的字体是我们今天重点要讨论的运算处理芯片,包括但不限于CPU、MCU、DSP、FPGA、GPU,然后就是通信接口类芯片,包括CAN总线、RS485、RS232,I2C、SPI这些外围设备接口芯片,按照故障注入信号的属性来区分的话,它分为毛刺、电压故障注入,时钟故障注入,这个时钟其实包含了这种毛刺掉电,所以说严格来讲的话,这之间的划分是有模糊的,也包括协议故障注入。

按照注入目的,它分为盲注和精准的故障注入,我们今天重点要讨论的就是精准,如何实施精准?能够发出可调可控可配置的特定的故障注入信号固然重要,当然这仅仅是盲注的特征,就是我随便将故障注入信号“打”进去,不知道会有什么效果,这也是很多的测试场景用到的,但是知道且何时能精准发出是关键,这个就进入到我们精准的故障注入特征。

这里我用词比较保守,要做到绝对的精准,可能世界上有些大牛的厂商能做到,但我还是不太放心,我们只是说是相对的精准。

要精准实施的话,通过硬件中断加信号联动的高速触发机制,是最适宜做到这种精准的,大家都知道触发中断,一旦是某种中断信号来的话,就让故障注入的条件可以实施。

然后这里面有三个段位,最厉害的段位是能达到这种指令周期级的,我也希望咱们国内有这种厂商能做到,然后一般情况下故障注入它能够精确到函数级,就是能够定位到你执行到某一个函数,把这个故障注入信号打进去,如果说你能在确保函数级别的前提下又能进入到指令集——因为所有的函数它是由指令组成的,但是每一个指令它是由指令周期级来组成的,比方说某一个指令它可能分为三个机器周期。所以说这里面有三个段位,我们的核心目的不是通过故障注入把对方的设备或者芯片打坏、打飞、打复位,最希望的是通过对其关键的业务精准的渗透——类似于篮球比赛,目的不是恶意犯规,而是要确保精准的盖帽。

我们现在正式进入到故障注入的原理,先了解一下 MCU内部的图片。

《芯片安全和无线电安全底层渗透技术》

之所以了解这个图片,对于我们网络底层的从业者而言,有一种习惯,就是尽可能的知其然。通过内部的解剖图片,我们故障渗透人员至少可以得到一个信息,通过这个图片知道大概可能是在哪个位置,对其进行故障注入效果可能会最好,所以这个图片还是有一定的价值的。

这个是早期的ROM内部结构图。

《芯片安全和无线电安全底层渗透技术》

这个图非常关键,下面讨论基准的核心都是围绕它,我们最终的目的——比方说要改变它的ROM值的话,其实它这边的字线和位线最终体现出它的指令机器码,也就是说我们最希望通过精准注入,把它的比特值刷写改变掉,也就是后面有一个专利会提到叫做比特故障。

咱们简单了解一下,这个是EEPROM。

《芯片安全和无线电安全底层渗透技术》

同样它也是通过在芯片里面,通过直接或者间接方式和芯片的内核总线进行挂接,在一系列流水线的运行机制下,触发芯片最终会反应到这个字线或者位线里边。

这个是非常经典的6管RAM单元电路,同样也是我们希望最终注入的时候能够改变它的比特值,两个比特位值,甚至它的触发值也能改变掉。

《芯片安全和无线电安全底层渗透技术》

这里我们先简单了解一下这三种芯片的内部结构。

接下来是技术可行性分析。

《芯片安全和无线电安全底层渗透技术》

我们为什么故障注入能够成功,从技术上我们来简单分析一下,第一个就是芯片的集成度很高,在同类材质下,晶体管之间的电容,尤其是每个晶体管单元的对地的旁路电容非常低,这个就给我们故障注入,尤其是毛刺注入创造了条件。

因为毛刺正常注入的话,它的脉冲宽度随着不同厂商的工具不同,可以到皮秒纳秒级,针对这种纳秒级的毛刺脉冲很容易穿透耦合到芯片内部。

第二个就是现有的 ESD防护器件,它很难防护到这种故障注入,大家可能都知道很多的设备里边外围都有保护的元器件,什么防浪涌、 TVS管,甚至是ESD的防护器件。

大家可以看一下美国一线品牌力特的一个 ESD的基础器件技术指标(上图所示),它的 ESD的防护器件的响应速率,左边这个图它是200微秒,什么意思呢?

举个例子,100伏的电压要吸收降到10伏的话,它需要200微秒。右边这个图可能响应速度会更快一点,如果说把100伏的电压吸收降到30伏的话,它需要17微秒,但是我们的毛刺故障注入是皮秒、纳秒级,所以这两个ESD保卫的卫士,基本上对故障注入信号没什么效果。

然后第三个就是低功耗,现在很多的芯片厂商都聚焦低功耗设计,对于我们故障注入渗透方来讲的话,其实是一个利好消息,会更加容易注进去。为什么?因为低功耗意味着低电压,比如说可能传统的的芯片需要5伏供电,现在变成3.3、1.8甚至1.2V,低压的处理器意味着它的门限电平更低,高电平80%,要是3伏供电的话可能高电平门限值也就2.4伏,门限电平越低的话,对于我们注入的毛刺要求就更低了。

第四个流水指令架构,这种 PC指针流水运行机制就更加适合这种故障注入,故障注入触发它的PC指针、堆栈溢出值,非常适合这种注入渗透测试,包括FPGA,它虽然不是那种流水的运行架构,但也适合这种。

第五个就是抗故障注入的软算法和硬件保护电路的普遍缺失。下面会提到已经有专门的芯片公司专门针对这种抗故障注入的硬件保护电路申请专利。因为成本很高,所以普通的芯片它可能在抗故障注入,尤其是专业的抗故障注入没有做相应的储备。

最后一个就是敏感脆弱引脚外露,这个可能用户或者厂商那边也无法保证很多的芯片关键位置不会外漏,这个就是它的可行性。

然后再说一下它的挑战。

《芯片安全和无线电安全底层渗透技术》

如果说刚才说的可行性,是从“矛”来讨论的话,现在我们来看一下芯片厂商的“盾”。第一个是专业的ESD滤波,防护电路,毛刺它最害怕的就是滤波,包括ESD。虽然说刚才讨论的 ESD它可能防护不了,但是不排除甚至有一些更高大上的 ESD防护器件,灵敏度更高,能够把你的毛刺给吸收掉。

然后就是芯片的写保护和读保护。单纯的注入,它可能也注不了,因为它有专门的写保护和读保护的电路。

另外自锁、原子操作机制,这个都是基于硬件的电路来执行,在某种程度上,它其实也是有效的抗故障注入。

然后是指令集的针对性的优化。比方说你的指令集如果设计的不好的话,某一个比特改变之后,那么很容易变成另外一条指令集,另外那条指令集如果说对你现有的业务有影响的话,它其实也会很容易造成危害。

再往后专业的算法,这个可能就很好理解了,通过哈希、签名算法机制,像前面刚才提到了金丝雀攻击,它有效的防御就是在入栈和出栈之前,把它的校验的结果入栈的时候算一下,出站的时候再算一下校对,这个其实对于故障注入也是非常有效的。

最后针对抗故障注入的ASIC硬件电路是最恐怖的。下面我们重点说一下这个。

《芯片安全和无线电安全底层渗透技术》

这个就是三星专门申请的一个专利,咱们国内也有类似的这种专利。这个专利非常特殊,它的名字叫做包括安全逻辑的装置和操作该装置的方法,背景技术比较拗口我就不念了。这里面简单总结4点,他们把这种故障注入称之为潜在故障,专利里面说的是潜在故障,是特定类的故障,然后潜在故障很难被现有的人和物发现,同时潜在故障它比作无声的故障,可以引发多个故障,导致装置能够发生严重的性能故障。

然后典型的示例就是存储区域的比特故障,这个大家感兴趣的话可以网上下载一下这个专利,非常专业,从比较信号、触发信号、延时信号,完全就是有效防护毛刺的故障注入,非常专业。

注入过程首先把专业的故障注入仪搭在被测对象的指定的位置上,这个位置有可能是被测对象的某一个IO引脚,POWER引脚、通信接口引脚,或者是它的时钟、配置引脚,根据具体的芯片或者硬件来看,然后同时因为我们要做到精准的触发,就把它的触发的信号引过来,给专业的故障注入仪,一旦接收到指定的报文或者某一个按键按下,触发中断实施故障注入。

《芯片安全和无线电安全底层渗透技术》

总之中断触发目的就是我们要做到精准的注入,希望达到预期的技术目标,就是希望能够精准的动态改写它的ROM值,然后能够改写它的指定的寄存器的内容,RAM区间值,PC指针值以及它的堆栈、出栈指针值。如果换算成业务目标的话,我们希望能够通过这些技术目标达到我们这些业务目标,比方说芯片的漏洞木马挖掘,权限绕过,敏感信息的读取,身份认证绕过等等。

这个是我们之前针对某一台工控设备实际注入的信号图(下图所示)。可以看到左边这个图是正100伏,右边是-100伏,这个是单毛刺。

《芯片安全和无线电安全底层渗透技术》

这个图是共模毛刺、差模毛刺(下图所示),因为在实际注入的时候,我们希望在两个不同的位置分别打进去,这两个位置可以同时打正的毛刺,也可以同时打负的毛刺,也可以一个打正一个打负,这里面主要是根据芯片里面的 PNP或者NPN的设计类型,分别针对性的把毛刺给打进去。

《芯片安全和无线电安全底层渗透技术》

这个是故障注入的掉电注入(下图所示),掉电注入的话这个时间也可以配置,比方说我对某一个芯片掉电的时长可以让他掉电1微秒,或者是让它掉100微秒。

《芯片安全和无线电安全底层渗透技术》

针对精准协议触发注入,很多的场合我们要做到精确触发的话,要抓到它特定的报文,比方说针对某一台设备,我通过网络或者串口输123456,它可能是密码验证的一个业务,即便输入的密码错误,但是设备在收到123456的话,会执行密码验证的一个函数。当你在给被测对象发123456的时候,故障注入设备也能收到,那么这个时候通过配置指定的延时,再把故障注入信号打进去。

所以说一个好的故障注入的设备,它其实是具备多协议的采集功能。下面几张图分别是针对以太网、RS232,UART、RS485、CAN总线、LIN总线协议触发注入,比方说按一下车窗,ECU控制器可能会发出一个LIN总线报文。那么故障注入仪在抓到报文的同时,通过不停的深度测试,延迟指定的时间(纳秒级的精度),目的就是确保和被测的控制装置执行关键函数同步。

《芯片安全和无线电安全底层渗透技术》

《芯片安全和无线电安全底层渗透技术》

《芯片安全和无线电安全底层渗透技术》

这个是针对边缘触发,因为很多时候可能没有协议,比如说按一下这个按键,它从电路上来讲的话,是高电平变成低电平,或者低电平变成高电平,所以说这也是边缘的一个触发机制。

《芯片安全和无线电安全底层渗透技术》

这个就是NFC无线非接通信了,目的也是一样,通过抓到指定的非接NFC协议报文,然后再延迟指定的时间把相应的故障信号给打进去。

《芯片安全和无线电安全底层渗透技术》

接下来我们看一下 MCU取指时序分析,这个也是非常重要。正常情况下可能是高级语言到汇编语言再到机器码,那么机器码再往下的话,就是我们重点关注的。这个是以 MCU51内核,来作为它的取指分析的一个对象。

《芯片安全和无线电安全底层渗透技术》

简单看一下,有几个重点,首先是12MHZ的振荡器,每一个单周期或者是双周期,芯片内部有一个关键的触发信号,就是ALE信号, ALE信号是通过振荡器来生成的,上面标了1234时刻(如上图所示),比方说针对单周期单字节的机器码。这条指令的话,注入的有效时很明显是在1时刻,后面是空读。

如果说对芯片或者设备做时钟掉电注入的话,比方说在1时刻让它提前掉电,目的是干啥?目的就是人为改变晶振频率,让ALE提前到来,因为它的ALE信号是通过振荡器的分频来实现的,提前把几个脉冲掉电,就会导致ALE提前到来,ALE提前到来就会让单字节或者是双字节的周期指令机器码提前读。提前读的一个后果就是指令的译码器、寄存器数据可能还未准备好,相应的RAM,比如IO或者是RAM值那边还并没有收到这个触发信号,所以提前读的话会读出错误的结果。

我们重点看一下这张图(如下图所示),它主要是两种架构,一种哈弗,一种是冯·诺依曼的。故障注入重点关注的对象主要是有这么几个区域。首先是用户的RAM区,刚才也说了故障注入我们希望能够精准的改写RAM值,即便不能做到精准,也希望能够做到函数的这种较粗范围内的改写,能对它的业务产生影响。

《芯片安全和无线电安全底层渗透技术》

同时对用户CODE区,也就是FLASH区或者是RAM区,对它注入的时候让它产生比特故障,一旦产生故障的话,那么它的指令集会改变,比如说本来是数据传输类的,有可能会变成跳转类的。然后这里面假设会有一个木马潜伏区,如果这个时候我们把 PC指针值不小心随机的改写了,假设它跳到那个函数的首地址,那么他被测对象会发生一些不同的现象。最右边就是它的 c代码或者是汇编代码机器码。

举一个最简单的例子,if(password == 0x36),然后执行这两条语句,汇编代码是这样,机器码是这样。比方说最右边的机器码7898,它这是一条单周期双字节的指令,当设备在执行7898机器码的时候,芯片内部其实就是在针对这个地址的位信号或者字信号对它进行相应的操作,在这个瞬间如果我们把它的比特值改掉的话,正常情况下可能是把98h赋给r0,有可能变成ff赋给r0了,它下面判断的一系列都是错误的,所以这就是故障注入可能会造成的一些后果。

《芯片安全和无线电安全底层渗透技术》

这里是注意事项。最开始是白盒的渗透理念,就跟传统的网络渗透一样,首先是嗅探,只不过我们一开始可能从芯片的型号、data sheet、它的业务具体是干什么用的嗅探了解,然后对其做相应的数据备份。因为很有可能你会把芯片给打坏,很多的芯片它可能有自锁的机制,所以在渗透之前把相应的数据备份好。

另外就是侧信道旁路的零干扰,因为是有线从侧边给搭进去的,那么在搭的时候尽可能不影响现有设备的正常工作。

风险告知——在我们跟客户对接的时候、做深度测试的时候,就把有些风险尽可能的给客户反馈好。

毛刺注入的最小化原则,一开始别直接上几百伏的毛刺,啪一下子可能把设备给打坏了。

最后就是小心谨慎沉着冷静。

这个是针对某个demo板做的一个演示(如下图所示)。

《芯片安全和无线电安全底层渗透技术》

这个演示主要就是基于RS232的一个触发机制,对某demo板精准实施的一个故障注入。大概功能是这样,正常情况下,这个demo版它是一个串口回显的功能,就是我用这台PC机的调试助手给串口发123456,那么它就会给 PC机返回123456。然后接线是这样接的(如下图所示),串口调试助手给串口发的同时,这台故障注入仪也能收到,然后故障注入仪把毛刺信号搭在芯片的接收端,再把故障注入仪的触发信号给配置好。

当收到64个1的时候, demo板能收到,故障注入仪也能收到。这个调试助手它是200毫秒循环发送一次。

这个提前把环境给搭好了,现在把参数给设置好,设置它的触发的报文,把它滞后时间设置为202毫秒,是因为demo板隔200毫秒收到之后,它可能会有约两毫秒的CPU执行时间。

前面那几秒之所以没有锁住,是因为 PC机虽然是200毫秒循环发送一次,但是它可能有1~2毫秒的一个随机的延迟。

好,咱们再看一下另外一个领域,无线电这一块也是非常的重要。无线电这块我们主要是从底层的链路层来讨论,至于上层的应用层什么加解密什么认证的机制,我们今天一概不讨论。

《芯片安全和无线电安全底层渗透技术》

首先是这个工具,巧妇难为无米之炊,对于无线电的扫描渗透,必定会借助这个工具。它不像之前其他的工具,在 PC机上装一个软件,直接就能漏扫了,必须要借助外围的一个独立的硬件设备,我们称之为无线电扫描渗透仪。

目前无线电渗透仪它主要是有两种,一种是sdr,就是开源的软件定义无线电,还有一种就是专门针对硬件的无线电,一般都是在军工高性能的场合可能会用到。

sdr软件定义的无线电,它有这么一个特征,硬件可能是厂商已经给你做好了,咱们只需要做软件的编程,会严重依赖CPU的算力,如算法效率、内存性能,因为是靠软件来编解码的。

然后硬件hdr的话,它主要的特征就是较少的CPU干预,稳定性可靠性强,然后它的传输的速率、解码的效率非常的高。

接下来我们重点讨论一下 IQ的正交信号的处理,不讨论相应的开发工具,像labview、gruradio或者是matlab之类的,我们一概不讨论,甚至它的开发语言我们也不讨论。这个是非常经典的一张图(如下图所示)。传统的无线电发射干脆暴力,很久以前是直接把相应的调制信号和载波信号相乘,然后发出去。

《芯片安全和无线电安全底层渗透技术》

但是IQ调制不一样,它是分别把调制信号和载波信号各自移向90度,由sin变成cos,然后再分别相加,直接就单边带把射频信号发出去了。

然后关键的技术指标,硬件和算法两个方面。首先是频谱的覆盖范围、射频的失真等,一般我们是从研发人员的角度来看,对于用户的话,他们可能很少会接触到这些性能。还包括它的通道的带宽,正常的情况下不同的场景不同的带宽,这里面的带宽不像我们家里面上网的那种带宽就是越宽越好,根据实际的场景有可能带宽越窄越好,越窄意味着你的进来的信号更纯净。包括基带信号的滤波性能、信号增益控制( AGC和MGC)。

《芯片安全和无线电安全底层渗透技术》

然后基带信号的线性度、精度……尤其是基带信号的采样率,从某种程度上来看,直接能够决定这台扫描渗透仪的性能。

再往下就是它的驱动算法,这个性能其实也非常重要,主要体现在软件层方面,这是无线电安全的一些要点,就是频谱的安全。

另外一个就是调制安全和编码安全,这个技术也非常重要,一种好的优秀的调制解调技术,可以有效的防止同频干扰的攻击,尤其是在波特率以及它的码率传输,这里面体现它的技术实力。

《芯片安全和无线电安全底层渗透技术》

通信安全的设计跟传统的安全有点类同,就不展开细说了。

这个是针对某车型的无线信号的逆向分析(如下图所示),可以看到这个车钥匙按一下锁车键的话,它是有4帧,每一帧的间隔是约4毫秒。左边这张图是第一帧的放大图,可以看到基本上是循环的这种 ASK的调制,如果说解码的话,按照 NRZ解码基本上就是101010。右边的这个图是它的局部放大图,433.75兆赫兹,它的编码方式是ASK 100%的解调,然后它的波特率是2.8kbps,我们在测试过程中发现它不太稳定。下面这个图就是它的基带信号的最原始的图。

《芯片安全和无线电安全底层渗透技术》

最后我们通过一个视频来结束分享。首先演示的是跟踪的视频。这个就是无线电扫描渗透仪,这个是信号的捕捉窗口,当我按一下t1钥匙的时候,渗透仪会把相应的信息发到这个窗口里边。

按一下锁车键,上面提示是跟踪到t1,下面的1010跟刚才我们4帧的图片解析出来其实是一致的,这个是t2的钥匙,可以看到也跟踪到 t2的指纹了。现在把干扰也加进来。最开始找车的时候没有干扰,按找车键车会叫。然后把针对t1钥匙的干扰指令下发,意味着t1要是再按找车键的话,它应该是找不着了。

我的分享到此结束,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/169941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【小沐学写作】原型设计工具汇总(Axure RP)

文章目录 1、简介2、Axure RP2.1 工具简介2.2 工具特点2.2.1 互动事件2.2.2 条件逻辑2.2.4 工作表格2.2.5 多状态容器2.2.6 数据驱动接口2.2.7 自适应视图2.2.8 流程图 2.3 工具安装2.3.1 安装2.3.2 运行 2.4 使用费用2.5 工具体验2.5.1 登陆框制作 3、其他3.1 Figma3.2 Adobe …

如何通过ShardingJDBC进行读写分离

背景信息: 面对日益增加的系统访问量,数据库的吞吐量面临着巨大瓶颈。 对于同一时刻有大量并发读操作和较少写操作类型的应用系统来说,将数据库拆分为主库和从库。其中主库负责处理事务性的增删改操作,从库负责处理查询操作&#…

实验题【网关设置+VRRP+OSPF】(H3C模拟器)

嘿,这里是目录! ⭐ H3C模拟器资源链接1. 实验示意图2. 要求和考核目标3. 当前配置3.1 PC1、PC2、PC3、PC4和PC5配置3.2 SW配置3.2.1 SW2配置3.2.2 SW3配置3.2.3 SW4配置3.2.4 SW1配置 3.2. R配置3.2.1 R1配置3.2.2 R2配置 ⭐ H3C模拟器资源链接 H3C网络…

微服务学习|初识MQ、RabbitMQ快速入门、SpringAMQP

初识MQ 同步通讯和异步通讯 同步通讯是实时性质的,就好像你用手机与朋友打视频电话,但是,别人再想与你视频就不行了,异步通讯不要求实时性,就好像你用手机发短信,好多人都能同时给你发短信,你…

xadmin后台在每一行记录增加一个复制链接按钮

xadmin后台在每一行记录增加一个复制链接按钮 1、效果 点击复制后,自动把url链接复制到粘贴板,按Ctrl+v即可显示复制内容。 2、实现代码 adminx.py # 用户管理 class UserWhiteListAdmin(object):search_fields = [name, mobile] # 检索字段list_display

在家无聊想获取收益?这几种副业项目分享给你

总会有在家无聊的时候,特别是一些很“宅”的人。厌倦了一些娱乐方式后,想起生活经济上的压力,这时候就会想到要做些什么获取收益。 是的,不用出门,不用和别人面对面交流,时间自由可控,这就是在家…

Fedora 36 ARM 镜像源更换与软件安装

1、什么是Fedora Fedora Linux是较具知名度的Linux发行套件之一,由Fedora专案社群开发、红帽公司赞助,目标是建立一套新颖、多功能并且自由的作业系统。 Fedora是商业化的Red Hat Enterprise Linux发行版的上游原始码。 2、Fedora软件安装 64 位 .deb&a…

elementPlus之home页面布局

可以根据自己喜欢的格式选择 现在 header 部分 Aside 部分 Main部分 加上背景色以及命名 <template><div class="common-layout"><el-container><el-header class="homeHeader"><div class="headerTitle">Dev…

栈和队列的实现(详解+图解!文末附完整代码)

栈 栈的基本概念 栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&#xff1a;栈的…

macos安装小软件 cmake

一&#xff0c;cmake下载主页 Download CMake 二&#xff0c;下载&#xff0c;解压&#xff0c;配置&#xff0c;编译&#xff0c;安装 0. 假设macos中已经存在了 clang和make工具 1. 通过网页下载最新的稳定版 cmake***.tar.gz 源代码 2. tar zxf cmake***.tar 3. cd cmake***…

iOS强引用引起的内存泄漏

项目中遇到一个问题&#xff1a; 1.在A页面的ViewDidLoad 方法里写了一个接收通知的方法&#xff0c;如下图&#xff1a; 然后在B页面发送通知 &#xff08;注&#xff1a;下图的NOTI 是 [NSNotificationCenter defaultCenter] 的宏&#xff0c; 考虑一下可能有小白看这篇文章…

道高一尺,魔高一丈!Python爬虫与反爬虫大战见此回分晓?

文章目录 前言一、重新理解爬虫中的一些概念二、反爬虫的目的三、爬虫与反爬虫大战关于Python及爬虫技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试…

【从浅识到熟知Linux】基本指定之zip、unzip和tar

&#x1f388;归属专栏&#xff1a;从浅学到熟知Linux &#x1f697;个人主页&#xff1a;Jammingpro &#x1f41f;每日一句&#xff1a;周五写博客更刺激了&#xff0c;想到明天可以晚起床半小时&#xff0c;瞬间精神抖擞。再写它10篇博客。 文章前言&#xff1a;本文介绍zip…

连接docker swarm和凌鲨

docker swarm相比k8s而言&#xff0c;部署和使用都要简单很多&#xff0c;比较适合中小研发团队。 通过连接docker swarm和凌鲨&#xff0c;可以让研发过程中的常用操作更加方便。 更新容器镜像调整部署规模查看日志运行命令 使用步骤 部署swarm proxy 你可以通过linksaas…

手撕AVL_二叉平衡树(图文并茂)

目录 前言 一 . AVL树的概念 二 . AVL树节点的定义 三 . AVL树的插入 1.插入节点 2.调节负载因子 四 . AVL树的旋转 1.左单旋 2.左右双旋 五 . AVL树性能分析 总结 前言 大家好,今天带大加手撕AVL树的插入 一 . AVL树的概念 二叉搜索树虽可以缩短查找的效率&#x…

2023年【安全员-C证】考试试卷及安全员-C证试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-C证考试试卷是安全生产模拟考试一点通生成的&#xff0c;安全员-C证证模拟考试题库是根据安全员-C证最新版教材汇编出安全员-C证仿真模拟考试。2023年【安全员-C证】考试试卷及安全员-C证试题及解析 1、【多选…

鸿蒙(HarmonyOS)应用开发——生命周期、渲染控制、状态管理装饰器

生命周期 任何程序都是有一定的生命周期的。生命周期是记录从产生到销毁的过程&#xff1b;如果熟悉前端vue.js的话&#xff0c;就可以很好的理解生命周期。 自定义组件生命周期 ArkTS中&#xff0c;自定义组件提供了两个生命周期函数&#xff1a;aboutToAppear() 和aboutTo…

【数据集】全网最全的常见已公开医学影像数据集

目录 一&#xff0c;极市医学数据集汇总 1.CT 医学图像 ​编辑 2.恶性与良性皮肤癌 3.白内障数据集 4.胸部 X 光图像&#xff08;肺炎&#xff09; 5.用于图像增强的内窥镜真实合成曝光过度和曝光不足帧 6.医学家 7.乳房组织病理学图像 8.皮肤癌 MNIST&#xff1a;HA…

cephadm部署ceph quincy版本

环境说明 IP主机名角色 存储设备 192.168.2.100 master100 mon,mgr,osd,mds,rgw 大于5G的空设备192.168.2.101node101mon,mgr,osd,mds,rgw大于5G的空设备192.168.2.102node102mon,mgr,osd,mds,rgw大于5G的空设备 关闭防火墙 关闭并且禁用selinux 配置主机名/etc/hosts …

JAVA之异常详解

1. 异常的概念与体系结构 1.1 异常的概念 在Java中&#xff0c;将程序执行过程中发生的不正常行为称为异常 1. 算术异常 public class Test {public static void main(String[] args) {System.out.println(10/0);} } 因为 0 不能当被除数&#xff0c;所以报出了异常&#…