加密方案汇总
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
加密方案
一、加密目的
为了防止未经授权访问或拷贝单片机的机内程序,大部分芯片都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机芯片内的程序,这就叫芯片加密。
加密认证芯片放在PCB板上,外加一些简单的电路,同时写入算法防止芯片里面的程序被盗窃者读走
二、加密方法
1、磨片。用细砂纸将芯片上的型号磨掉,对于偏门的芯片比较管用,对常用芯片来说,只要猜出个大概功能,查一下哪些管脚接地、接电源很容易就对照出真实的芯片了;
2、封胶。用那种凝固后象石头一样的胶(如粘钢材、陶瓷的那种)将PCB及其上的元件全部覆盖。里面还可故意搞五六根飞线(用细细的漆包线最好)拧在一起,使得拆胶的过程必然会弄断飞线而不知如何连接。要注意的是胶不能有腐蚀性,封闭区域发热不太大;
3、加密算法。需要密钥,对主要算法加密或者进行认证;
4、使用裸片。看不出型号也不知道接线。但芯片的功能不要太容易猜,最好在那团黑胶里再装点别的东西,如小IC、电阻等。
三、加密算法
(一)加密算法分类
加密算法分为对称式加密算法、非对称式加密算法和杂凑(Hash)算法三种。
1、对称式加密算法:对称式加密算法加密和解密的密钥相同,金融行业常用的算法包括DES、3DES、AES等。
2、非对称式加密算法:非对称式加密算法的密钥分为公钥和私钥,公钥公开用于加密,私钥保存用于解密,从公钥到私钥的过程是不可逆的。常用的算法包括:基于大数分解的RSA算法和基于椭圆曲线离散对数问题的ECC算法。RSA算法是基于一个十分简单的数论事实:将两个大素数相乘十分简单,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。ECC算法的数学基础是利用椭圆曲线上的有理点构成Abel 加法群上椭圆离散对数的计算困难性。
3、Hash算法:Hash算法是一种单向算法,可以对目标信息生成一段特定长度的唯一的Hash值,常用的算法包括:MD、SHA-1、SHA-2、SHA-3。SHA(安全散列算法)是美国
(6) 评估保证级6(EAL6)——半形式化验证的设计和测试;
(7) 评估保证级7(EAL7)——形式化验证的设计和测试。
分级评估是通过对信息技术产品的安全性进行独立评估后所取得的安全保证等级,表明产品的安全性及可信度。获得的认证级别越高,安全性与可信度越高,产品可对抗更高级别的威胁,适用于较高的风险环境。EAL5+几乎已是普通民用安全等级的最高标准认证。(四)加密方式
在实际产品中,利用现有的加密算法,会对关键软件进行加密。会用到的加密方式一般有三种。
1、程序加密:基本思路是将部分或者全部程序利用某个算法进行加密,程序运行时再通
过密钥将加密的程序解密。分为两种情况主控硬件支持加密和主控硬件不支持加密。
(1)如果主控硬件上支持加密,这个操作将在主控内部执行,具体实现如下:解密的密钥通过PC上的软件写入主控内部的存储器中,同时PC软件将明文程序进行加密,完成后将加密后的密文程序烧录到外部存储器中,上电后主控会先运行解密程序,将加密的密文程序解密成明文以供执行程序。这种加密方式的好处就是密钥和解密的算法都在主控内部运行,外部无法获取密钥,外部存储器的程序也是密文的,没有密钥是很难破解成明文的。
(2)如果主控硬件上不支持加密,一般做法是将程序分成两部分解密程序和核心程序,解密程序包括解密的算法和密钥(或者获取密钥的代码),核心程序会事先通过PC软件根据同样的加密算法进行加密,上电后主控会先运行解密程序,获取密钥,并且将加密的核心程序进行解密来执行功能。这种加密方式的风险在于外部会相对简单地获取密钥,一旦密钥被获取,那么整个加密将瓦解。
2、认证加密:这是一种基于加密芯片的加密方式,防止程序拷贝到其他非法的硬件上。实现思路是主控通过某种通讯方式(SPI、I2C,1wire等)跟加密芯片进行通讯,通讯的数据可以选择明文或者密文,密钥和程序以明文的方式存储在存储器中,加密芯片内部也会事先写入密钥,上电后主控会先运行认证程序,发出一些命令给加密芯片,进行一些认证(MAC 认证等),如果认证通过,则继续运行程序,如果失败,则终止。这种方式的风险在于,如果程序较小,非法者容易通过反汇编找到认证的程序,并且跳过这部分认证,也可以实现程序的非法拷贝。厂家国外的有ATMEL、ST等,国产的有凌科芯安科技
3、嵌入式加密芯片:原理是在硬件上添加一个协控制器,这个协控制器运行核心的算法,主控制器想要获取算法的结果只能通过命令让从控制器执行算法,并且协控制器将执行的结果返回给主控制器。这种方式最大的弊端是如果算法比较复杂,则需要一个强大的协控制器
才能支持。目前市场上常见的嵌入式加密芯片控制器内核有8051、Cortex-M0、Cortex-A5等,厂家国外的有ATMEL、ST等,国产的有凌科芯安科技、上海动信微电子等。
(五)实际案例
1、使用DS28E01作为加密芯片,该芯片带有1Kb的EEPROM,使用SHA-1算法引擎,这是一种获取信息摘要的加密算法。
2、加密狗(加密U盘):一般是PC软件根据加密狗获取的一些信息,来确定是否合法设备。例如,一种做法是软件随机向加密狗发出一段数据,加密狗根据内部的算法得出结果并将结果返回,软件来判断是否合法。或者一种做法是软件运行时向加密狗获取参数,若是非法的加密狗将返回错误的参数,软件会继续运行,但是不能正确的运行。
3、ATSHA204A:这是Atmel的一款加密芯片,有SOP和SOT23等封装,通过I2C或者1Wire进行通讯,通讯可以选择是否加密,支持SHA-256加密算法,内部集成了随机数产生模块,可以存储多达16个Key。