CN109583238B - 流水线指令流加解密方法 - Google Patents
流水线指令流加解密方法 Download PDFInfo
- Publication number
- CN109583238B CN109583238B CN201811440890.2A CN201811440890A CN109583238B CN 109583238 B CN109583238 B CN 109583238B CN 201811440890 A CN201811440890 A CN 201811440890A CN 109583238 B CN109583238 B CN 109583238B
- Authority
- CN
- China
- Prior art keywords
- instruction
- decryption
- encryption
- sequence
- sncode
- 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 21
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 5
- 238000011160 research Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001105 regulatory effect Effects 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及流水线指令流加解密方法,该方法提出使用可配置的密钥,通过多条连续特殊加密指令来打开、关闭内核的加解密模块。获取指令码后,通过对指令流的加密判定,确定是否需要解密,然后再进行指令解码,指令执行,最后回写到通用寄存器中。该方法可以实现通过动态配置密钥、使用特殊的指令流控制CPU内核的加解密组件,来实现加密和解密控制。
Description
技术领域
本发明属于CPU内核设计领域,具体说是流水线指令流加解密方法。
背景技术
在软件技术上,加解密算法的研究已经非常丰富;通过软硬件结合的方式进行加解密,也有了一定的研究。
目前的加密技术,是通过专用加密芯片,将把加密芯片信息、专有钥匙信息、硬盘信息进行对应并做加密运算,同时写入硬盘的主分区表。但是,这虽然在一定程度上保护了硬盘,但是需要额外的加密芯片,且成本较高、仍然有被破解的风险;如果使用单一的一条指令,或者通过写寄存器的简单方式作为加解密的开关,仍然很容易被破解。
由于***的加密算法是固定的,所以无法进行实时调整,也无法在线、动态地打开与关闭加解密开关,更不能实时开启、关闭加解密。
发明内容
本发明目的是提供一种流水线指令流加解密方法,以克服传统的软件加密方法的缺陷。本方法深入到CPU内核、在指令级进行加解密进行研究,并且使用指令流的方式作为加解密的判定。
本发明为实现上述目的所采用的技术方案是:流水线指令流加解密方法,获取指令码后,通过对指令流的加密判定,确定是否需要解密,然后再进行指令解码,指令执行,最后回写到寄存器中。
流水线指令流加解密方法,包括以下步骤:
1)获取指令码;
2)对获取到的指令码进行加密判定:通过查询目标指令表、历史指令表得出判定结果,同时记录当条指令;
3)如果判定结果是解密开启,则进行解密;
如果判定结果是解密关闭,则不进行解密,直接进入下一步骤;
4)将上一步骤得到的指令进行指令执行和指令回写。
所述对获取到的指令码进行加密判定具体如下:
(1)查询历史指令表,得到历史指令序列,即过去若干条指令的SNCODE值组成的序列;
(2)查询目标指令表,得到目标指令序列,即当前指令的SNCODE值;
(3)如果当前是解密开启状态,则通过将历史指令序列与目标指令表的对比查询是否满足关闭条件;若满足,则判定结果为解密关闭;否则,维持当前状态不变;
如果当前是解密关闭状态,则通过将历史指令序列与目标指令表的对比查询查询是否满足开启条件;若满足,则判定结果为解密开启;否则,维持当前状态不变;
(4)记录当条指令。
通过将历史指令序列与目标指令表的对比查询是否满足关闭条件开启/关闭条件,具体如下:
将历史指令序列的SNCODE值依次排序,查找目标指令表中SNCODE值所对应的解密开启条件和解密关闭条件;
若历史指令序列的SNCODE值排序与目标指令表中解密开启条件、解密关闭条件中任一个条件中的SNCODE值排序相同,则目标指令表中该SNCODE值排序所对应的条件即为当前指令流满足的条件,也表示当前指令流的状态。
所述目标指令表包括SNCODE值域段以及对应的解密开启条件和解密关闭条件;所述解密开启条件和解密关闭条件均包括设定的SNCODE值排序。
通过在线配置目标指令表。
本发明具有以下有益效果及优点:
1.加密算法多在软件领域,虽然各类算法越来越复杂、安全度越来越高,但是,纯软件的算法一旦被拿到代码,就有被破解的可能。
2.本发明通过深入到内核pipeline架构、基于指令集进行底层的加解密操作。
3.如果使用单一的一条指令,或者通过写寄存器的简单方式作为加解密的开关,仍然很容易被破解,本发明通过记录指令流来作为加解密的开关,不容易破解。
4.本发明可以在线进行动态地开启、关闭加解密。通过在线的、动态的配置加解密所要查找的目标指令表,灵活调控加解密开关机制,有很强的反破解能力。
5.本发明深入到内核pipeline架构,动态收集历史指令的信息,基于指令流进行加解密的判定。
6.本发明支持实时开启、关闭加解密。
7.本发明的加解密开启、关闭方式不影响pipeline的指令执行,可保持高性能。
8.本发明不仅可以支持加密的软件,也可以支持非密的编译器,其CPU也可以作为非密的芯片来使用。
附图说明
图1为指令流加解密流程图;
图2为指令流加解密流水线架构图;
图3为加密判定单元结构图;
图4为指令码结构图。
具体实施方式
下面结合附图及实施例对本发明的具体实施方式做进一步的详细说明。
首先,对图1和图2进行详细的说明。
图1为指令流加解密流程图,图2为指令流加解密流水线架构图。图1和图2的各个环节一一对应,图1中流程各环节由图2(指令流加解密流水线架构图)中的各模块来处理。
1.取指
如图1所示,CPU取指模块从存储介质获取指令码(S101)。
如图2所示,CPU取指模块,对应图中的S201。
2.加密判定
如图1所示,获取到的指令码,由CPU加密判定单元进行目标指令查表(S102)、历史指令查表(S103)来得出判定结果(S105),同时记录当条指令(S104)。
如图2所示,CPU加密判定模块,对应图中的S202。
加密判定是本方法的核心部分,后续会结合图3、图4、表一和表二有更详细说明。
3.解密
如果判定结果是解密开启,则由CPU解密模块进行解密(S105)。
如果判定结果是解密关闭,则不进行解密(S106),直接进入下一环节。
如图2所示,CPU解密模块,对应图中的S204。
4.解码、指令执行、指令回写
如图1所示,经解密环节后,后续的解码(S107)、指令执行(S108)和指令回写(S109)与常规pipeline是一致的。
如图2所示,解码、指令执行和指令回写三个模块,分别对应图中的S206、S207、S208。
下面结合图3、图4、表一和表二,对加密判定单元进行更详细说明。
如图3,由加密判定控制逻辑(S301)、表控制单元(S302)、目标指令表(S303)、历史指令表(S304)四个部分组成,图中标出了四个单元之间的相互之间通信关系。
相应的判定过程如下:
1.查询历史指令查表
如图3,表控制单元(S302)通过查询Regbank中的历史指令表(S304),从而得到历史指令序列。
历史指令序列,是过去几条指令的SNCODE值组成的序列。
如图4,是指令码的结构,其SNCODE域为图中的S401。
2.查询目标指令表
如图3,表控制单元(S302)通过查询Regbank中的目标指令表(S303),从而得到目标指令序列。
如表一为目标指令表,列举了一种目标指令表的结构。根据当前指令的SNCODE,查找其指令开启及指令关闭的指令序列。
如图4,是指令码的结构,其SNCODE域为图中的S401。
3.将历史指令序列与目标指令表相对比,得出判定结果
表控制单元将历史指令序列,与目标指令序列进行对比,来判定当前的指令流是否满足开启/关闭条件。
如果当前是开启状态,则查询是否满足关闭条件;若满足,则关闭解密开关。
如果当前是关闭状态,则查询是否满足开启条件;若满足,则开启解密开关。
4.记录当条指令
如表二为历史指令表,历史指令表由一个深度为5的buffer组成,是一个堆栈结构。
每执行一条指令,则将栈顶(Index 5)的数据删除,并将新指令的SNCODE入栈(Index 0)。
如图4,是指令码的结构,其SNCODE域为图中的S401。
表一
表二
Index | SNCODE[3:0] |
0 | 4'h7 |
1 | 4'h2 |
2 | 4'h1 |
3 | 4'h0 |
4 | 4'h9 |
本方法中,图4中指令码域段的划分、以及表一、表二的目标指令表及历史指令表,仅仅是一种实例,本方法包括但不限于32bit、64bit长度的指令,包括但不限于1~128的历史指令表深度,包括但不限于目标指令表的Index选定方式及历史指令表中所记录的域段,包括但不限于各种不同的查表方式。
Claims (4)
1.流水线指令流加解密方法,其特征在于:获取指令流后,通过对指令流的加密判定,确定是否需要解密,然后再进行指令解码,指令执行,最后回写到寄存器中;
包括以下步骤:
1)获取指令流;
2)对获取到的指令流进行加密判定:通过查询目标指令表、历史指令表得出判定结果,同时记录当条指令;
所述对获取到的指令流进行加密判定具体如下:
(1)查询历史指令表,得到历史指令序列,即过去若干条指令的SNCODE值组成的序列;
(2)查询目标指令表,得到目标指令序列,即当前指令的SNCODE值;
(3)如果当前是解密开启状态,则通过将历史指令序列与目标指令表的对比查询是否满足关闭条件;若满足,则判定结果为解密关闭;否则,维持当前状态不变;
如果当前是解密关闭状态,则通过将历史指令序列与目标指令表的对比查询是否满足开启条件;若满足,则判定结果为解密开启;否则,维持当前状态不变;
(4)记录当条指令;
3)如果判定结果是解密开启,则进行解密;
如果判定结果是解密关闭,则不进行解密,直接进入下一步骤;
4)将上一步骤得到的指令进行指令执行和指令回写。
2.根据权利要求1所述的流水线指令流加解密方法,其特征在于,通过将历史指令序列与目标指令表的对比查询是否满足开启/关闭条件,具体如下:
将历史指令序列的SNCODE值依次排序,查找目标指令表中SNCODE值所对应的解密开启条件和解密关闭条件;
若历史指令序列的SNCODE值排序与目标指令表中解密开启条件、解密关闭条件中任一个条件中的SNCODE值排序相同,则目标指令表中该SNCODE值排序所对应的条件即为当前指令流满足的条件,也表示当前指令流的状态。
3.根据权利要求1所述的流水线指令流加解密方法,其特征在于,所述目标指令表包括SNCODE值域段以及对应的解密开启条件和解密关闭条件;所述解密开启条件和解密关闭条件均包括设定的SNCODE值排序。
4.根据权利要求1所述的流水线指令流加解密方法,其特征在于:通过在线配置目标指令表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811440890.2A CN109583238B (zh) | 2018-11-29 | 2018-11-29 | 流水线指令流加解密方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811440890.2A CN109583238B (zh) | 2018-11-29 | 2018-11-29 | 流水线指令流加解密方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109583238A CN109583238A (zh) | 2019-04-05 |
CN109583238B true CN109583238B (zh) | 2023-03-28 |
Family
ID=65925467
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811440890.2A Active CN109583238B (zh) | 2018-11-29 | 2018-11-29 | 流水线指令流加解密方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109583238B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117092956B (zh) * | 2023-10-16 | 2024-01-09 | 成都秦川物联网科技股份有限公司 | 基于物联网的气体流量计阀控联动控制方法、***、设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI258289B (en) * | 2004-04-16 | 2006-07-11 | Via Tech Inc | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results |
CN1737879A (zh) * | 2004-08-20 | 2006-02-22 | 松下电器产业株式会社 | 加密指令处理设备 |
CN106817352A (zh) * | 2015-11-30 | 2017-06-09 | 深圳市中兴微电子技术有限公司 | 广播报文加密方法及装置 |
CN106650337A (zh) * | 2016-12-29 | 2017-05-10 | 北京奇虎科技有限公司 | 对安装包中的脚本文件进行处理的方法和装置 |
-
2018
- 2018-11-29 CN CN201811440890.2A patent/CN109583238B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109583238A (zh) | 2019-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220138329A1 (en) | Microprocessor pipeline circuitry to support cryptographic computing | |
Grayson et al. | Evolution of the samsung exynos cpu microarchitecture | |
Mittal | A survey of techniques for dynamic branch prediction | |
RU2643651C2 (ru) | Система и способ для вычисления дайджеста сообщений | |
US20100169665A1 (en) | Method for indexing encrypted column | |
TW201600965A (zh) | 熱調適服務品質等級 | |
US8788797B2 (en) | Combined level 1 and level 2 branch predictor | |
TWI553551B (zh) | 使用選擇性任務調變之熱減輕 | |
US9632937B2 (en) | Pre-decoding analysis based configuration information cache management method and system | |
CN109583238B (zh) | 流水线指令流加解密方法 | |
Kim et al. | SHARP: A short-word hierarchical accelerator for robust and practical fully homomorphic encryption | |
CN112134686A (zh) | 一种基于可重构计算的aes硬件实现方法及运行该方法的计算机设备与可读存储介质 | |
CN106933510B (zh) | 一种存储控制器 | |
JP3890910B2 (ja) | 命令の実行結果予測装置 | |
Sönmez et al. | Machine learning based side channel selection for time-driven cache attacks on aes | |
WO2023216443A1 (zh) | 一种多层级混合算法过滤式分支预测方法及预测*** | |
CN103020535A (zh) | 一种带比较功能的数据加解密*** | |
US20050027921A1 (en) | Information processing apparatus capable of prefetching instructions | |
CN108845832B (zh) | 一种提高处理器主频的流水线细分装置 | |
CN111045605B (zh) | 利用处理器缓存和安全处理器改进***安全性的技术方案 | |
US20180081815A1 (en) | Way storage of next cache line | |
US20090198923A1 (en) | Apparatus for predicting memory access and method thereof | |
CN109598151B (zh) | 指令码动态加解密方法 | |
US20050223203A1 (en) | Segmented branch predictor | |
US20040064678A1 (en) | Hierarchical scheduling windows |
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 |