硬件加密:
未了防止开发出的电子产品被恶意抄袭,需要对软硬件加密,主要目的
1.即使对方抄袭了我方的硬件,再有用我方的产品固件情况下,由于对方硬件加密芯片与软件不一致,软件无法通过校验,不能正常工作.
所以:对方抄袭硬件情况下,要向产品推向市场,只有自己重新开发软件,重新选型加密芯片,重新适配.但是硬件本来就是天下一大抄,基本是在原厂的公版基础上做些小改动,单纯的硬件抄袭没有十分的必要.
但是.如果我方开发人员得到完整的软硬件资料,是存在产品被恶意抄袭的可能的.
数据加密:
客户的重要数据,如果保存到flash等一般存储,是有可能被提取破解的,存在被格式化的风险.未了长久保存,一般会保存到eeprom里面,一般情况下,窃密者可以通过暴露的信号线暴力分析破解明文信息.
于是,需要对传输的重要数据进行加密,但是如果相同的数据,每次传输的波形都一致,这也存在被模仿波形破解的可能,因此需要做到相同数据的没一次校验,波形都是不一样的.利用散列加密算法可以做到这一点.
以本人接触的上海动信微电子科技有限公司的DX8加密芯片为例,
芯片厂家提供加密IC,软件库,配置烧写工具,相应资料.
1.芯片的密钥的生成:
老板掌握加密的唯一明文密钥,通过专用的工具将pin码/密钥/密钥可写芯片数等设置完,将必要数据写入USB_key_dongle或者生成某个加密文件(一般是基于硬件加密的usb_key).,同时根据密钥/pin码等会生成软件开发需要的头文件,头文件里面存储的是加密过后的密文数据(pin码,key-A,key-B等),
2.密钥烧写操作元,拿到老板提供的usb_key_dongle或者某个加密文件后,通过加密芯片厂家的专用工具,打开usb_key,设置芯片的起始ID,加密过后的pin码/key-A/key-B等,烧入到芯片(注意这里操作员和软件开发人员所看到的pin码/key-A/key-B等是经过密钥加密的密文,是转换后的数据,这个密钥只有老板知道)
3.软件开发.
第一步中有提供,老板配置usb_key过程会生成软件开发所需要的头文件,里面包含了所需要的pin/key-A/key-B等.
软件工程师,首先进行pin码认证,完成库文件和加密芯片的认证.
本地代码产生一串随机数,发送给加密芯片,加密芯片传回一串数据.配合头文件的key-A/key-B,将加密芯片传回的数据和key-A,调用函数库的解密函数,如果加密结果和本地产生的随机数一致,说明校验通过.
DX8芯片,最大特点是,针对相同的数据,DX8每次的响应应答都不一样(硬件也产生加密随机数),有效防止外部MCU进行固定波形进行欺骗
同时DX8有内置eeprom,传输数据时的波形也是加密后的波形,有效保护用户隐私数据.
同时DX8也可以对设备之间的通信数据进行加密,