CN111079098B - 一种mcu程序加密解密方法 - Google Patents
一种mcu程序加密解密方法 Download PDFInfo
- Publication number
- CN111079098B CN111079098B CN201911325274.7A CN201911325274A CN111079098B CN 111079098 B CN111079098 B CN 111079098B CN 201911325274 A CN201911325274 A CN 201911325274A CN 111079098 B CN111079098 B CN 111079098B
- Authority
- CN
- China
- Prior art keywords
- operand
- program
- instruction
- program instruction
- mcu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 22
- 230000001788 irregular Effects 0.000 abstract description 3
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000005336 cracking Methods 0.000 description 2
- 238000012300 Sequence Analysis Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明涉及MCU程序加密技术领域,尤其涉及一种MCU程序加密解密方法,具体为:利用软件编写MCU程序时,在编译器端对程序指令进行加密,通过将程序指令与程序指令相对应的指令地址进行逻辑运算后生成加密的程序指令,加密的程序指令在芯片中通过内置的相应解密逻辑电路进行硬件解密;本发明基于程序地址和程序指令的唯一相关性,通过软件加密硬件解密的方式,实现对MCU程序的加密解密,加密后的程序指令无规律可循,在芯片烧录、使用过程中读出的指令无法被反编译或破解移植,由于MCU程序在ROM中是加密过的二进制机器码,直接扎针读芯片ROM模块也同样无法破译,采用本发明所述的加密解密方法,成本低,加密效果好,破译难度大。
Description
技术领域
本发明涉及MCU程序加密技术领域,尤其涉及一种MCU程序加密解密方法。
背景技术
常规的RISC精简指令集简单易用,编译出的二进制机器码也相对易懂,随之带来的问题就是易被反编译成汇编指令,继而被破解程序甚至程序被移植到同类替代芯片。对于MCU方案设计商来说,开发的MCU程序即知识产权,需要得到保护,现有的MCU开发、加密、烧录、解密流程如图1所示,从图1中可以看出,虽然设计者在芯片端都会做加密保护,一般情况下无法读出程序,但如果有烧录文档配合烧录器,通过烧录时抓取烧录时序分析仍然能够破译出源程序,开发的程序并不能得到最大程度的保护,对于MCU方案设计商来说仍然存在知识产权泄露风险。因此,亟需一种简单有效的加密方法来解决MCU程序易被破解的问题。
发明内容
针对现有技术中的问题,本发明提供一种MCU程序加密解密方法。
为实现以上技术目的,本发明的技术方案是:
一种MCU程序加密解密方法,利用软件编写MCU程序时,在编译器端对程序指令进行加密,通过将程序指令与程序指令相对应的指令地址进行逻辑运算后生成加密的程序指令,加密的程序指令在MCU芯片中通过内置的相应解密组合逻辑电路进行硬件解密。
作为优选,所述程序指令与程序指令相对应的地址进行逻辑运算的方法是:偶数地址的程序指令记为运算数A,运算数A高低字节交换后获得运算数B,程序指令相对应的指令地址为运算数C,运算数D为一常数,运算数B和运算数C进行异或运算后再与运算数D进行异或运算,生成加密的程序指令;奇数地址的程序指令记为运算数A’,程序指令相对应的指令地址为运算指令C’,运算数D’为一常数,运算数A’和运算数C’进行异或运算后再与运算数D’进行异或运算,生成加密的程序指令。
作为改进,运算数D和运算数D’为相同的值。
作为改进,运算数D和运算数D’为不同的值。
作为优选,所述程序指令与原始程序指令相对应的地址进行逻辑运算的方法是:将程序指令按照指令地址线每4个分为一组;每组中偶数地址的程序指令记为运算数A,程序指令相对应的指令地址为运算数C,运算数D为一常数,运算数A、运算数C、运算数D进行A+A-C-D运算后获得运算结果E;每组中奇数地址的程序指令记为运算数A’,运算数A’高低字节交换后获得运算数B’,程序指令相对应的指令地址为运算数C’,运算数D’为一常数,运算数A’、运算数B’、运算数C’、运算数D’进行A’+B’-C’-D’运算后获得运算结果E’;每组中位于前两个地址位的运算结果E或者运算结果E’右移一位后生成加密的程序指令,位于后两个地址位的运算结果E或者运算结果E’左移一位后生成加密的程序指令。
作为改进,运算数D和运算数D’为相同的值。
作为改进,运算数D和运算数D’为不同的值。
从以上描述可以看出,本发明具备以下优点:
本发明基于程序地址和程序指令的唯一相关性,通过软件加密硬件解密的方式,实现了对MCU程序的加密解密,加密后的程序指令无规律可循,在MCU芯片烧录、使用过程中读出的指令无法被反编译或破解移植,由于MCU程序在ROM中也是加密过的二进制机器码,直接扎针读MCU芯片的ROM模块也同样无法破译,而采用本发明所述的加密解密方法,只要在MCU芯片内部增加少量的硬件数字逻辑即可实现,不仅加密解密成本低,而且加密效果好,破译难度大。
附图说明
图1是现有的MCU程序开发、加密、烧录、解密流程;
图2是本发明实施例1的MCU程序开发、加密、烧录、解密流程。
具体实施方式
结合图2,详细说明本发明的具体实施例,但不对本发明的权利要求做任何限定。
一种MCU程序硬件加密解密方法,利用软件编写MCU程序时,在编译器端对程序指令进行加密,通过将程序指令与程序指令相对应的指令地址进行逻辑运算后生成加密的程序指令,加密的程序指令在MCU芯片中通过内置的相应解密组合逻辑电路进行硬件解密。
根据上述加密解密方法,对一段指令进行加密解密设计,设计两个实施例。
实施例1:
取简单的一条指令MOV A,@0X00,将立即数0x00赋值于累加器ACC;
编译后的二进制码为0x0800;
再将0x0800根据指令地址做简单的运算,运算规则是:偶数地址的程序指令高低字节交换后与程序指令相对应的指令地址异或,然后再与常数0xABCD进行异或运算,奇数地址的程序指令直接与程序指令相对应的指令地址异或后再与常数0xABCD进行异或运算。
在不同地址的相同程序指令MOV A,@0X00的运算结果如表1所示:
表1
指令 | 地址 | 运算结果 |
MOV A,@0X00 | 0x0000 | 0xABC5 |
MOV A,@0X00 | 0x0001 | 0xA3CC |
MOV A,@0X00 | 0x0002 | 0xABC7 |
MOV A,@0X00 | 0x03FE | 0xA83B |
MOV A,@0X00 | 0x03FF | 0xA032 |
从上表可以看出,运算结果无规律可循,在上述运算规则基础上,如果将奇数地址参与异或运算的常数修改为0xDCBA,或者再增加一次加运算,运算过程将更为复杂,破解难度将大大增加,而解密时,则在MCU内部做一部分简单的组合逻辑电路就可以将数值反编译回原来的指令0x0800。
需要说明的是,MCU程序在开发时,使用的汇编指令,编译出的机器码采用的是十六进制,烧录器将程序烧到芯片时则转换成二进制机器码,因此加密的程序指令以二进制机器码存于ROM中,解密时,只要在MCU内部根据加密规则做相应的组合逻辑电路就可以将数值反编译回原来的指令。
如图1所示,为本实施例所述示例的MCU程序开发、加密、烧录、解密流程。
实施例2:
取简单的一条指令MOV A,@0X00,将立即数0x00赋值于累加器ACC;
编译后的二进制码为0x0800;
再将0x0800根据指令地址做简单的运算,运算规则如表2所示:(1)将程序指令按照指令地址线每4个分为一组;(2)每组中偶数地址的程序指令(运算数A)与其本身进行加运算,再减去程序指令相对应的指令地址(运算数C),接着减去常数1(运算数D),获得运算结果;(3)每组中奇数地址的程序指令(运算数A’)高低字节交换后(运算数B’)与其本身进行加运算,再减去程序指令相对应的指令地址(运算数C’),接着减去常数0001(运算数D’),获得运算结果(4)每组中位于前两个地址位的运算结果右移一位后生成加密的程序指令,位于后两个地址位的运算结果左移一位后生成加密的程序指令。
表2
根据上述运算方法,在不同地址的相同程序指令MOV A,@0X00的运算结果如表3所示:
表3
从上表可以看出,运算结果无规律可循,并且比实施例1的结果更为复杂,破译难度更大,本实施例中运算数D和运算数D’可以采用相同的常数,也可以采用不同的常数。同理,在解密时,则在MCU内部做一部分简单的组合逻辑电路就可以将数值反编译回原来的指令0x0800。
需要说明的是,MCU程序在开发时,使用的汇编指令,编译出的机器码采用的是十六进制,烧录器将程序烧到芯片时则转换成二进制机器码,因此加密的程序指令以二进制机器码存于ROM中,解密时,只要在MCU内部根据加密规则做相应的组合逻辑电路就可以将数值反编译回原来的指令。
通常情况下,完整的MCU程序由各种不同指令组成,在利用上述方法经过简单算法加密后,编译出的指令将会非常复杂多变,破解难度也会大大增加,不仅在MCU芯片烧录、使用过程中读出的指令无法被反编译或破解移植,由于MCU程序在ROM中也是加密过的二进制机器码,直接扎针读MCU芯片的ROM模块也同样无法破译,而采用本发明所述的加密解密方法,只要在MCU芯片内部增加少量的硬件数字逻辑即可实现,不仅加密解密成本低,而且加密效果好,破译难度大,从而能够实现对MCU程序的最大程度加密保护。
本发明所述方法具体实施时并不限于实施例1和实施例2所描述的运算规则,使用者可以根据加密复杂度需求,再结合硬件解密的电路设计难度和成本,在程序设计时在编译器端做相应的算法设计,只要能够达到所需的加密保护程度即可。
综上所述,本发明具有以下优点:
本发明基于程序地址和程序指令的唯一相关性,通过软件加密硬件解密的方式,实现了对MCU程序的加密解密,加密后的程序指令无规律可循,在MCU芯片烧录、使用过程中读出的指令无法被反编译或破解移植,由于MCU程序在ROM中也是加密过的二进制机器码,直接扎针读MCU芯片的ROM模块也同样无法破译,而采用本发明所述的加密解密方法,只要在MCU芯片内部增加少量的硬件数字逻辑即可实现,不仅加密解密成本低,而且加密效果好,破译难度大。
可以理解的是,以上关于本发明的具体描述,仅用于说明本发明而并非受限于本发明实施例所描述的技术方案。本领域的普通技术人员应当理解,仍然可以对本发明进行修改或等同替换,以达到相同的技术效果;只要满足使用需要,都在本发明的保护范围之内。
Claims (3)
1.一种MCU程序加密解密方法,其特征在于:利用软件编写MCU程序时,在编译器端对程序指令进行加密,通过将程序指令与程序指令相对应的指令地址进行逻辑运算后生成加密的程序指令,加密的程序指令在MCU芯片中通过内置的相应解密组合逻辑电路进行硬件解密;
所述程序指令与程序指令相对应的地址进行逻辑运算的方法是:
偶数地址的程序指令记为运算数A,运算数A高低字节交换后获得运算数B,程序指令相对应的指令地址为运算数C,运算数D为一常数,运算数B和运算数C进行异或运算后再与运算数D进行异或运算,生成加密的程序指令;
奇数地址的程序指令记为运算数A’,程序指令相对应的指令地址为运算指令C’,运算数D’为一常数,运算数A’和运算数C’进行异或运算后再与运算数D’进行异或运算,生成加密的程序指令。
2.根据权利要求1所述的一种MCU程序加密解密方法,其特征在于:运算数D和运算数D’为相同的值。
3.根据权利要求1所述的一种MCU程序加密解密方法,其特征在于:运算数D和运算数D’为不同的值。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911325274.7A CN111079098B (zh) | 2019-12-20 | 2019-12-20 | 一种mcu程序加密解密方法 |
CN202310519749.6A CN116561715A (zh) | 2019-12-20 | 2019-12-20 | 一种mcu程序加密解密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911325274.7A CN111079098B (zh) | 2019-12-20 | 2019-12-20 | 一种mcu程序加密解密方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310519749.6A Division CN116561715A (zh) | 2019-12-20 | 2019-12-20 | 一种mcu程序加密解密方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111079098A CN111079098A (zh) | 2020-04-28 |
CN111079098B true CN111079098B (zh) | 2023-07-14 |
Family
ID=70316244
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310519749.6A Pending CN116561715A (zh) | 2019-12-20 | 2019-12-20 | 一种mcu程序加密解密方法 |
CN201911325274.7A Active CN111079098B (zh) | 2019-12-20 | 2019-12-20 | 一种mcu程序加密解密方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310519749.6A Pending CN116561715A (zh) | 2019-12-20 | 2019-12-20 | 一种mcu程序加密解密方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN116561715A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975753A (zh) * | 2006-04-26 | 2007-06-06 | 何波 | 一种对程序执行器的程序信息的保护方法 |
CN105446791A (zh) * | 2014-08-26 | 2016-03-30 | 龙芯中科技术有限公司 | 标志位模拟方法、装置和处理器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100837270B1 (ko) * | 2006-06-07 | 2008-06-11 | 삼성전자주식회사 | 스마트 카드 및 그것의 데이터 보안 방법 |
US8402448B2 (en) * | 2008-09-18 | 2013-03-19 | Infineon Technologies Ag | Compiler system and a method of compiling a source code into an encrypted machine language code |
CN106789006A (zh) * | 2016-11-28 | 2017-05-31 | 范睿心 | 一种解密方法及系统 |
CN107967414B (zh) * | 2017-11-03 | 2023-07-28 | 深圳市航顺芯片技术研发有限公司 | 微控制芯片指令加密方法、解密方法及加/解密系统 |
-
2019
- 2019-12-20 CN CN202310519749.6A patent/CN116561715A/zh active Pending
- 2019-12-20 CN CN201911325274.7A patent/CN111079098B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1975753A (zh) * | 2006-04-26 | 2007-06-06 | 何波 | 一种对程序执行器的程序信息的保护方法 |
CN105446791A (zh) * | 2014-08-26 | 2016-03-30 | 龙芯中科技术有限公司 | 标志位模拟方法、装置和处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN111079098A (zh) | 2020-04-28 |
CN116561715A (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10180824B2 (en) | Computing device comprising a table network | |
Chen et al. | A modified chaos-based joint compression and encryption scheme | |
CN101682506B (zh) | 用于确定在保护数据时应用的可编程处理步骤的系统和方法 | |
CN1290007C (zh) | 实现可移植内容保护以保护机密安全 | |
US20160012212A1 (en) | Securing microprocessors against information leakage and physical tampering | |
Wang et al. | Mitigating power side channels during compilation | |
US20070214370A1 (en) | Portable terminal | |
JP4840782B2 (ja) | プログラム変換装置、セキュア処理装置、コンピュータプログラム及び記録媒体 | |
EP3759590B1 (en) | Compiling device and method | |
JP2013029835A (ja) | サイドチャネル攻撃に対抗する方法 | |
US8619985B2 (en) | Table splitting for cryptographic processes | |
JP2016507940A (ja) | テーブルネットワークによって構成されたコンピューティングデバイス | |
CN104462990A (zh) | 字符串加解密方法和装置 | |
CN107967414B (zh) | 微控制芯片指令加密方法、解密方法及加/解密系统 | |
Seo et al. | Compact implementations of ARX-based block ciphers on IoT processors | |
CN110704854A (zh) | 针对文本数据保留格式的流式加密方法 | |
CN111079098B (zh) | 一种mcu程序加密解密方法 | |
JP2007328789A (ja) | 入力データに関するアドレスを使用して入力データを符号化するための暗号システム、エラー検出回路、及びそれの動作方法 | |
CN108959129B (zh) | 一种基于硬件的嵌入式系统机密性保护方法 | |
KR20080046515A (ko) | 콘텐츠 파일의 암호화 및 복호화 방법 | |
JP7079711B2 (ja) | 変換装置、変換方法、変換プログラム及び難読プログラム | |
CN112231739A (zh) | 一种基于地址重映射的烧录文件加解密方法及其系统 | |
CN109951275B (zh) | 密钥生成方法、装置、计算机设备及存储介质 | |
CN107958141A (zh) | 一种基于芯片id号的软件保护方法 | |
CN1133297C (zh) | 一种文件加密处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |