把程序加密,无疑是一个防小人的好办法。我们这里介绍一种比较流行的加密方式,它利用芯片里的唯一识别码,为每一个mcu单独授权,这样即使程序被读出,也没有办法在其它的mcu上运行。我们讲一下它的工作原理,以及一款可以实现加密量产,可以授权烧写次数的工具。
一种流行的加密方法
如上图中所示,mcu中一般都有一个udid(unique device identifier),这个唯一识别码,每一个mcu都是不一样的,烧写工具可以读出这个udid,然后通过算法,计算出一个授权(license),烧写mcu程序(app)时,连同这个授权码一起写入flash。当mcu上电运行时,也读取自己的udid,然后通过同一算法,计算出授权码,并和工具写入的授权码做对比,如果不相同就拒绝执行下面的程序。下面举个例子。
如图,三个mcu的udid分别为1,3,5。通过一种算法计算出1和3的授权码分别为0和4。从1和3号读出的程序,写入5号是无法运行的。因为我们会发现,程序用5计算出的授权码,不等于0也不等于4,无法通过比对,程序无法继续运行。
那么我们能根据1和3的已知信息,反推出算法吗?可以试试看,经过一番猜测,我们发现一个算法,(udid–1)*2 对于1号和3号mcu完全适用。我们不由得一阵兴奋!经过计算(5-1)*2=8,我们把8写入5号mcu的授权地址,然后发现程序并没有运行???
怎么回事?因为算法是猜测的。我们完全可以反推出另外一种算法:(udid-1)*(udid-1)。对于1和3也是适用的,但对于5,结果是16。
对于简单的数字尚且如此,而udid一般长度有16个字节,用户再混入自己的密钥数字,用加减乘除,异或等运算计算出授权,想要逆向推测出算法还是很难的。如果想要进一步增加安全性,可以采用更高级别的加密算法。
为了增加逆向分析的难度,还可以在用户程序中综合采取一些措施。比如:不直接读取udid和授权码,而是用两个地址运算生成读取地址;使用inline内联函数;多次校验并延时触发等。
加密算法
对称加密
加密和解密使用同一密钥。所以发送端和接收端都要对密钥严格保密。对称加密好处是运算速度快。常用的有des,3des,aes,以及我国的sm1。
非对称加密
它的密钥分为公钥和私钥,公钥是公开的,但是从公钥无法推导出私钥。非对称加密的好处是,只需要保密私钥就行了。其缺点是消耗资源比较多,运算速度慢。常用的有rsa,ecc以及我国的sm2。
反过来,我们也可以用私钥加密,然后用公钥解密,这种方式通常用来完成签名的验证。把mcu的udid读出来,用私钥加密生成授权码,和应用程序一起写入mcu的flash,然后mcu的应用程序就可以用公钥完成授权码的验证。采用非对称加密算法的好处是,即使算法是公开的,公钥也是公开的,别人只要没有获得私钥,就没办法为其它mcu生成授权码。
加密算法的安全性
首先想个问题,如果我们给家里装个防盗门,是越坚固的越好吗?好像没毛病。但仔细一想还真不是这样,我们大多数家里安装的,并不一定是市场上最好最贵的。
加密算法也没有绝对的安全。理论上只有一次一密,也就是采用跟明文长度一样密钥,而且只使用一次,才是绝对的安全。所以我们采用什么算法,要根据我们的实际需要。在一定时间长度内,如果破解的代价远大于所获得的价值,我们就认为是安全的。还有就是尽可能使用长一些的密钥,跟踪密码学的最新动态。
安全单片机和普通单片机
对于任何加密方式,密钥的存储是安全的关键。对于普通的单片机,现在一般在flash区都会有保护字节,可以设置成编程后无法读出。密钥存储在里面,通过常规手段是无法读到的。但是对于非常规手段,这种安全性就不够了。
但是对于非常规手段,就无效了。比如把mcu的外壳溶解掉,然后暴露出内部的硅片,这样就可以直接观察,修改里面存储的内容。所以对于安全等级高的应用,比如金融等,也要求mcu具有更高级别的安全防范措施。这种mcu会把密钥存储在一小块儿ram里,用电池供电。为了保证存储在ram里的密钥不被非法读走,采取各种防范措施。比如芯片外部有探测引脚,一旦发现外部电路被破坏,马上销毁密钥。在芯片内部,用金属丝网包住关键区域,一旦被破坏,也会销毁密钥。同时这种mcu内部也会集成随机数生成,硬加密算法模块等,加速加解密的运算速度。
采用哪种单片机,也要根据实际需要来决定。
加密量产工具
创芯工坊的power writer,是一款挺实用的量产烧录工具。它可以通过mcu的唯一识别码,对每一个mcu生成单独的授权。加密算法有消耗资源特别少的向量矩阵加密,也有加密级别更高的ecdsa椭圆数字签名算法,还支持用户使用自己的算法。除此之外,他还能授权烧写的mcu个数,烧写mcu的udid范围等。用户可以把程序上传到云端,客户联网在线获得授权,进行芯片烧录,也可以把程序加载进烧写器,用户采用离线烧录。
四人抢答器电路设计方案汇总(六款模拟电路设计原理图详解)
工程院院士倪光南:世界交易型数据库tpmC指标中,国产数据库已居第三
MAX2242功率放大器:关键应用问题
双11“养猫”游戏备受争议,为何仍受追捧?
算网融合下,数据存力发展探讨
介绍一种比较流行的程序加密方式
人工智能时代,人工智能领域的人才需求将逐渐变化
今年人工智能在手机市场的热度比去年更甚
5G将促进MEC发展商业模式呈多元化
PCB企业需警惕 智能手机总体出货量仍在下滑
爱立信携手TIM探索增强型LTE现网部署vRAN新方式
Silicon Labs参考设计帮助开发人员在5分钟内转动电机
美国高中生两年时间搭建自动驾驶汽车
电机检修的基本步骤
组合式多功能智慧杆的特点是什么
电源直流模块的电磁共模骚扰由哪些回路构成
普通空调智能节能控制-红外人联
有刷和无刷直流电机的区别
知行科技获得奇瑞旗下星途星纪元系列车型量产定点
预付费射频卡售电管理系统的详细说明