CN107784203A - 利用代码自判断芯片加密信息防止在线调试的方法及系统 - Google Patents
利用代码自判断芯片加密信息防止在线调试的方法及系统 Download PDFInfo
- Publication number
- CN107784203A CN107784203A CN201610726206.1A CN201610726206A CN107784203A CN 107784203 A CN107784203 A CN 107784203A CN 201610726206 A CN201610726206 A CN 201610726206A CN 107784203 A CN107784203 A CN 107784203A
- Authority
- CN
- China
- Prior art keywords
- code
- chip
- encryption information
- certainly
- line debugging
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000001514 detection method Methods 0.000 claims abstract description 7
- 230000009286 beneficial effect Effects 0.000 abstract 1
- 230000006870 function Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000035800 maturation Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000033772 system development Effects 0.000 description 1
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/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- 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/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及利用代码自判断芯片加密信息防止在线调试的方法及系统,属于保密技术领域。本发明包含如下步骤:S1将原始代码中的子函数按照重要级别分为普通代码和关键代码;S2由所述代码去判断芯片是否处于加密状态;S3在系统中加入干扰信息;S4检测芯片状态,如检测到芯片处于解密状态,就执行干扰代码;如检测到芯片处于加密状态,就执行正确代码。本发明的有益效果为:通过在代码中加入对芯片加密信息的判断,可以有效防止有人恶意在线调试自己的系统。
Description
技术领域
本发明涉及保护保密技术领域,特别是利用代码自判断芯片加密信息防止在线调试的方法及系统。
背景技术
很多嵌入式系统开发投入商用后都会采取一定的措施保护自己的软件,从而实现开发的嵌入式系统中的思路及方法不被获取,目前个嵌入式系统的保护机制各不相同,强度也各有差别,如何保证自己的方法不被获取是一个广泛存在的问题。
目前的系统中对系统的防护主要集中在芯片自带的一个读写禁止的功能,这样可以防止系统的代码被人恶意获取。而基于单片机的可以在线调试的特性,如果有人突破这道防护之后,就可以采取静态分析辅助动态调试的方法分析此嵌入式系统。在整个分析中,由于动态调试过程可以直接的看到单片机各个寄存器及内存中的数值,所以动态调试显得尤为重要。如何防止自己的系统被动态调试在目前的系统中还没有成熟的方案。
如,一个嵌入式系统采用stm32系列芯片,在将代码烧写入芯片后,可以将stm32芯片加密,加密后的stm32芯片可以直接擦除flash内容,不能读出flash内容,这样可以在一定程度上保护自己的代码。但是对代码的保护完全依靠stm32芯片本身,则显得保护力度不足。
发明内容
本发明的目的在于克服现有技术的不足,本发明解决其技术问题是采取以下技术方案实现的:利用代码自判断芯片加密信息防止在线调试的方法,包含如下步骤:S1将原始代码中的子函数按照重要级别分为普通代码和关键代码;S2由所述代码去判断芯片是否处于加密状态;S3在系统中加入干扰信息;S4检测芯片状态,如检测到芯片处于解密状态,就执行干扰代码;如检测到芯片处于加密状态,就执行正确代码。
优选地,所述步骤S2包含:S2.1执行代码;S2.2执行到所述关键代码时,对芯片加密信息进行判断;所述判断的方法为读取芯片中存储加密信息的地址。
优选地,所述步骤S3的所述干扰信息为可正常执行的代码。
优选地,所述步骤S3的所述干扰信息与所述正确代码相似度为90%或以上。
本发明还保护利用代码自判断芯片加密信息防止在线调试的系统,包括:关键代码单元,用于被进行加密保护;干扰代码单元,用于干扰正确代码的读取;检测单元,用于由代码自身去判断芯片是否处于加密状态;分支单元,用于根据检测单元检测的加密状态进入执行干扰代码或正确代码。
优选地,所述干扰代码单元包含可正常执行的代码。
优选地,所述干扰代码单元包含干扰代码,所述干扰代码与所述正确代码相似度为90%或以上。
本发明的优点和积极效果是:在代码中加入自身判断芯片加密状态的内容,让代码自己去判断此时芯片是否是加密状态,如果不是加密状态的话就跳转到一个错误分支去执行。由于在线调试必须在芯片解密状态下进行,这种做法可以从根本上避免在线调试。
附图说明
图1为示例系统模块及分类;
图2为本发明防止调试方法实现的流程图;
图3为示例中关键处理对图形的识别的代码;
图4为示例加密信息判断代码;
图5为示例增加的干扰代码子函数;
图6为示例判断加密信息处的分支。
具体实施方式
下面结合附图、通过具体实施例对本发明作进一步详述。以下实施例只是描述性的,不是限定性的,不能以此限定本发明的保护范围。
本申请以儿童学习点读笔为例讲解,儿童学习点读笔使用STM32系列芯片的嵌入式系统。这个系统主要实现的功能包括可以识别专门的图书,识别出图书上的图形之后将点读笔指向的图形内容转化为一个数字序列号,之后按照序列号播放一段音频。如图1所示这个系统有两个关键的处理,即是对图形的识别以及图形与序列号的转化。
请参阅图2,本发明揭示了一种防止嵌入式系统被恶意在线调试的方法,此方法包含如下步骤:
步骤1、将原始代码中的子函数按照重要级别分为普通代码和关键代码,此步骤需要确定哪些代码的保密级别更高,如关键步骤或关键算法等,从而对保密级别高的代码采用更高强度的加密保护。图3为示例关键代码对图形的识别的处理代码。
步骤2、加入对芯片加密信息的判断,此处为本发明的核心部分,由代码自身去判断芯片的加密信息,每次执行到关键处理的代码部分都会进行芯片加密信息的判断。通常所说的“加密”即读保护,是作用于整个Flash存储区域。一旦设置了Flash的读保护,内置的Flash存储区只能通过程序的正常执行才能读出,而不能通过下述任何一种方式读出:通过调试器(JTAG或SWD);从RAM中启动并执行的程序。
如图4所示,STM32芯片的加密信息判断代码是对芯片中存储加密信息的地址。图4中prodata指向加密状态位,加密状态位的数值为0xA5时,芯片处于未加密状态,加密状态位为非0xA5时,芯片处于加密状态,此时可以正常执行代码的读取。读出信息之后立刻就可以知道此时芯片是否处于加密状态。如此便可以判断芯片的加密信息。
步骤3、在系统中加入干扰信息,以便检测到芯片处于解密状态时执行。这里的干扰代码可以做的和真实的正确代码非常类似,这样调试者即便进入干扰代码,也会误认为仍然是正常处理流程,从而增加分析难度。如图5所示,我们增加一个新的子函数,picnumidentification1(),在这个子函数中,我们做一个与picnumidentification()非常相像的处理,使这两个子函数在流程上只有非常细微的差别。(1)当用户进行普通操作时,执行真实代码即子函数picnumidentification()。(2)当用户试图调试程序时,执行干扰代码即子函数picnumidentification1()。
步骤4、加入分支,如果检测到芯片处于解密状态,即可以在线调试的状态,就进入异常处理,执行干扰的代码,如果检测到芯片正常加密状态,就执行正常正确的代码。示例代码如图6所示,由于两个流程非常相像,这样可以在一定程度迷惑分析者,使之分不清哪里是干扰代码,哪里是真实代码。
本发明通过在代码中加入对芯片加密信息的判断,可以有效防止有人恶意在线调试自己的系统。由于芯片在线调试必须在芯片解密状态下,我们检测到芯片处于解密状态则进入干扰程序,使得即使有人通过一定的技术手段读出了我们系统中的代码,也只能通过一些软件静态的分析而无法通过动态调试的方法快速的定位到指定的代码位置,也无法得知代码执行到一定位置后寄存器及内存中的数值,可以在一定程度上增加自己系统的保密性。
Claims (7)
1.利用代码自判断芯片加密信息防止在线调试的方法,其特征在于包含如下步骤:
S1将原始代码中的子函数按照重要级别分为普通代码和关键代码;
S2由所述代码去判断芯片是否处于加密状态;
S3在系统中加入干扰信息;
S4检测芯片状态,如检测到芯片处于解密状态,就执行干扰代码;如检测到芯片处于加密状态,就执行正确代码。
2.根据权利要求1所述的利用代码自判断芯片加密信息防止在线调试的方法,其特征在于,所述步骤S2包含:
S2.1执行代码;
S2.2执行到所述关键代码时,对芯片加密信息进行判断;所述判断的方法为读取芯片中存储加密信息的地址。
3.根据权利要求1所述的利用代码自判断芯片加密信息防止在线调试的方法,其特征在于,所述步骤S3的所述干扰信息为可正常执行的代码。
4.根据权利要求1所述的利用代码自判断芯片加密信息防止在线调试的方法,其特征在于,所述步骤S3的所述干扰信息与所述正确代码相似度为90%或以上。
5.利用代码自判断芯片加密信息防止在线调试的系统,其特征在于,包括:
关键代码单元,用于被进行加密保护;
干扰代码单元,用于干扰正确代码的读取;
检测单元,用于由代码自身去判断芯片是否处于加密状态;
分支单元,用于根据检测单元检测的加密状态进入执行干扰代码或正确代码。
6.根据权利要求5所述的用代码自判断芯片加密信息防止在线调试的系统,其特征在于,所述干扰代码单元包含可正常执行的代码。
7.根据权利要求5所述的用代码自判断芯片加密信息防止在线调试的系统,其特征在于,所述干扰代码单元包含干扰代码,所述干扰代码与所述正确代码相似度为90%或以上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610726206.1A CN107784203A (zh) | 2016-08-25 | 2016-08-25 | 利用代码自判断芯片加密信息防止在线调试的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610726206.1A CN107784203A (zh) | 2016-08-25 | 2016-08-25 | 利用代码自判断芯片加密信息防止在线调试的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107784203A true CN107784203A (zh) | 2018-03-09 |
Family
ID=61438895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610726206.1A Pending CN107784203A (zh) | 2016-08-25 | 2016-08-25 | 利用代码自判断芯片加密信息防止在线调试的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107784203A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245086A (zh) * | 2019-06-19 | 2019-09-17 | 北京字节跳动网络技术有限公司 | 应用程序稳定性测试方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007147495A3 (en) * | 2006-06-21 | 2008-08-28 | Wibu Systems Ag | Method and system for intrusion detection |
CN103678125A (zh) * | 2013-12-03 | 2014-03-26 | 华为技术有限公司 | 一种代码调试方法及调试系统 |
CN104504336A (zh) * | 2014-12-30 | 2015-04-08 | 大连楼兰科技股份有限公司 | 防止嵌入式系统被恶意在线调试的方法和装置 |
-
2016
- 2016-08-25 CN CN201610726206.1A patent/CN107784203A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007147495A3 (en) * | 2006-06-21 | 2008-08-28 | Wibu Systems Ag | Method and system for intrusion detection |
CN103678125A (zh) * | 2013-12-03 | 2014-03-26 | 华为技术有限公司 | 一种代码调试方法及调试系统 |
CN104504336A (zh) * | 2014-12-30 | 2015-04-08 | 大连楼兰科技股份有限公司 | 防止嵌入式系统被恶意在线调试的方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245086A (zh) * | 2019-06-19 | 2019-09-17 | 北京字节跳动网络技术有限公司 | 应用程序稳定性测试方法、装置及设备 |
CN110245086B (zh) * | 2019-06-19 | 2023-05-16 | 北京字节跳动网络技术有限公司 | 应用程序稳定性测试方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10284368B2 (en) | Secure key storage | |
CN101533444B (zh) | 提供安全执行环境的装置及其执行安全编码的方法 | |
US20060080537A1 (en) | Illegal analysis / falsification preventing system | |
CN104504336B (zh) | 防止嵌入式系统被恶意在线调试的方法和装置 | |
CN103069393B (zh) | 中央处理运算装置以及异常检查方法 | |
KR20100070027A (ko) | 제이태그 인증 기능을 구비하는 장치 및 제이태그 인증방법 | |
JP2008181225A (ja) | Icカード | |
Wang et al. | Time and Order: Towards Automatically Identifying {Side-Channel} Vulnerabilities in Enclave Binaries | |
CN101615160B (zh) | 用于码转储保护的安全系统及安全方法 | |
CN107085687A (zh) | 基于二进制熵的模糊测试加解密函数定位方法 | |
JP2007328789A (ja) | 入力データに関するアドレスを使用して入力データを符号化するための暗号システム、エラー検出回路、及びそれの動作方法 | |
CN107784203A (zh) | 利用代码自判断芯片加密信息防止在线调试的方法及系统 | |
Ren et al. | A learning-based approach to secure JTAG against unseen scan-based attacks | |
JP2001338271A (ja) | Icカード及びicカード利用システム | |
US20070159882A1 (en) | Protection of the flow of a program executed by an integrated circuit or of data contained in this circuit | |
JPWO2005027403A1 (ja) | 情報処理装置 | |
US20220060324A1 (en) | Apparatus and method for recovering encryption key based on memory analysis | |
JP2011232801A (ja) | 情報処理装置及びicカード | |
JP5494389B2 (ja) | 電子制御装置 | |
Meade et al. | A comprehensive netlist reverse engineering toolset for IC trust | |
CN110598402A (zh) | 一种基于安卓应用的运行保密系统 | |
JP5716051B2 (ja) | 半導体記憶装置 | |
Nalini et al. | International Journal of Computer and Communication Technology | |
JP2008181226A (ja) | Icカード |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180309 |
|
RJ01 | Rejection of invention patent application after publication |