加密

锂电池行业现况

锂电池在嵌入式系统中应用越来越多,但各电池厂家的品质和安全性参差不齐。劣质电池在使用中导致的严重事故时有发生,如爆炸,起火等,造成人员伤害和财产损失。劣质电池也严重影响产品系统的稳定性和使用寿命,并且严重影响用户的体验感和对产品的接受度。因此,各品牌厂家高度重视产品匹配的电池质量,需要对其认证,严防假冒伪劣的电池应用到其产品系统。武汉瑞纳捷半导体有限公司的高性能防复制加密认证芯片方案,很好地解决了对电池身份认证识别,杜绝了未经认证的电池使用到产品系统中。加密认证芯片还可存储电池种类、电池参数(老化曲线等参数)、生产日期等信息,起到产品的可追溯作用。

瑞纳捷加密系列

应用图解

1.png

目前,瑞纳捷的工业级加密认证芯片方案有基于RC4算法的RJGT101、RJGT103和RJGT105,还有基于SHA-256算法的RJGT102。即将推出满足AEC-Q100的汽车级加密认证芯片解决方案。

RJGT101、RJGT103和RJGT105都是采用单线通信,速率高达20Kbps。此系列加密芯片集成4字节的真随机数发生器,支持16字节密钥和8字节UID,共集成256字节EEPROM。功耗极低,不影响系统的功耗。正常工作功耗小于1.5mA,低功耗模式小于300nA。提供SOT23-3和QFN-6小封装。其中,RJGT101和RJGT105不需要单独的电源线供电,而是通过RSD信号脚供电,从而极大简化了处理器与加密器件的连线。RJGT101和RJGT105支持宽的工作电压2.4V-5.5V。RJGT105的防静电保护ESD(HBM)达8KV。

瑞纳捷超低功耗MCU系列

防伪加密芯片放置于电池保护板。保护板对电池的状态实时监控,由于电池不能被过充、过放、过流、短路及超高温充放等,一旦异常需要断开相应的充电或放电电路。同时,需要监控电路低功耗运行,以满足低发热量和低电量损耗。瑞纳捷推出的RJM8L超低功耗MCU处理器方案很好地解决了上述问题。

RJM8L151S和RJM8L003系列产品是基于8051增强型单片机,工作电压2.0-5.5V,主频达16MHz,内置32KB FLASH,4KB SRAM,真随机数发生器, 多种通信接口(4路UART /1路LPUART /4路SPI /2路I2C),7通道12位ADC(采样转换率高达1MSPS),两路比较器。采用先进的低功耗设计,通过不同的电源域与时钟域的组合,支持6种低功耗模式,待机模式(Halt)0.6uA,低速运行85uA@32KHz,高速运行小于4mA@16MHz。

RJM8L151S和RJM8L003快速的ADC及时采样相关的电压、电流和温度信号,快速判断电池是否达到过充、过放、短路、过流、温度过高等保护条件。一旦达到保护条件,及时切断充放电回路,使电池处于安全状态。

一站式定制开发  

为了用户能快速推出产品,瑞纳捷提供这些加密认证芯片和MCU产品级应用例程和评估板供开发应用。

来源:武汉瑞纳捷半导体有限公司

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 155

如果加密芯片本身硬件会被物理破解,那就毫无安全可言,失去了加密芯片保护MCU方案的意义。

最好的软件方案是将MCU的一部分功能程序,移植到加密芯片里面执行。这样即使攻击者破解了MCU的程序,也无法得到加密芯片里面的代码(加密芯片要能做到硬件上不被破解)。

硬件方面

智能卡内核的加密芯片,硬件方面安全性是最高的。智能卡自从上世纪70年代末诞生以来,就是直接跟“钱”直接打交道。例如最早的IC卡就用于存话费打电话,现在银行卡,社保卡,电表卡等等,上面就直接存放着“钱”,没有足够安全的硬件支持,这些行业也不可能敢将“钱”直接存放在卡上。

经过几十年的发展,MCU的功能越来越强大:如IO口数量,越来越多,IO口的种类也越来越多,支持的通信协议也越来越多,等等。然而同样是几十年,接触式智能卡,却依旧只有ISO7816的UART口。硬件上增加的只有存储空间大了,速度快了,算法及安全寄存器越来越多。几十年来,智能卡除了变大,变快外,就一直围绕着安全在发展。

智能卡内核,在硬件方面,使用了顶层金属网络设计,提升入侵难度。所有的网格都用来监控短路和开路,一旦触发,会导致存储器复位或清零;另外智能卡使用存储器总线加密,每张卡片总线加密密钥不同,这样即使入侵者完全破解了,也无法生产出相同功能的芯片来。智能卡将标准的模块结构使用混合逻辑(Gle Logic)设计,使得攻击者不可能通过信号或节点来获得卡的信息进行物理攻击;智能卡还砍掉了标准的编程接口,甚至干掉了读取EEPROM接口,取而代之的是启动模块,可以在代码装入后擦掉或者屏蔽自己,之后只能响应使用者的嵌入软件所支持的功能。

软件方面

很多加密芯片号称有AES算法,或者SHA256算法等等。一味的强调算法的强度,而忽略了其工作原理。实际上,不管用哪种加密算法,MCU及加密芯片上都要存储一致的密钥,才能保证双方协同工作。而MCU可被破解,理论上都可以被攻击者拿到密钥,利用这种攻击方法,再高强度加密算法也无济于事。

例如DES算法,自从上世纪70年代被研制出来,然后运用到银行卡中(PBOC银行卡现在仍然还在使用的是DES/3DES算法)已经几十年了,目前为止,除了穷举外还没有其他方法可以破解其密钥。我们假设1us计算一次DES,一年有365天24小时60分60秒100000微秒=3153600000000微秒。单DES密钥长度为8字节,如果要把这8字节穷举完,则要580万年(0xFFFFFFFFFFFFFFFF除以十进制3153600000000 = 约等于580万)。也就是说,如果不是直接从MCU中直接获取密钥的话,破解DES算法,需要580万年。那些所谓的很多算法比DES算法更强大,毫无意义,人家破解不会从算法本身破解,而是从MCU中去获取密钥。

所以DES/AES/SM1 /SM3/SHA1/SHA256等等,无论是哪种算法,使用者都无需担心算法本身的强度,不会有人来攻击这些算法,因为代价太高。

相反,更多的破解是从MCU这端拿到密钥的,因为理论上只要把MCU破解后仿真,定位到了加解密函数,就能找到相关的密钥。所以软件方案本身的设计,远比算法本身的强度重要。

只有把MCU的部分代码移植到加密芯片中,并在加密芯片中执行此代码,这种软件方案才是最安全的,其他的软件方案,都可以被破解(因为MCU可被破解,并被仿真)。现在市面上有部分加密芯片,把MCU的部分代码存放在加密芯片中,然后通过密文方式读到MCU中去执行。这种方法同样可被破解,因为其代码不是在加密芯片中执行。

瑞纳捷的RJMU401加密芯片,硬件上使用的是最高安全强度的智能卡芯片内核;软件上使用的是灵活的可编程方式,可内置算法。具有接口简单(SPI),安全强度高,开发简单,价格低,性价比高等特点。我们提供了一套经典加密方案设计样例,并提供了各种MCU下的源代码,例如:STM32等等。开发者几个小时就能上手,然后再根据样例设计出自己的加密方案。

最后给广大开发者一些忠告:

不要相信主控MCU本身的加密机制, 我们太多的客户因为相信芯片本身的加密,没有做其他的保护, 而受到巨大的损失。

要想加密芯片硬件本身不被破解,请尽量选择智能卡内核的加密芯片。

要想软件方案足够安全,一定要将MCU的部分代码放入加密芯片中执行,否则都会被攻击者在MCU中,找到密钥而破解方案。

来源:武汉瑞纳捷半导体有限
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 142

在最近一个项目中,急急忙忙把功能完成就给了客户,完全没有安全意识,现在用烧录器把Flash里的程序一读,我就慌了,完全没有加密,随随便便就把程序读出来了,那我干了一个月的活,被人家花几秒钟读出来了,我这不是白干吗。因此,在这里普及一下安全意思,顺便介绍几种常见的加密方法。

一、打磨或更改芯片型号丝印

打磨或更改芯片型号丝印可以迷惑破解者,使破解者不知从何入手。当然,这是需要成本的,根据产品价格考虑是否需要打磨。

二、使用加密芯片

使用加密芯片的成本更加高,同时对于加密芯片可靠度无法掌握,风险很大。

三、开启单片机Flash保护

大部分有价值的单片机都有Flash保护功能,使能对应的标志位,烧录器就无法通过通讯脚读取Flash里的数据,唯有全部擦除数据。如图1-1新塘单片机

单片机加密方法
图1-1

也有一些单片机通过程序直接把通讯线路物理意义上的断开,这种方法保护更有效,但从此不能再对单片机写入程序,对于售后服务来说是一种风险。如图1-2ST单片机

单片机加密方法
图1-2

四、使用唯一ID号

对于一些高端的单片机,在出厂的时候芯片内部就给予了一个唯一的ID号。我们可以添加一个存储器(有的单片机内部有),然后组织一种特殊的算法,利用这个唯一的ID号,产生一组数据,把这个数据预先烧录到存储器里。单片机上电初始化的时候,先读出存储器里的这个数据X,然后读出自身的ID号通过加密算法算出一个值Y,然后比较XY值是否一样,如果一样则继续工作,否则停止工作。这种方法是最实用的一种。如图1-3ST单片机的唯一ID号

单片机加密方法
图1-3

五、利用外部电路参数校正

对于一些非纯数字电路,电路自身存在有较大的参数偏差,这时候可以利用软件校正参数偏差,这使得每一块电路板的程序电路一样,但Flash数据不一样。破解者即使破解出程序和电路,如果无法理解电路的含义,则无法校正Flash数据,产品运行结果就会有偏差。

转自:WCW的故事

围观 360

随着信息技术的发展,信息的载体-芯片的使用也越来越多了,随之而来的芯片安全性的要求也越来越高了,各个芯片厂商对芯片保密性要求越来越高,芯片的加密,保证了芯片中的信息的安全性。经常有客户打电话过来问,这个芯片加密了还能不能用啊。本文通过对芯片的加密的介绍来看看不同的Flash,MCU以及DSP加密的效果。

一、Flash类型芯片的加密

Flash类芯片(包括SPI FLASH ,并行FLASH,NAND FLASH等)加密后一般情况下都是禁止“写”以及“擦除”操作,通过状态寄存器写入加密信息,如果该芯片已经加密,则进行编程操作时,编程虽然能成功,但是客户的代码实际上是没有写入到芯片的。

以SPI Flash中的MXIC厂商的芯片为列,下图为其在SmartPRO系列编程器加密设置界面。

【揭秘】芯片加密后究竟能不能再次使用?

按上图的设置可视界面,把对应配置信息写入后,Flash对应的区域即进入保护状态,不能编程,擦除,只能通过清空加密寄存器中的信息,才能从新对芯片进行擦除、编程操作。

二、MCU类型的芯片加密。

经常会有人就MCU加密保护后,能否二次使用的问题进行咨询。对于加密后的芯片能不能二次使用这个问题,得具体看是哪个类型的芯片,类似于TI 的MSP430系列芯片加密后即不可进行二次使用,这个加密为OTP(One Time Programmable)型,只能进行一次烧录。其原理是通过高压烧断熔丝,使外部设备再也无法访问芯片,这个是物理性,不可恢复,如要加密,请慎用!下图为SmartPRO系列编程器的操作按钮。

【揭秘】芯片加密后究竟能不能再次使用?

但对于大部分MCU芯片来说,加密后芯片还是可以进行二次使用的。类似于ST厂商的MCU有3级可选的加密,即Level 1,Level2,Level3。

1、Level1 就是不做读保护级别,即可以读出芯片中的数据,但不能对芯片进行编程、擦除操作。

2、Level2保护,这种状态下,不能读取芯片内的程序代码内容,也不能对芯片再次做存储空间的擦写或芯片调试了。

3、Level3级别的保护就是不可逆的保护,保护后即不能进行其他操作。而Level1,Level2加密后可以通过解密的方式对芯片进行第二次操作。

【揭秘】芯片加密后究竟能不能再次使用?

类似ST MCU的这3种级别的加密方式还是比较人性化的,客户可根据自己的需求来管理不同的加密级别。下图为SmartPRO系列编程器加密设置操作界面。

三、DSP类型的芯片加密

DSP的芯片加密形式是通过在特定的区域写客户的密码进行加密的。这种加密是可逆的,可以通过输入正确的密码,重新对芯片进行任何操作。但如果密码为全“0”,这种方式是不可逆的,属于芯片的一次性设置,须谨慎。其SmartPRO系列编程器加密设置窗口如下。

【揭秘】芯片加密后究竟能不能再次使用?

总结

通过上述简单的介绍,你了解了各类芯片的加密设置了吗?快动手试试这些加密方法吧。

转自: ZLG致远电子

围观 385

1、 为什么要加密,如何加密?

当您的产品推向市场的时候,您的竞争对手就开始盯上它了,如果您的产品硬件很容易被模仿,而且您使用的MSP430单片机没有被加密的话,那么您辛辛苦苦的劳动成功就很容易成为您竞争对手的产品了,使用JTAG调试工具FET虽然可以将程序下载到芯片内部,但只有使用专业编程器能够防止程序被窃取。

2、 JTAG、BSL、BOOTLOADER、熔丝的区别和关系是什么?

JTAG接口能够访问MSP430单片机内部所有资源,通过JTAG可以对芯片进行程序下载、代码调试、内存修改等等,通过JTAG还能烧断加密熔丝,熔丝一旦被烧断,JTAG接口绝大部分功能失效,就再也不能通过它进行编程了。

BSL接口是利用芯片内部驻留的bootloader程序实现的自编程,通过特定的时序使得CPU进入bootloader代码断,然后利用每个MSP430芯片内部都有的Timer A构成一个软件串口来与上位机通讯,这样可以将代码下载到芯片内部。实现BSL除了JTAG接口的一些引脚外,还需要用到两个TA0功能引脚,因此在设计产品时如果需要加密,则应该考虑将这两个引脚也连出来。要烧断熔丝(加密)必须使用JTAG接口;烧断熔丝后只能通过BSL或者用户代码来实现编程更新。

3、 BSL的验证密码是怎么回事?

BSL也能读出芯片内部的代码,这样可以实现编程后的校验等功能。通过BSL擦除所有Flash信息时不需要验证密码,但是要进一步操作,就得输入32字节密码进行验证。

BSL的协议规定这32字节密码为芯片FLASH区域的最高32字节,也就是程序的16个中断向量,如果您拥有这段程序的最后32字节,就能通过BSL将芯片内部所有代码读取出来。

4、 为什么要使用高级加密?

32字节的密码看似几乎完全没可能使用穷举法来实现破解,但是各位别忘了,msp430的16个中断向量未必每一个都用到了,没用到的中断向量为0xffff,如果您的程序只用到了复位向量,那么破解者只需尝试最多32768次(中断向量为偶数,所以除以2)就能将其破解,另外,如果芯片本身Flash容量较小,比如4K字节,那么破解者只需尝试最多2K次就能将其破解。这对自动操作的计算机来说几乎是一瞬间的事情。那么如果用到的中断向量越多,就越难破解,最好的办法就是将所有未用到的中断向量全部填充为随机数据,这就是“高级加密”。

5、 关于TI-TXT文件

TI-TXT文件是TI公司为MSP430单片机定义的一种编程代码格式,其内容为纯文本格式,使用任何文本编辑器都能对其进行阅读,下面是一个这类文件的例子:

@FEFE
B2 40 80 5A 20 01 F2 40 9D 00 90 00 F2 40 2E 00
40 00 F2 D0 80 00 01 00 F2 43 33 00 C2 43 95 00
C2 43 9A 00 F2 D0 20 00 53 00 F2 40 1F 00 52 00
F2 43 91 00 F2 43 92 00 F2 43 93 00 F2 43 94 00
F2 43 95 00 F2 43 96 00 F2 43 97 00 F2 43 98 00
F2 43 99 00 F2 43 9A 00 32 D0 D0 00 FD 3F 31 40
00 03 B0 12 A2 FF 0C 93 18 24 3C 40 00 02 0E 43
30 12 00 00 B0 12 C4 FF 3C 40 00 02 3E 40 FE FE
30 12 00 00 B0 12 A6 FF 21 52 3C 40 00 02 3E 40
FE FE 30 12 00 00 B0 12 A6 FF B0 12 FE FE 30 40
A0 FF FF 3F 1C 43 30 41 0A 12 1D 41 04 00 0F 4C
0A 4D 1D 83 0A 93 05 24 EF 4E 00 00 1F 53 1E 53
F7 3F 3A 41 30 41 0A 12 1D 41 04 00 0F 4C 0A 4D
1D 83 0A 93 04 24 CF 4E 00 00 1F 53 F8 3F 3A 41
30 41
@FFFE
5C FF
q

第一行的@FEFE表示从地址0xFEFE开始,有如下代码。每行为16字节,每个字节使用16进制数表示,每两个字节之间用一个空格格开。

内容末尾的@FFFE就是程序的复位向量了,表示程序的入口地址为0xFF5C。最后用一个小写的q字符加换行结束,当然也可以把中断向量的那两行放到最前面去,比如下面这段代码的含义跟上面的是一样的,同样符合规则。

@FFFE
5C FF
@FEFE
B2 40 80 5A 20 01 F2 40 9D 00 90 00 F2 40 2E 00
40 00 F2 D0 80 00 01 00 F2 43 33 00 C2 43 95 00
C2 43 9A 00 F2 D0 20 00 53 00 F2 40 1F 00 52 00
F2 43 91 00 F2 43 92 00 F2 43 93 00 F2 43 94 00
F2 43 95 00 F2 43 96 00 F2 43 97 00 F2 43 98 00
F2 43 99 00 F2 43 9A 00 32 D0 D0 00 FD 3F 31 40
00 03 B0 12 A2 FF 0C 93 18 24 3C 40 00 02 0E 43
30 12 00 00 B0 12 C4 FF 3C 40 00 02 3E 40 FE FE
30 12 00 00 B0 12 A6 FF 21 52 3C 40 00 02 3E 40
FE FE 30 12 00 00 B0 12 A6 FF B0 12 FE FE 30 40
A0 FF FF 3F 1C 43 30 41 0A 12 1D 41 04 00 0F 4C
0A 4D 1D 83 0A 93 05 24 EF 4E 00 00 1F 53 1E 53
F7 3F 3A 41 30 41 0A 12 1D 41 04 00 0F 4C 0A 4D
1D 83 0A 93 04 24 CF 4E 00 00 1F 53 F8 3F 3A 41
30 41
q

手动修改TI-TXT文件来实现高级加密:

下面是使用到中断向量较少的一段代码的中断向量:

@FFE0
10 FF A0 FF
@FFFE
5C FF

它与下面这段代码意义是一样的:

@FFE0
10 FF A0 FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF 5C FF

这里我们把未用到中断向量改成随机数据,就实现高级加密了,不过注意不要把有效的中断向量也改了

@FFE0
10 FF A0 FF A5 5A 37 21 F3 44 E0 77 9A 00 22 33
44 55 66 77 88 99 AA BB CC DD EE 3E E3 0F 5C FF

来源: 21ic

围观 383
订阅 RSS - 加密