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

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

3天内不再提示

单片机4大硬件加密方法解析

5RJg_mcuworld 来源:YXQ 2019-08-06 15:16 次阅读

我们知道,研究一套可行实用的单片机系统肯定要花大量的人力和物力。为了使所研制的系统不被别人所剽窃,保护知识产权,通常在单片机系统设计时,都要进行加密设计。加密设计一般有硬件加密和软件加密。而硬件加密的方法很多,可以采用PAL、GAL等芯片CPUROM之间的地址线或数据线按一定密钥规律进行交换,这样就把原程序页号打乱,起到加密作用。但这里探讨的是几种简单的硬件加密技术。

1.硬件加密设计步骤

1.1 根据具体项目和任务,设计目标程序并在未加密情况下调试成功。

1.2 设计硬件加密电路。

1.3 对调试好的软件按硬件电路进行加密翻译,不同的硬件加密电路翻译出来的软件不同。

1.4 将加密翻译后的软件写进EPROM。

这样,剽窃者将得到的EPROM里的程序进行反汇编后,不在是原来的程序,甚至是逻辑关系混乱毫无价值的代码。从而保护了原设计者的利益。

2. 硬件加密电路的设计

为方便说明硬件加密原理和软件加密翻译方法,先列举一例题,以下论述均以该例子为研究对象。

例1 比较两个无符号数的大小,设两个无符号数事先分别存在RAM里的30H和31H单元,若(30H)里的数大,则累加器的A.0~A.3为高电平;若(31H)里的数大,则累加器的A.4~A.7为高电平;若两数相等,则累加器的A.2~A.5为高电平。试设计汇编程序实现。

该例题所设计的原程序、机器代码和存储单元如下:

2.1 硬件加密方法一

将数据线中某几根线换位,如图1所示。将图中数据线D1、D2交叉,这样单片机系统执行的实际代码就与EPROM中存储的代码完全不同了。若将例1的程序存入EPROM ,那么存入的实际代码就要做相应的加密翻译,以使单片机从EPROM中所取的代码正确。

加密翻译后在EPROM中实际存的代码和反汇编的结果如下:

P2.0~P2.4P0.3~P0.7P0.2P0.1P0.0ALEPSENCPU8031

74LS373

A8~A12A3~A7A2A1A0 2764OE CED3~D7D2D1

2.2 硬件加密方法二:

将CPU和EPROM间的地址换位,如图2所示,将地址线A0、A1换位交叉,这样单片机系统程序存在EPROM中的代码不变,但存储顺序完全打乱。若将例1的程序存入EPROM时,为保证单片机的正常工作,要将存储代码的顺序按硬件电路要求做相应的改变,即进行加密翻译,加密翻译后EPROM中存储的实际代码和反汇编的结果如下:

从反汇编的结果看,既是剽窃者取出EPROM里的程序代码,反汇编后也得不到原来的程序了。

2.3 硬件加密方法三

将CPU和EPROM间的数据线某些位经过三态反相器求反。如图3所示,将数据线D0、D1分别求反后送CPU,这样存在EPROM里的程序和原来的程序就不同了。若将例1的程序按硬件加密电路进行软件加密翻译后,存在EPROM里的实际代码和反汇编后结果如下:

P2.0~P2.4P0.2~P0.7P0.1P0.0 ALEPSENCPU8031

74LS373

A8~A12A2~A7A1A0 2764OE CE D2~D7D1D0

可见经硬件加密后,存在EPROM里的代码与原来代码完全不同。

2.4 硬件加密方法四

将CPU和EPROM间的地址线的某些位求反。如图4所示,将地址线A0、A1求反,这样存在EPROM里的代码内容不变,但代码的存储顺序要按硬件电路相应改变。若仍以例1为例,将该程序代码加密后,存在EPROM里的代码和反汇编后的结果如下:

A8~A12A2~A7A1A0OE CE2764D2~D7D1D0

P2.0~P2.4P0.2~P0.7P0.1P0.0 ALEPSENCPU8031

74LS373

可见将EPROM里的代码反汇编后,仍得不到原程序。

总结

坚持不懈的尝试突破保护机制的破解团体和不断引入新的安全防范方案的制造商之间的斗争是没有尽头的。 “道高一尺,魔高一丈”,又或是“邪不压正”,将不停的在两派之间上演。其实软件加密原理很简单,就是利用单片机IC厂商,为每片出厂芯片的某一特殊全球唯一识别参数,即ID号做为密钥,对程序进行加密。如果以本ID号的程序烧到另一ID号的芯片中,程序中经软件加密过的部分的功能将完全失效。

要解密上述经软件加密过的程序,唯一的途径,就是反汇编程序,分析单片机反汇编后的汇编程序,将程序中软件加密相关的密钥去掉,然后编译得到新的程序。这项工作需要的不只是耐心,更多的是专业知识与经验。

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

    关注

    6034

    文章

    44541

    浏览量

    634104
  • 硬件加密
    +关注

    关注

    0

    文章

    5

    浏览量

    9120

原文标题:这4大硬件加密方法,在单片机中你会用了吗?

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

收藏 人收藏

    评论

    相关推荐

    如何优化单片机项目的功耗

    在现代电子设计中,功耗优化已成为一个不可忽视的重要议题。对于单片机(MCU)项目而言,功耗不仅关系到产品的能效比,还直接影响到电池寿命和热管理。 硬件层面的功耗优化 1. 选择合适的单片机 选择一个
    的头像 发表于 11-01 14:16 239次阅读

    单片机编程语言有哪些选择

    常用的单片机编程语言,以及它们的特点和应用场景: 1. C语言 特点 :C语言是一种通用的编程语言,以其高效性和灵活性而闻名。它提供了丰富的库函数和直接的硬件访问能力,非常适合用于单片机编程。 应用 :C语言是
    的头像 发表于 11-01 14:13 415次阅读

    单片机调试常见问题与解决方法

    烧录到单片机时,烧录软件显示无法与单片机通信。 解决方法: 检查单片机的电源是否正常,确保电源电压在规定的范围内。 检查烧录线的连接是否正确,包括数据线和地线。 确认烧录软件是否选择了
    的头像 发表于 11-01 14:11 524次阅读

    如何实现51单片机与PC的串行通信

    的详细步骤和方法硬件连接 首先,我们需要将51单片机与PC的串行接口连接起来。通常,我们使用RS-232接口进行连接。RS-232接口是一种常用的串行通信接口,它使用9个引脚进行
    的头像 发表于 10-21 11:35 594次阅读

    单片机怎么写入程序

    程序通常涉及以下几个步骤: 选择单片机和开发环境 : 确定项目需求,选择合适的单片机型号。 安装相应的开发环境,如Keil、IAR、MPLAB等。 硬件连接 : 将单片机连接到开发板或
    的头像 发表于 10-21 11:21 372次阅读

    单片机烧录程序的线比单片机上的少还能烧录吗

    的存储器通常分为两类:ROM(只读存储器)和RAM(随机存取存储器)。ROM用于存储程序代码,而RAM用于存储程序运行过程中的数据。烧录过程就是将程序代码写入ROM中。 单片机烧录方法 单片机烧录的
    的头像 发表于 09-02 09:54 457次阅读

    单片机烧录程序的基本步骤是什么

    单片机烧录程序是单片机开发过程中非常重要的一步,它涉及到将编写好的程序代码通过一定的方式传输到单片机内部的存储器中,使单片机能够按照预定的逻辑执行任务。 一、
    的头像 发表于 09-02 09:47 911次阅读

    单片机boot0和boot1怎么设置

    单片机的启动模式通常包括从内部ROM启动、从外部ROM启动、从外部Flash启动等。 不同的启动模式对应不同的Boot0和Boot1设置。 Boot0和Boot1的设置方法 Boot0和Boot1通常通过硬件
    的头像 发表于 08-22 09:50 2214次阅读

    如何系统、科学地自学单片机

    的自学单片机呢?自学单片机需要一定的计划和方法,以下是具体的步骤和建议。如何系统、科学地自学单片机?学习电子基础知识:理解电路原理、数字电子技术、模拟电子技术等基础
    的头像 发表于 03-28 08:03 1054次阅读
    如何系统、科学地自学<b class='flag-5'>单片机</b>?

    单片机如何通过代码控制硬件:一名工程师的分享

    今天跟大家聊聊单片机是怎样通过代码来操控硬件的。作为一名单片机工程师,我们平时的工作就像是给单片机编写“指令集”,让它按照我们的意图去驱动各种硬件
    的头像 发表于 03-06 14:46 1437次阅读
    <b class='flag-5'>单片机</b>如何通过代码控制<b class='flag-5'>硬件</b>:一名工程师的分享

    单片机最小系统的作用 单片机最小系统包含哪几部分

    单片机最小系统是指能够独立工作的最基本的硬件组成,也是单片机的必备基础。它的作用是为单片机提供工作所需的最基本的资源和功能,使单片机能够正常
    的头像 发表于 01-18 13:54 3968次阅读

    单片机通过USB升级固件的方法

    单片机升级固件的方法有很多中,比如:ISP(在系统编程)、ICP(在电路编程)、IAP(在应用编程)等。
    的头像 发表于 01-11 09:37 1887次阅读
    <b class='flag-5'>单片机</b>通过USB升级固件的<b class='flag-5'>方法</b>

    单片机程序读取需要什么工具

    单片机程序读取的工具可以分为硬件工具和软件工具两类。下面将详细介绍这些工具的种类、功能和使用方法。 一、硬件工具 单片机开发板:
    的头像 发表于 01-02 18:10 3750次阅读

    stc51单片机怎么烧录

    步骤 常见问题与解决方法 STC51单片机是一种常见的8位单片机,广泛应用于各种嵌入式系统。它具有高性能、低成本、易于学习和使用等优点。STC51单片机使用汇编语言或C语言进行编程,可
    的头像 发表于 01-02 17:41 3283次阅读

    单片机解析g代码的方法

    的运动。 解析G代码是将其转化为单片机能够理解和执行的指令集。单片机解析G代码的方法主要包括以下几个方面:G代码的格式
    的头像 发表于 12-22 14:15 1735次阅读