CN112507399A - 一种固件和用户程序隔离保护方法及终端 - Google Patents

一种固件和用户程序隔离保护方法及终端 Download PDF

Info

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
Application number
CN202011440657.1A
Other languages
English (en)
Other versions
CN112507399B (zh
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.)
Fujian Fuchang Weikong Electronic Technology Co ltd
Original Assignee
Fuzhou Wecon Electronic Technology Co ltd
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 Fuzhou Wecon Electronic Technology Co ltd filed Critical Fuzhou Wecon Electronic Technology Co ltd
Priority to CN202011440657.1A priority Critical patent/CN112507399B/zh
Publication of CN112507399A publication Critical patent/CN112507399A/zh
Application granted granted Critical
Publication of CN112507399B publication Critical patent/CN112507399B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/74Protecting 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure 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异常切换回用户态,完成固件的调用。
CN202011440657.1A 2020-12-08 2020-12-08 一种固件和用户程序隔离保护方法及终端 Active CN112507399B (zh)

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)

* Cited by examiner, † Cited by third party
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 中兴通讯股份有限公司 一种固件的安全升级方法、装置及计算机可读介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
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.