CN111079098B - 一种mcu程序加密解密方法 - Google Patents

一种mcu程序加密解密方法 Download PDF

Info

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
Application number
CN201911325274.7A
Other languages
English (en)
Other versions
CN111079098A (zh
Inventor
方马龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi Xijie Microelectronics Co ltd
Original Assignee
Wuxi Xijie Microelectronics Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuxi Xijie Microelectronics Co ltd filed Critical Wuxi Xijie Microelectronics Co ltd
Priority to CN201911325274.7A priority Critical patent/CN111079098B/zh
Priority to CN202310519749.6A priority patent/CN116561715A/zh
Publication of CN111079098A publication Critical patent/CN111079098A/zh
Application granted granted Critical
Publication of CN111079098B publication Critical patent/CN111079098B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明涉及MCU程序加密技术领域,尤其涉及一种MCU程序加密解密方法,具体为:利用软件编写MCU程序时,在编译器端对程序指令进行加密,通过将程序指令与程序指令相对应的指令地址进行逻辑运算后生成加密的程序指令,加密的程序指令在芯片中通过内置的相应解密逻辑电路进行硬件解密;本发明基于程序地址和程序指令的唯一相关性,通过软件加密硬件解密的方式,实现对MCU程序的加密解密,加密后的程序指令无规律可循,在芯片烧录、使用过程中读出的指令无法被反编译或破解移植,由于MCU程序在ROM中是加密过的二进制机器码,直接扎针读芯片ROM模块也同样无法破译,采用本发明所述的加密解密方法,成本低,加密效果好,破译难度大。

Description

一种MCU程序加密解密方法
技术领域
本发明涉及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
Figure BDA0002328232570000041
根据上述运算方法,在不同地址的相同程序指令MOV A,@0X00的运算结果如表3所示:
表3
Figure BDA0002328232570000042
Figure BDA0002328232570000051
从上表可以看出,运算结果无规律可循,并且比实施例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’为不同的值。
CN201911325274.7A 2019-12-20 2019-12-20 一种mcu程序加密解密方法 Active CN111079098B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 深圳市航顺芯片技术研发有限公司 微控制芯片指令加密方法、解密方法及加/解密系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
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