技术领域
[0001] 本公开涉及信息安全领域,特别涉及一种数据保护装置和计算机设备。
相关背景技术
[0002] 随着信息技术的发展,越来越多的嵌入式信息存储设备出现在人们的视野当中,影响着人们的工作和生活。在这样的背景下,信息安全备受关注。
[0003] 通常,对于嵌入式信息存储设备,敏感数据通常存储在非易失性存储器中,如果通过对嵌入式信息存储设备所在的整体设备进行断电,以解除设备的防护功能,再通过拆解的方式窃取设备中的存储器芯片,就有可能从中获取敏感数据,对设备的信息安全产生威胁。
具体实施方式
[0025] 为使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开实施方式作进一步地详细描述。
[0026] 图1为本公开实施例提供的一种数据保护装置示意图。如图1所示,该数据保护装置10包括:检测模块11、存储模块12、处理模块13和电源模块14。
[0027] 其中,检测模块11包括至少两个检测引脚,至少两个检测引脚分别用于检测不同的销毁触发事件。存储模块12用于存储数据。处理模块13分别与检测模块11和存储模块12连接,用于在所述检测模块中的任一检测引脚检测到销毁触发事件后,销毁存储模块12中的数据。电源模块14与处理模块13连接,用于为处理模块13供电。
[0028] 在本公开实施例中,销毁触发事件包括数据保护装置所在设备的壳体被打开、数据保护装置所在控制板被拔出和数据保护装置所在设备的壳体中设置的物理按键被按下中的至少两个。
[0029] 由于本公开实施例提供的数据保护装置能够检测至少两种不同的销毁触发事件,并且,结合不同产品形态的主控设备(即上位机)的结构设计了销毁触发事件的类型,使得该数据保护装置能够适用于不同产品形态的主控设备,为不同产品形态的主控设备提供信息安全防护。
[0030] 并且,通过检测引脚来检测销毁触发事件,有利于快速检测销毁触发事件的发生并进行快速反应,提高信息安全性。
[0031] 在一些示例中,检测模块11包括三种检测引脚,三种检测引脚分别为第一检测引脚、第二检测引脚和第三检测引脚。其中,第一检测引脚与物理按键连接,用于检测物理按键是否被按下;第二检测引脚用于与安装在设备的壳体的盖板和主体之间的微动开关连接,用于检测盖板和主体是否被拆开;第三检测引脚用于与设备的控制板连接,用于检测数据保护装置所在板卡是否从控制板拔出。
[0032] 这样,同时设置三种检测引脚,可以增加该数据保护装置适用的主控设备的产品形态,能满足多种应用场景下的不同需求,提高了数据保护的实用性和安全性。
[0033] 下面对三种检测引脚检测销毁触发事件的过程进行详细说明。
[0034] 在一些示例中,数据保护装置所在设备的壳体是不可拆卸的封闭壳体,这种情况下,可以在设备的壳体上预先设置物理按键。当物理按键相当于一个按键开关,该物理按键的一端接地,另一端与第一检测引脚连接。当物理按键未被按下时,第一检测引脚悬空,为高电平;当物理按键被按下时,该第一检测引脚接地,变为低电平。
[0035] 在另一些实施例中,数据保护装置所在设备的壳体包括主体和盖板,主体和盖板可拆卸连接,且主体和盖板之间设置有微动开关。该微动开关分别与第二检测引脚和地连接。当盖板与主体连接时,微动开关断开,第二检测引脚悬空,为高电平;当盖板与主体分开时,微动开关动作,将第二检测引脚接地,变为低电平。
[0036] 在又一些实施例中,数据保护装置与设备的控制板连接,且该控制板为可插拔板卡。此时,第三检测引脚通过控制板接地,为低电平。当控制板被拔出时,第三检测引脚与地之间的连接断开,变为高电平。
[0037] 可见,可以通过检测各个检测引脚上的电平变化,来检测对应销毁触事件是否发生。因此,在本公开实施例中,处理模块13用于在检测到目标引脚的电平发生变化后,销毁存储模块12中的数据,目标引脚为至少两个检测引脚中的一个。
[0038] 通过数据保护装置中的检测引脚的电平是否发生变化,能够判断数据保护装置所在的设备是否被拆解,即用于存储数据的存储模块是否存在以拆解设备的手段被获取的危险。同时检测引脚的电平在被拆解的瞬间发生变化,从而能够及时地检测到销毁触发事件,从而使处理模块尽快地执行销毁操作,使得数据保护装置的反应力快,安全性高。
[0039] 在本公开实施例中,第一检测引脚、第二检测引脚和第三检测引脚分别对应三个销毁标志变量:trigger_key、trigger_sw1和trigger_sw2。当某个检测引脚检测到销毁触发事件时,检测引脚的电平发生变化,因而对应的销毁标志变量的值会发生变化,从而触发数据销毁触发事件,从而使得处理模块13销毁存储模块12中的数据。
[0040] 在一些实施方式中,数据防护装置可以同时检测三种销毁触发事件。在另一些实施方式中,数据防护装置可能不需要同时检测三种销毁触发事件,而是可以根据主控设备形态选择检测其中一种或者两种销毁触发事件。例如,当控制板为不可插拔板卡且设备壳体不能被打开,就可以在外部设置物理按键,仅通过第一检测引脚来检测物理按键是否被按下。再例如,控制板为不可插拔板卡,而控制板安装完成后设备的壳体可以被打开,就可以选择仅通过第二检测引脚检测设备的壳体是否被拆开。又例如,控制板为可插拔板卡,而设备壳体可能被拆开,就可以选择通过第二检测引脚和第三检测引脚分别检测控制板是否被拔板或者设备壳体是否被拆开。
[0041] 这种情况下,处理模块13还用于接收设置指令,该设置指令用于设置至少两种检测引脚的使能状态。通过该设置指令,可以选择将部分检测引脚(例如一种检测引脚)使能,使得只有在被使能的检测引脚检测到销毁触发事件(即电平发生变化)后,处理模块13才会执行销毁存储模块12中的数据的动作。而未使能的检测引脚即便检测到销毁触发事件,处理模块13也不会执行销毁存储模块12中的数据的动作。
[0042] 在一些示例中,该设置指令中可以携带三个比特,三个比特分别对应一种检测引脚。比如,第一个比特对应第一检测引脚,第二个比特对应第二检测引脚,第三个比特对应第三检测引脚。这里,比特的排列位置与检测引脚的对应关系仅为举例。当某个比特为第一值时,表示对应的检测引脚使能,当某个比特为第二值时,表示对应的检测引脚未使能。如前所述,实现时,三个比特可以均为第一值,或者,其中一个比特为第一值,或者其中两个为第一值。
[0043] 示例性地,该第一值为1,第二值为0;或者,该第一值为0,第二值为1。
[0044] 该设置指令可以是上位机发送给该数据保护装置的。
[0045] 实现时,处理模块13可以设置三个销毁使能变量en_key、en_sw1和en_sw2。当对应的销毁使能变量置1时,表示其销毁标志变量的变化能够触发处理模块执行数据销毁操作;当对应的销毁使能变量置0时,表示其销毁标志变量即使发生变化,也不能触发处理模块执行数据销毁操作。处理模块13根据该设置指令对三个销毁使能变量进行设置,以完成功能测试,或是当内部人员需要对该数据保护装置进行拆除等处理时,避免触发数据销毁操作。
[0046] 可选地,处理模块13还用于接收上位机发送的数据存储指令,以及根据数据存储指令将数据存储指令指示的数据存储至存储模块12。
[0047] 上位机将数据存储命令以命令包的形式发送给处理模块13,处理模块13解析该命令包后,得到指令类型(即写数据命令CMD_WR_DATA)、指令数据以及对应的存储地址等信息。然后处理模块13根据指令类型,跳转到对应的写数据的功能函数中。
[0048] 在写数据的功能函数中,将拆解好的数据段(例如文件名)及和数据部分,连续写入到存储模块12中的该命令包中指定的存储地址。可选地,处理模块13完成此次数据存储后会记录此次数据存储事件,并将该事件通过响应包传给上位机,上位机根据该响应包可以确认存储无误,对上位机中相同的数据进行删除。
[0049] 可选地,处理模块13还用于接收上位机发送的数据销毁指令,以及根据数据销毁指令从存储模块12中销毁数据存储指令指示的数据。
[0050] 上位机将数据销毁命令以命令包的形式发送给处理模块13,处理模块13解析该命令包后,得到指令类型(即擦除数据命令CMD_ERASE)、指定数据段等信息。然后处理模块13根据指令类型,跳转到对应的擦除数据的功能函数中。
[0051] 在擦除数据的功能函数中,在已存储的文件中查找拆解得到的指定数据段。如果在已存储的文件中查找到该指定数据段,则将在该指定数据段对应的存储地址中连续写1,从而完成擦除,并在完成擦除后,向上位机返回一个正常状态指示码,以是指擦除完成。如果在已存储的文件中未查找到该指定数据段,则会向上位机返回一个错误指示码,由上位机对此次异常进行处理。该错误指示码用于指示擦除未能完成或者指示未找到数据。
[0052] 可选地,该数据保护装置还具有日志功能。相应的,处理模块13还用于在存储模块12中记录工作日志。
[0053] 示例性地,日志使用结构体数组来进行存储,当有写日志需求时,调用写日志函数,将事件码和当前的工作状态写入日志结构体数组。工作状态包括但不限于数据存储、数据擦除等。
[0054] 可选地,可以设置日志最大存储条数,当存储模块12中已存储的日志条数超出最大存储条数后,处理模块13会循环覆盖前面的日志,即将最新的日志覆盖最先存储的日志。最大存储条数可以根据实际需要设置,本公开对此不做限制,例如32条、64条或者128条等。
[0055] 在本公开实施例中,通过记录日志便于后期对日志进行读取,以分析数据销毁原因、数据保护装置的工作状态等。
[0056] 处理模块13还用于记录销毁类型,该销毁类型用于指示检测到销毁触发事件的检测引脚。
[0057] 在一些示例中,处理模块13会将检测到销毁触发事件的检测引脚对应的销毁标志位置位。将销毁标志位置位表示该销毁触发事件已完成。
[0058] 可选地,该处理模块13还会将该销毁类型记录在日志中,以记录该销毁触发事件的类型。
[0059] 在一些示例中,数据采用分布式存储,即一部分数据存储在数据保护装置的存储模块中,另一部分存储在上位机中。在这种情况下,如果数据保护装置是在电池供电的过程中,检测到销毁触发事件并将对应的销毁标志位置位,那么,在数据保护装置切换到由上位机供电时,上位机会根据该销毁标志位进入销毁中断,在中断服务程序中将上位机中存储的数据删除。
[0060] 在一种可能的实施方式中,数据保护装置在电池供电的过程中,检测到销毁触发事件后,仅将对应的销毁标志位置位;在数据保护装置切换到由上位机供电后,上位机根据该销毁标志位进入销毁中断,在中断服务程序中将上位机中存储的数据和数据保护装置中的数据一起销毁。
[0061] 在另一种可能的实施方式中,在数据保护装置在电池供电的过程中,检测到销毁触发事件后,将数据保护装置中的数据删除,并将对应的销毁标志位置位;在数据保护装置切换到由上位机供电后,上位机根据该销毁标志位进入销毁中断,在中断服务程序中将上位机中存储的数据销毁。
[0062] 在又一种可能的实施方式中,在数据保护装置由上位机供电的过程中,检测到销毁触发事件后将对应的销毁标志位置位,上位机根据该销毁标志位进入销毁中断,在中断服务程序中将上位机中存储的数据和数据保护装置中的数据一起销毁。
[0063] 这样,可以将所有关联数据一并删除,进一步提高数据的安全性。
[0064] 在本公开实施例中,存储模块12中存储有安防程序,该安防程序用于执行在检测模块11中的任一检测引脚检测到销毁触发事件后,销毁存储模块12中的数据的功能。
[0065] 可选地,存储模块12中存储有启动程序,处理模块13用于在数据保护装置上电后自动运行启动程序,以自动运行安防程序,执行安防程序的功能。
[0066] 通过启动程序的设置能使得处理模块13在数据保护装置上电后自动运行安防程序,因而数据保护装置上电后很快就能对数据进行保护,避免了需要在上位机的厂商启动程序结束后才能对数据保护装置进行启动,从而防止破解者对厂商启动程序进行设置,使得数据保护装置不执行数据防护程序。
[0067] 示例性地,当数据保护装置上电时,处理模块13运行启动程序,短暂延时后,检测通信串口标志位,如果通信串口标志位指示未接收到数据,则跳转到安防程序,执行数据防护功能。可选地,短暂延时的时间为90ms~110ms,短暂延时用以保证数据保护装置能够加载完成,实际过程中90ms~110ms非常短暂,可忽略不计。
[0068] 可选地,该启动程序还用于对安防程序进行下载更新,以对数据保护装置的数据防护功能进行完善和补充。
[0069] 可选地,该启动程序和安防程序共享通信协议。不同的上位机其遵守的通信协议可能存在不同,例如串行外设接口((Serial Peripheral Interface,SPI)协议和集成电路总线(Inter‑Integrated Circuit,IIC)协议等,不同的通信协议的操作规则不同,因而当数据保护装置应用于不同的上位机时,启动程序和安防程序需要配置对应的通信协议,使得该数据保护装置能够配合上位机的控制和管理,完成数据保护的工作。
[0070] 可选地,电源模块14包括电池和用于与控制板连接的供电电路,其中电池用于在供电电路断电时,为处理模块13供电。
[0071] 在本公开实施例中,数据保护装置具有正常工作模式和低功耗模式。当供电电路为处理模块13供电时,数据保护装置处于正常工作模式;当电池为处理模块13供电时,数据保护装置处于低功耗模式。这样,能够在保护数据的同时降低电量消耗,提高数据保护装置在断电情况下的使用时长,从而提高该数据保护装置的可用性和安全性。
[0072] 可选地,处理模块13可以设置功耗标志位。该功耗标志位用于指示数据保护装置的工作模式。
[0073] 在本公开实施例中,低功耗模式的消耗电流仅为3微安~4微安,通过搭配3225电池可以确保数据保护装置在长达五年的休眠情况下能正常保护数据。
[0074] 在本公开实施例中,数据保护装置包括微控制单元(Micro Control Unit,MCU)和与MCU连接的外围电路。示例性地,MCU为国产微控制器厂商沁恒的CH32V103C8T6芯片,指令集架构为开源指令集架构RISC‑V。存储模块12包括非易失性存储器,例如闪存(flash)等。
[0075] 当MCU为微控制器厂商沁恒的CH32V103C8T6芯片时,采用CH32V103C8T6芯片的休眠(standby)工作模式作为数据保护装置的低功耗模式。当然,除了该芯片之外,还可以采用其他具备standby模式的MCU组成该数据保护装置。
[0076] 图2为本公开实施例提供的一种计算机设备的结构示意图,且展示了数据保护装置的应用场景。如图2所示,计算机设备包括壳体、控制板和前述数据保护装置,数据保护装置和控制板均位于壳体内,数据保护装置与控制板相连。
[0077] 在本公开实施例中,数据保护装置与控制板相连,是指数据保护装置嵌设在控制板中。在数据保护装置的内部存储有重要数据,例如密钥等。
[0078] 该计算机设备可以为上位机,上位机为监控、配置、控制和管理下位机设备的计算机设备。当数据保护装置检测到外部销毁事件,则数据保护装置将其内部存储的重要数据销毁。
[0079] 如图2所示,数据保护装置通过接收(RX)引脚、发送引脚(TX)、告警(ALARM)引脚和直流电源(Direct Current,DC)引脚与控制板的中央处理器(Central Processing Unit,CPU)连接。电池与数据保护装置之间通过电池(VBAT)引脚连接。此外,该数据保护装置还包括前述三种检测引脚。
[0080] 当上位机未断电时,上位机通过与上位机连接的供电电路为数据保护装置供电,此时功耗标志位置1即数据保护装置处于正常工作模式。当上位机断电时,ALARM引脚会产生下降沿电平,此时功耗标志位置0,数据保护装置切换为低功耗模式,数据保护装置的供电电路切换为电池供电。
[0081] 可选地,控制板包括状态监测模块,状态监测模块与数据保护装置连接,用于监测数据保护装置的工作状态。工作状态包括但不限于电池电量或者工作温度等。通过对数据保护装置的工作状态进行监测,可以确保数据保护装置为正常运行。例如,通过对电池电压的监测能确定电池的剩余电量,从而保证发生断电时电池中存在足够的电量以维持数据保护装置的运行。
[0082] 示例性地,数据保护装置通过IIC((Inter‑Integrated Circuit,内部集成电路))引脚与监测装置连接。
[0083] 图3为本公开实施例提供的一种数据保护装置与上位机之间的通信流程图。如图3所示,当数据保护装置上电后,经过短暂延时后,检测是否需要更新安防程序。
[0084] 如果接收到上位机发送的更新程序的指令,则表示需要更新安防程序,会在上位机与安全防护程序握手后,数据保护装置开始下载程序,不断接收上位机发送的更新所需的二进制文件并下载到安防程序对应的地址空间,直至完成安防程序的更新。
[0085] 若不需要更新安防程序或者在安防程序更新完成后,数据保护装置会运行安防程序,进入数据保护状态。在数据保护状态下,数据保护装置可随时接收上位机发送的指令并执行。指令执行完成后,数据保护装置向上位机发送对应的响应包,完成本次响应。
[0086] 如图3所示,除了前述写数据功能函数和擦除数据的功能函数之外,安防程序中还存在其他功能函数,例如,读数据的功能函数、读版本信息的功能函数、获取日志的功能函数、读取电池电压的功能函数、读取/设置销毁状态的功能函数和读取/设置销毁使能的功能函数中的一种或者多种。
[0087] 其中,读数据的功能函数用于在接收到读数据指令(CMD_RD_DATA)时,读取指定的数据段并通过响应包发送给上位机;读版本信息的功能函数用于在接收到读版本信息指令(CMD_GET_VER)时,读取数据保护装置的版本信息;获取日志的功能函数用于在接收到日志获取指令(CMD_GET_LOG)时,读取数据保护装置的日志数据并通过响应包发送给上位机。读取电池电压的功能函数用于在接收到电压获取指令(CMD_GET_BAT_VOLT)时,读取分压电阻的电压并转换为电池电压,并通过响应包将电池电压发送给上位机;读取/设置销毁状态的功能函数用于在接收到读取/设置销毁状态指令(CMD_EVEN)时,读取/设置销毁标志位;读取/设置销毁使能的功能函数用于在接收到读取/设置销毁使能指令(CMD_MASK)时,读取/设置使能标志位。
[0088] 在本公开实施例中,功能函数也可以称为功能模块。
[0089] 本公开实施例对数据保护装置进行了一组实验以验证数据保护装置的功能有效性。
[0090] 首先,使用通用串行总线(Universal Serial Bus,USB)转晶体管‑晶体管逻辑(Transistor Transistor Logic,TTL)电平模块将数据保护装置与实验电脑连接,使用实验电脑作为上位机发送指令包控制数据保护装置的各项功能模块。
[0091] 实验前首先进行连通性验证,确保上位机发送的指令能被数据保护装置正确接收并回传相应的响应包。实验中采用信号发生器产生能使数据保护装置执行销毁操作的销毁冲击信号,以模拟真实环境下上位机被入侵,数据保护装置被暴力拆除的情况。
[0092] 该实验过程如下:
[0093] 第一步,上位机发送写数据命令,并下发四次密钥数据,每段密钥长度256Byte,写入后发送读数据命令,通过读取存入的密钥数据确保密钥数据已被成功存入存储模块中。
[0094] 第二步,通过串口将销毁使能变量en_sw1置0,销毁使能变量en_sw2置1,再将trigger_sw1端口连接到信号发生器,输入销毁信号,完成后通过上位机发送读数据命令,四段密钥数据均可正常读取。针对trigger_sw2端口进行与trigger_sw1端口同样的操作,结果为上位机不能读取到密钥数据。
[0095] 根据实验结果可得,当数据保护装置的某个检测引脚被设置为使能状态,且该检测引脚检测到销毁触发事件时,该数据保护装置能有效执行数据销毁操作。
[0096] 另外,本公开实施例还对数据保护装置进行了另一组实验以验证数据保护装置在低功耗模式下的功耗。
[0097] 在该组实验中,通过微安表测试数据保护装置在低功耗模式下的工作电流以反映其功耗。工作电流越大,则功耗越高,工作电流越小则功耗越低。通过信号发生器产生下降沿电平以使数据保护装置进入低功耗模式。
[0098] 该实验过程如下:
[0099] 第一步,在数据保护装置上电后使用信号发生器对ALARM端口施加下降沿电平,模拟上位机断电的情况。此时供电电路进行切换,使用备用电池对数据保护装置进行供电,记录微安表的示数作为低功耗模式下的功耗数据。
[0100] 第二步,在低功耗模式下触发各个销毁信号端口,记录工作电流功耗,数据如下:
[0101]
[0102] 根据实验结果可得,数据保护装置在各种不同的触发条件下其功耗都能维持在较低水平,从而保证数据保护装置可以在电池供电的条件下连续待机三年以上。
[0103] 以上所述仅为本公开的可选实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。