CN105512517A - 一种嵌入式软件加密方法 - Google Patents
一种嵌入式软件加密方法 Download PDFInfo
- Publication number
- CN105512517A CN105512517A CN201510832016.3A CN201510832016A CN105512517A CN 105512517 A CN105512517 A CN 105512517A CN 201510832016 A CN201510832016 A CN 201510832016A CN 105512517 A CN105512517 A CN 105512517A
- Authority
- CN
- China
- Prior art keywords
- encryption
- code section
- encrypted
- encrypted code
- byte
- 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 36
- 241001269238 Data Species 0.000 claims description 15
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000012423 maintenance Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000005498 polishing Methods 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
Abstract
本发明提供了一种嵌入式软件加密方法,将需要进行加密的嵌入式软件与其芯片ID进行绑定,以嵌入式芯片ID本身作为加密的唯一加密输入参数值进行加解密,并且对软件代码采用部分加密的方式进行加密。该加密方式,加密简单、硬件和操作成本都很低、方便维护升级,加密后的软件被拷贝复制到同样的硬件模块芯片内无法使用。
Description
技术领域
本发明涉及一种嵌入式软件加密方法,特别是涉及一种适用于价格低廉,一FLASH为存储程序的通用的嵌入式芯片加密的嵌入式软件加密方法。
背景技术
目前嵌入式软件加密一般采用:
1、芯片打磨,隐藏芯片的型号信息。这种加密方式对芯片解密人员不起任何作用;
2、物理防拷贝,采用掩膜ROM存储嵌入式软件代码。该加密方式防拷贝、防擦写的效果比较好,但是价格比较高,且无法支持后续软件代码升级。
3、使用加密芯片实施加密。该加密方式需要增加额外的成本,加密较为复杂,不利于软件升级。
上述三种加密方式一般很难支持后期软升级功能。
发明内容
本发明要解决的技术问题是提供一种不需要对芯片进行打磨处理,加密方式简单,加密成本低,且能够支持软件升级的嵌入式软件加密方法。
本发明采用的技术方案如下:一种嵌入式软件加密方法,将需要进行加密的嵌入式软件与其芯片ID进行绑定,以嵌入式芯片ID本身作为加密的唯一加密输入参数值进行加解密,并且对软件代码采用部分加密的方式进行加密。
采用绑定嵌入式芯片ID的方式。ID本身作为软件加密的唯一加密输入参数值,不同ID的嵌入式芯片中的软件代码是完全不同的,一片芯片包含一种独一无二的软件代码,所有软件功能均与ID号绑定。该加密方式,加密简单、硬件和操作成本都很低、方便维护升级,加密后的软件被拷贝复制到同样的硬件模块芯片内无法使用。
定义芯片ID值的由高到底或由低到高的4个字节,其中,两个字节分别用于定位两个需要加密代码段的偏移值;一个字节加1后的值为加密代码段字节长度;一个字节为加密参数;并且定义加密代码段的基地址为解密代码的长度。
嵌入式芯片中的ID寄存器对于每一块芯片都是唯一的,ID值一般是由4个字节组成,将该4个字节由高到低或由低到高进行排列定义:其中,两个字节分别用于定位两个需要加密代码段的偏移值Offset0和Offset1;一个字节加1后的值为加密代码段字节长度Length;一个字节为加密参数Parameter;并且定义加密代码段的基地址BaseAddr为解密代码的长度。
具体加密过程为:读取芯片的ID寄存器,获得加密使用的加密代码段的偏移值Offset0和Offset1、加密代码段字节长度Length和加密参数Parameter;根据加密代码段的偏移值得出加密代码段起始位置(BaseAddr+Offset0,BaseAddr+Offset1);根据加密代码段起始位置及加密代码段字节长度得出两个需要加密的位置的所有字节数据;将两组加密代码段所有字节数据,分别与加密参数Parameter进行加密算法处理,得到加密后的新的两组新的字节数据。
采用部分加密的方式,即使对方获得ID值,由于不清楚加密代码段,因此无法完成解密。
具体解密过程为:读取芯片的ID寄存器,获得解密使用的加密代码段的偏移值、加密代码段字节长度和加密参数;根据加密代码段的偏移值得出加密代码段起始位置;根据加密代码段起始位置及加密代码段字节长度得出两个需要解密的位置的所有字节数据;将两组加密代码段所有字节数据,分别与加密参数进行解密算法处理,得到解密后的新的两组数据。
所述加密算法和解密算法均为异或算法。采用异或算法作为加密算法,使得加密和解密的过程一致,降低了数据处理量,加密更简单,操作成本更低。
所述方法还包括:解密时,把FASH空间的解密软件代码及被加密了的软件搬移至RAM空间中,在RAM空间执行解密程序代码,完成解密过程。
解密软件代码与被加密了的软件代码被下载至嵌入式芯片的FLASH空间中,芯片上电后会把FASH空间的软件搬移至RAM空间中,并开始执行解密程序代码,解密过程中只修改RAM空间的加密软件,而不修改FASH空间的软件。因此每次芯片上电均需要完成一次RAM空间软件的解密工作,存储在FASH空间的软件代码一直处于加密状态。
与现有技术相比,本发明的有益效果是:不需要对芯片进行打磨处理,不需要外围增加加密芯片,加密方式简单,加密成本低,且能够支持软件升级,易维护,加密后的软件被拷贝复制到同样的硬件模块芯片内无法使用。
附图说明
图1为本发明其中一实施例的ID加密原理示意图。
图2为本发明其中一实施例的加密参数、解密代码和软件代码在芯片中的分布图。
图3为本发明其中一实施例的加解密流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本说明书(包括摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
如图1所示,将嵌入式芯片ID值的4个字节由高到低进行排列(字节3、字节2、字节1和字节0)定义:其中,字节3和字节2两个字节分别用于定位两个需要加密代码段的偏移值Offset0,Offset1,该值取值范围为0~255;次低字节(字节1)加1后的值为加密代码段字节长度Length,该值取值范围为1~256;最低字节(字节0)为加密参数Parameter;并且定义加密代码段的基地址BaseAddr为解密代码的长度。
如图2所示,解密软件代码与被加密了的软件代码被下载至嵌入式芯片的FLASH空间中,芯片上电后会把FASH空间的软件搬移至RAM空间中,并开始执行解密程序代码,解密过程中只修改RAM空间的加密软件,而不修改FASH空间的软件。因此每次芯片上电均需要完成一次RAM空间软件的解密工作,存储在FASH空间的软件代码一直处于加密状态。
如图3所示,在本具体实施例中,具体的加解密流程为:
步骤一、在软件代码初始化部分增加解密代码;
步骤二、读取芯片ID值,获得加密使用的加密代码段的偏移值Offset0和Offset1、加密代码段字节长度Length和加密参数Parameter;
步骤三、根据加密代码段的偏移值得出加密代码段起始位置(BaseAddr+Offset0,BaseAddr+Offset1);根据加密代码段起始位置及加密代码段字节长度得出两个需要加密的位置的所有字节数据;将两组加密代码段所有字节数据,分别与加密参数Parameter进行加密算法处理,得到加密后的新的两组新的字节数据;
步骤四、将加密后的软件下载到芯片FLASH内部;
步骤五、软件被加载到RAM中运行,读取芯片的ID寄存器,获得解密使用的加密代码段的偏移值、加密代码段字节长度和加密参数;根据加密代码段的偏移值得出加密代码段起始位置;根据加密代码段起始位置及加密代码段字节长度得出两个需要解密的位置的所有字节数据;将两组加密代码段所有字节数据,分别与加密参数进行解密算法处理,得到解密后的新的两组数据,完成软件代码解密。
Claims (6)
1.一种嵌入式软件加密方法,其特征在于:将需要进行加密的嵌入式软件与其芯片ID进行绑定,以嵌入式芯片ID本身作为加密的唯一加密输入参数值进行加解密,并且对软件代码采用部分加密的方式进行加密。
2.根据权利要求1所述的嵌入式软件加密方法,其特征在于:定义芯片ID值的由高到底或由低到高的4个字节,其中,两个字节分别用于定位两个需要加密代码段的偏移值;一个字节加1后的值为加密代码段字节长度;一个字节为加密参数;并且定义加密代码段的基地址为解密代码的长度。
3.根据权利要求2所述的嵌入式软件加密方法,其特征在于:具体加密过程为:读取芯片的ID寄存器,获得加密使用的加密代码段的偏移值、加密代码段字节长度和加密参数;根据加密代码段的偏移值得出加密代码段起始位置;根据加密代码段起始位置及加密代码段字节长度得出两个需要加密的位置的所有字节数据;将两组加密代码段所有字节数据,分别与加密参数进行加密算法处理,得到加密后的新的两组新的字节数据。
4.根据权利要求3所述的嵌入式软件加密方法,其特征在于:具体解密过程为:读取芯片的ID寄存器,获得解密使用的加密代码段的偏移值、加密代码段字节长度和加密参数;根据加密代码段的偏移值得出加密代码段起始位置;根据加密代码段起始位置及加密代码段字节长度得出两个需要解密的位置的所有字节数据;将两组加密代码段所有字节数据,分别与加密参数进行解密算法处理,得到解密后的新的两组数据。
5.根据权利要求4所述的嵌入式软件加密方法,其特征在于:所述加密算法和解密算法均为异或算法。
6.根据权利要求1所述的嵌入式软件加密方法,其特征在于:所述方法还包括:解密时,把FASH空间的解密软件代码及被加密了的软件搬移至RAM空间中,在RAM空间执行解密程序代码,完成解密过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510832016.3A CN105512517A (zh) | 2015-11-25 | 2015-11-25 | 一种嵌入式软件加密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510832016.3A CN105512517A (zh) | 2015-11-25 | 2015-11-25 | 一种嵌入式软件加密方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105512517A true CN105512517A (zh) | 2016-04-20 |
Family
ID=55720494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510832016.3A Pending CN105512517A (zh) | 2015-11-25 | 2015-11-25 | 一种嵌入式软件加密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105512517A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106570427A (zh) * | 2016-11-08 | 2017-04-19 | 深圳市新国都支付技术有限公司 | 一种Flash加密存储方法及装置 |
CN106777749A (zh) * | 2016-12-29 | 2017-05-31 | 杭州朔天科技有限公司 | 一种基于嵌入式Nor‑Flash的芯片UID设计方法 |
CN108563925A (zh) * | 2018-03-26 | 2018-09-21 | 广州视源电子科技股份有限公司 | 防止软件拷贝的方法、系统、可读存储介质及电子设备 |
CN109684789A (zh) * | 2018-11-19 | 2019-04-26 | 日立楼宇技术(广州)有限公司 | 嵌入式产品中软件安全保护的方法、装置及计算机设备 |
CN109902453A (zh) * | 2019-02-22 | 2019-06-18 | 山东欧德利电气设备有限公司 | 一种软件加密方法 |
CN111191196A (zh) * | 2020-01-02 | 2020-05-22 | 日立楼宇技术(广州)有限公司 | 嵌入式程序运行方法、装置、计算机设备及存储介质 |
CN112182666A (zh) * | 2020-09-27 | 2021-01-05 | 山东超越数控电子股份有限公司 | 一种基于bmc管理板的bmc软件加密注册方法及工具 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101950344A (zh) * | 2010-09-21 | 2011-01-19 | 广东欧珀移动通信有限公司 | 一种嵌入式软件程序加解密方法 |
CN101968844A (zh) * | 2010-10-13 | 2011-02-09 | 深圳市华域软件有限公司 | 一种软件加密方法 |
CN103065070A (zh) * | 2011-10-24 | 2013-04-24 | 康佳集团股份有限公司 | 机顶盒程序加密方法 |
US20130219189A1 (en) * | 2012-02-21 | 2013-08-22 | Microchip Technology Incorporated | Cryptographic Transmission System |
-
2015
- 2015-11-25 CN CN201510832016.3A patent/CN105512517A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101950344A (zh) * | 2010-09-21 | 2011-01-19 | 广东欧珀移动通信有限公司 | 一种嵌入式软件程序加解密方法 |
CN101968844A (zh) * | 2010-10-13 | 2011-02-09 | 深圳市华域软件有限公司 | 一种软件加密方法 |
CN103065070A (zh) * | 2011-10-24 | 2013-04-24 | 康佳集团股份有限公司 | 机顶盒程序加密方法 |
US20130219189A1 (en) * | 2012-02-21 | 2013-08-22 | Microchip Technology Incorporated | Cryptographic Transmission System |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106570427A (zh) * | 2016-11-08 | 2017-04-19 | 深圳市新国都支付技术有限公司 | 一种Flash加密存储方法及装置 |
CN106777749A (zh) * | 2016-12-29 | 2017-05-31 | 杭州朔天科技有限公司 | 一种基于嵌入式Nor‑Flash的芯片UID设计方法 |
CN108563925A (zh) * | 2018-03-26 | 2018-09-21 | 广州视源电子科技股份有限公司 | 防止软件拷贝的方法、系统、可读存储介质及电子设备 |
CN108563925B (zh) * | 2018-03-26 | 2022-03-15 | 广州视源电子科技股份有限公司 | 防止软件拷贝的方法、系统、可读存储介质及电子设备 |
CN109684789A (zh) * | 2018-11-19 | 2019-04-26 | 日立楼宇技术(广州)有限公司 | 嵌入式产品中软件安全保护的方法、装置及计算机设备 |
CN109902453A (zh) * | 2019-02-22 | 2019-06-18 | 山东欧德利电气设备有限公司 | 一种软件加密方法 |
CN111191196A (zh) * | 2020-01-02 | 2020-05-22 | 日立楼宇技术(广州)有限公司 | 嵌入式程序运行方法、装置、计算机设备及存储介质 |
CN112182666A (zh) * | 2020-09-27 | 2021-01-05 | 山东超越数控电子股份有限公司 | 一种基于bmc管理板的bmc软件加密注册方法及工具 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105512517A (zh) | 一种嵌入式软件加密方法 | |
CN102546181B (zh) | 基于密钥池的云存储加解密方法 | |
CN102334307B (zh) | 密码系统的密钥恢复机制 | |
US8948376B2 (en) | Format-preserving encryption via rotating block encryption | |
CN101311942B (zh) | 对软件进行加密、解密的方法及加密、解密的装置 | |
KR101391982B1 (ko) | 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법 | |
CN105426777B (zh) | 一种动态链接库文件加密、解密方法及装置 | |
CN105260668A (zh) | 一种文件加密方法及电子设备 | |
CN105450620A (zh) | 一种信息处理方法及装置 | |
CN106105089B (zh) | 与使用缩减回合编密的xts加密系统一起使用的动态加密密钥 | |
CN101261666B (zh) | 一种通过加密可执行程序文件实现软件版权保护的方法 | |
CN104268444A (zh) | 一种云OS Java源代码保护方法 | |
CN104486355A (zh) | 防止代码被恶意篡改的方法和装置 | |
CN110636070B (zh) | 数据发送方法、数据查询方法、装置、电子设备和系统 | |
CN102063598A (zh) | 一种数据加密、解密方法及装置 | |
CN101605326A (zh) | 一种加密及解密移动终端锁网/锁卡解锁码的方法 | |
CN105379172B (zh) | 用于在块加密算法中使用的密钥更新的设备和方法 | |
CN110704854A (zh) | 针对文本数据保留格式的流式加密方法 | |
CN102833077A (zh) | 金融ic及金融社保ic卡远程发卡数据传输加解密方法 | |
CN105574441A (zh) | 一种嵌入式固件保护的方法和装置 | |
CN104954362B (zh) | 序列号的加密和解密方法及其装置 | |
KR20080046515A (ko) | 콘텐츠 파일의 암호화 및 복호화 방법 | |
CN108710804A (zh) | 一种计算机uefi固件的带硬件加密快速更新方法 | |
CN104636662A (zh) | 一种数据处理方法和终端设备 | |
US20170346621A1 (en) | Cryptographic system and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160420 |