你的芯片,能抵挡住几次攻击?

简介: 你的芯片,能抵挡住几次攻击?

1. 你的芯片安全吗?

如果大家看过速度与激情这部电影,一定对下面这一幕有深刻的印象:黑客通过远程控制上千辆的僵尸车辆,去自动拦截抢夺握有核发射密码的人! 然后掌控人类的命运。

现实生活中可能没有电影里这么戏剧化,不过危机却在我们身边时刻不停地在上演。大品牌的电子产品被仿冒造成的损失是不可估量的。同时,将来随着物联网,自动驾驶等技术的普及,其核心芯片的安全问题越来越重要,一旦被破解,遭受攻击,后果难以想象。

然而,芯片的安全性确是大多数工程师往往忽略,或者说不太重视的问题。这里我们对芯片如何被破解进行一个简单的探讨,从而大家可以有针对性地采取一些防护手段。

大家知道一个电子产品,硬件电路被复制是几乎没有什么难度的,即使打磨掉芯片上的字符。所以最关键的是获得芯片内部存储的代码,因为代码是整个系统运行的灵魂。

现在大多数芯片都有加密位,在设置加密位后,通过编程工具是没有办法读出代码的。但我们不要低估了坏人的邪恶,他们会想尽种种办法来进行攻击。从总体上来说可以归结为两种方法:侵入式攻击和非侵入式攻击。如果用保险箱来比喻,盗取钥匙打开保险箱可以说是非侵入式攻击,拿电锯锯开保险箱就属于侵入式攻击了。

2. 常用的攻击手段

2.1 部分擦除

加密后的芯片一般允许整体擦除(Mass Erase)。如果在整体擦除芯片时,控制擦除的时间,在刚刚好擦除掉加密位的时候停止(比如掉电),那么芯片就被解密了。

2.2 电压毛刺(Power Glitch)攻击

是在芯片电源引脚故意输入毛刺,使得芯片运行受到影响,使其运行跳过某些指令或发生错误的操作,从而使芯片信息泄露。

2.3 欠压,过压,时钟瞬态跳变

利用欠压,过压,时钟的瞬态跳变,使芯片产生异常,影响芯片的正常执行,使保护电路失效。

2.4 时序攻击(Timing Attack)

代码在处理不同的数据,或走不同的流程时,时间上是不同的。时序攻击利用这一特点可以反推密钥。

2.5 功率分析(SPA: Simple Power Analysis)

芯片在运行不同的指令的时候,消耗的功率是不一样的。功率分析正是利用种特性,在代码运行密码相关运算时,用高分辨率功率测量仪器从外部测量芯片功率的变化,从而提取加密密钥。

2.6 差分功率分析 DPA(Differential Power Analysis)

在SPA的基础上,收集已有的密码运算时的功率变化数据,在多次统计的基础上进行分析。是比SPA更有效的攻击。

2.7 硬解密

这是最暴力,最不好防范的攻击方法。它用溶剂溶解芯片外面的壳体,把芯片暴露出来,然后用高倍显微镜和聚焦离子束 FIB(Focused Ion Beam)找到加密位置,把它改变为非加密状态,然后读出芯片内容,然后进行解密,反汇编。

看了这些攻击手段,是不是开始出冷汗了呢?别担心,这只是一部分大家都熟悉的方法,哈哈。不过随着进攻之矛越来越锋利,防御之盾也越来越坚固。在讲防御办法前,我们先对相关的加密算法做一个简单的介绍吧。

3. 流行的加密算法

3.1 哈希算法(Hash)

它的作用是把任意长度的明文,通过单向加密函数,生成固定长度的信息摘要。如果明文发生变化,那么会引起信息摘要的变化。从信息摘要无法反推出明文。

常用算法: MD5,SHA-1。

3.2 对称加密算法(Symmetric Encryption)

用相同的密钥进行加密和解密。如同一个保险柜,一个人用一把钥匙把文件锁进去,另一个人需要用相同的钥匙打开保险柜,才能看到文件里写的什么。这种算法的关键是密钥的保存,分发,防止非授权的人获得密钥。

常用算法: DES, AES,RCx

3.3 非对称加密算法(Asymmetric Encryption)

所谓非对称指的是加密方和解密方使用的密钥不同。如同一个保险柜有两个门,一个是入口,一个是出口,用入口的钥匙只可以把明文放进去,用出口的钥匙可以把明文取出。这种算法带来的好处是可以把入口的钥匙公开出来(公钥),大家都可以用公钥进行加密,但是除了掌管私钥的人,其他人是没有办法看到保险柜中的内容的。

常用算法: RSA,ECC

4. 加密算法的特点和安全性

Hash 主要用于数字签名。据说最早的应用之一是美苏互相把地震仪放到对方,监控对方有没有进行核试验。双方对对方都不放心啊,所以用这种算法把数据做数字签名,大家都能看到数据,而且不能篡改。

对称加密算法运算速度快,一般用来对大量数据加解密。

公钥算法运算速度比较慢,消耗资源多。它常常在开始阶段用来分发对称算法使用的密钥,之后通讯切换到对称加解密算法。

理论上所有加密算法都是可以被破解的,只是花费的时间和代价的问题。

只有一种加密方法是完全无法破解的,那就是一次一密。加密者和解密者使用相同的密码本,密钥是真随机数,而且长度和明文相等,每一个明文字母用一个密钥字母加密成密文,密码本使用一次后既废弃。据说很多间谍就是用的这种加密方法。

5. 如何保护芯片

假如我们写了一份机密文件,怎样才能不被别人得到呢?首先想到的还是保险柜,我们可以把文件锁进保险柜里,当然保险柜有不同级别,有的还有监控功能,比如发现有人敲击,挪动,高温(切割)等就发出报警,或者把文件销毁。当然越高级的保险柜价格越高。再有就是我们把写的内容加密,即使间谍拿到了也看不懂。最后为了更保险,我们还可以把文件分为两份,分别锁进两个保险柜里。

对于代码来说,也是类似的。把代码放入芯片后设置加密位,使别人无法读出;或者用芯片的唯一序列号用算法加密后存入特定地址,运行前做比对;或者把代码(或代码的一部分)加密后存入外部存储器,只发送给握有密钥的主芯片;这就会用到前面我们介绍的几种算法之一,或几种的组合。我们可以根据产品的价值来使用不同等级的保护方法。下面是一些从硬件到软件需要考虑的地方:

a. 设置加密位。如果芯片支持则设置禁止整体擦除。

b. 下载代码后把调试口禁止掉。

c. 地址线和数据线打乱。用PAL,GAL,CPLD做映射。

d. 尽量不用代码里的默认值,代码空间不留空白区域。

如果猜测出一部分明文,将会导致破解变得容易。

e. 在处理密码或数据时用混入随机数,插入指令等方法,使功耗变化尽量小,不同分支运行时间差别尽量小。防止时序和功率分析攻击。

f. 加密尽量用长的密钥。

g. 在选用 MCU 时,要考虑它是否有足够强的防破解能力。

如 STM32L562的以下特性可以用来提高系统的防御能力:

  • ARM TrustZone 内核
  • 电压跌落检测 Brownout Reset
  • 带入侵检测寄存器 Tamper and backup registers (TAMP)
  • 支持安全启动 unique boot entry and hide protection area
  • 主动入侵检测(Active tamper and protection against temperature, voltage and frequency attacks)
  • 真随机数发生器(True random number generator NIST SP800- 90B compliant)
  • 全球唯一序列号(96-bit Unique ID)
  • 哈希算法加速器(HASH hardware accelerator)
  • AES协处理器
  • 公钥算法加速器(Public key accelerator)

h. 如果使用的芯片没有很强的防护能力时,可以考虑添加一颗外部芯片来提高防御能力。比如:DS28E01(SHA-1),DS28E38(ECC-P256),LKT4201N(DES/3DES/AES/SHA1/SHA256/RSA/ECC)等。

i. 把一部分核心代码加密后放到外部有加密功能的芯片,加载入MCU后再解密运行。

好了,希望这些对大家有些帮助,以后有机会进行更进一步的探讨。


相关文章
|
7月前
|
监控 安全 网络协议
黑客控制肉鸡三大利剑工具一次性全部学会
黑客控制肉鸡三大利剑工具一次性全部学会
|
11月前
|
安全 网络安全 Go
kswapd0进程对于CPU占有率高的情况下排查到黑客植入脚本,与黑客斗智斗勇的三个回合(二)
kswapd0进程对于CPU占有率高的情况下排查到黑客植入脚本,与黑客斗智斗勇的三个回合
330 0
|
11月前
|
消息中间件 安全 关系型数据库
kswapd0进程对于CPU占有率高的情况下排查到黑客植入脚本,与黑客斗智斗勇的三个回合(一)
kswapd0进程对于CPU占有率高的情况下排查到黑客植入脚本,与黑客斗智斗勇的三个回合
349 1
|
安全 双11
60亿次攻击,我们扛住了!
双11当天,阿里云安全经历的攻防24小时
2421 0
|
安全 NoSQL 应用服务中间件
记一次服务器被植入挖矿木马cpu飙升200%解决过程
线上服务器用的是某讯云的,欢快的完美运行着Tomcat,MySQL,MongoDB,ActiveMQ等程序。突然一则噩耗从前线传来:网站不能访问了。 此项目是我负责,我以150+的手速立即打开了服务器,看到Tomcat挂了,然后顺其自然的重启,启动过程中直接被killed,再试试数据库,同样没成功,多次尝试甚至重启机器无果。
6353 0
|
监控 安全 NoSQL
服务器被矿机程序攻击
事件经过 今天早上7:00,收到腾讯云监控发来基础监控告警:某台服务器的CPU利用率为100%。SSH登录到服务器正常,说明root密码还没有被更改,我最初怀疑有可能是DDos攻击。
1869 0