0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍一种比较流行的程序加密方式

TopSemic嵌入式 来源:TopSemic嵌入式 2023-04-21 09:07 次阅读

把程序加密,无疑是一个防小人的好办法。我们这里介绍一种比较流行的加密方式,它利用芯片里的唯一识别码,为每一个MCU单独授权,这样即使程序被读出,也没有办法在其它的MCU上运行。我们讲一下它的工作原理,以及一款可以实现加密量产,可以授权烧写次数的工具。

一种流行的加密方法

poYBAGRB4gCART1zAACRBmkPMh0524.jpg

如上图中所示,MCU中一般都有一个UDID(Unique Device IDentifier),这个唯一识别码,每一个MCU都是不一样的,烧写工具可以读出这个UDID,然后通过算法,计算出一个授权(License),烧写MCU程序(APP)时,连同这个授权码一起写入Flash。当MCU上电运行时,也读取自己的UDID,然后通过同一算法,计算出授权码,并和工具写入的授权码做对比,如果不相同就拒绝执行下面的程序。下面举个例子。

poYBAGRB4hCAACd4AACMh4K8nC8011.jpg

如图,三个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。

poYBAGRB4iKAKB4OAABn-fMbAOw174.jpg

非对称加密

它的密钥分为公钥和私钥,公钥是公开的,但是从公钥无法推导出私钥。非对称加密的好处是,只需要保密私钥就行了。其缺点是消耗资源比较多,运算速度慢。常用的有RSA,ECC以及我国的SM2。

pYYBAGRB4jSAdhI8AABiTudrXzg364.jpg

反过来,我们也可以用私钥加密,然后用公钥解密,这种方式通常用来完成签名的验证。把MCU的UDID读出来,用私钥加密生成授权码,和应用程序一起写入MCU的Flash,然后MCU的应用程序就可以用公钥完成授权码的验证。采用非对称加密算法的好处是,即使算法是公开的,公钥也是公开的,别人只要没有获得私钥,就没办法为其它MCU生成授权码。

加密算法的安全性

首先想个问题,如果我们给家里装个防盗门,是越坚固的越好吗?好像没毛病。但仔细一想还真不是这样,我们大多数家里安装的,并不一定是市场上最好最贵的。

加密算法也没有绝对的安全。理论上只有一次一密,也就是采用跟明文长度一样密钥,而且只使用一次,才是绝对的安全。所以我们采用什么算法,要根据我们的实际需要。在一定时间长度内,如果破解的代价远大于所获得的价值,我们就认为是安全的。还有就是尽可能使用长一些的密钥,跟踪密码学的最新动态。

安全单片机和普通单片机

对于任何加密方式,密钥的存储是安全的关键。对于普通的单片机,现在一般在Flash区都会有保护字节,可以设置成编程后无法读出。密钥存储在里面,通过常规手段是无法读到的。但是对于非常规手段,这种安全性就不够了。

但是对于非常规手段,就无效了。比如把MCU的外壳溶解掉,然后暴露出内部的硅片,这样就可以直接观察,修改里面存储的内容。所以对于安全等级高的应用,比如金融等,也要求MCU具有更高级别的安全防范措施。这种MCU会把密钥存储在一小块儿RAM里,用电池供电。为了保证存储在RAM里的密钥不被非法读走,采取各种防范措施。比如芯片外部有探测引脚,一旦发现外部电路被破坏,马上销毁密钥。在芯片内部,用金属丝网包住关键区域,一旦被破坏,也会销毁密钥。同时这种MCU内部也会集成随机数生成,硬加密算法模块等,加速加解密的运算速度。

采用哪种单片机,也要根据实际需要来决定。

加密量产工具

创芯工坊的Power Writer,是一款挺实用的量产烧录工具。它可以通过MCU的唯一识别码,对每一个MCU生成单独的授权。加密算法有消耗资源特别少的向量矩阵加密,也有加密级别更高的ECDSA椭圆数字签名算法,还支持用户使用自己的算法。除此之外,他还能授权烧写的MCU个数,烧写MCU的UDID范围等。用户可以把程序上传到云端,客户联网在线获得授权,进行芯片烧录,也可以把程序加载进烧写器,用户采用离线烧录。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1635

    浏览量

    148091
  • AES
    AES
    +关注

    关注

    0

    文章

    104

    浏览量

    33236
  • DES
    DES
    +关注

    关注

    0

    文章

    64

    浏览量

    48237
  • ECC
    ECC
    +关注

    关注

    0

    文章

    97

    浏览量

    20581
  • MCU芯片
    +关注

    关注

    3

    文章

    252

    浏览量

    11499

原文标题:辛辛苦苦的劳动成果,如何上把锁?

文章出处:【微信号:TopSemic,微信公众号:TopSemic嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    浅谈加密芯片的一种破解方法和加密方案改进设计

    破解了一种方式,那么只要使用这种逻辑加密芯片和这种加密方式的产品都很容易破解,就像上述破解方式
    发表于 12-20 15:10

    浅谈加密芯片的一种破解方法和对应加密方案改进设计

    ,只要破解了一种方式,那么只要使用这种逻辑加密芯片和这种加密方式的产品都很容易破解,就像上述破解方式
    发表于 12-20 15:31

    一种有效的可转换的认证加密方案

    一种有效的可转换的认证加密方案:针对般的认证加密方案存在着当签名者否认签名时,接收者不能使任何验证者证实签名者的诚实性等问题,提出了一种
    发表于 06-14 00:19

    请问怎样去设计一种CPLD加密电路?

    本文介绍一种基于计算机总线的CPLD加密电路的设计方案。
    发表于 04-29 06:16

    请问怎样去设计一种FPGA加密认证系统?

    加密问题是怎样提出的?DS28E01芯片及其加密原理是什么?怎样去设计一种FPGA加密认证系统?
    发表于 04-29 06:53

    比较流行的复位方式

    现在比较流行的复位方式是这样的:但我们都知道对于结构紧凑型硬件来说,多个电阻都是没必要的。在没有手动复位需求的场合,能不能删掉按键与R24,仅保留104电容?通过阅读stm32 pd
    发表于 08-11 08:42

    介绍蓝牙通信的另一种方式--BLE

    今天我们介绍蓝牙通信的另一种方式--BLE(Bluetooth Low Energy,蓝牙低功耗)。什么是BLE在《无线通信3:HC05/HC06经典蓝牙B...
    发表于 12-13 06:50

    介绍在单片机裸机环境下编写AT指令程序一种方式

    单片机裸机环境下编写AT指令程序一种方式。2.程序设计首先串口底层的收发程序不在这里详细介绍
    发表于 01-17 06:49

    介绍一种基于硬件的安全模块

    英飞凌科技开发了一种基于硬件的安全模块,通过其全新的 OPTIGA TPM 2.0 保护联网汽车与汽车制造商之间的通信,该模块是一种可信平台模块 (TPM),制造商可以在其中整合敏感的安全密钥以分配
    发表于 02-11 07:41

    介绍一种STM32数据传输方式SPI

    之前介绍了STM32数据传输的一种方式IIC,这次我将进行另外一种数据传输方式SPI。
    发表于 02-17 06:02

    一种基于PKI的安全公文签名加密解决方案

    讨论了基于 PKI 的签名加密技术基本原理,详细介绍了电子公文签名加密方式,并将其应用到企业内网Intranet 和Internet 中的信息交换,提出了
    发表于 08-15 09:54 18次下载

    一种基于Net Framework文件加密方案的构建

    本文介绍一种简明高效的文件加密方案,先用两对称加密算法组合加密明文,再用公钥
    发表于 01-09 14:55 19次下载

    加密场景下的一种测试方法

    加密场景下的一种测试方法
    发表于 09-07 11:07 3次下载
    <b class='flag-5'>加密</b>场景下的<b class='flag-5'>一种</b>测试方法

    一种动态选择加密方法

    对数据进行加密一种保证数据安全性的有效措施,但现有的数据加密方式般是选定某种加密算法,用该
    发表于 11-08 10:54 2次下载
    <b class='flag-5'>一种</b>动态选择<b class='flag-5'>加密</b>方法

    区块链是一种新的、先进的存储和交换信息的方式

    无论如何,人们很快就清楚地认识到,加密货币只是应用分布式记分类账技术的一种可能方式。区块链实际上是一种新的、先进的存储和交换信息的方式,如果
    发表于 09-27 11:14 2110次阅读