哪位大神能给科普一下产品加密保护方面的知识?
http://www.eepw.com.cn/article/201608/295504.htm
加密分为数据加密和程序加密,简单来说就是设备数据传输加密 和 设备程序防盗版两种。
补充内容 (2016-12-14 13:14):
防盗版需求有很多种做法,比如程序移植、对比认证、ID号认证等
设备程序防盗版,就是编写的设备程序别人不能被复制的?
防盗版需求有很多种做法,比如程序移植、对比认证、ID号认证等
程序保护优于数据保护,移植保护要优于验证保护的。
啥意思?楼上可否先详解?
举个简单的例子吧,验证保护相当于一个关卡,你想过关,必须核对身份,对设备而言就是核对ID号(ID认证),或者通过加密1个数据,对比验证密钥(对比认证)是否正确。但这个关卡可以通过其它方式(跳过)来避免验证。
那程序保护呢?
程序保护相当与一个保险箱呢了,必须获得保险箱中的关键程序数据才能实现程序正常运行,跳过的话,程序缺失
也就是说认证方式可以在mcu中直接调过而不影响程序运行;程序移植则没办法在mcu中跳过,也不能通过mcu分析出芯片的功能,对吗?
是的
通过什么实现程序保护?加密芯片?
嗯呐,LKT的可以了解一下,目前业内做的较为成功的芯片,服务也不错。
嗯呐,LKT的可以了解一下,目前业内做的较为成功的芯片,服务也不错。
凌科的确实不错!
加 密 方 案
目前市场上很多嵌入式产品方案都是可以破解复制的,主要是因为方案主芯片不具备防破解的功能,这就导致开发者投入大量精力、财力开发的新产品一上市就被别人复制,到市场上的只能以价格竞争,最后工厂复制的产品反而价格更有优势,因为他们的开发投入几乎可以忽略不计。
所以针对这种主芯片可以被破解的产品方案,开发者需要在开发时在产品方案中使用加密芯片并设计合理的加密方案。开发者首先需要选定性价比高的加密芯片,然后再设计加密方案。
市面上加密芯片一般有两种:一种是传统的逻辑加密芯片,可配数据与主芯片做相互认证起到简单的加密功能;另一种是智能卡内核的可编程CPU加密芯片,可以将主芯片部分核心的算法、功能代码以及核心数据放入加密芯片。
本方案选用具有智能卡内核的加密芯片SMEC98SP来举例实现使用STM32作为主芯片的产品的加密方案。SMEC98SP提供2K Bytes RAM、24K Bytes CODE,8K Bytes Data,用户可根据自己的需要来编程设计SEMC98SP与STM32配合的加密方案。下表为SEMC98SP与STM32配的的各种加密功能说明,具体可参见SMEC98SP评估板(STM32)源代码。
注:
① STM32与SMEC98SP间的I2C协议指令接口规则开发者自定义。
② 上述加解密密钥均为对称DES或3DES密钥,每一对密钥开发者须在开发时分别在STM32和SMEC98SP上同时存储相同的值。
③ 上述随机数都是8字节随机数,加解密算法采用DES或3DES。客户也可以根据自身需要设计或使用其他加解密算法。
④ SMEC98SP随机数发生器产生的随机数是真随机数,这样可以保证关键数据在通讯时每次都是随机数参与的,每次通讯的数据密文都是不一样的,可有效防止破解者在I2C通道上的数据监听分析。
⑤ DES或3DES加解密数据块必须为8字节整数倍,加密原始数据不是8的整数倍的按开发者自己定义补足8的整数倍,对于密文读写数据建议按LV结构补,比如:
原始数据为1122334455,补数后的数据为0511223344558000;
原始数据为11223344556677,补数后的数据为0711223344556677
原始数据为1122334455667788,补数后的数据为08112233445566778880000000000000
希望这个资料对你有所帮助。