CN116868176A - 程序处理装置、程序处理方法和程序 - Google Patents

程序处理装置、程序处理方法和程序 Download PDF

Info

Publication number
CN116868176A
CN116868176A CN202180093574.6A CN202180093574A CN116868176A CN 116868176 A CN116868176 A CN 116868176A CN 202180093574 A CN202180093574 A CN 202180093574A CN 116868176 A CN116868176 A CN 116868176A
Authority
CN
China
Prior art keywords
entry address
memory
pseudo
program
address
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
Application number
CN202180093574.6A
Other languages
English (en)
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of CN116868176A publication Critical patent/CN116868176A/zh
Pending legal-status Critical Current

Links

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

程序处理装置(100)具有:入口地址屏蔽部(110),其生成使用复制存储器中存储的设定值而得到的保存值对入口地址进行了屏蔽的伪入口地址,并将所述应用程序正在使用的入口地址置换为所述伪入口地址;内存监视部(111),其在执行所述应用程序的过程中,判定是否载入了所述伪入口地址;以及入口地址去屏蔽部(112),其在载入了所述伪入口地址的情况下,从所述存储器载入所述设定值,生成使用所述设定值对所述伪入口地址进行了去屏蔽的新入口地址,并将所述伪入口地址置换为所述新入口地址。

Description

程序处理装置、程序处理方法和程序
技术领域
本发明涉及程序处理装置、程序处理方法和程序。
背景技术
Trusted Execution Environment(TEE:可信执行环境)是使用处理器具有的内存保护机构进行应用间的访问控制的安全执行环境。例如,通过在安全执行环境上执行在安全性方面较为关键的应用,即使在库或应用中发现了脆弱性,也能够防止其影响传播到在安全性方面较为关键的应用。
TEE是防止基于软件的攻击的结构,但是,关于如嵌入式设备那样能够进行物理访问的设备中的TEE环境,指出物理攻击的危险性。在非专利文献1中示出如下内容:通过被称作故障注入攻击的物理攻击方法使内存保护机构的访问权限的设定无效化,由此能够进行本来不被许可的内存访问。
现有技术文献
非专利文献
非专利文献1:Nashimoto,Shoei,et al.“Bypassing Isolated Execution onRISC-Vwith Fault Injection.”Cryptology ePrint Archive,Report 2020/1193,2020(posted30-Sep-2020)
发明内容
发明要解决的课题
本发明的目的在于,防止本来不被许可的内存访问。
用于解决课题的手段
本发明的程序处理装置具有:存储部,其存储有将复制设定值而得到的保存值、存储所述设定值的存储器和入口地址对应起来的配置数据;入口地址屏蔽部,其在执行应用程序之前执行如下的屏蔽处理:生成使用所述保存值对所述配置数据的所述入口地址进行了屏蔽的伪入口地址,并将所述应用程序正在使用的入口地址置换为所述伪入口地址;内存监视部,其在执行所述应用程序的过程中,判定是否载入了所述伪入口地址;以及入口地址去屏蔽部,其执行如下的去屏蔽处理:在所述内存监视部判定为载入了所述伪入口地址的情况下,从所述存储器载入所述设定值,生成使用所述设定值对所述伪入口地址进行了去屏蔽的新入口地址,并将所述伪入口地址置换为所述新入口地址。
发明效果
根据本发明,使用保存值对应用程序使用的入口地址进行屏蔽,在应用程序使用入口地址时,使用设定值解除入口地址的屏蔽后使用入口地址。因此,如果保存值和设定值不一致,则无法访问入口地址。
附图说明
图1是示出实施方式1中的程序处理装置100的结构例的图。
图2是示出实施方式1中的配置数据121、应用程序120和存储器105的图。
图3是示出实施方式1中的程序处理装置100的动作例的流程图。
图4是示出实施方式1中的步骤S140的动作例的流程图。
图5是示出实施方式1中的配置数据121和处理例的图。
图6是示出实施方式2中的程序处理装置200的结构例的图。
图7是示出实施方式2中的程序处理装置200的动作例的流程图。
图8是示出实施方式2中的步骤S240的动作例的流程图。
图9是示出实施方式2中的配置数据121和处理例的图。
图10是示出实施方式2中的去屏蔽处理的删除例的图。
图11是示出实施方式2中的去屏蔽处理的删除例的图。
图12是示出实施方式3中的入口地址和处理例的图。
具体实施方式
在以下的实施方式的说明和附图中,标注了相同标号的部分表示相同的部分或相当的部分。
实施方式1
***结构的说明***
根据图1对程序处理装置100的结构进行说明。
程序处理装置100是具有处理器101、主存储内存102、存储装置103、输入输出接口104和存储器105的计算机。这些硬件经由信号线彼此连接。
处理器101是进行运算处理的IC,对其他硬件进行控制。
处理器101具有运算寄存器,在运算寄存器载入命令和数据,执行依据命令的数据处理。
例如,处理器101是CPU或FPGA。
IC是Integrated Circuit(集成电路)的简称。
CPU是Central Processing Unit(中央处理单元)的简称。
FPGA是Field Programable Gated Array(现场可编程门阵列)的简称。
主存储内存102是易失性存储装置和非易失性存储装置中的至少任意一方。易失性存储装置的具体例是RAM。非易失性存储装置的具体例是ROM、HDD或闪存。
RAM是Random Access Memory(随机存取存储器)的简称。
ROM是Read Only Memory(只读存储器)的简称。
HDD是Hard Disk Drive(硬盘驱动器)的简称。
下面,地址是指主存储内存102的内存地址。
存储装置103是保管数据的非易失性存储装置。非易失性存储装置的具体例是ROM、HDD或闪存。
输入输出接口104是输入输出用的接口。例如,输入输出接口104是串行通信接口或调试接口。串行通信接口的具体例是SPI、UART或I2C。调试接口的具体例是JTAG或JWD。
SPI是Serial Peripheral Interface(串行外围接口)的简称。
UART是Universal Asynchronous Receiver Transmitter(通用异步收发器)的简称。
I2C是Inter-Integrated Circuit(内部集成电路)的简称。
JTAG是Joint Test Action Group(联合测试行动组)的简称。
SWD是Serial Wire Debug(串行线调试)的简称。
存储器105是存储装置。
存储器105的具体例是内存或寄存器。
存储器105存储由处理器101访问的数据。
存储器105可以是主存储内存102的一部分,可以是存储装置103的一部分,可以是处理器101的寄存器,还可以是独立的存储设备。
处理器101具有入口地址屏蔽部110、内存监视部111和入口地址去屏蔽部112这样的要素。
入口地址屏蔽部110和入口地址去屏蔽部112通过软件实现。
内存监视部111通过内置于处理器的内存监视单元这样的硬件实现。例如,内存监视部111是对软件处理的逻辑地址和硬件处理的物理地址进行转换的内存管理单元或用于防止程序的不正当的内存访问的内存保护单元。
在存储装置103中存储有通过处理器101进行动作的应用程序120、用于执行入口地址屏蔽部110和入口地址去屏蔽部112的对策程序122、以及用于使对策程序122进行动作的配置数据121。在存储装置103中存储有操作系统、网络驱动器和存储器驱动器。
如图1所示,在主存储内存102中读入存储装置103中存储的软件和数据。
应用程序120是通过对策程序122来强化安全性的程序。
应用程序120是成为保护对象的保护对象程序。
实施方式1的应用程序120是可执行形式的执行模块130。
执行模块130用二进制码来记载,用处理器101能够解释的机器语言来记载。
图1示出处理器101将执行模块130读入到主存储内存102而执行执行模块130紧前的状态。
对策程序122是对应用程序120的安全性进行强化的程序。
对策程序122是实现入口地址屏蔽部110和入口地址去屏蔽部112的功能的程序。
存储器105存储设定值。设定值是与应用程序120正在使用的入口地址对应的值。
入口地址是应用程序正在使用的入口点。
入口地址是具有规定功能的模块的执行开始地址。由于是进入内存区域的模块的执行开始的开头的地址,因此称作入口地址。具体而言,入口地址是应用程序120正在使用的迁移命令中的迁移目的地的内存地址。
模块可以是应用程序120正在程序内使用的子例程或函数,也可以是别的应用程序。
设定值是与入口地址对应的值。
设定值可以是在入口地址开始的模块的属性值,也可以是对在入口地址开始的模块进行加工而得到的加工值,还可以是与在入口地址开始的模块无关的随机数值。
设定值的具体例是记载有向入口地址迁移的权限的值。
即使应用程序120在多个位置具有迁移命令,只要迁移目的地的内存地址相同,则迁移目的地也为1个入口地址,设定值与1个入口地址对应地成为1个。如果应用程序120在多个位置具有迁移命令且迁移目的地的内存地址不同,则迁移目的地成为多个入口地址,设定值与多个入口地址对应地成为多个。
实施方式1的程序处理装置100在应用程序120起动时对入口地址进行屏蔽,在迁移时解除入口地址的屏蔽。
入口地址屏蔽部110利用复制设定值而得到的保存值和入口地址的对进行屏蔽处理。入口地址屏蔽部110使用保存值对应用程序120正在使用的入口地址进行屏蔽。
内存监视部111监视针对被屏蔽的入口地址的访问。
在内存监视部111判断为存在针对被屏蔽的入口地址的访问的情况下,入口地址去屏蔽部112使用设定值对载入的被屏蔽的入口地址进行去屏蔽,取出原来的入口地址。
●配置数据121
图2的配置数据121是为了供对策程序122对应用程序120的安全性进行强化而使用的数据。
配置数据121是将
1.保存值、
2.设定值的存储器(存储器的标识符)、
3.应用程序120正在使用的入口地址
对应起来的表。
保存值是复制设定值而得到的值。由于将存储器105中存储的设定值保存于配置数据121中,因此称作保存值。由于设定值与入口地址对应,因此,保存值与入口地址也对应。
保存值和设定值是与入口地址对应的值。保存值和设定值是防止篡改的数据,并且是成为保护对象的保护对象数据。
图2的配置数据121中的各项目的意思如下所述。
“对”是指保存值和与该保存值对应的入口地址的对。在图2中图示出Pair1和Pair2这2个对。
“保存值”是复制存储器105中存储的设定值而得到的值。在刚刚复制的紧后,设定值和保存值是相同的值,但是,如果设定值被篡改,则设定值和保存值成为不同的值。保存值(设定值)可以如Pair1那样是1个,也可以如Pair2那样是2个以上的多个个数。
“设定值的存储器”是存储有设定值的内存或寄存器。在图2中,为了识别设定值的存储器,存储有作为标识符的存储有设定值的寄存器的寄存器名“Reg1”和存储有设定值的内存的内存地址“900”。
“入口地址”是具有规定功能的也模块的执行开始地址,在图2中,存储有迁移命令中的迁移目的地的内存地址“500”和内存地址“659”。
●应用程序120
图2的应用程序120的执行模块130用二进制码来记载,但是,为了容易理解说明,在图2中以文本形式来表现。
图2的执行模块130在内存地址100中在变量X中存储有值“500”,通过内存地址110的载入命令载入变量X的值“500”,通过内存地址120的跳转命令跳转到内存地址500。
处理器101一边执行操作系统、网络驱动器和存储器驱动器,一边执行应用程序120和对策程序122。
存储装置103中存储的应用程序120、对策程序122、操作系统、网络驱动器和存储器驱动器读入到主存储内存102,由处理器101来执行。
在主存储内存102中读入配置数据121,由处理器101来访问。
另外,应用程序120、配置数据121和对策程序122的一部分或全部也可以嵌入操作系统中。
由应用程序120、对策程序122利用、处理或输出的数据、信息、信号值和变量值存储于主存储内存102、存储装置103或处理器101内的寄存器或高速缓冲存储器。
也可以将入口地址屏蔽部110和入口地址去屏蔽部112的各部的“部”改写为“处理”、“步骤”或“工序”。此外,也可以将入口地址屏蔽部110和入口地址去屏蔽部112的各处理的“处理”改写为“程序”、“程序产品”或“记录有程序的计算机能读取的存储介质”。
应用程序120和对策程序122使计算机执行将所述的各部的“部”改写为“处理”、“步骤”或“工序”后的各处理、各步骤或各工序。
此外,程序处理方法是通过程序处理装置100执行程序而实现的方法。
应用程序120和对策程序122也可以存储于计算机能读取的记录介质来提供。此外,应用程序120和对策程序122也可以作为程序产品来提供。
此外,程序处理装置100也可以通过逻辑IC(Integrated Circuit:集成电路)、GA(Gate Array:门阵列)、ASIC(Application Specific Integrated Circuit:专用集成电路)、FPGA(Field Programmable Gate Array:现场可编程门阵列)这样的处理电路实现。
此外,将处理器、内存、处理器和内存的组合、处理电路的上位概念称作处理线路。即,处理器、内存、处理器和内存的组合、处理电路分别是处理线路的具体例。
***程序处理方法的概要说明***
程序处理装置100在执行应用程序120之前,生成使用保存值对应用程序120正在使用的入口地址进行了屏蔽的伪入口地址,将入口地址置换为伪入口地址。
程序处理装置100在执行应用程序120的过程中,在载入了伪入口地址的情况下,从存储器105载入设定值,生成使用设定值对伪入口地址进行了去屏蔽的新入口地址,将伪入口地址置换为新入口地址。
***动作的详细说明***
根据图3对程序处理装置100的动作进行说明。
设为在动作开始之前,在存储器105中存储有设定值,在配置数据121中设定有值。具体而言,设为设定值作为保存值被复制到配置数据121。此外,设为在配置数据121中设定有存储器105的标识符和与设定值对应的入口地址。
在步骤S110中,对策程序122从存储装置103读入到主存储内存102而被执行。
对策程序122从存储装置103向主存储内存102读入应用程序120和配置数据121。在该时点,成为应用程序120的执行模块130被读入到主存储内存102且应用程序120能够由处理器101执行的状态。
在步骤S120中,入口地址屏蔽部110从配置数据121中选择一个对。
在步骤S130中,入口地址屏蔽部110确认是否处理完全部配置数据的对。在处理完全部配置数据121的对的情况下,入口地址屏蔽部110使处理器101得知结束了处理,开始步骤S150。在不是这样的情况下,执行步骤S140。
在步骤S140中,入口地址屏蔽部110使用对执行入口地址的屏蔽处理。
●屏蔽处理
根据图4对步骤S140的入口地址的屏蔽处理进行说明。
在步骤S141中,入口地址屏蔽部110使用保存值对成对的入口地址进行屏蔽,计算屏蔽后的入口地址。下面,将屏蔽后的入口地址称作伪入口地址。
具体而言,入口地址屏蔽部110在对保存值应用散列函数后,对得到的散列值和入口地址应用XOR运算。该处理能够用以下的式(1)表示。
Addr[mask]=Addr[raw](+)Hash(data[0])(+)...(+)Hash(data[n]) 式(1)
其中,
Addr[mask]表示伪入口地址(被屏蔽的入口地址),
Addr[raw]表示作为对而给出的原来的入口地址,
Hash()表示散列函数,
(+)表示XOR(eXclusive OR:异或)运算,
data表示作为对而给出的保存值,
data[i](i=0...n)表示第i个保存值,
Hash(data[i])表示第i个保存值的散列值。
图5示出入口地址屏蔽部110修改后的配置数据121。
图5的配置数据121对图2的配置数据121追加了伪入口地址。
关于Pair1,保存值为1个,因此,式(1)如下所述。
Addr[mask]=Addr[raw](+)Hash(data[0])
在图5中,伪入口地址成为256。
756=500(+)Hash(1000)
关于Pair2,保存值为2个,因此,式(1)如下所述。
Addr[mask]=Addr[raw](+)Hash(data[0])(+)Hash(data[1])
在图5中,伪入口地址成为560。
560=659(+)Hash(6012)(+)Hash(6013)
散列函数也可以是md5或SHA256这样的加密的散列函数。散列函数也可以是CRC32或xxHash这样的非加密的散列函数。散列函数也可以是Toeplitz散列这样的通用散列函数。
md5是Message Digest algorithm 5(信息摘要算法5)的简称。
sha256是Secure Hash Algorithm(安全散列算法)的简称。
CRC是Cyclic Redundancy Checksum(循环冗余校验和)的简称。
入口地址屏蔽部110将图5的配置数据121存储于主存储内存102。由内存监视部111和入口地址去屏蔽部112参照配置数据121。
在步骤S142中,入口地址屏蔽部110从应用程序120中搜索针对成对的入口地址的跳转命令。具体而言,处理器101从应用程序120的执行模块130中寻找将入口地址的值载入到寄存器的处理和该处理后存在的跳转命令。入口地址屏蔽部110忽略针入口地址以外的跳转命令。
在图5的(a)的执行模块130的情况下,入口地址屏蔽部110检测内存地址110的载入命令和内存地址120的跳转命令。
在步骤S143中,入口地址屏蔽部110验证是否搜索完针对入口地址的全部跳转命令。在搜索完针对入口地址的全部跳转命令的情况下结束。在不是这样的情况下,执行步骤S144。
在步骤S144中,入口地址屏蔽部110利用在步骤S141中计算出的伪入口地址置换通过入口地址的载入命令而载入的数据(入口地址)。具体而言,利用伪入口地址置换作为载入源的内存地址中存储的数据。
在图5的(a)的执行模块130的情况下,入口地址屏蔽部110利用伪入口地址的值“756”置换内存地址100的变量X中存储的值“500”(图5的(b))。
●监视处理
在步骤S150中,处理器101开始执行实施了入口地址的屏蔽处理后的应用程序120。同时,内存监视部11开始监视应用程序120。
在图5的情况下,处理器101执行图5的(b)的应用程序120。内存监视部111开始监视图5的(b)的应用程序120。
在步骤S150中,内存监视部111在执行应用程序120的过程中,参照配置数据121的伪入口地址,检查伪入口地址是否载入到处理器101的运算寄存器。在伪入口地址载入到运算寄存器的情况下,执行步骤S170。在不是这样的情况下,返回步骤S150,处理器101继续执行应用程序120。
在图5的(b)的应用程序120的情况下,内存监视部111检测在执行内存地址110时载入了伪入口地址的值“756”的情况,检测内存地址120的跳转命令。内存监视部111不执行跳转命令而中断执行应用程序120。
另外,这样,为了根据某个条件而执行特别的处理,内存监视部111能够通过产生例外或中断来实现。通过例外或中断,能够使处理器101正在执行的程序的处理中断而执行步骤S170的处理。
●去屏蔽处理
在步骤S170中,处理器101起动入口地址去屏蔽部112。入口地址去屏蔽部112参照配置数据121中存储的“设定值的存储器”,从存储器105载入设定值。
在图5的(b)的应用程序120的情况下,在检测到载入了伪入口地址的值“756”时,入口地址去屏蔽部112访问与伪入口地址的值“756”对应的存储器“Reg1”,载入设定值“1000”。
在步骤S180中,入口地址去屏蔽部112使用在步骤S170中载入的设定值对在步骤S160中载入的伪入口地址进行去屏蔽。下面,将去屏蔽后的入口地址称作新入口地址。具体而言,如以下的式(2)所示,通过以与式(1)相反的方法应用XOR运算,能够复原出原来的入口地址。
Addr[raw]=Addr[mask](+)Hash(data[0])(+)...(+)Hash(data[n]) 式(2)
入口地址去屏蔽部112将在步骤S160中载入的伪入口地址置换为新入口地址(图5的(c))。
入口地址去屏蔽部112使处理器101得知结束了处理,结束处理。
在入口地址去屏蔽部112能够复原出原来的入口地址的情况下,应用程序120跳转到原来的入口地址。
在图5的(c)的情况下,入口地址去屏蔽部112根据式(2)计算新入口地址NP=(x)(+)hash(1000)。这里,(x)意味着变量X的值。入口地址去屏蔽部112执行载入新入口地址NP的命令“LOAD(NP)”。这里,(NP)意味着变量NP的值。
在图5的(c)的情况下,原来的入口地址500=新入口地址500。应用程序120跳转到入口地址“500”。
在步骤S180中的去屏蔽处理后,返回步骤S150,处理器101继续执行程序。
如果通过步骤S170和步骤S180的处理正确地对伪入口地址进行去屏蔽,则能够通过接下来的跳转命令迁移到正确的入口地址。在针对入口地址的迁移成功的情况下,能够保证在存储器105中存储有正确的设定值。
另一方面,在存储器105的设定值由于不正当的攻击而被篡改的情况下,无法正确地对伪入口地址进行去屏蔽,无法正确地复原出入口地址。因此,在接下来的跳转命令中成为异常的迁移,不正当的攻击不成功。
入口地址屏蔽部110的处理是步骤S140的处理。
内存监视部111的处理是步骤S160的处理。
入口地址去屏蔽部的处理是步骤S170和步骤S180的处理。
应用程序120的处理是步骤S150的处理。
对策程序122的处理是除了步骤S150和步骤S160以外的图3的全部处理。
在实施方式1中,使用保存值对应用程序120使用的入口地址进行屏蔽。而且,在应用程序120使用入口地址时,通过设定值解除入口地址的屏蔽后,使用入口地址。因此,如果保存值和设定值不一致,则无法进行针对入口地址的正确访问。
实施方式1的程序处理装置100对入口地址进行了屏蔽,因此,即使存储器105中设定的设定值被攻击者读取也没有问题。
此外,伪入口地址是被散列值屏蔽的值,因此,即使伪入口地址被攻击者读取也没有问题。
***针对TEE的应用***
对将实施方式1应用于Trusted Execution Environment(TEE:可信执行环境)的情况进行说明。
TEE通过不仅基于软件还基于硬件的支持,实现应用的安全的执行环境。
TEE由具有基于内存访问监视的资源分离机构的处理器来提供。
在提供TEE的系统中,使用处理器具有的内存保护机构(被称作Physical MemoryProtection(物理内存保护)的机构等)进行应用间的访问控制。内存保护机构在每次内存访问时确认访问权限。内存保护机构在执行针对其他应用程序的迁移时,设定其他应用的访问权限。内存保护机构在每次开始执行应用程序时确认访问权限。内存保护机构根据访问权限进行内存访问控制。
在将实施方式1应用于内存保护机构的情况下如下所述。
程序处理装置100在应用故障注入攻击的对策后,执行存储装置103中存储的应用程序120。
故障注入攻击是使处理器的处理产生错误而跳过处理器的处理向迁移目的地迁移时的内存保护机构的访问权限的设定的攻击。
入口地址是在TEE进行动作的应用程序的入口地址。入口地址是在处理器中进行动作的多个应用程序的执行开始地址。
设定值是表示按照每个应用程序设定的内存保护机构的访问权限的值。设定值是表示内存保护机构针对内存区域设定的访问权限的值。
访问权限由内存区域和针对该内存区域的属性来定义。
内存区域是由内存地址表示的内存的范围。
属性是表示能够对内存区域的数据进行执行、读入、写入中的哪个行为的值。
存储器是内存保护机构参照的寄存器或内存,是内存保护机构利用的寄存器或内存。具体而言,存储器是内存保护机构具有的特殊寄存器或特殊内存。
在将实施方式1应用于内存保护机构的情况下如下所述。
●屏蔽处理
入口地址屏蔽部110根据表示为了监视应用程序的内存访问而使用的访问权限的值(保存值)对应用程序的执行开始地址进行屏蔽,生成伪入口地址。然后,利用伪入口地址置换应用程序的执行开始地址。
●监视处理
内存监视部111在执行应用程序120的过程中,参照配置数据121的伪入口地址,检查是否载入了伪入口地址。然后,检查是否存在针对其他应用程序的迁移。
●去屏蔽处理
入口地址去屏蔽部112在开始执行针对其他应用程序的迁移时,根据存储器中存储的表示访问权限的值(设定值)解除伪入口地址的屏蔽,生成新入口地址。入口地址去屏蔽部112将新入口地址设为其他应用程序的执行开始地址。
如上所述,入口地址是应用程序的执行开始地址,设定值是表示按照每个应用程序设定的内存保护机构的访问权限的值。内存保护机构在每次开始执行应用程序时检查针对应用程序的访问权限。
实施方式1的程序处理装置100提供在访问权限被篡改的情况下无法从正确的入口地址开始执行的结构。因此,在内存保护机构的访问权限被篡改的情况下,无法从应用程序的执行开始地址开始执行。
实施方式1的程序处理装置100在由于故障注入攻击而能够跳过任意处理的攻击环境下,也保证正确地设定内存保护机构的访问权限。实施方式1的程序处理装置100能够保证确认内存保护机构的访问权限,禁止不正当地执行应用程序。
根据实施方式1,在基于TEE执行了应用程序的情况下,能够保证内存保护机构的访问权限的值不被篡改。因此,从应用程序参照其他应用程序的执行开始地址(配置有其他应用程序的内存地址)这样的攻击不成立。
此外,根据实施方式1,能够防止针对内存保护机构的故障注入攻击。
***实施方式1的特征***
程序处理装置100是对使用入口地址和与入口地址对应的设定值的应用程序进行处理的信号处理装置。
程序处理装置具有存储有将复制设定值而得到的保存值、存储设定值的存储器的标识符和入口地址对应起来的配置数据的存储部。
入口地址屏蔽部110在执行应用程序120之前执行以下的屏蔽处理。
1.生成使用配置数据121的保存值对配置数据121的入口地址进行了屏蔽的伪入口地址。
2.将应用程序120使用的入口地址置换为伪入口地址。
内存监视部111在执行应用程序120的过程中,判定是否载入了伪入口地址。
在内存监视部111判定为载入了伪入口地址的情况下,入口地址去屏蔽部112执行以下的去屏蔽处理。
1.从存储器105载入设定值,生成使用设定值对伪入口地址进行了去屏蔽的新入口地址。
2.将伪入口地址置换为新入口地址。
***实施方式1的效果***
根据实施方式1的程序处理装置100,根据配置数据121对应用程序120应用由屏蔽处理和去屏蔽处理构成的对策,执行应用程序120。其结果是,如果保存值和设定值不一致,则无法进行针对入口地址的正确迁移。由此,在针对入口地址的迁移成功的情况下,能够保证在存储器中存储有正确的设定值。
***其他实施例的说明***
也可以是,屏蔽处理应用使用了秘密秘钥的加密处理,去屏蔽处理应用使用了秘密秘钥的解密处理。
例如,在入口地址的屏蔽处理中,步骤S141所示的伪入口地址的计算式也可以是以下这样的式(3)。
Addr[mask]=Addr[raw](+)Enc(data[0],key)(+)...(+)Enc(data[n],key)式(3)
这里,Enc()和key分别表示加密处理和秘密秘钥。Enc(data[0],key)是利用秘密秘钥key对data[0]进行加密。加密处理也可以使用AES、RSA(注册商标)这样的加密。
在将入口地址的屏蔽处理置换为式(3)来代替式(1)的情况下,需要如下置换步骤S180所示的去屏蔽处理。
Addr[raw]=Addr[mask](+)Enc(data[0],key)(+)...(+)Enc(data[n],key)式(4)
AES是Advanced Encryption Standard(高级加密标准)的简称。
RSA(注册商标)是Rivest-Shamir-Adleman cryptosystem的简称。
***其他实施例的说明***
也可以是,屏蔽处理将入口地址设为数据,将保存值设为秘密秘钥,对入口地址进行加密,生成伪入口地址,去屏蔽处理将伪入口地址设为数据,将设定值设为秘密秘钥,对新入口地址进行解密。
例如,在入口地址的屏蔽处理中,步骤S141所示的屏蔽后的入口地址的计算式也可以是以下这样的式(5)。
Addr[mask]=Enc(...Enc(Enc(Addr[raw],data[0]),data[1])...,data[n]) 式(5)
Enc(Addr[raw],data[0])是利用秘钥data[0]对Addr[raw]进行加密。
Enc(Enc(Addr[raw],data[0]),data[1])是进一步利用秘钥data[1]对利用秘钥data[0]对Addr[raw]进行加密的内容进行加密。
式(5)是给出原来的入口地址作为加密处理的数据且给出保存值作为秘钥的处理。进而,将这样得到的加密结果设为数据,反复将保存值设为秘钥来进行加密。
在将入口地址的屏蔽处理置换为式(5)来代替式(1)的情况下,需要如下置换步骤S180所示的去屏蔽处理。
Addr[raw]=Dec(...Dec(Dec(Addr[mask],data[n]),data[n-1])...,data[0])式(6)
Dec(Addr[mask],data[n]是利用秘钥data[n]对Addr[mask]进行解密。
Dec(Dec(Addr[mask],data[n]),data[n-1])是进一步利用秘钥data[n-1]对利用秘钥data[n]对Addr[mask]进行解密的内容进行解密。
这里,Dec是与式(5)所示的Enc成对的解密处理。希望注意到,以与加密处理相反的顺序给出data[i]。根据这种特征,由式(5)和式(6)实现的入口地址的屏蔽处理和去屏蔽处理中使用的加密必须是公共秘钥加密。例如,可以是AES、KCiper-2这样的块加密或流加密。
***其他实施例的说明***
迁移命令也可以不是跳转命令,也可以是GOTO命令、CALL命令、RETURN命令,还可以是函数执行命令、子例程执行命令。
***其他实施例的说明***
应用程序120和配置数据121也可以经由输入输出接口104从外部供给,而不是从存储装置103供给。
***其他实施例的说明***
入口地址屏蔽部110也可以在配置数据121的入口地址设定通过载入命令和跳转命令的检索结果而判明的作为迁移目的地的内存地址。
***其他实施例的说明***
也可以将实施方式1的程序处理装置100用于安全引导的保护。
在安全引导中,在引导码的散列值的检查处理后,迁移到引导码的起动处理。在故障注入攻击中,跳过该散列值的检查处理,以不正当的引导码进行起动。
在将实施方式1的程序处理装置100应用于安全引导的保护的情况下,将设定值和保存值设为引导码的散列值且将入口地址设为引导码的执行开始地址即可。
设定值=保存值=引导码的散列值
入口地址=引导码的执行开始地址
根据实施方式1的程序处理装置100,如果作为保存值的引导码的散列值和作为设定值的引导码的散列值不一致,则无法迁移到引导码正确的执行开始地址。
***其他实施例的说明***
也可以将实施方式1的程序处理装置100用于认证检查处理的保护。
在认证检查处理中,从用户接收密码,进行密码验证,在密码正确的情况下,转移到认证后的处理。在故障注入攻击中,跳过密码验证,不正当地执行认证后的处理。
在将实施方式1的程序处理装置100应用于认证检查处理的保护的情况下,将设定值和保存值设为密码验证结果的值且将入口地址设为认证后的处理的执行开始地址即可。
设定值=保存值=密码验证结果的值
入口地址=认证后的处理的执行开始地址
根据实施方式1的程序处理装置100,如果作为保存值的密码验证结果的值和作为设定值的密码验证结果的值不一致,则无法迁移到密码认证后的正确的执行开始地址。
实施方式2
在实施方式2中,对与实施方式1不同之处进行说明。
实施方式2的程序处理装置200从输入输出接口104取得应用程序120的程序代码140。程序处理装置200生成全部仅通过软件实现程序处理装置100的动作的应用程序120。具体而言,程序处理装置200针对程序代码140应用故障注入攻击对策,生成对策完毕执行模块。
***结构的说明***
根据图6对程序处理装置200的结构进行说明。
程序处理装置200是具有处理器101、主存储内存102和输入输出接口104的计算机。这些硬件经由信号线彼此连接。
输入输出接口104是输入输出用的接口。例如,输入输出接口104是串行通信接口或网络接口。串行通信接口的具体例是SPI、UART或I2C。网络接口的具体例是Ethernet(注册商标)。
处理器101具有迁移确定部210、入口地址屏蔽部211、去屏蔽处理追加部212和代码生成部213这样的要素。迁移确定部210、入口地址屏蔽部211、去屏蔽处理追加部212和代码生成部213作为主存储内存102中存储的软件来实现。
输入输出接口104从外部接收应用程序120的程序代码140和实施方式1所示的配置数据121。此外,输入输出接口104将程序处理装置200生成的对策完毕执行模块发送到外部。
对策程序122是对应用程序120的安全性进行强化的程序。
对策程序122是实现迁移确定部210、入口地址屏蔽部211、去屏蔽处理追加部212和代码生成部213的功能的程序。
对策程序122是对程序代码140进行编集的编辑器,程序代码140是对策程序122编集的数据。
图6示出对策程序122作为对程序代码140进行编集的数据被读入到主存储内存102的状态。
***动作的说明***
根据图7对程序处理装置200的动作进行说明。
在步骤S210中,处理器101经由输入输出接口104接收应用程序120的程序代码140和配置数据121,读入到主存储内存102。
配置数据121与图2所示的配置数据相同。
在步骤S220中,入口地址屏蔽部211选择配置数据121的一个对。
在步骤S230中,入口地址屏蔽部211确认是否处理完全部对。在处理完全部对的情况下,执行步骤S250。在不是这样的情况下,执行步骤S240。
在步骤S240中,入口地址屏蔽部211对程序代码140实施入口地址的屏蔽处理,入口地址屏蔽部211追加入口地址的去屏蔽处理。
根据图8对步骤S240的处理进行说明。
步骤S240的处理的大部分与实施方式1的屏蔽处理(图4)相同。具体而言,步骤S241、步骤S242、步骤S243、步骤S244分别对应于步骤S141、步骤S142、步骤S143、步骤S144。但是,不同之处在于,在实施方式1中,应用对策的对象是执行开始紧前的执行模块130,在实施方式2中,应用对策的对象是程序代码140。
●屏蔽处理
在步骤S241中,入口地址屏蔽部211使用保存值,通过式(1)计算屏蔽后的入口地址。下面,将屏蔽后的入口地址称作伪入口地址。
图9示出入口地址屏蔽部110修改后的配置数据121。图9的配置数据121与图5所示的配置数据相同。
在步骤S242中,迁移确定部210从程序代码140中搜索针对入口地址的跳转命令。具体而言,迁移确定部210从程序代码140中寻找将入口地址的值载入到寄存器的处理和该处理后存在的跳转命令。
在图9的(a)的程序代码140的情况下,在第1行中在变量X存储有值“500”,在第2行载入变量X的值“500”,利用第3行的跳转命令跳转到内存地址200。入口地址屏蔽部211检测第3行的跳转命令。
在步骤S243中,入口地址屏蔽部211验证是否搜索完针对入口地址的全部跳转命令。在搜索完针对入口地址的全部跳转命令的情况下结束。在不是这样的情况下,执行步骤S244。
在步骤S244中,入口地址屏蔽部211利用在步骤S241中计算出的伪入口地址置换通过迁移确定部210寻找到的载入命令而载入的入口地址。具体而言,利用伪入口地址置换程序代码140的变量中设定的数据。
在图9的(a)的程序代码140的情况下,入口地址屏蔽部211利用伪入口地址的值“756”置换变量X中设定的值“500”(图9的(b))。
对作为与实施方式1的不同之处的步骤S245进行说明。
在步骤S245中,去屏蔽处理追加部212在步骤S242中确定的针对入口地址的跳转命令的紧前,在程序代码140中追加使用设定值对伪入口地址进行去屏蔽的去屏蔽处理。具体而言,利用与程序代码140相同的语言描述基于式(2)的去屏蔽处理代码,追加到程序代码140中。
在图9的(c)的情况下,去屏蔽处理追加部212追加从存储器“Reg1”将设定值“1000”载入到变量Z的载入命令“LOAD Reg1 to Z”、以及根据式(2)计算新入口地址的计算式“X=(x)(+)hash(Z)”。因此,在执行去屏蔽处理代码后,成为原来的入口地址=新入口地址。
入口地址的屏蔽处理是基于式(1)的处理,也可以是式(3)或式(5)中的任意一方的处理。
在入口地址屏蔽部211进行了式(3)或式(5)所示的屏蔽处理的情况下,去屏蔽处理追加部212追加式(4)或式(6)所示的去屏蔽处理代码。基于去屏蔽处理代码的去屏蔽处理必须是与屏蔽处理对应的处理。
在步骤S250中,代码生成部213对在步骤S245中追加的多个去屏蔽处理代码进行整理,删除不需要的去屏蔽处理代码。
例如,在应用程序120在多处向同一应用程序迁移的情况下,去屏蔽处理代码成为相同的代码,相同的去屏蔽处理代码是冗余的,成为不需要的处理。因此,以应用程序120向同一应用程序迁移的重复量删除去屏蔽处理。
在图10的情况下,设Pair1的伪入口地址“756”是应用程序120要迁移的其他应用程序P1的伪入口地址。设为在应用程序120中存在有在2处向应用程序P1迁移的描述。应用程序P1的设定值“1000”存储于Reg1。图10的2个去屏蔽处理代码相同。代码生成部213将2个去屏蔽处理代码汇集成1个公共例程FUNC,在跳转命令之前追加执行公共例程FUNC的CALL命令。
此外,在配置数据121中存储的“设定值的存储器”是全部相同的存储器的情况下,去屏蔽处理代码成为相同的代码,相同的去屏蔽处理代码是冗余的,成为不需要的处理。因此,以由配置数据指定的“设定值的存储器”的重复量删除去屏蔽处理。
非专利文献1所示的故障注入攻击的目标是内存保护机构的特殊寄存器中存储的访问权限的再次设定。或者,故障注入攻击使处理器101的计算处理产生错误而跳过应用程序切换时的内存保护机构针对特殊寄存器的访问权限的再次设定。
在将实施方式2的应用程序120应用于TEE的情况下,设定值是每个应用程序的访问权限的值,访问权限的值的存储目的地是内存保护机构所具有的特殊寄存器。该特殊寄存器针对多个应用是公共的,因此,访问权限的值的存储目的地相同。因此,虽然去屏蔽处理代码以向其他应用程序迁移的数量追加到程序代码140中,但是,去屏蔽处理代码成为从公共的特殊寄存器载入访问权限的值并进行去屏蔽这样的相同代码。去除该冗余的去屏蔽处理代码的处理是步骤S250的效果。
在图11的情况下,设内存保护机构具有的特殊寄存器是存储器“Reg1”。设Pair1的伪入口地址“756”是应用程序120要迁移的其他应用程序P1的伪入口地址。设Pair2的伪入口地址“600”是应用程序120要迁移的其他应用程序P2的伪入口地址。设在应用程序120中存在向应用程序P1和应用程序P2迁移的描述。在向应用程序P1迁移时和向应用程序P2迁移时,由于访问权限的值存储于内存保护机构具有的特殊寄存器“Reg1”,因此,Pair1和Pair2的2个去屏蔽处理代码相同。代码生成部213将2个去屏蔽处理代码汇集成1个公共例程FUNC,在跳转命令之前追加执行公共例程FUNC的CALL命令。
在步骤S260中,代码生成部213将实施了对策的程序代码140设为执行模块130,经由输入输出接口104将执行模块130发送到外部。
执行模块130是入口地址被置换为伪入口地址的程序。
执行模块130是在访问伪入口地址之前使计算机执行以下的处理的程序。
1.从存储器载入设定值并生成使用设定值对伪入口地址进行了去屏蔽的新入口地址的处理
2.将伪入口地址置换为新入口地址的处理
迁移确定部210的处理是步骤S242。
入口地址屏蔽部211的处理是步骤S210、步骤S2220、步骤S230、步骤S241和步骤S244。
去屏蔽处理追加部212的处理是步骤S245。
代码生成部213的处理是步骤S250和步骤S260。
***实施方式2的特征***
实施方式2的程序处理装置200是在生成程序时进行入口地址的屏蔽处理且在程序代码中嵌入去屏蔽处理代码的程序代码生成装置。
程序处理装置200具有存储有将复制设定值而得到的保存值、存储有设定值的存储器和程序代码140正在使用的入口地址对应起来的配置数据121的存储部。
迁移确定部210根据程序代码140确定向入口地址迁移的迁移命令。
入口地址屏蔽部211执行以下的屏蔽处理。
1.生成使用保存值对配置数据121的入口地址进行了屏蔽的伪入口地址。
2.将程序代码140正在使用的入口地址置换为伪入口地址。
去屏蔽处理追加部212在由迁移确定部210确定的迁移命令的紧前追加以下的去屏蔽处理代码。
1.从存储器105载入设定值并生成使用设定值对伪入口地址进行了去屏蔽的新入口地址的代码。
2.执行使用了新入口地址的去屏蔽处理的去屏蔽处理代码。
***实施方式2的效果***
程序处理装置200根据配置数据121对应用程序120应用对策,生成对策完毕代码,由此,能够仅通过软件实现与实施方式1相同的对策,不需要内存监视部111。
此外,从对策完毕代码中去除冗余的去屏蔽处理代码。
***其他实施例的说明***
程序处理装置200处理的程序代码140是去屏蔽处理追加部212能够追加去屏蔽处理代码的程序代码即可。
程序代码140也可以是执行模块的代码、源代码、脚本代码、中间代码、HTML(超文本标记语言)文本或其他代码。
实施方式3
在实施方式3中,对与实施方式1和2不同之处进行说明。
在实施方式3中,对入口地址不是迁移目的地的内存地址而是参照目的地的内存地址的情况进行说明。
在实施方式3中,使用图12的配置数据121。图12的配置数据121与图5的配置数据121相同。
●屏蔽处理
在图12的(a)的执行模块130的情况下,在内存地址500存储有值“333”,通过内存地址110的载入命令而载入内存地址500的值“333”,通过内存地址120的比较命令对变量X的值和值“333”进行比较。入口地址屏蔽部110参照配置数据121的入口地址,检测参照入口地址“500”的载入命令。内存地址110的载入命令载入内存地址500的值“333”,因此,入口地址屏蔽部110检测内存地址110的载入命令。
入口地址屏蔽部110利用伪入口地址的值“756”置换内存地址100中存储的值“500”(图12的(b))。
●监视处理
处理器101执行图12的(b)的应用程序120。内存监视部111开始监视图12的(b)的应用程序120。
内存监视部111在执行应用程序120的过程中,参照配置数据121的伪入口地址,确认伪入口地址是否载入到处理器101的运算寄存器。
在图12的(b)的应用程序120的情况下,内存监视部111检测在执行内存地址110时载入了伪入口地址的值“756”的情况,中断执行应用程序120。
●去屏蔽处理
在检测到载入了伪入口地址的值“756”时,入口地址去屏蔽部112访问与伪入口地址的值“756”对应的Reg1,载入设定值“1000”。
入口地址去屏蔽部112计算新入口地址500=756(+)hash(1000)。入口地址去屏蔽部112执行载入新入口地址500的值的命令“LOAD(500)”。
在图12的(c)的情况下,原来的入口地址500=新入口地址500。应用程序120能够对入口地址“500”的值{333}和变量X的值进行比较。
如上所述,程序处理装置100处理的入口地址也可以不是迁移目的地内存地址,而是参照目的地内存地址。
程序处理装置200处理的入口地址也可以不是迁移目的地内存地址,而是参照目的地内存地址。
根据实施方式3,使入口地址成为参照目的地内存地址,由此,能够防止针对参照目的地内存地址中存储的数据的不正当访问。
以上说明了多个实施方式,但是,也可以组合实施这些实施方式中的若干个实施方式。或者,也可以组合实施这些实施方式的一部分。
标号说明
100:程序处理装置;101:处理器;102:主存储内存;103:存储装置;104:输入输出接口;105:存储器;110:入口地址屏蔽部;111:内存监视部;112:入口地址去屏蔽部;120:应用程序;121:配置数据;122:对策程序;130:执行模块;140:程序代码;200:程序处理装置;210:迁移确定部;211:入口地址屏蔽部;212:去屏蔽处理追加部;213:代码生成部。

Claims (11)

1.一种程序处理装置,该程序处理装置具有:
存储部,其存储有将复制设定值而得到的保存值、存储所述设定值的存储器和入口地址对应起来的配置数据;
入口地址屏蔽部,其在执行应用程序之前执行如下的屏蔽处理:生成使用所述保存值对所述配置数据的所述入口地址进行了屏蔽的伪入口地址,并将所述应用程序正在使用的入口地址置换为所述伪入口地址;
内存监视部,其在执行所述应用程序的过程中,判定是否载入了所述伪入口地址;以及
入口地址去屏蔽部,其在所述内存监视部判定为载入了所述伪入口地址的情况下,执行如下的去屏蔽处理:从所述存储器载入所述设定值,生成使用所述设定值对所述伪入口地址进行了去屏蔽的新入口地址,并将所述伪入口地址置换为所述新入口地址。
2.一种程序处理装置,该程序处理装置具有:
存储部,其存储有将复制设定值而得到的保存值、存储所述设定值的存储器和入口地址对应起来的配置数据;
迁移确定部,其根据程序代码确定向所述入口地址迁移的迁移命令;
入口地址屏蔽部,其执行如下的屏蔽处理:生成使用所述保存值对所述配置数据的所述入口地址进行了屏蔽的伪入口地址,并将所述程序代码正在使用的入口地址置换为所述伪入口地址;以及
去屏蔽处理追加部,其在由所述迁移确定部确定的所述迁移命令的紧前追加去屏蔽处理代码,该去屏蔽处理代码执行如下的去屏蔽处理:从所述存储器载入所述设定值,并生成使用所述设定值对所述伪入口地址进行了去屏蔽的新入口地址。
3.根据权利要求1或2所述的程序处理装置,其中,
所述保存值是内存保护机构针对内存设定的设定值,
所述存储器是内存保护机构利用的寄存器或内存。
4.根据权利要求1~3中的任意一项所述的程序处理装置,其中,
所述入口地址是在Trusted Execution Environment(TEE)中进行动作的应用的入口地址。
5.根据权利要求1~4中的任意一项所述的程序处理装置,其中,
所述屏蔽处理和所述去屏蔽处理应用加密的散列函数、非加密的散列函数和通用散列函数中的任意一方。
6.根据权利要求1~4中的任意一项所述的程序处理装置,其中,
所述屏蔽处理应用使用了秘密秘钥的加密处理,
所述去屏蔽处理应用使用了秘密秘钥的解密处理。
7.根据权利要求1~4中的任意一项所述的程序处理装置,其中,
所述屏蔽处理是将所述入口地址设为数据,将所述保存值设为秘密秘钥,对所述入口地址进行加密,生成所述伪入口地址,
所述去屏蔽处理是将所述伪入口地址设为数据,将所述设定值设为秘密秘钥,对所述新入口地址进行解密。
8.根据权利要求2所述的程序处理装置,其中,
所述程序处理装置具有代码生成部,该代码生成部删除由所述去屏蔽处理追加部增加的冗余的去屏蔽处理,生成程序代码。
9.一种程序处理方法,其中,
在执行应用程序之前,生成使用复制存储器中存储的设定值而得到的保存值对所述应用程序正在使用的入口地址进行了屏蔽的伪入口地址,并将所述入口地址置换为所述伪入口地址,
在执行所述应用程序的过程中,在载入了所述伪入口地址的情况下,从所述存储器载入所述设定值,生成使用所述设定值对所述伪入口地址进行了去屏蔽的新入口地址,并将所述伪入口地址置换为所述新入口地址。
10.一种程序,该程序使计算机执行以下处理:
屏蔽处理,在执行应用程序之前,生成使用复制存储器中存储的设定值而得到的保存值对所述应用程序正在使用的入口地址进行了屏蔽的伪入口地址,并将所述入口地址置换为所述伪入口地址;
以及
去屏蔽处理,在执行所述应用程序的过程中,在载入了所述伪入口地址的情况下,从所述存储器载入所述设定值,生成使用所述设定值对所述伪入口地址进行了去屏蔽的新入口地址,并将所述伪入口地址置换为所述新入口地址。
11.一种程序,该程序将入口地址置换为伪入口地址,其中,所述程序使计算机在访问伪入口地址之前执行以下处理:
从存储器载入设定值,生成使用设定值对伪入口地址进行了去屏蔽的新入口地址的处理;以及
将伪入口地址置换为新入口地址的处理。
CN202180093574.6A 2021-02-19 2021-02-19 程序处理装置、程序处理方法和程序 Pending CN116868176A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/006409 WO2022176164A1 (ja) 2021-02-19 2021-02-19 プログラム処理装置、プログラム処理方法、及び、プログラム

Publications (1)

Publication Number Publication Date
CN116868176A true CN116868176A (zh) 2023-10-10

Family

ID=81215081

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180093574.6A Pending CN116868176A (zh) 2021-02-19 2021-02-19 程序处理装置、程序处理方法和程序

Country Status (4)

Country Link
US (1) US20230334149A1 (zh)
JP (1) JP7031070B1 (zh)
CN (1) CN116868176A (zh)
WO (1) WO2022176164A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS513745A (zh) * 1974-06-28 1976-01-13 Tokyo Shibaura Electric Co
US8006078B2 (en) * 2007-04-13 2011-08-23 Samsung Electronics Co., Ltd. Central processing unit having branch instruction verification unit for secure program execution
JP4989418B2 (ja) * 2007-10-26 2012-08-01 三菱電機株式会社 プログラム変換装置及びプログラム及びプログラム変換方法
US10289842B2 (en) * 2015-11-12 2019-05-14 Samsung Electronics Co., Ltd. Method and apparatus for protecting kernel control-flow integrity using static binary instrumentation

Also Published As

Publication number Publication date
JP7031070B1 (ja) 2022-03-07
JPWO2022176164A1 (zh) 2022-08-25
US20230334149A1 (en) 2023-10-19
WO2022176164A1 (ja) 2022-08-25

Similar Documents

Publication Publication Date Title
CN111052115B (zh) 取决于调用路径的认证的数据处理装置和方法
US9363087B2 (en) End-to-end security for hardware running verified software
US8417968B2 (en) Secure repository with layers of tamper resistance and system and method for providing same
US8225105B2 (en) Method and apparatus for verifying integrity of computer system vital data components
US7370319B2 (en) System and method for regulating execution of computer software
KR101216995B1 (ko) 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법
US20090144561A1 (en) Method and System for Software Protection Using Binary Encoding
EP1366404B1 (en) Digital data protection arrangement
US20170124322A1 (en) A computer implemented method and a system for controlling dynamically the execution of a code
US8225290B2 (en) Systems and methods for regulating execution of computer software
KR970049730A (ko) 신뢰된 소오스로부터의 검사 불가능한 프로그램을 사용하는 장치로 검사 가능한 프로그램을 실행하기 위한 시스템 및 방법
CN107430650B (zh) 保护计算机程序以抵御逆向工程
US20160055331A1 (en) Detecting exploits against software applications
EP3642721A1 (en) A cache unit useful for secure execution
US9256731B2 (en) System, information processing apparatus, secure module, and verification method
Bukasa et al. Let's shock our IoT's heart: ARMv7-M under (fault) attacks
Basnight Firmware counterfeiting and modification attacks on programmable logic controllers
Yang et al. Arm pointer authentication based forward-edge and backward-edge control flow integrity for kernels
CN114816549B (zh) 一种保护bootloader及其环境变量的方法及系统
CN116868176A (zh) 程序处理装置、程序处理方法和程序
Msgna et al. Secure application execution in mobile devices
US20160344753A1 (en) Method for instruction set morphing to inhibit malicious code injection
US20230161863A1 (en) Method for executing a software program by a processing unit comprising a compilation phase
Lopez et al. Hardware root-of-trust based integrity for shared library function pointers in embedded systems
Buquerin Security Evaluation for the Real-time Operating System VxWorks 7 for Avionic Systems

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