打印
[STM32]

加密芯片那些事儿

[复制链接]
656|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
walta9999|  楼主 | 2018-3-1 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
加密芯片那些事儿

作者:武者
目录
一、        为什么要用加密芯片        2
二、        加密芯片安全性考虑要素        3
三、        加密芯片的硬件安全性        3
四、        加密芯片的软件安全性        5
1.        真值点判断工作模式        5
2.        数据加解密工作模式        6
3.        功能运算工作模式        8
五、        结束语        9



一、        为什么要用加密芯片
原因很简单:MCU很容易被**! 图一为本人定期收到一家芯片解密公司的广告。不断有新的芯片被解密成功。**一颗芯片,便宜的几百元,贵的几万元。记得15年前Cypress的一款USB芯片Cy63001,号称不可被**,当时我也问过市面上各家芯片**公司,都说无法**。后来我兴致勃勃地把它开发出来,并快活的收取着licese费用。没想到好景不长,只过了2年,这颗芯片就可以被**,**费5万元。这后又过1年,这颗芯片的**费迅速降到500元!下降速度超过中国股市……

图1:定期收到芯片解密广告

这些芯片**公司可以非常容易的**MCU,提取芯片里面的二进制代码,还可以将代码进行反汇编,进行跟踪、调试。
如果在设计方案上加一颗加密芯片,并让主控MCU在工作的时候,跟这颗加密芯片有交互。这样即使主控MCU被**,整套方案,没有了这颗加密芯片也是运转不起来的。
那么问题来了,这颗加密芯片是否安全可靠,是否能够不被**?这就下面要讲的内容。

二、        加密芯片安全性考虑要素
加密芯片承载着整套方案的安全重任,其本身是否安全可靠,至关重要。衡量一颗加密芯片是否足够安全,主要考虑2方面:硬件、软件。
市面上的加密芯片五花八门,种类繁多,让我们看的眼花缭乱。一个加密芯片是否足够安全,加密芯片本身的硬件结构,至关重要。如果加密芯片自身能够像主控MCU一样被**,那么整套方案就毫无安全可言。
在加密芯片硬件可靠的基础上,使用的是哪种软件方案也同样重要。有一些加密芯片硬件安全度很高,不可被**,但使用的软件方案不好,这样也会被搞芯片**的人,轻而易举的改动主控芯片的二进制码,跳过加密芯片运行,或者在功能上模拟出一样的加密芯片,从而**整套方案。
一个好的安全加密芯片不但要有安全可靠,不可被**的物理硬件,还要有可灵活设计的软件。二者缺一不可,否则再好的硬件,会因为软件设计的限制,被**。再好的软件设计方案,也会因为,硬件安全程度不够,被侵入者全盘复制。

三、        加密芯片的硬件安全性
上世纪70年代初期,嵌入式系统是由分离部件如:CPU、ROM、RAM、I/O缓存、串口和其他通信与控制接口组成的。我们可通过早期的单板机,清楚地看到,如图:


图2:早期单板机
    有一些加密芯片,使用比较偏门的MCU实现(甚至一些MCU订制厂商,同时也在卖加密芯片)。这些加密芯片,再偏门,也能够被芯片**者通过侵入式或非侵入式攻击,轻松得到加密芯片的内部代码,然后**者从加密芯片厂商购买同样加密芯片,自行烧录,从实现整套方案**。
     目前智能卡芯片内核的加密芯片,最为安全可靠。其他的内核芯片,都有可能被**。智能卡内核之所以最安全,是因为其使用了存储器总线加密技术,顶层金属网络设计,混合逻辑设计等,并且智能卡芯片提供了很多的防止攻击保护,如:防止电源噪声攻击,时钟噪声攻击等等。有兴趣的可以搜索一篇《MCU芯片加密历程》的**。
  
图3:智能卡存储器总线加密技术,存储器中的数据都是密文存储,
即使被入侵者得到,也无法使用。
目前银**、电信SIM卡,社保卡等涉及到钱的安全领域,基本上都是使用智能卡芯片,并且各自都有其行业规范。就是因为智能卡芯片的安全程度最高,物理上被攻击的可能性极小。
如何判断加密芯片是否为智能卡内核的加密芯片?
由于智能卡的高安全性,不排除一些加密芯片供应商,会说自己的芯片使用的是智能卡内核。判断其真伪,很简单,只要问他们加密芯片是否能提供智能卡通信接口(即:ISO7816接口),如果提供,则买一个智能卡读写器,操作一下即可。如果不提供ISO7816接口,则肯定不是智能卡内核的。另外还有个判断依据,问其加密芯片内部,是否提供硬件的DES算法寄存器,DES算法硬件支持,是银**,社保卡等智能卡的标配。我所了解的智能卡内核的加密芯片有:中巨的SMEC98SC、凌科芯安的LKT4100F、ATMEL的AT88SC、Infineon的SLE 77CF1200S等等。

四、        加密芯片的软件安全性
在加密芯片硬件不可**的基础上,我们再谈谈加密芯片的软件方案。加密芯片物理硬件不可**后,并不是就万事大吉了,软件设计的好坏,同样会影响到整套方案的安全。加密芯片的软件工作原理,我分为三个类型:1. 真值点判断类型;  2. 数据加解密类型; 3. 功能运算类型。下面列举一些简单的例子,解释其软件工作原理。

1.        真值点判断工作模式
主控MCU在工作时,判断一下外部的加密芯片是否合法,然后决定自身是否要正常工作,我把这一类加密芯片工作方式,统称为真值点判断类型。
这类判断加密芯片是否合法的方式有:PIN码验证,对称算法运算(AES,DES等),非对称算法运算(RSA,ECC等),散列算法(HMAC-MD5, HMAC-SHA,HMAC-SM3等),挑战码方式(如ATMEL的AT88SC系列芯片)……
真值点判断方式,操作简单,对主控芯片原有代码改动较小。加密芯片提供者甚至可以提供简单配置一下密钥,就能工作起来。但这类方式有个致命弱点,如果侵入者将主控MCU的代码,反汇编,并作改动就可以绕过加密芯片,实现**。如下面的反汇编代码中,将C:0x0420地址代码,改成直接挑砖指令:SJMP 0x042C,将完美绕过加密芯片。
所有这类型工作方式,都存在被**的可能性,**难度取决于找到对应真值点的位置,一旦找到,整套方案就被**了。

图4:加密芯片工作在真值点判断模式下的原代码

图5:加密芯片工作在真值点判断模式下的反汇编
将C:0x0420地址代码,改成直接挑砖指令:SJMP 0x042C,将完美绕过加密芯片


2.        数据加解密工作模式
将一部分数据密文存放在加密芯片中,当主控MCU工作时,从加密芯片密文读出,然后在主控芯片中再解成明文使用,这一类统称为数据加解密类型。常见的加解密算法有对称算法(AES,DES等),非对称算法运算(RSA,ECC)等等。
这类工作模式,同样有漏洞,要求入侵者能够调试反汇编的代码。如图7,在C:0x01C0处打断点,将变量bDecryptData中的明文数据得到,也将成功**整套方案。

        图6:加密芯片工作在数据加解密模式下的原代码



图7:加密芯片工作在数据加解密模式下的反汇编
将C:0x01C0地址打断点,并把对应地址变量内容读出,
然后替换汇编代码,也将成功**

3.        功能运算工作模式
将主控芯片的一部关键代码放在加密芯片中,当主控MCU工作时,传入参数,请求加密芯片执行运算,并获取计算结果。这一类工作方式,统称为功能运算类型。
这类工作模式,是将一部分代码放入加密芯片中运行,例如图8中,计算圆周长的代码在加密芯片中,主控芯片只需要传给加密芯片圆的半径,就能够得到圆的周长。即使入侵者把主控MCU的反汇编代码,每一行都理解透,在不知道“圆周长”计算公式下,他们就算有通天的本事,也无法解密整套方案。

        图8:加密芯片工作在功能运算模式下的原代码


图9:加密芯片工作在功能运算模式下的反汇编

五、        结束语
一个好的加密方案,即少不了安全可靠的物理硬件的支持,也少不了灵活可变的软件支持。一些加密芯片厂商,一味的强调自己的硬件多么强大,支持算法种类多么的多,算法密钥长度多么的长,然而没有提供很好的软件开发支持,只能够配置密钥数据等,再强大的硬件,也可被轻松软件**;另外一些加密芯片厂商,一味的强调自己的软件开发,多么灵活多变,速度多么的快,然而其硬件只是普通较偏门的MCU,不是智能卡内核芯片,这样再完善的软件算法,也无法挡住入侵者直接**其硬件,将整个加密芯片的二进制码全盘复制,并采购其一样的加密芯片,实现整个方案的**。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

3

帖子

1

粉丝