前言

IoT产品同以往的纯软件产品的最大区别就是产品的载体是一块PCBA。攻击者首先面对的是IoT的硬件,情报的收集,bin文件的获取等都是从硬件分析开始。万事开头难,因此硬件的安全设计是IoT安全开发的重要一环。

1 物理调试接口

1.1默认关闭调试接口

基线要求

常见调试接口包括UART、JTAG、SWD、SWIM等,在IoT设备出厂时应默认设置关闭,以减少不必要的物理调试接口暴露和信息传输。如因售后问题分析等原因需开启调试接口,应设置特殊操作后方可开启。如:

  • 专用USB dongle
  • 不常用的组合按键
  • 上电+特出组合按键等

知识库

调试接口介绍:

  • SWIM:Single Wire Interface Module,单线接口模块。常见于ST的STM8系列单片机。
  • JTAG:Joint Test Action Group,联合测试工作组规定的一种仿真协议,它是一种国际标准测试协议。标准的JTAG是四线:TDI,TMS,TCK,TDO,分别对应数据输入,模式选择,时钟,数据输出。
  • SWD:Serial Wire Debugging,串行调试接口。标准的SWD为2pins:DIO和CLK
  • UART: Universal Asynchronous Receiver-Transmitter, 通用异步收发器,即常说的串口。

JTAG&SWD调试接口定义

调试器

J-Link

J-Link是德国SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器,很多ARM芯片的接口协议是JTAG,JLink一端接电脑USB接口,一端接CPU的JTAG接口,JLink充当的作用就是USB转JTAG,支持JTAG和SWD两种模式。

  • 可配合IAR EWAR,ADS,KEIL,WINARM,RealView等集成开发环境。
  • 支持ARM7/ARM9/ARM11,Cortex M0/M1/M3/M4,Cortex A5/A8/A9等内核芯片的仿真。
ST-Link

ST-Link是ST意法半导体为评估、开发STM8/STM32系列MCU而设计的集在线仿真与下载为一体的开发工具,支持JTAG/SWD/SWIM三种模式。

  • 支持所有带SWIM接口的STM8系列单片机。
  • 支持所有带JTAG/SWD接口的STM32系列单片机。

1.2PCB板上的调试接口丝印

基线要求

设备应去除 PCB 板上的调试接口丝印 ( 如明显的 TX、RX),以防止逆向工程。

知识库

PCB中的丝印层包括:Top Silkscreen(顶层)、Bottom Silkscreen(底层)。即印刷电路板的最上和最下两层。
这是为了方便电路的安装和维修等,在印刷板的上下两表面印刷上所需要的标志图案和文字代号等的专用层,例如元件标号和标称值、元件外廓形状和厂家标志、生产日期等等。

1.3 调试接口默认关闭信息输入

基线要求

调试接口因某些特定需要而开启后,默认不应开放调试接口的信息输入,防止设备固件被篡改或本地存储的敏感信息被读取。尽可能减少攻击面。

知识库

如由于输入造成的缓冲区溢出漏洞。

1.4 调试接口打印敏感数据

基线要求

调试接口在某些特定需要而开启后,应仅允许进行不包含用户与设备敏感信息的信息输出。

知识库

敏感信息包括:

  • 敏感参数信息:token,key,deviceId
  • 个人敏感信息
  • 加密保护的明文信息

2 本地数据存储

2.1存储在本地敏感信息加密

基线要求

设备敏感信息存在PCB板上存储芯片,包含但不限于norflash,nandflash,E2PROM,eMMC,SDcard,CFcard时,需要进行加密存储。加密方案优先采用安全芯片(加密芯片)或操作系统分区加密来实现。如IoT设备设备无硬加密和操作系统支持,加密方案需满足加密算法基线要求。

知识库

  • norflash:是一种存储介质,由Intel于1988年开发出来。它的存储空间一般比较小,使用时不用初始化,应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。
  • nandFlash:Flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。Nand Flash存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、MP3随身听记忆卡、体积小巧的U盘等。
  • E2PROM: (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用场景。
  • eMMC: (Embedded Multi Media Card)是MMC协会订立、主要针对手机或平板电脑等产品的内嵌式存储器标准规格。

2.2 芯片读保护

基线要求

设备主控MCU和设备板上模组MCU应开启芯片读保护机制,以防止通过调试接口非授权读取设备信息。

知识库

如STM32的芯片都提供对Flash的保护,具体分为写保护和读保护。如开启了读保护,尝试通过调试接口读取芯片内flash内容会报错。

3 安全启动(BOOT)

基线要求

在设备方案设计选型时,应选择支持安全启动芯片,启动时对不同类型的固件(uboot、kernel、rootfs)或 存储代码的Flash区域进行校验。确保存储芯片中的系统合法性和完整性校验通过后方可正常启动。

知识库

针对不同的设备方案,生成的固件会有所不同,系统的启动方式也会不同。但是在设备上电后,均要针对系统程序进行合法性校验。

  • linux系统会涉及到uboot,kerenl和rootfs的校验。
  • 烧录在flash中的单片机,需要对关键的flash区域进行校验

4 I/O数据传输

基线要求

设备I/O接口(包括但不限于I2C,SPI,UART,SDIO,CAN,PCI,USB)中传输的通讯数据、控制数据应加密处理。宜采用安全芯片来确保加密密钥的安全性,加密方案需满足加密算法基线要求。以此达到攻击者通过硬件I/O接口嗅探得到协商密钥以及控制命令。

知识库

I2C

  • 定义
    I2C全称:Inter-Integrated Circuit,是由Philips公司开发,是一种同步、半双工的通信总线。
  • 同步:发送接收端要严格同步,一般有同步时钟线。
  • 半双工:I2C只有一条数据线,所以master发数据与收数据不能同时进行。
  • 同通信速率
  • 引脚
    SCL(Serial Clock):时钟线,时钟都是有master提供的
    SDA(Serial Data):双向数据线,发数据或者收数据(收发不能同时)

SPI

  • 定义
    SPI(Serial Perripheral Interface)是串行外围设备接口。SPI是Motorola公司推出的一种同步串行接口技术,是一种高速,全双工的同步通信总线。主要应用于MUC外扩EEPROM、FLASH、ADC、DAC等芯片。

  • 引脚
    CS/SS,Slave Select/Chip Select,这个是片选信号线,用于选择需要进行通信的从设备。IIC主机是通过发送从机设备地址来选择需要进行通信的从机设备的,而SPI主机不需要发送从机设备地址,直接将相应的从机设备片选信号拉低即可。
    SCK,Serial Clock,串行时钟,和IIC的SCL一样,为SPI通信提供时钟。
    MOSI/SDO,Master Out Slave In/Serial Data Output,简称主出从入信号线,这根数据线只能用于主机向从机发送数据,也就是主机输出,从机输入。
    MISO/SDI,Master In Slave Out/Serial Data Input,简称主入从出信号线,这根数据线只能用户从机向主机发送数据,也就是主机输入,从机输出。

UART

  • 定义
    UART(Universal Asynchronous Receiver-Transmitter) 通用异步收发器。常用与控制系统与外设通信,包括控制器与控制器,控制器与终端设备。

  • 通信协议

  • 波特率:每秒钟传输的数据位。 9600、19200、38400、57600 以及 11520等。

  • 引脚
    1、RX:接收数据
    2、TX:发送数据
    3、GND:数字地
    4、VCC:直流电源

SDIO

  • 定义
    SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、GPS等。
  • 总线模式
    1、SPI模式
    2、1-bit SD传输模式
    3、4-bit SD传输模式
  • 引脚

5 防物理拆除与破坏

5.1外壳防拆除

基线要求

设备不宜暴露可以将设备部分或全部拆除的螺丝孔
或卡扣,设备室外外壳宜采用一体式结构设计;如因业务需要必须暴露螺
丝或卡扣的,宜采用非常用类型固定螺丝来固定设备,并使用强度结构符
合要求的结构胶对外壳螺丝封胶防护,以防止设备从室外被轻易拆除。

5.2 强拆告警

基线要求

设备应设计传感器识别设备的拆解。对于强安全要求设备应失效部分或全部功能,并感知设备异常。

5.3 对控制信号线的破话保护

基线要求

设备中用于控制的信号线,如开关信号线,异常检测等重要信号线路。宜设计检测电路,防止脱落或人为破坏。

6 防强电磁攻

基线要求

高安全等级设备应在芯片外加装电磁防护罩,以防止强电磁脉冲(EMP)攻击造成的设备逻辑或运行异常,进而导致逻辑错误,设备宕机或电路烧毁

知识库

  • 电磁脉冲,是一种瞬变的强电磁波,可由核爆炸、雷电、静电放电及人为技术等产生。
  • 电磁屏蔽,就是利用金属等电磁屏蔽材料做成屏蔽体,将需要防护的区域封闭起来,把电磁脉冲隔离在屏蔽体外,需要通风和进出人员设备的孔口则采用电磁屏蔽门或波导窗保护起来。

7 设备唯一标识防篡改

基线要求

设备端应存储唯一硬件标识,并采用一次性编程、安全芯片等技术防
止被篡改。

欢迎加入小密圈,沟通交流,一起学习。

IoT产品安全基线(一)硬件安全相关推荐

  1. 第四届小米AIoT安全峰会在京举行 隐私与安全成为大会关注焦点

    11月6日,第四届小米AIoT安全峰会在北京小米科技园举行,本届AIoT安全峰会重点关注物联网.人工智能等热点领域中的安全隐私问题,为现场众多AI.IoT和互联网行业安全和隐私顶尖安全专家与爱好者们带 ...

  2. 华为在中国建立其全球最大的网络安全透明中心

    2021年6月9日,华为最大的网络安全透明中心今天在中国东莞正式启用,来自GSMA.阿联酋.印尼的监管机构及英国标准协会.SUSE等机构代表出席并在活动上发言.借此机会,华为发布了<华为产品安全 ...

  3. 【重磅】2021年通信行业白皮书汇总下载(免费)

    什么是白皮书 白皮书,是以白色封面装帧的重要文件或报告书的别称. 技术白皮书,通常用于阐述官方对某项技术的理解和认知,同时面向公众进行普及和推荐. 小枣君去年曾经给大家发过白皮书合集.今天重新整理了2 ...

  4. 应用安全系列之二十七:加密算法

    为了维持所要保护的信息的机密性和完整性,在一个安全系统里,必须要有加密模块的保护.而且,对于Web应用程序,使用加密算法保护敏感数据已经变成一个很关键的部分,但是,有的Web应用程序经常存在一些不正确 ...

  5. 硬件安全(二) 5G时代IOT环境下芯片安全风险与挑战

    一. 爆发式增长 二.应用分层 三. 特点 四.防御要点 五.总结 六.安全需求 七.芯片的核心资产 标准安全设计

  6. 硬件安全之ARM体系架构的演进

    安全从业者脑中有一系列的安全名词,比如安全三要素Confidenciality .Integrity.Availability,比如硬件安全品牌TPM.TrustZone.SGX.Titan-M,比如 ...

  7. 腾讯Blade Team胡珀:IoT时代,“白帽子”以网为剑捍卫安全

    10月10日至10月11日,第三届腾讯安全国际技术峰会(TenSec2018)在深圳顺利举办.由腾讯安全发起.腾讯安全科恩实验室与腾讯安全平台部联合主办,腾讯安全学院协办的TenSec 2018,邀请 ...

  8. 安全和连接是IoT联网设备2大挑战

    IoT正在推动500亿个联网设备在未来10年内从工业.零售.智能照明.智慧城市.汽车.农业.可穿戴设备.智能建筑.医疗市场涌现出来,ARM处理器部门市场营销总监Ian Smythe表示:"到 ...

  9. 谷歌Edge TPU:将机器学习引入边缘,撬动边缘计算/IOT大“地球”

    近期,谷歌在Cloud Next会议上推出其最新产品,Edge TPU芯片和Cloud IOT Edge软件,并将于10月推出Edge TPU开发套件.作为Cloud TPU的补充,目前Edge TP ...

  10. 【堪萨斯州立大学】电子和计算机工程系智能能源研究室、硬件安全实验室招募博士,提供多个全额奖学金机会...

    关注公众号,获取更多AI领域发展机会 堪萨斯州立大学电子和计算机工程系的两个实验室(智能能源研究室, 硬件安全实验室)招募博士生,并提供多个全额奖学金机会. (图片来自学习官网) 学校及院系介绍 In ...

最新文章

  1. Zabbix-3.0.3实现微信(WeChat)告警
  2. 使用ajax预加载图片
  3. python操作docker SDK:Docker SDK for Python
  4. JavaScript基础02【强制类型转换(String Number Boolean) 其它进制数】
  5. java dochain,Java filter中的chain.doFilter详解
  6. java erlang 游戏_游戏中最近可达点(用erlang写一个简单算法)
  7. mybatis批量更新 mysql 报错,Mybatis批量更新报错问题
  8. Python 在数据科学中一直打压 R 语言?
  9. exchange实现外部邮件收发的两种方法
  10. Flutter之CupertinoSwitch和Switch开关组件的简单使用
  11. Donet.HighCharts
  12. Chrome 插件篇-Unsplash插件:浏览器背景桌面设置,漂亮的背景桌面插件,时时更新
  13. 学习Gluster创建不同卷,设置NFS挂载
  14. 给计算机图片文件夹加密码,文件夹怎么设置密码
  15. HASH和HMAC(7):SHA3-224/256/384/512算法原理
  16. Ruby on Rails 之旅(七)—— Ruby on Rails 入门(5)
  17. CCNP路由实验之八 路由重发布
  18. js面试题Foo.getName()的故事
  19. ChatGPT实现编程语言转换
  20. 查看服务器文件夹内存,查看服务器各文件夹内存占用

热门文章

  1. 如何通过阿里云APP进行域名备案?阿里云备案流程需要多久?
  2. strongSwan之ipsec.secrets配置手册
  3. sdk 今日头条_今日头条大数据分析平台艰辛成长路
  4. D3基础 | 条形图
  5. 映目云摄影以人脸识别惊艳Party现场,比亚迪元EV周年庆生
  6. 驱动器控制模式功能简介(CSP,CSV,CST等)
  7. 初识智遥工作流软件——表单开发篇1
  8. 2017.7.14 阿里巴巴校招面经
  9. cubieboard刷机
  10. 放不下的原理_通俗易懂,几张图看懂大数据存储和计算原理