CN112507399A - 一种固件和用户程序隔离保护方法及终端 - Google Patents
一种固件和用户程序隔离保护方法及终端 Download PDFInfo
- Publication number
- CN112507399A CN112507399A CN202011440657.1A CN202011440657A CN112507399A CN 112507399 A CN112507399 A CN 112507399A CN 202011440657 A CN202011440657 A CN 202011440657A CN 112507399 A CN112507399 A CN 112507399A
- Authority
- CN
- China
- Prior art keywords
- firmware
- area
- user program
- program
- state
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 14
- 230000006870 function Effects 0.000 claims description 34
- 230000002159 abnormal effect Effects 0.000 claims description 10
- 230000015654 memory Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 3
- 238000002955 isolation Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 15
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000011800 void material Substances 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/74—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 operating in dual or compartmented mode, i.e. at least one secure mode
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供的一种固件和用户程序隔离保护方法及终端,通过将SRAM划分为第一区域、第二区域和第三区域;配置所述第一区域对固件不可写、可读和可执行,对用户程序不可读写和不可执行;配置所述第二区域对固件和用户程序均不可写、可读和可执行;配置所述第三区域对固件可写、可读和不可执行,对用户程序不可写、可读和可执行;固件调用用户程序时,先切换状态到所述第二区域执行再调用用户程序;用户程序调用固件时,先切换状态到所述第二区域执行再调用固件的系统程序,安全性更高,且当PLC死机时,不会影响PLC固件的正常运行。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种固件和用户程序隔离保护方法及终端。
背景技术
目前小型PLC基本采用MCU单片机实现。其中编译型的PLC是将PLC的程序(即用户程序)在PC上编译完成后下载到MCU中执行。
然而现有技术中,由于没有做权限的保护,用户程序可以轻易的读取到MCU所有内存和固件,极易被破解,另外,PLC程序运行错误会影响到固件的正常运行。
因此,需要一种固件和用户程序隔离保护方法及终端,能够提高安全性,且当PLC死机时,不会影响PLC固件的正常运行。
发明内容
(一)要解决的技术问题
为了解决现有技术的上述问题,本发明提供一种固件和用户程序隔离保护方法及终端,能够提高安全性,且当PLC死机时,不会影响PLC固件的正常运行。
(二)技术方案
为了达到上述目的,本发明采用的一种技术方案为:
一种固件和用户程序隔离保护方法,包括步骤:
将SRAM划分为第一区域、第二区域和第三区域;
配置所述第一区域对固件不可写、可读和可执行,对用户程序不可读写和不可执行;
配置所述第二区域对固件和用户程序均不可写、可读和可执行;
配置所述第三区域对固件可写、可读和不可执行,对用户程序不可写、可读和可执行;
固件调用用户程序时,先切换状态到所述第二区域执行再调用用户程序;
用户程序调用固件时,先切换状态到所述第二区域执行再调用固件的系统程序。
为了达到上述目的,本发明采用的一种技术方案为:
一种固件和用户程序隔离保护终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
将SRAM划分为第一区域、第二区域和第三区域;
配置所述第一区域对固件不可写、可读和可执行,对用户程序不可读写和不可执行;
配置所述第二区域对固件和用户程序均不可写、可读和可执行;
配置所述第三区域对固件可写、可读和不可执行,对用户程序不可写、可读和可执行;
固件调用用户程序时,先切换状态到所述第二区域执行再调用用户程序;
用户程序调用固件时,先切换状态到所述第二区域执行再调用固件的系统程序。
(三)有益效果
本发明的有益效果在于:通过将SRAM划分为第一区域、第二区域和第三区域;配置所述第一区域对固件不可写、可读和可执行,对用户程序不可读写和不可执行;配置所述第二区域对固件和用户程序均不可写、可读和可执行;配置所述第三区域对固件可写、可读和不可执行,对用户程序不可写、可读和可执行;固件调用用户程序时,先切换状态到所述第二区域执行再调用用户程序;用户程序调用固件时,先切换状态到所述第二区域执行再调用固件的系统程序,安全性更高,且当PLC死机时,不会影响PLC固件的正常运行。
附图说明
图1为本发明实施例的固件和用户程序隔离保护方法的流程图;
图2为本发明实施例的固件和用户程序隔离保护终端的整体结构示意图。
【附图标记说明】
1:固件和用户程序隔离保护终端;
2:存储器;
3:处理器。
具体实施方式
为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。
实施例一
请参照图1,一种固件和用户程序隔离保护方法,包括步骤:
将SRAM划分为第一区域、第二区域和第三区域;
配置所述第一区域对固件不可写、可读和可执行,对用户程序不可读写和不可执行;
配置所述第二区域对固件和用户程序均不可写、可读和可执行;
配置所述第三区域对固件可写、可读和不可执行,对用户程序不可写、可读和可执行;
固件调用用户程序时,先切换状态到所述第二区域执行再调用用户程序;
用户程序调用固件时,先切换状态到所述第二区域执行再调用固件的系统程序。
所述的固件调用用户程序时,先切换状态到所述第二区域执行再调用用户程序具体为:
固件调用用户程序时,先通过SVC异常切换到用户态,新建与所述用户态相对应的第一堆栈;
将要调用的用户程序的地址和参数压入所述第一堆栈中,并调用所述第二区域的第一函数执行所述用户程序;
执行完成后,将返回值作为SVC异常的参数,SVC异常切换回特权态,完成用户程序的调用。
所述的用户程序调用固件时,先切换状态到所述第二区域执行再调用固件具体为:
用户程序调用固件时,先调用SVC异常切换到特权态,新建与所述特权态相对应的第二堆栈;
将要调用的系统程序的编号和参数压入所述第二堆栈中,并调用所述第二区域的第二函数执行所述系统程序;
执行完成后,将执行结果作为SVC异常的参数,SVC异常切换回用户态,完成固件的调用。
实施例二
本实施例和实施例一的区别在于,本实施例将结合具体的应用场景,进一步说明本发明上述固件和用户程序隔离保护方法是如何实现的:
1、MPU的配置
(1)将SRAM分为3个区域A(第一区域)、B(第二区域)和C(第三区域)区域;
(2)将A区域设置为固件不可写,可读,可执行,梯形图(用户程序)不可以读写执行;
(3)将B区域设置为固件和梯形图不可写,可读,可执行
(4)将C区域设置为固件可以写,可以读,不可执行,梯形图不可写,可读,可执行;
(5)通过A区域的配置,使得梯形图无法访问和执行固件的系统程序;
(6)通过C区域的配置,使得固件可以更新梯形图程序,但是不可以直接执行梯形图程序。由于用户程序仅能在C区域执行,在C区域是固件(特权态)不能执行的程序。从而保证梯形图不会在特权态执行,从而限制其访问;
(7)B区域作为固件和梯形图都可以执行的区域,作用在于提供固件和梯形图程序相互切换区域。固件要切换到梯形图先切换状态到此区域执行再调用梯形图。梯形图要切换回固件,先切换到此区域再切换到固件。
2、PLC固件调用PLC程序的执行
(1)由于固件无法直接调用执行梯形图,所以通过SVC的异常来进行切换;
(2)本流程的目的在于:通过SVC异常保存特权态当前寄存器到特权态的栈,并且新建一个用户态的梯形图栈用于执行用户程序,SVC退出后使用梯形图栈执行梯形图,梯形图执行完成后返回亦然。
(3)PLC固件调用SVC异常,设置异常退出后切换到用户态;
(4)新建一个空的用户态栈UserStack(第一堆栈),此栈为向下生长的栈;
(5)设置UserStack[0]为调用特权态要调用的梯形图函数的地址;
(6)设置UserStack[-1]为调用特权态要调用的梯形图函数的参数;
(7)设置UserStack[-6]为定义在B区域的函数,为异常退出后执行的函数CallUserAppInPSP;
(8)将UserStack设置为系统的用户态的栈;
(9)设置异常退出后切换到用户态,并使用用户态栈;
(10)通过5-9的设置,使得异常退出后处于用户态,使用UserStack为用户态的栈,调用位于内存B区域的CallUserAppInPSP(void*userapp,void*param)函数(第一函数);
(11)由于ARM CPU特性,UserStack[0]即为形参userapp的值,UserStack[-1]为形参param的值;
(12)CallUserAppInPSP函数中将实际调用UserStack[0]执行;
(13)当梯形图函数执行完成后,返回CallUserAppInPSP;
(14)CallUserAppInPSP调用SVC异常,并将返回值作为SVC异常的参数;
(15)将系统栈SysStack[0]设置为UserStack[0],即为SVC异常的返回值;
(16)设置SVC异常返回后为特权态,使用特权态栈;
(17)SVC异常返回;
(18)结束。
3、PLC程序调用固件的提供的功能函数
(1)由于梯形图无法直接调用固件的程序,所以通过一个SVC异常来进行CPU特权态的切换和栈的切换。从而让梯形图可以调用固件提供的功能。
(2)PLC程序调用位于B区域的SystemCallInPSP函数,并将要调用的系统函数的编号,系统函数的参数作为函数SystemCallInPSP的参数
(3)SystemCallInPSP调用SVC异常,将要调用的函数编号和参数作为SVC参数;
(4)SVC异常中,新建一个特权态的栈SysStack2(第二堆栈),此栈为向下生长的栈。
(5)将SysStack2[0]设置为调用的系统函数的编号;
(6)将SysStack2[-1]设置为调用的系统函数的参数;
(7)设置SysStack2[-6]为定义在B区域的函数,为异常退出后执行的函数SystemCallInMSP;
(8)将系统的特权态的栈从SysStack改为SysStack2;
(9)通过5-8的设置,使得异常退出后切换到特权态,并使用特权态栈,执行位于B区域的函数SystemCallInMSP(第二函数);
(10)SystemCallInMSP根据系统函数的编号,执行对应的函数。
(11)执行完成后,调用SVC异常,并将执行结果作为SVC异常的参数。
(12)将用户栈UserStack[0]设置为SysStack2[0];
(13)将系统特权态栈重新设置回SysStack;
(14)设置SVC异常返回后为用户态,使用用户态栈。
(15)异常返回SystemCallInPSP;
(16)结束。
4、SVC异常如何传递参数和返回值
(1)根据AAPCS(Arm Procedure Call Standard)的规定;
(2)函数的参数0,1,2的值存储在寄存器R0,R1,R2。
(3)函数的返回值也存储在寄存器R0
(4)所以
__asm int SVC_0(int returnval)
{
SVC 0
BX LR//NEVER EXECUTE
}
参数returnval将保存在R0,进入SVC异常后,可以通过异常前的栈的栈顶来访问。
当调用SVC异常后,如果SVC异常通过修改异常前的栈的栈顶的值,则此时R0为修改后的栈顶的值。当BX LR时,R0则作为函数SVC_0的返回值。
5、SVC自动入栈
(1)根据ARM参考手册的定义,当进入异常后,R0-R3,R12,LR,PC,xPSR将自动入异常前所使用的栈。这是CPU自动完成的。
实施例三
请参照图2,一种固件和用户程序隔离保护终端1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述程序时实现实施例一中的各个步骤。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种固件和用户程序隔离保护方法,其特征在于,包括步骤:
将SRAM划分为第一区域、第二区域和第三区域;
配置所述第一区域对固件不可写、可读和可执行,对用户程序不可读写和不可执行;
配置所述第二区域对固件和用户程序均不可写、可读和可执行;
配置所述第三区域对固件可写、可读和不可执行,对用户程序不可写、可读和可执行;
固件调用用户程序时,先切换状态到所述第二区域执行再调用用户程序;
用户程序调用固件时,先切换状态到所述第二区域执行再调用固件的系统程序。
2.根据权利要求1所述的固件和用户程序隔离保护方法,其特征在于,所述的固件调用用户程序时,先切换状态到所述第二区域执行再调用用户程序具体为:
固件调用用户程序时,先通过SVC异常切换到用户态,新建与所述用户态相对应的第一堆栈;
将要调用的用户程序的地址和参数压入所述第一堆栈中,并调用所述第二区域的第一函数执行所述用户程序;
执行完成后,将返回值作为SVC异常的参数,SVC异常切换回特权态,完成用户程序的调用。
3.根据权利要求1所述的固件和用户程序隔离保护方法,其特征在于,所述的用户程序调用固件时,先切换状态到所述第二区域执行再调用固件具体为:
用户程序调用固件时,先调用SVC异常切换到特权态,新建与所述特权态相对应的第二堆栈;
将要调用的系统程序的编号和参数压入所述第二堆栈中,并调用所述第二区域的第二函数执行所述系统程序;
执行完成后,将执行结果作为SVC异常的参数,SVC异常切换回用户态,完成固件的调用。
4.一种固件和用户程序隔离保护终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
将SRAM划分为第一区域、第二区域和第三区域;
配置所述第一区域对固件不可写、可读和可执行,对用户程序不可读写和不可执行;
配置所述第二区域对固件和用户程序均不可写、可读和可执行;
配置所述第三区域对固件可写、可读和不可执行,对用户程序不可写、可读和可执行;
固件调用用户程序时,先切换状态到所述第二区域执行再调用用户程序;
用户程序调用固件时,先切换状态到所述第二区域执行再调用固件的系统程序。
5.根据权利要求4所述的固件和用户程序隔离保护终端,其特征在于,所述的固件调用用户程序时,先切换状态到所述第二区域执行再调用用户程序具体为:
固件调用用户程序时,先通过SVC异常切换到用户态,新建与所述用户态相对应的第一堆栈;
将要调用的函数的地址和参数压入所述第一堆栈中,并调用所述第二区域的第一函数执行所述用户程序;
执行完成后,将返回值作为SVC异常的参数,SVC异常切换回特权态,完成用户程序的调用。
6.根据权利要求4所述的固件和用户程序隔离保护终端,其特征在于,所述的用户程序调用固件时,先切换状态到所述第二区域执行再调用固件具体为:
用户程序调用固件时,先调用SVC异常切换到特权态,新建与所述特权态相对应的第二堆栈;
将要调用的系统程序的编号和参数压入所述第二堆栈中,并调用所述第二区域的第二函数执行所述系统程序;
执行完成后,将执行结果作为SVC异常的参数,SVC异常切换回用户态,完成固件的调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011440657.1A CN112507399B (zh) | 2020-12-08 | 2020-12-08 | 一种固件和用户程序隔离保护方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011440657.1A CN112507399B (zh) | 2020-12-08 | 2020-12-08 | 一种固件和用户程序隔离保护方法及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112507399A true CN112507399A (zh) | 2021-03-16 |
CN112507399B CN112507399B (zh) | 2021-09-14 |
Family
ID=74970914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011440657.1A Active CN112507399B (zh) | 2020-12-08 | 2020-12-08 | 一种固件和用户程序隔离保护方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112507399B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101283333A (zh) * | 2005-11-14 | 2008-10-08 | 英特尔公司 | 用于在引导一个分区时维持另一个分区的方法和装置 |
US20100107148A1 (en) * | 2008-10-28 | 2010-04-29 | International Business Machines Corporation | Check-stopping firmware implemented virtual communication channels without disabling all firmware functions |
CN104115154A (zh) * | 2012-02-08 | 2014-10-22 | Arm有限公司 | 当在域之间切换时维持安全数据与不安全访问相隔离 |
CN104462953A (zh) * | 2013-09-16 | 2015-03-25 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN110806883A (zh) * | 2018-08-06 | 2020-02-18 | 中兴通讯股份有限公司 | 一种固件的安全升级方法、装置及计算机可读介质 |
-
2020
- 2020-12-08 CN CN202011440657.1A patent/CN112507399B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101283333A (zh) * | 2005-11-14 | 2008-10-08 | 英特尔公司 | 用于在引导一个分区时维持另一个分区的方法和装置 |
US20100107148A1 (en) * | 2008-10-28 | 2010-04-29 | International Business Machines Corporation | Check-stopping firmware implemented virtual communication channels without disabling all firmware functions |
CN104115154A (zh) * | 2012-02-08 | 2014-10-22 | Arm有限公司 | 当在域之间切换时维持安全数据与不安全访问相隔离 |
CN104462953A (zh) * | 2013-09-16 | 2015-03-25 | 联想(北京)有限公司 | 一种信息处理方法及电子设备 |
CN110806883A (zh) * | 2018-08-06 | 2020-02-18 | 中兴通讯股份有限公司 | 一种固件的安全升级方法、装置及计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112507399B (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109840410B (zh) | 一种进程内数据隔离与保护的方法和系统 | |
US6694457B2 (en) | System and method for monitoring execution of privileged instructions | |
US10545851B2 (en) | Breakpoint insertion into kernel pages | |
US7496738B2 (en) | Method of automatic control of the execution of a program by a microprocessor | |
CN110598405B (zh) | 一种运行时访问控制方法及计算装置 | |
US20140373171A1 (en) | Security protection of software libraries in a data processing apparatus | |
WO2019100897A1 (zh) | 一种应用程序启动方法、启动装置及计算机可读存储介质 | |
EP3864555B1 (en) | Verifying a stack pointer | |
CN104217139A (zh) | 处理系统 | |
CN108388793B (zh) | 一种基于主动防御的虚拟机逃逸防护方法 | |
US9652348B2 (en) | Debugging in a data processing apparatus | |
US20220366037A1 (en) | Domain transition disable configuration parameter | |
CN112507399B (zh) | 一种固件和用户程序隔离保护方法及终端 | |
US20050172138A1 (en) | Providing a flexible protection model in a computer system by decoupling protection from computer privilege level | |
CN102970414B (zh) | 一种基于Android系统的手机密码保护方法 | |
EP1222537B1 (en) | Resource access control system | |
CN111143821B (zh) | 处理器及其原生MPU的SBoot处理方法 | |
CN112363797B (zh) | 一种虚拟机安全运行方法、电子设备及存储介质 | |
EP4073635B1 (en) | Intermodal calling branch instruction | |
CN111523115B (zh) | 信息确定方法、函数调用方法及电子设备 | |
CN113986715A (zh) | 一种处理器的调试方法、系统、系统级芯片 | |
CN115729646A (zh) | 一种electron桌面应用执行脚本的实现方法及实现组件 | |
CN118133295A (zh) | 一种异常检测方法、装置、电子设备及存储介质 | |
KR20100033833A (ko) | 데이터 일관성을 유지하는 데이터 리드 방법 | |
KR20100065086A (ko) | 커널의 서브 시스템별 패치 적용 방법 및 이를 위한 커널 패치 시스템 |
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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 350000 west side of the fifth floor, building 26, area a, Fuzhou Software Park, 89 software Avenue, Gulou District, Fuzhou City, Fujian Province Patentee after: Fujian Fuchang Weikong Electronic Technology Co.,Ltd. Address before: 350000 west side of the fifth floor, building 26, area a, Fuzhou Software Park, 89 software Avenue, Gulou District, Fuzhou City, Fujian Province Patentee before: FUZHOU WECON ELECTRONIC TECHNOLOGY CO.,LTD. |