软件篡改检测方法、装置、系统、电子设备及存储介质与流程

文档序号:32442293发布日期:2022-12-06 22:30阅读:114来源:国知局
软件篡改检测方法、装置、系统、电子设备及存储介质与流程

1.本发明涉及一种软件篡改检测方法、装置、系统、电子设备及存储介质,属于技术领域。


背景技术:

2.在《控制器的安全防护方法、控制器的主芯片及控制器》-cn202110045398.0这篇发明专利中,介绍了随着各种智能系统(例如:汽车智能网联系统)技术的发展,智能系统的控制器(例如:汽车的智能座舱控制器、电机控制器等)面临越来越多的安全威胁;其中,一种安全威胁是非法地篡改控制器中的启动引导程序(bootloader),并用篡改后的启动引导程序进行控制器启动,从而造成系统中的各部件无法正常运行。
3.具体地,如图1所示,现有常规的用于实现控制器安全启动的功能,主要是基于控制器13中的主芯片12来实现;主芯片12,比如是含有安全硬件扩展模块(secure hardware extension,she)的主芯片或含有硬件安全模块(hardware security module,hsm)的主芯片,一般是通过在其微控制单元11(micro controller unit,mcu)所在的片上集成相应的安全模块10(例如:she模块等低配置的安全模块或者hsm模块等高配置的安全模块)来实现,该安全模块10作为微控制单元11的片上外围设备,能够将加密密钥的控制从软件域转移到硬件域,从而保护这些密钥免受软件攻击。
4.基于上述的主芯片12来实现控制器安全启动的方法通常包括以下过程:
5.(1)主芯片的微控制单元获取主芯片中预存的加密密钥和密钥签名;
6.(2)主芯片的微控制单元根据加密密钥生成验证签名,然后安全模块比较密钥签名和验证签名,若密钥签名和验证签名一致,则实现控制器的安全启动。
7.值得注意的是:在实践中发现,并不是所有的控制器都有含有安全硬件扩展模块的主芯片或硬件安全模块的主芯片。如果控制器没有含有安全硬件扩展模块的主芯片或硬件安全模块的主芯片,控制器的安全启动功能将难以实现。
8.因此,需要一种新的控制器安全防护方案,能够保证控制器的安全启动等功能的实现。


技术实现要素:

9.有鉴于此,本发明提供了一种软件篡改检测方法、装置、系统、电子设备及存储介质,其可以实现无安全硬件扩展模块和硬件安全模块的控制器的软件篡改检测功能,进而实现控制器的安全启动。
10.本发明的第一个目的在于提供一种软件篡改检测方法。
11.本发明的第二个目的在于提供一种软件篡改检测装置。
12.本发明的第三个目的在于提供一种软件篡改检测系统。
13.本发明的第四个目的在于提供一种电子设备。
14.本发明的第五个目的在于提供一种存储介质。
15.本发明的第一个目的可以通过采取如下技术方案达到:
16.一种软件篡改检测方法,所述方法包括:
17.基于时间起点,通过监测单元发送第一信号,所述时间起点为任意时间点;
18.接收第一信号,将存在对应程序响应的第一信号发送至校验单元,其中程序为启动引导程序;
19.通过校验单元校验所述程序的完整性,得到校验结果,并基于校验结果,通过校验单元向监测单元发送第二信号;
20.通过监测单元判断第二信号是否符合校验形式,输出判断结果;
21.根据判断结果,实现软件篡改检测。
22.进一步的,所述通过校验单元校验所述程序的完整性,得到校验结果,并基于校验结果,通过校验单元向监测单元发送第二信号,具体包括:
23.计算所述程序的第一完整性度量值;
24.通过所述程序的pub_key验签,得到所述程序的第二完整性度量值;
25.判断第一完整性度量值和第二完整性度量值是否相等,输出校验结果;
26.若校验结果为相等,则通过校验单元向监测单元发送第二信号。
27.进一步的,计算所述程序的第一完整性度量值的算法包括循环冗余校验算法和摘要算法。
28.进一步的,所述第二信号包括方波电信号、正弦波电信号和三角波电信号的其中之一;
29.所述校验形式包括预设时刻为上升沿、预设时刻为下降沿、预设时段为高电平、预设时段为低电平和预设周期值的其中之一。
30.进一步的,所述第一信号为一种类型信号;
31.所述根据判断结果,实现软件篡改检测,具体包括:
32.若判断结果为符合,则说明软件没有被篡改;
33.若判断结果为不符合,则说明软件被篡改。
34.进一步的,所述第一信号为多种类型信号的其中之一;
35.所述根据判断结果,实现软件篡改检测,具体包括:
36.若判断结果为符合,则基于类型信号的种类数,返回通过监测单元发送下一种第一信号,并执行后续操作;
37.若判断结果为不符合,则说明软件被篡改;
38.若所有类型信号的判断结果均为符合,则说明软件没有被篡改。
39.本发明的第二个目的可以通过采取如下技术方案达到:
40.一种软件篡改检测装置,所述装置包括:
41.第一发送模块,用于基于时间起点,通过监测单元发送第一信号,所述时间起点为任意时间点;
42.第二发送模块,用于接收第一信号,将存在对应程序响应的第一信号发送至校验单元,其中程序为启动引导程序;
43.第三发送模块,用于通过校验单元校验所述程序的完整性,得到校验结果,并基于校验结果,通过校验单元向监测单元发送第二信号;
44.判断模块,用于通过监测单元判断第二信号是否符合校验形式,输出判断结果;
45.检测模块,用于根据判断结果,实现软件篡改检测。
46.本发明的第三个目的可以通过采取如下技术方案达到:
47.一种软件篡改检测系统,所述系统包括监测单元、校验单元和控制器,所述监测单元与校验单元连接,所述控制器与监测单元、校验单元连接;
48.所述控制器,用于实现上述的软件篡改检测方法。
49.本发明的第四个目的可以通过采取如下技术方案达到:
50.一种电子设备,包括处理器以及用于存储处理器可执行程序的存储器,所述处理器执行存储器存储的程序时,实现上述的软件篡改检测方法。
51.本发明的第五个目的可以通过采取如下技术方案达到:
52.一种存储介质,存储有程序,所述程序被处理器执行时,实现上述的软件篡改检测方法。
53.本发明相对于现有技术具有如下的有益效果:
54.本发明采用基于模拟电路的方式和校验程序的完整性的方式,实现无安全硬件扩展模块和硬件安全模块的控制器的软件篡改检测功能,进而实现控制器的安全启动;其中,采用基于模拟电路的方式可以提取信号、变换信号以及提高信号的抗干扰能力;采用校验程序的完整性的方式可以在无安全硬件扩展模块和硬件安全模块的情况下,完成相应程序的校验。
附图说明
55.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
56.图1为本发明背景技术的带有安全模块的控制器的结构框图。
57.图2为本发明实施例1的软件篡改检测方法的具体流程图。
58.图3为本发明实施例1的软件篡改检测方法的简要流程图。
59.图4为本发明实施例1的软件篡改检测方法的核心流程图。
60.图5本发明实施例1的控制器的启动过程图。
61.图6本发明实施例1的校验程序的完整性算法的示例图。
62.图7本发明实施例1的电信号校验形式的示例图。
63.图8为本发明实施例2的软件篡改检测装置的结构框图。
64.图9为本发明实施例3的软件篡改检测系统的结构框图。
65.图10为本发明实施例4的电子设备的结构框图。
具体实施方式
66.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人
员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
67.实施例1:
68.本实施例提供了一种软件篡改检测方法,此方法应用于汽车智能网联系统,其中汽车智能网联系统包括汽车的智能座舱控制器和电机控制器;具体地,此方法基于汽车的智能座舱控制器实现,其中汽车的智能座舱控制器包括三种启动引导程序(在下文中简称为程序);三种程序构成一套完整的启动软件,用于启动汽车的智能座舱控制器(在下文中简称为控制器)。
69.如图2~图5所示,本实施例中的软件篡改检测方法包括以下步骤:
70.s201、基于时间起点,通过监测单元发送第一信号。
71.本实施例中,第一信号为三种类型信号的其中之一,三种类型信号分别为类型1信号、类型2信号和类型3信号;三种程序分别为第一程序,第二程序和第三程序,当第一程序、第二程序和第三程序依次运行之后,控制器才会启动;其中:三种类型信号与三种程序一一对应,具体为:类型1信号对应第一程序,类型2信号对应第二程序,类型3信号对应第三程序。时间起点为任意时间点a,相关人员可以根据实际操作的时间点,选定时间起点。
72.值得注意的是:类型信号的类型数量可以根据程序的数量或启动软件的执行过程进行改变;当第一信号输入控制器时,若控制器中存在第一信号的对应程序,则控制器产生对应程序响应;若控制器中不存在第一信号的对应程序,则控制器中止启动;第一信号为电信号。
73.步骤s201,具体为:控制器调用监测单元,进而将任意时间点a作为类型1信号的时间起点,并基于此时间起点,通过i/o接口发送类型1信号。
74.s202、接收第一信号,将存在对应程序响应的第一信号发送至校验单元。
75.步骤s202,具体为:控制器通过i/o接口接收类型1信号,控制器若存在第一程序响应,则将存在第一程序响应的类型1信号发送至校验单元;控制器若不存在第一程序响应,则中止启动。
76.s203、通过校验单元校验所述程序的完整性,得到校验结果,并基于校验结果,通过校验单元向监测单元发送第二信号。
77.本实施例中,控制器通过校验单元校验所述程序的完整性,得到校验结果,并基于校验结果,通过校验单元向监测单元发送第二信号(即响应值)。
78.进一步地,如图6所示,通过校验单元校验所述程序的完整性,得到校验结果,包括以下步骤:
79.s2031、计算第一程序的第一完整性度量值。
80.步骤s2031中,计算第一程序的第一完整性度量值的算法包括循环冗余校验算法(crc校验)和摘要算法(md5、sha、mac等)。
81.s2032、通过第一程序的pub_key验签,得到第一程序的第二完整性度量值。
82.步骤s2032中,签名验签算法采用rsa2048。
83.s2033、判断第一完整性度量值和第二完整性度量值是否相等,输出校验结果。
84.进一步地,基于校验结果,通过校验单元向监测单元发送第二信号,具体为:若校验结果为相同,则通过校验单元向监测单元发送第二信号。
85.进一步地,第二信号为具有辨识性的电信号,包括方波电信号、正弦波电信号和三
角波电信号的其中之一。
86.本实施例中,控制器在得到校验结果之后,将校验结果发送至校验单元,其中校验单元包括模拟电路。
87.s204、通过监测单元判断第二信号是否符合校验形式,输出判断结果。
88.进一步地,如图7所示,校验形式包括预设时刻为上升沿、预设时刻为下降沿、预设时段为高电平、预设时段为低电平和预设周期值的其中之一;其中,校验形式通过监测单元进行设置。
89.步骤s204中,监测单元在每个类型信号的对应时间节点对i/o接口接收到的第二信号进行判断。
90.s205、根据判断结果,实现软件篡改检测。
91.本实施例中,控制器根据判断结果,实现软件篡改检测。
92.进一步地,根据判断结果,实现软件篡改检测,具体包括:
93.若判断结果为符合,则基于类型信号的种类数,返回通过监测单元发送下一种第一信号,并执行步骤s202;
94.若判断结果为不符合,则接收监测单元发送的复位信号,停止启动并进行复位,即说明软件被篡改。
95.若所有类型信号的判断结果均为符合,则安全运行软件,进而实现控制器的安全启动,即说明软件没有被篡改。
96.其中,下一种第一信号为类型2信号;值得注意的是:判断结果为符合之后,才可以发出下一种第一信号,以此类推。
97.在另一个实施例中,软件篡改检测方法基于电机控制器实现。
98.在另一些实施例中,软件篡改检测方法适用于其他智能系统。
99.本领域技术人员可以理解,实现上述实施例的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,相应的程序可以存储于计算机可读存储介质中。
100.应当注意,尽管在附图中以特定顺序描述了上述实施例的方法操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
101.实施例2:
102.如图8所示,本实施例提供了一种软件篡改检测装置,该装置包括第一发送模块801、第二发送模块802、第三发送模块803、判断模块804和检测模块805,各个模块的具体功能如下:
103.第一发送模块801,用于基于时间起点,通过监测单元发送第一信号,所述时间起点为任意时间点;
104.第二发送模块802,用于接收第一信号,将存在对应程序响应的第一信号发送至校验单元,其中程序为启动引导程序;
105.第三发送模块803,用于通过校验单元校验所述程序的完整性,得到校验结果,并基于校验结果,通过校验单元向监测单元发送第二信号;
106.判断模块804,用于通过监测单元判断第二信号是否符合校验形式,输出判断结
果;
107.检测模块805,用于根据判断结果,实现软件篡改检测。
108.实施例3:
109.如图9所示,本实施例提供了一种软件篡改检测系统,该系统包括监测单元901、校验单元902和控制器903;其中:监测单元901与校验单元902连接,控制器903与监测单元901、校验单元902连接;控制器903,用于实现上述实施例1的软件篡改检测方法,如下:
110.基于时间起点,通过监测单元发送第一信号,所述时间起点为任意时间点;
111.接收第一信号,将存在对应程序响应的第一信号发送至校验单元,其中程序为启动引导程序;
112.通过校验单元校验所述程序的完整性,得到校验结果,并基于校验结果,通过校验单元向监测单元发送第二信号;
113.通过监测单元判断第二信号是否符合校验形式,输出判断结果;
114.根据判断结果,实现软件篡改检测。
115.实施例4:
116.本实施例提供了一种电子设备,电子设备可以为计算机,如图10所示,其包括通过系统总线1001连接的处理器1002、存储器、输入装置1003、显示装置1004和网络接口1005。其中,处理器1002用于提供计算和控制能力,存储器包括非易失性存储介质1006和内存储器1007,该非易失性存储介质1006存储有操作系统、计算机程序和数据库,该内存储器1007为非易失性存储介质1006中的操作系统和计算机程序的运行提供环境,计算机程序被处理器1002执行时,实现上述实施例1的软件篡改检测方法,如下:
117.基于时间起点,通过监测单元发送第一信号,所述时间起点为任意时间点;
118.接收第一信号,将存在对应程序响应的第一信号发送至校验单元,其中程序为启动引导程序;
119.通过校验单元校验所述程序的完整性,得到校验结果,并基于校验结果,通过校验单元向监测单元发送第二信号;
120.通过监测单元判断第二信号是否符合校验形式,输出判断结果;
121.根据判断结果,实现软件篡改检测。
122.实施例5:
123.本实施例提供一种存储介质,该存储介质为计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时,实现上述实施例1的软件篡改检测方法,如下:
124.基于时间起点,通过监测单元发送第一信号,所述时间起点为任意时间点;
125.接收第一信号,将存在对应程序响应的第一信号发送至校验单元,其中程序为启动引导程序;
126.通过校验单元校验所述程序的完整性,得到校验结果,并基于校验结果,通过校验单元向监测单元发送第二信号;
127.通过监测单元判断第二信号是否符合校验形式,输出判断结果;
128.根据判断结果,实现软件篡改检测。
129.需要说明的是,本实施例的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限
于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
130.在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
131.上述计算机可读存储介质可以以一种或多种程序设计语言或其组合来编写用于执行本实施例的计算机程序,上述程序设计语言包括面向对象的程序设计语言—诸如java、python、c++,还包括常规的过程式程序设计语言—诸如c语言或类似的程序设计语言。程序可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
132.综上所述,本发明可以实现无安全硬件扩展模块和硬件安全模块的控制器的软件篡改检测功能,进而实现控制器的安全启动。
133.以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明构思加以等同替换或改变,都属于本发明专利的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1