CN109446757B - 一种用于通用mcu程序保护的方法 - Google Patents
一种用于通用mcu程序保护的方法 Download PDFInfo
- Publication number
- CN109446757B CN109446757B CN201811252386.XA CN201811252386A CN109446757B CN 109446757 B CN109446757 B CN 109446757B CN 201811252386 A CN201811252386 A CN 201811252386A CN 109446757 B CN109446757 B CN 109446757B
- Authority
- CN
- China
- Prior art keywords
- general mcu
- program
- ram
- mcu
- general
- 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 67
- 230000008569 process Effects 0.000 claims abstract description 25
- 238000004891 communication Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 42
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000009191 jumping Effects 0.000 claims description 4
- 238000004519 manufacturing process Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000004377 microelectronic Methods 0.000 description 2
- 241000219482 Lithops Species 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012795 verification 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
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- 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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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
- G06F21/72—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 in cryptographic circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开一种用于通用MCU程序保护的方法,涉及通用MCU加密技术领域,该方法基于通用MCU和增设于通用MCU的加密芯片,所述通用MCU和所述加密芯片之间通信连接,该方法包括:对通用MCU进行编程,将多个不同段程序定位到RAM中执行;通用MCU程序编译完成后,对定位到RAM中执行的不同段程序分别进行加密;将定位到RAM中执行的不同段程序的解密密钥、认证密钥、会话秘钥及解密流程预置到加密芯片中;通用MCU执行程序,当通用MCU需要执行RAM中的某段程序时,首先将RAM中该段程序的加密数据发送至加密芯片进行解密,解密后的数据放置在RAM中,通用MCU方可继续执行RAM中的程序。本方法可以解决通用MCU程序容易被复制的问题。
Description
技术领域
本发明涉及通用MCU加密技术领域,具体的说是一种用于通用MCU程序保护的方法。
背景技术
目前,针对通用MCU的芯片解密、程序复制技术,已经没有门槛,在电子市场或者网络上,都可以找到很多做这方面生意的个人或者公司。很多电子设备的核心控制器都是基于通用MCU进行开发的,如果这里面的程序被复制,结合PCB抄板技术,整个电子设备就很容易被复制。因此,防止通用MCU程序被复制是很有必要的。一方面,为了防止知识产权被盗用,维护开发者的利益,另外一方面,可以有效的管理或者统计基于通用MCU设备的生产数量,或者有效的对生产者实施授权管控。
现有市场上,绝大部分基于通用MCU的设备都是没有程序防止复制的方案的。少量的已有保护方案大致分为两种,一种是在通用MCU外部放置一个通用存储器,存储器中存有认证信息;另外一种是在通用MCU外部放置一个认证芯片,用于完成通用MCU启动前的认证。
对于使用通用外部存储器(例如SPI flash等)的方式,通常在开机启动后,读取外部存储器指定地址,检查储器在此地址中是否存有设定的数据,如果有则校验通过,如果没有则校验失败,通用MCU在校验失败后会停止运行。此种方式存在的弊端是,通用外部存储器从市面上很容易买到,只要监控通用MCU和外部通用存储器间的数据,因为校验数据一般不会太长,故只要抓取到此数据,就可以复制外部通用存储器,同时,再复制通用MCU的程序,就可以完成整个主控制器的程序复制。
对于使用认证芯片的方式,一般情况下的做法是在通用MCU程序中预置一个密钥,在认证芯片中也预置一个同样的密钥。每次通用MCU开始执行程序后,会产生一个伪随机数,将这个随机数发送给认证芯片,认证芯片使用密钥对随机数加密后,将加密的结果返回给通用MCU,通用MCU使用密钥用同样的方法进行解密,解密的结果如果和发出去的伪随机数一致,则认证通过,否则通用MCU停止运行。此方法的弊端在于,如果通用MCU的程序已经被复制,那么在原数据和解密后的数据进行比较后,修改对结果的判断,就可以跳过比较,相当于没有对解密后的数据进行校验,从而完成通用MCU程序的复制。
发明内容
本发明针对目前技术发展的需求和不足之处,提供一种用于通用MCU程序保护的方法。
本发明的一种用于通用MCU程序保护的方法,解决上述技术问题采用的技术方案如下:
一种用于通用MCU程序保护的方法,该方法基于通用MCU和增设于通用MCU的加密芯片,所述通用MCU和所述加密芯片之间通信连接,该方法包括:
对通用MCU进行编程,将多个不同段程序定位到RAM中执行;
通用MCU程序编译完成后,对定位到RAM中执行的不同段程序分别进行加密;
将定位到RAM中执行的不同段程序的解密密钥、认证密钥、会话秘钥及解密流程预置到加密芯片中;
通用MCU执行程序,当通用MCU需要执行RAM中的某段程序时,首先将RAM中该段程序的加密数据发送至加密芯片进行解密,解密后的数据放置在RAM中,通用MCU方可继续执行RAM中的程序。
具体的,对通用MCU进行编程时,通过对应的通用MCU程序开发环境,将程序通过定位的方式划分为一个主流程程序段和多个具有设定功能的分支程序段,且将主流程程序段定位到flash中执行,将多个具有设定功能的分支程序段定位到RAM中执行。
进一步的,对定位到RAM中执行的不同段程序分别进行加密,并将加密后的代码段代替原来的代码段,生成用于生产的下载文件,在该下载文件中预置认证密钥和会话秘钥,然后再将该下载文件下载于通用MCU中。
更进一步的,程序段的加密方式包括:
A)按照原代码段的顺序进行加密;
B)按照原代码段的顺序进行加密,将加密后的数据进行大小端转换;
C)不进行任何操作;
A)、B)、C)三种加密方式可以排列组合成A)、B)、C)、A)B)、A)C)、B)C)、B)A)、C)A)、C)B)、A)B)C)、A)C)B)、B)A)C)、B)C)A)、C)A)B)、C)B)A)十五种加密结构,定位到RAM中执行的任一程序段均包括多段代码段,任一程序段的多段代码段可以选用上述十五种加密结构中的其中一种进行加密。也就是说,一个程序段的多段代码段可以采用A)、B)、C)任一种加密结构进行加密,一个程序段的多段代码段也可以分成前后两部分,然后采用A)B)、A)C)、B)C)、B)A)、C)A)、C)B)任一种组合式加密结构进行加密,当然,一个程序段的多段代码段还可以分成前、中、后三部分,然后采用A)B)C)、A)C)B)、B)A)C)、B)C)A)、C)A)B)、C)B)A)任一种组合式加密结构进行加密。
具体的,所涉及解密流程具体包括:
1)对通用MCU和安全芯片进行认证:通用MCU产生一组随机数,并将随机数发送给加密芯片,加密芯片接收到随机数后使用认证密钥对其进行加密,加密芯片将加密后的结果返回给通用MCU,通用MCU使用相同的认证密钥对安全芯片返回的数据进行解密,将解密的结果和产生的随机数进行对比,如果相同则执行代码段解密流程,如果不同则停止程序执行;
2)认证通过后,执行代码段解密流程:
通用MCU从flash中指定位置,读取用于在RAM中运行的加密程序段,将读取数据发送给加密芯片,加密芯片接收到数据后:
a)加密芯片使用内置的解密密钥对数据进行解密,解密完成后,在加密芯片内产生随机数,再使用会话秘钥对随机数和解密后的数据进行加密,加密的结果发送给通用MCU,通用MCU使用相同的会话秘钥进行解密,解密后去掉随机数,将解密数据放置到RAM对应的位置上;
b)加密芯片对接收到的数据进行大小端转换,之后使用内置的解密密钥对数据进行解密,解密完成后,在加密芯片内产生随机数,再使用会话密钥对随机数和解密后的数据进行加密,加密的结果发送给通用MCU,通用MCU使用相同的会话密钥进行解密,解密后去掉随机数,将解密数据放置到RAM对应的位置上;
c)在加密芯片内产生随机数,再使用会话密钥对随机数和通用MCU发送过来的数据进行加密,加密的结果发送给通用MCU,通用MCU将接收到的数据丢弃;
通用MCU从RAM中读取加密程序段后即可获取该程序段的加密结构,A)、B)、C)、A)B)、A)C)、B)C)、B)A)、C)A)、C)B)、A)B)C)、A)C)B)、B)A)C)、B)C)A)、C)A)B)、C)B)A)这十五种加密结构对应的解密方法依次为a)、b)、c)、a)b)、a)c)、b)c)、b)a)、c)a)、c)b)、a)b)c)、a)c)b)、b)a)c)、b)c)a)、c)a)b)、c)b)a),加密芯片根据接收的数据执行相应的解密方法。
具体的,通用MCU执行完RAM中放置的解密数据后,通用MCU将该解密数据清除。
优选,所涉及通用MCU和加密芯片之间通过I2C、SPI或UART通信接口通信连接。
具体的,所涉及加密芯片为具有安全存储功能和加密解密算法的安全芯片,比如说SmartMX2P60 ,石生花微电子的SSH3201。
具体的,该方法操作流程为:
I)通用MCU启动后,先执行flash中的主流程程序段;
II)执行主流程程序段的过程中,通用MCU将跳转至RAM中执行第X个具有设定功能的分支程序段,其中,X表示定位在RAM中执行的任一个程序段;
III)在跳转之前,通用MCU将第X个具有设定功能的分支程序段发送给加密芯片,加密芯片将解密后的第X个具有设定功能的分支程序段返回给通用MCU,通用MCU将解密后的第X个具有设定功能的分支程序段加载到RAM中,通用MCU开始执行RAM中第X个具有设定功能的分支程序段;
IV)通用MCU执行完第X个具有设定功能的分支程序段后,返回flash中,清除RAM中的程序,之后继续执行flash中的主流程程序段;
V)返回执行II)、III)、IV),直至主流程程序段和具有设定功能的分支程序段均执行完成。
本发明的一种用于通用MCU程序保护的方法,与现有技术相比具有的有益效果是:
1)本发明的方法基于在通用MCU中增设的加密芯片,通用MCU和加密芯片之间进行通信连接,为了避免通用MCU程序容易被复制的问题,对通用MCU中定位到RAM中执行的程序段进行加密,并将定位到RAM中执行的不同段程序的解密密钥、认证密钥、会话秘钥及解密流程预置到加密芯片中,通过通用MCU、加密芯片、RAM三者之间的数据变化实现通用MCU程序的保护;
2)本发明的方法执行过程中,使用的是解密流程,解密后的程序是需要执行的,并不是单纯的比对过程,所以即使复制了通用MCU的程序,并不能跳过此段程序的执行,如果解密不正确,程序的执行将会崩溃;
3)本发明的方法执行过程中,由于通用MCU程序是多个段间断性的加密的,所以解密也是间断性的,不好寻找规律;在对每个程序段进行解密之前,均需要对完全芯片进行认证,实时保证安全芯片的有效性;同时,通用MCU程序中加密的数据数量相对较多,且安全芯片在回传解密数据给通用MCU时,增加了随机数干扰和会话秘钥加密,更增加了解析数据的难度;另外,在RAM中执行完解密的程序后,会将程序清除,保证在RAM中没有残留的正确程序,进一步保护通用MCU程序;
4)本发明的方法所采用的加密芯片为安全芯片,没有办法将存储在其中的解密密钥读取出来,有效的保证了密钥的安全。
附图说明
附图1是本发明的解密流程中执行代码段解密流程a)b)c)的框图;
附图2是本发明的解密流程中对通用MCU和安全芯片进行认证的框图。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下获得的所有实施例,都在本发明的保护范围之内。
实施例一:
本实施例提出一种用于通用MCU程序保护的方法,该方法基于通用MCU和增设于通用MCU的加密芯片,加密芯片为具有安全存储功能和加密解密算法的安全芯片,通用MCU和安全芯片之间通过I2C、SPI或UART通信接口通信连接,该方法包括:
对通用MCU进行编程,将多个不同段程序定位到RAM中执行;
通用MCU程序编译完成后,对定位到RAM中执行的不同段程序分别进行加密;
将定位到RAM中执行的不同段程序的解密密钥、认证密钥、会话秘钥及解密流程预置到安全芯片中;
通用MCU执行程序,当通用MCU需要执行RAM中的某段程序时,首先将RAM中该段程序的加密数据发送至安全芯片进行解密,解密后的数据放置在RAM中,通用MCU方可继续执行RAM中的程序。
为了保护通用MCU程序,在对通用MCU进行编程时,通过对应的通用MCU程序开发环境,将程序通过定位的方式划分为一个主流程程序段和N个具有设定功能的分支程序段,且将主流程程序段定位到flash中执行,将N个具有设定功能的分支程序段定位到RAM中执行。
对定位到RAM中执行的N个程序段分别进行加密,并将加密后的代码段代替原来的代码段,生成用于生产的下载文件,在该下载文件中预置认证密钥和会话秘钥,然后再将该下载文件下载于通用MCU中。
程序段的加密方式包括:
A)按照原代码段的顺序进行加密;
B)按照原代码段的顺序进行加密,将加密后的数据进行大小端转换;
C)不进行任何操作;
A)、B)、C)三种加密方式可以排列组合成A)、B)、C)、A)B)、A)C)、B)C)、B)A)、C)A)、C)B)、A)B)C)、A)C)B)、B)A)C)、B)C)A)、C)A)B)、C)B)A)十五种加密结构,定位到RAM中执行的任一程序段均包括多段代码段,任一程序段的多段代码段可以选用上述十五种加密结构中的其中一种进行加密。也就是说,一个程序段的多段代码段可以采用A)、B)、C)任一种加密结构进行加密,一个程序段的多段代码段也可以分成前后两部分,然后采用A)B)、A)C)、B)C)、B)A)、C)A)、C)B)任一种组合式加密结构进行加密,当然,一个程序段的多段代码段还可以分成前、中、后三部分,然后采用A)B)C)、A)C)B)、B)A)C)、B)C)A)、C)A)B)、C)B)A)任一种组合式加密结构进行加密。
针对上述加密方式,解密流程具体包括:
1)对通用MCU和安全芯片进行认证:通用MCU产生一组随机数,并将随机数发送给安全芯片,安全芯片接收到随机数后使用认证密钥对其进行加密,安全芯片将加密后的结果返回给通用MCU,通用MCU使用相同的认证密钥对安全芯片返回的数据进行解密,将解密的结果和产生的随机数进行对比,如果相同则执行代码段解密流程,如果不同则停止程序执行;参考附图2;
2)认证通过后,执行代码段解密流程:
通用MCU从flash中指定位置,读取用于在RAM中运行的加密程序段,将读取数据发送给加密芯片,加密芯片接收到数据后:
a)加密芯片使用内置的解密密钥对数据进行解密,解密完成后,在加密芯片内产生随机数,再使用会话秘钥对随机数和解密后的数据进行加密,加密的结果发送给通用MCU,通用MCU使用相同的会话秘钥进行解密,解密后去掉随机数,将解密数据放置到RAM对应的位置上;
b)加密芯片对接收到的数据进行大小端转换,之后使用内置的解密密钥对数据进行解密,解密完成后,在加密芯片内产生随机数,再使用会话密钥对随机数和解密后的数据进行加密,加密的结果发送给通用MCU,通用MCU使用相同的会话密钥进行解密,解密后去掉随机数,将解密数据放置到RAM对应的位置上;
c)在加密芯片内产生随机数,再使用会话密钥对随机数和通用MCU发送过来的数据进行加密,加密的结果发送给通用MCU,通用MCU将接收到的数据丢弃;
通用MCU从RAM中读取加密程序段后即可获取该程序段的加密结构,A)、B)、C)、A)B)、A)C)、B)C)、B)A)、C)A)、C)B)、A)B)C)、A)C)B)、B)A)C)、B)C)A)、C)A)B)、C)B)A)这十五种加密结构对应的解密方法依次为a)、b)、c)、a)b)、a)c)、b)c)、b)a)、c)a)、c)b)、a)b)c)、a)c)b)、b)a)c)、b)c)a)、c)a)b)、c)b)a),加密芯片根据接收的数据执行相应的解密方法。参考附图1,其为按照a)b)c)顺序进行解密的流程框图。
为避免加密方法泄露,通用MCU执行完RAM中放置的解密数据后,通用MCU将该解密数据清除。
安全芯片可以采用SmartMX2P60,或者石生花微电子的SSH3201。
假定对第X个具有设定功能的分支程序段通过A)加密结构进行加密,那么,其中,X表示定位在RAM中执行的某个程序段,与之相对的,第X个具有设定功能的分支程序段的解密方法为a);假定将第X+1个具有设定功能的分支程序段包含的多段代码段划分成前、中、后三部分,第X+1个具有设定功能的分支程序段的三部分代码段相对采用A)B)C)顺序的加密结构进行加密,与之相对的,第X+1个具有设定功能的分支程序段的解密方法为a)b)c)。
本实施例所提供方法的操作流程如下:
I)通用MCU启动后,先执行flash中的主流程程序段,该主流程程序段包括多行程序;
II)当执行到主流程程序段的某行程序时,通用MCU将会跳转执行定位在RAM中的第X个具有设定功能的分支程序段;
III)在跳转之前,通用MCU将第X个具有设定功能的分支程序段发送给安全芯片,安全芯片将解密后的第X个具有设定功能的分支程序段返回给通用MCU,通用MCU将解密后的第X个具有设定功能的分支程序段加载到RAM中,通用MCU开始执行RAM中第X个具有设定功能的分支程序段;
IV)通用MCU执行完第X个具有设定功能的分支程序段后,返回flash中,清除RAM中的程序,之后继续执行flash中的主流程程序段;
V)继续执行主流程程序段,通用MCU还将跳转执行定位在RAM中的第X+1个具有设定功能的分支程序段;
VI)在跳转之前,通用MCU将第X+1个具有设定功能的分支程序段发送给安全芯片,安全芯片将解密后的第X+1个具有设定功能的分支程序段返回给通用MCU,通用MCU将解密后的第X+1个具有设定功能的分支程序段加载到RAM中,通用MCU开始执行RAM中第X+1个具有设定功能的分支程序段;
VII)通用MCU执行完第X+1个具有设定功能的分支程序段后,返回flash中,清除RAM中的程序,之后继续执行flash中的主流程程序段;
VIII)通用MCU继续执行flash中的主流程程序段,并根据主流程程序段跳转至RAM中执行相应的具有设定功能的分支程序段,直至主流程程序段和具有设定功能的分支程序段均执行完成。
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容,并不用于限制本发明的保护范围,本发明的技术方案不限制于上述具体实施方式内。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。
Claims (6)
1.一种用于通用MCU程序保护的方法,其特征在于,该方法基于通用MCU和增设于通用MCU的加密芯片,所述通用MCU和所述加密芯片之间通信连接,该方法包括:
对通用MCU进行编程,将多个不同段程序定位到RAM中执行;
通用MCU程序编译完成后,对定位到RAM中执行的不同段程序分别进行加密,并将加密后的代码段代替原来的代码段,生成用于生产的下载文件,在该下载文件中预置认证密钥和会话秘钥,然后再将该下载文件下载于通用MCU中,这一过程中,程序段的加密方式包括:A)按照原代码段的顺序进行加密,B)按照原代码段的顺序进行加密,将加密后的数据进行大小端转换,C)不进行任何操作,A)、B)、C)三种加密方式可以排列组合成A)、B)、C)、A)B)、A)C)、B)C)、B)A)、C)A)、C)B)、A)B)C)、A)C)B)、B)A)C)、B)C)A)、C)A)B)、C)B)A)十五种加密结构,定位到RAM中执行的任一程序段均包括多段代码段;
将定位到RAM中执行的不同段程序的解密密钥、认证密钥、会话秘钥及解密流程预置到加密芯片中;
通用MCU执行程序,当通用MCU需要执行RAM中的某段程序时,首先将RAM中该段程序的加密数据发送至加密芯片进行解密,解密流程具体包括:
1)对通用MCU和安全芯片进行认证:通用MCU产生一组随机数,并将随机数发送给加密芯片,加密芯片接收到随机数后使用认证密钥对其进行加密,加密芯片将加密后的结果返回给通用MCU,通用MCU使用相同的认证密钥对安全芯片返回的数据进行解密,将解密的结果和产生的随机数进行对比,如果相同则执行代码段解密流程,如果不同则停止程序执行,
2)认证通过后,执行代码段解密流程:
通用MCU从flash中指定位置,读取用于在RAM中运行的加密程序段,将读取数据发送给加密芯片,加密芯片接收到数据后, A)、B)、C)、A)B)、A)C)、B)C)、B)A)、C)A)、C)B)、A)B)C)、A)C)B)、B)A)C)、B)C)A)、C)A)B)、C)B)A)这十五种加密结构对应的解密方法依次为a)、b)、c)、a)b)、a)c)、b)c)、b)a)、c)a)、c)b)、a)b)c)、a)c)b)、b)a)c)、b)c)a)、c)a)b)、c)b)a),加密芯片根据接收的数据执行相应的解密方法,其中:
a)加密芯片使用内置的解密密钥对数据进行解密,解密完成后,在加密芯片内产生随机数,再使用会话秘钥对随机数和解密后的数据进行加密,加密的结果发送给通用MCU,通用MCU使用相同的会话秘钥进行解密,解密后去掉随机数,将解密数据放置到RAM对应的位置上,
b)加密芯片对接收到的数据进行大小端转换,之后使用内置的解密密钥对数据进行解密,解密完成后,在加密芯片内产生随机数,再使用会话密钥对随机数和解密后的数据进行加密,加密的结果发送给通用MCU,通用MCU使用相同的会话密钥进行解密,解密后去掉随机数,将解密数据放置到RAM对应的位置上,
c)在加密芯片内产生随机数,再使用会话密钥对随机数和通用MCU发送过来的数据进行加密,加密的结果发送给通用MCU,通用MCU将接收到的数据丢弃。
2.根据权利要求1所述的一种用于通用MCU程序保护的方法,其特征在于,对通用MCU进行编程时,通过对应的通用MCU程序开发环境,将程序通过定位的方式划分为一个主流程程序段和多个具有设定功能的分支程序段,且将主流程程序段定位到flash中执行,将多个具有设定功能的分支程序段定位到RAM中执行。
3.根据权利要求1或2所述的一种用于通用MCU程序保护的方法,其特征在于,通用MCU执行完RAM中放置的解密数据后,通用MCU将该解密数据清除。
4.根据权利要求1所述的一种用于通用MCU程序保护的方法,其特征在于,所述通用MCU和所述加密芯片之间通过I2C、SPI或UART通信接口通信连接。
5.根据权利要求1所述的一种用于通用MCU程序保护的方法,其特征在于,所述加密芯片为具有安全存储功能和加密解密算法的安全芯片。
6.根据权利要求1或2所述的一种用于通用MCU程序保护的方法,其特征在于,该方法操作流程为:
I)通用MCU启动后,先执行flash中的主流程程序段;
II)执行主流程程序段的过程中,通用MCU将跳转至RAM中执行第X个具有设定功能的分支程序段,其中,X表示定位在RAM中执行的任一个程序段;
III)在跳转之前,通用MCU将第X个具有设定功能的分支程序段发送给加密芯片,加密芯片将解密后的第X个具有设定功能的分支程序段返回给通用MCU,通用MCU将解密后的第X个具有设定功能的分支程序段加载到RAM中,通用MCU开始执行RAM中第X个具有设定功能的分支程序段;
IV)通用MCU执行完第X个具有设定功能的分支程序段后,返回flash中,清除RAM中的程序,之后继续执行flash中的主流程程序段;
V)返回执行II)、III)、IV),直至主流程程序段和具有设定功能的分支程序段均执行完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811252386.XA CN109446757B (zh) | 2018-10-25 | 2018-10-25 | 一种用于通用mcu程序保护的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811252386.XA CN109446757B (zh) | 2018-10-25 | 2018-10-25 | 一种用于通用mcu程序保护的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109446757A CN109446757A (zh) | 2019-03-08 |
CN109446757B true CN109446757B (zh) | 2022-03-15 |
Family
ID=65548280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811252386.XA Active CN109446757B (zh) | 2018-10-25 | 2018-10-25 | 一种用于通用mcu程序保护的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109446757B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110533423A (zh) * | 2019-08-30 | 2019-12-03 | 捷德(中国)信息科技有限公司 | 支付装置、支付方法和支付卡 |
CN113194067B (zh) * | 2021-03-29 | 2023-01-06 | 无锡九科芯微电子有限公司 | 一种mcu通讯系统及方法 |
CN113268717A (zh) * | 2021-04-08 | 2021-08-17 | 东信和平科技股份有限公司 | 基于se的代码程序保护方法、装置及存储介质 |
CN114040229B (zh) * | 2021-11-29 | 2024-02-06 | 北京无忧创想信息技术有限公司 | 一种视频加解密方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261666B (zh) * | 2008-04-10 | 2010-07-21 | 北京深思洛克软件技术股份有限公司 | 一种通过加密可执行程序文件实现软件版权保护的方法 |
CN103020495B (zh) * | 2012-12-17 | 2015-06-10 | 马驹 | 一种嵌入式软件防盗版加密方法 |
CN103761456B (zh) * | 2013-10-12 | 2016-05-11 | 利尔达科技集团股份有限公司 | 一种单片机核心代码防破解的方法 |
CN108234132B (zh) * | 2017-12-07 | 2021-11-26 | 深圳市中易通安全芯科技有限公司 | 一种主控芯片与加密芯片的安全通信系统及方法 |
-
2018
- 2018-10-25 CN CN201811252386.XA patent/CN109446757B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109446757A (zh) | 2019-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109446757B (zh) | 一种用于通用mcu程序保护的方法 | |
US10395012B2 (en) | Media client device authentication using hardware root of trust | |
US8171306B2 (en) | Universal secure token for obfuscation and tamper resistance | |
US20160203087A1 (en) | Method for providing security for common intermediate language-based program | |
US20130298255A1 (en) | System and method for defining programmable processing steps applied when protecting the data | |
CN102118512A (zh) | 一种手机应用程序防破解方法及系统 | |
CN109284585B (zh) | 一种脚本加密方法、脚本解密运行方法和相关装置 | |
CN105450620A (zh) | 一种信息处理方法及装置 | |
US20080025503A1 (en) | Security method using self-generated encryption key, and security apparatus using the same | |
DE102006046456A1 (de) | Schaltkreis-Anordnung, Verfahren zum Hochfahren einer Schaltkreis-Anordnung, Verfahren zum Betreiben einer Schaltkreis-Anordnung und Computerprogrammprodukte | |
JP2008210225A (ja) | セキュアプロセッサシステム、セキュアプロセッサ及びセキュアプロセッサシステムの制御方法 | |
CN101103584A (zh) | 安全及后向兼容处理器以及在其上的安全软件的执行 | |
CN106503494A (zh) | 一种带有片上闪存微控制器的固件保护单元及保护方法 | |
CN104217175A (zh) | 一种数据读写方法和装置 | |
CN111859415A (zh) | 神经网络模型加密系统和方法 | |
CN105468940A (zh) | 软件保护方法及装置 | |
CN105279441A (zh) | 用于对数据进行加密和解密的方法和架构 | |
CN104506504A (zh) | 一种无卡终端涉密信息的安全机制及安全装置 | |
CN102289632A (zh) | 一种在软件源代码未知情况下对可执行文件进行加密方法 | |
JP2009253783A (ja) | 携帯端末、データ保護方法およびデータ保護用プログラム | |
US10862682B2 (en) | Nonce generation for encryption and decryption | |
CN100367144C (zh) | 用于加密的应用程序安装的结构 | |
CN102831357B (zh) | 二次开发嵌入式应用程序的加密和认证保护的方法及系统 | |
CN104281415A (zh) | 用于空调的数据处理方法和装置 | |
CN105022651B (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230222 Address after: 100085 303, Block B, Jinyu International Center, Longyu East 1st Road, Changping District, Beijing Patentee after: Beijing Folding Future Technology Co.,Ltd. Address before: Room 307, floor 3, block B, No. 9 Xinghuo Road, Jiangbei new area, Nanjing, Jiangsu 211800 Patentee before: SHISHENGHUA MICROELECTRONICS (NANJING) Co.,Ltd. |