CN108416209B - 程序安全验证方法、装置及终端设备 - Google Patents

程序安全验证方法、装置及终端设备 Download PDF

Info

Publication number
CN108416209B
CN108416209B CN201810185113.1A CN201810185113A CN108416209B CN 108416209 B CN108416209 B CN 108416209B CN 201810185113 A CN201810185113 A CN 201810185113A CN 108416209 B CN108416209 B CN 108416209B
Authority
CN
China
Prior art keywords
program
byte number
cache
verification
data information
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.)
Active
Application number
CN201810185113.1A
Other languages
English (en)
Other versions
CN108416209A (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.)
Yuanxin Information Technology Group Co ltd
Original Assignee
Yuanxin Technology
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 Yuanxin Technology filed Critical Yuanxin Technology
Priority to CN201810185113.1A priority Critical patent/CN108416209B/zh
Publication of CN108416209A publication Critical patent/CN108416209A/zh
Application granted granted Critical
Publication of CN108416209B publication Critical patent/CN108416209B/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

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

Abstract

本发明实施例提供了一种程序安全验证方法、装置及终端设备,其中,程序安全验证方法包括:当检测到程序启动运行时,读取程序的相关数据信息,程序的相关数据信息包括程序的指令序列及程序对应的签名信息;确定程序的相关数据信息的第一字节数;基于第一字节数对程序进行安全验证。本发明实施例的程序安全验证方法,基于程序的相关数据信息的字节数,确定相应的验证策略,并根据相应的验证策略高效、准确地对程序进行安全验证。

Description

程序安全验证方法、装置及终端设备
技术领域
本发明涉及计算机技术领域,具体而言,本发明涉及一种程序安全验证方法、装置及终端设备。
背景技术
随着物联网、移动互联网和云计算等新型技术的快速发展,信息技术已深刻影响到人们的生活方式,无处不在的信息已经成为国家、企业和个人的重要资产。随着网络安全威胁种类日益多样化,这些重要的信息资产将暴露在越来越多的威胁中,比如恶意软件对正常程序的非法篡改,通常恶意软件通过篡改正常程序的代码和数据,并植入恶意代码来完成自身想要到达的目的。如果在程序启动运行时,不对程序进行安全验证,而直接启动运行程序,将会使得被非法篡改的程序被执行,从而威胁到系统的安全,给用户带来巨大的损失和灾难性的打击,因此,只要能在恶意软件或程序执行前发现并阻止其运行,就可以保证应用程序的安全,然而,现有的软件完整性验证与保护技术通常需要额外的硬件支持,而且验证效率较低。于是,亟需一种有效对程序进行安全验证的方法,以判断该应用程序是否被非法篡改过。
发明内容
本发明的目的旨在至少能解决上述的技术缺陷之一,特别是无法有效对程序进行安全验证的技术缺陷。
本发明的实施例根据一个方面,提供了一种程序安全验证方法,包括:
当检测到程序启动运行时,读取所述程序的相关数据信息,所述程序的相关数据信息包括所述程序的指令序列及所述程序对应的签名信息;
确定所述程序的相关数据信息的第一字节数;
基于所述第一字节数对所述程序进行安全验证。
优选地,所述基于所述第一字节数对所述程序进行安全验证,包括:
将所述第一字节数依次与预存储的各缓存中记录的第二字节数进行比对,以确定是否存在与所述第一字节数相等的第二字节数,其中,所述第二字节数为各缓存所指向的缓存数据块的字节数;
若存在,则基于与所述第一字节数相等的第二字节数对应的至少一个缓存数据块,对所述程序进行安全验证;
若不存在,则基于预存储的至少一个数字证书对所述程序进行安全验证。
优选地,所述基于与所述第一字节数相等的第二字节数对应的至少一个缓存数据块对所述程序进行安全验证,包括:
将与所述第一字节数相等的第二字节数对应的至少一个缓存数据块中存储的数据信息依次与所述程序的相关数据信息进行比对;
若所述程序的相关数据信息与任一缓存数据块中存储的数据信息相同,确定所述程序通过安全验证;
若所述程序的相关数据信息与至少一个缓存数据块中存储的数据信息均不相同,基于预存储的至少一个数字证书对所述程序进行安全验证。
优选地,所述基于预存储的至少一个数字证书对所述程序进行安全验证,包括:
根据所述程序对应的签名信息中携带的数字证书标识信息,确定所述签名信息对应的数字证书;
基于所述数字证书对所述程序进行安全验证。
优选地,所述程序的签名信息还包括:所述签名信息的密文部分;
其中,所述基于所述数字证书对所述程序进行安全验证,包括:
通过所述数字证书对应的公钥对所述签名信息的密文部分进行解密运算,得到相应的解密结果;
对所述程序的指令序列进行哈希运算,得到相应的哈希运算结果;
检测所述解密结果与所述哈希运算结果是否相同;
若相同,确定所述程序通过安全验证。
优选地,将所述第一字节数依次与预存储的各缓存中记录的第二字节数进行比对之后,还包括:
返回历史验证通过次数为最小值的缓存的序号,其中,各缓存中记录有历史验证通过次数。
优选地,若基于预存储的至少一个数字证书确定所述程序通过安全验证,还包括:
依据所述程序的第一字节数来更新历史验证通过次数为最小值的缓存指向的缓存数据块的字节数;
依据所述程序的相关数据信息来更新历史验证通过次数为最小值的缓存指向的缓存数据块中存储的数据信息;以及,
将所述序号对应的缓存中记录的历史验证通过次数设置为预设值。
本发明的实施例根据一个方面,提供了一种程序安全验证装置,包括:
读取模块,用于当检测到程序启动运行时,读取所述程序的相关数据信息,所述程序的相关数据信息包括所述程序的指令序列及所述程序对应的签名信息;
字节数确定模块,用于确定所述程序的相关数据信息的第一字节数;
安全验证模块,用于基于所述第一字节数对所述程序进行安全验证。
优选地,所述安全验证模块包括比对子模块、第一验证子模块与第二验证子模块;
所述比对子模块,用于将所述第一字节数依次与预存储的各缓存中记录的第二字节数进行比对,以确定是否存在与所述第一字节数相等的第二字节数,其中,所述第二字节数为各缓存所指向的缓存数据块的字节数;
所述第一验证子模块,用于当存在与所述第一字节数相等的第二字节数时,基于与所述第一字节数相等的第二字节数对应的至少一个缓存数据块,对所述程序进行安全验证;
所述第二验证子模块,用于当不存在与所述第一字节数相等的第二字节数时,基于预存储的至少一个数字证书对所述程序进行安全验证。
优选地,所述第一验证子模块包括字节数比对子单元与第一安全验证子单元;
所述字节数比对子单元,用于将与所述第一字节数相等的第二字节数对应的至少一个缓存数据块中存储的数据信息依次与所述程序的相关数据信息进行比对;
所述第一安全验证子单元,用于当所述程序的相关数据信息与任一缓存数据块中存储的数据信息相同时,确定所述程序通过安全验证,以及当所述程序的相关数据信息与至少一个缓存数据块中存储的数据信息均不相同时,确定通过所述第二验证子模块对所述程序进行安全验证。
优选地,所述第二验证子模块包括数字证书确定子单元与第二安全验证子单元;
所述数字证书确定子单元,用于根据所述程序对应的签名信息中携带的数字证书标识信息,确定所述签名信息对应的数字证书;
所述第二安全验证子单元,用于基于所述数字证书对所述程序进行安全验证。
优选地,所述程序的签名信息还包括:所述签名信息的密文部分;
其中,所述第二安全验证子单元包括解密子单元、哈希运算子单元、检测子单元与确定子单元;
所述解密子单元,用于通过所述数字证书对应的公钥对所述程序对应的签名信息的密文部分进行解密运算,得到相应的解密结果;
所述哈希运算子单元,用于对所述程序的指令序列进行哈希运算,得到相应的哈希运算结果;
所述检测子单元,用于检测所述解密结果与所述哈希运算结果是否相同;
所述确定子单元,用于当所述解密结果与所述哈希运算结果相同时,确定所述程序通过安全验证。
优选地,该装置还包括返回模块;
所述返回模块,用于返回历史验证通过次数为最小值的缓存的序号,其中,各缓存中记录有历史验证通过次数。
优选地,该装置还包括第一更新模块、第二更新模块与设置模块;
所述第一更新模块,用于依据所述程序的第一字节数来更新历史验证通过次数为最小值的缓存指向的缓存数据块的字节数;
所述第二更新模块,用于依据所述程序的相关数据信息来更新历史验证通过次数为最小值的缓存指向的缓存数据块中存储的数据信息;
所述设置模块,用于将所述序号对应的缓存中记录的历史验证通过次数设置为预设值。
本发明的实施例根据另一个方面,还提供了一种终端设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的程序安全验证方法。
本发明实施例提供的方法,当检测到程序启动运行时,读取程序的相关数据信息,程序的相关数据信息包括程序的指令序列及程序对应的签名信息,为后续确定程序的相关数据信息的字节数提供前提保障;确定程序的相关数据信息的第一字节数,便于后续能够根据该第一字节数快速、有效地对程序进行安全验证;基于第一字节数对程序进行安全验证,从而能够根据第一字节数确定相应的验证策略,并根据相应的验证策略高效、准确地对程序进行安全验证。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明第一实施例的程序安全验证方法的流程示意图;
图2为本发明第一实施例的程序安全验证方法的验证结构图;
图3为本发明第二实施例的程序安全验证装置的基本结构示意图;
图4为本发明第二实施例的程序安全验证装置的详细结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,进行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS(Personal Communications Service,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(Personal Digital Assistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(Global Positioning System,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID(Mobile Internet Device,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
下面,对二进制签名、数字签名的概念及原理进行简要介绍:
二进制签名机制是以密码学为基础,来检查程序可信来源的方法,程序在未运行前,必然是一种二进制文件的形态(这里我们暂且不讨论脚本类及半编译后解释运行的程序),系统在加载二进制文件时,为了确认程序的合法来源,可以先校验一下程序文件自身的数字签名,数字签名实际也是程序二进制文件的一部分,当根据密码学原理计算出的结果,确定程序的数字签名正确时,再把二进制程序装载进内存,并运行该二进制程序。
数字签名的实现往往基于非对称加密技术,即在进行数字签名前,先生成相应的密钥对,其中,该密钥对包括私钥及与私钥对应的公钥,而且,公私钥之间可以把经过对方加密的数据解密,即公钥可以解密通过私钥加密的数据,私钥可以解密通过公钥加密的数据。通常,私钥会保留原来的形态,而公钥则会被增加一些额外信息,例如对密钥对信息的描述、对使用者的描述及对颁发机构的描述等。其中,数字签名的基本过程就是把要签名的文件用私钥加密,再把密文附着在原文后面组成新的文件,从而得到签名后文件,需要确认签名合法性的一方必须持有对应私钥的证书(即公钥),其中,公钥是被公开的,而私钥是私人持有的,持有证书(即公钥)的一方面如果能够解密签名密文,并且发现解密结果和原文一致,则认为签名合法,同时证书(即公钥)里的信息记载了签名文件的来源。
在实际应用中,往往证书由操作系统使用,而私钥则由程序开发者使用,程序开发者用私钥对该程序进行签名,操作系统用证书对该程序进行解密验签,其中,使用二进制签名的操作系统有iOS操作系统、Windows操作系统等。
虽然,二进制签名的基本作用是确认程序的合法来源,以确保操作系统不运行恶意程序,进而保护操作系统的安全。但是,由于操作系统每次运行程序时,都需要对程序进行安全验证,即每运行一次程序均要验证该程序的合法性,也即每运行一次程序都需要通过二进制签名进行一次验签,当多次运行程序时,必然要重复进行多次二进制签名,从而导致验证效率低,于是,本发明实施例提供了一种二进制签名的优化方案,既能确保程序被非法篡改后拒绝运行,又能提供更高的处理效率。具体如下:
本发明第一实施例提供了一种程序安全验证方法,如图1所示,包括:步骤110,当检测到程序启动运行时,读取程序的相关数据信息,程序的相关数据信息包括程序的指令序列及程序对应的签名信息;步骤120,确定程序的相关数据信息的第一字节数;步骤130,基于第一字节数对程序进行安全验证。
本发明实施例提供的程序安全验证方法,当检测到程序启动运行时,读取程序的相关数据信息,程序的相关数据信息包括程序的指令序列及程序对应的签名信息,为后续确定程序的相关数据信息的字节数提供前提保障;确定程序的相关数据信息的第一字节数,便于后续能够根据该第一字节数快速、有效地对程序进行安全验证;基于第一字节数对程序进行安全验证,从而能够根据第一字节数确定相应的验证策略,并根据相应的验证策略高效、准确地对程序进行安全验证。
下面,对本发明实施例的程序安全验证方法进行详细介绍,具体如下:
在步骤110中,当检测到程序启动运行时,读取程序的相关数据信息,程序的相关数据信息包括程序的指令序列及程序对应的签名信息。
具体地,为操作系统内核加设缓存机制,即预先存储有多条缓存,每条缓存都用一个bin_cache描述,cache成员指针指向本条缓存数据块,cache也可以不指向任何数据块,表示该条缓存为空闲状态,如图2所示。其中,本发明实施例中引入的缓存的数据结构可以为如下所示:
struct bin_cache{
rwlock_t lock;
unsigned long size;
void*cache;
inthit_cnt;
}
上述数据结构描述了一条缓存,其中,cache为指针,指向该缓存所对应的缓存数据块,size代表所指向的缓存数据块的字节数,lock是读写锁,用于控制本缓存的读写权限,hin_cnt是命中次数,即历史验证通过次数。
进一步地,在操作系统启动之初,所有的缓存都处于空闲状态,每条缓存的命中次数(即历史验证通过次数)均为零。当有程序(例如程序A)申请运行时,即操作系统检测到程序(例如程序A)启动运行时,操作系统将该程序A的相关数据信息“读取进”内核内存,即将程序A的指令序列及程序A对应的签名信息一同“读取进”内核内存,其中,在具体应用中,可以通过操作系统中的验签模块将程序A的指令序列及程序A对应的签名信息一同“读取进”内核内存。
在步骤120中,确定程序的相关数据信息的第一字节数。
具体地,在将程序A的指令序列及程序A对应的签名信息一同读取进内核内存后,同时确定该程序A的相关数据信息(即程序A的指令序列及程序A对应的签名信息)的字节数,记作第一字节数,以便于后续基于该第一字节数选择相应的验签策略进行程序安全验证。
在步骤130中,基于第一字节数对程序进行安全验证。
优选地,基于第一字节数对程序进行安全验证,包括:将第一字节数依次与预存储的各缓存中记录的第二字节数进行比对,以确定是否存在与第一字节数相等的第二字节数,其中,第二字节数为各缓存所指向的缓存数据块的字节数;若存在,则基于与第一字节数相等的第二字节数对应的至少一个缓存数据块,对程序进行安全验证;若不存在,则基于预存储的至少一个数字证书对程序进行安全验证。
优选地,基于与第一字节数相等的第二字节数对应的至少一个缓存数据块对程序进行安全验证,包括:将与第一字节数相等的第二字节数对应的至少一个缓存数据块中存储的数据信息依次与程序的相关数据信息进行比对;若程序的相关数据信息与任一缓存数据块中存储的数据信息相同,确定程序通过安全验证;若程序的相关数据信息与至少一个缓存数据块中存储的数据信息均不相同,基于预存储的至少一个数字证书对程序进行安全验证。
优选地,基于预存储的至少一个数字证书对程序进行安全验证,包括:根据程序对应的签名信息中携带的数字证书标识信息,确定签名信息对应的数字证书;基于数字证书对程序进行安全验证。
优选地,程序的签名信息还包括:签名信息的密文部分;其中,基于数字证书对程序进行安全验证,包括:通过数字证书对应的公钥对签名信息的密文部分进行解密运算,得到相应的解密结果;对程序的指令序列进行哈希运算,得到相应的哈希运算结果;检测解密结果与哈希运算结果是否相同;若相同,确定程序通过安全验证。
具体地,假如程序A的相关数据信息的第一字节数为cnt,则在确定程序A的相关数据信息的字节数cnt后,将cnt依次与预存储的各缓存(例如缓存1,缓存2,…,缓存N)所指向的缓存数据块的字节数(即第二字节数)进行比对,以确定是否存在字节数为cnt的缓存数据块,也即利用cnt遍历所有的缓存来查找是否存在字节数为cnt的缓存,若存在与第一字节数相等的第二字节数,即查找到了字节数为cnt的缓存,例如缓存t,缓存m,缓存n等,则基于与第一字节数(即cnt)相等的第二字节数(即cnt)对应的至少一个缓存(例如缓存t,缓存m,缓存n)分别对应的缓存数据块,对程序A进行安全验证;若不存在与第一字节数相等的第二字节数,即未查找到字节数为cnt的缓存,则基于证书库中预存储的至少一个数字证书对程序A进行安全验证,如图2所示。
需要说明的是,多个中央处理器CPU在运行程序时,会同时访问缓存目录,因此,需要通过锁机制进行同步,即当查询或遍历某缓存时,需要获取到该缓存的读锁,从而获取到该缓存的读权限。
进一步地,当基于与第一字节数相等的第二字节数对应的至少一个缓存(例如缓存t,缓存m,缓存n)分别对应的缓存数据块,对程序A进行安全验证时,将与第一字节数(即cnt)相等的第二字节数对应的至少一个缓存(例如缓存t,缓存m,缓存n)所指向的数据块中存储的数据信息,依次与程序的相关数据信息进行比对,如果程序A的相关数据信息与任一缓存(例如缓存t)所指向的缓存数据块中存储的数据信息相同,则确定程序A通过安全验证,此时,将缓存t中记录的历史验证通过次数增加1,表示该缓存t多命中了一次,同时返回验签成功的通知消息;如果程序A的相关数据信息与第二字节数对应的缓存(例如缓存t,缓存m,缓存n)所指向的缓存数据中存储的数据信息均不相同,则基于证书库中预存储的至少一个数字证书对程序A进行安全验证。
进一步地,基于证书库中预存储的至少一个数字证书对程序A进行安全验证时,需要先根据程序对应的签名信息中携带的数字证书标识信息,确定该签名信息对应的数字证书,再基于该数字证书对该程序A进行安全验证,也即先根据数字证书标识信息找到匹配的数字证书,进而根据该数字证书对程序A进行安全验证。其中,程序A的签名信息还包括签名信息的密文部分,即程序A的签名信息包括数字证书标识信息与密文部分,而密文部分即为具体的数字签名信息,于是,在基于该数字证书对程序A进行安全验证时的操作过程为:步骤1,先通过查找到的数字证书对应的公钥对签名信息的密文部分进行相应的解密运算,得到解密结果;步骤2,再对程序A的指令序列进行哈希运算,得到相应的哈希运算结果;需要说明的是,这两个操作步骤的顺序可以颠倒,即可以先执行步骤2再执行步骤1;得到解密结果与哈希运算结果后,执行步骤3,检测解密结果与哈希运算结果是否相同,如果相同,则确定程序A通过安全验证,如果不相同,则程序A未通过安全验证,即程序A验签失败,拒绝程序A的运行。
在发明实施例的另一优选实施方式中,还包括步骤140(图中未示出):返回历史验证通过次数为最小值的缓存的序号,其中,各缓存中记录有历史验证通过次数。
优选地,若基于预存储的至少一个数字证书确定程序通过安全验证,还包括:依据程序的第一字节数来更新历史验证通过次数为最小值的缓存指向的缓存数据块的字节数;依据程序的相关数据信息来更新历史验证通过次数为最小值的缓存指向的缓存数据块中存储的数据信息;以及,将序号对应的缓存中记录的历史验证通过次数设置为预设值。
具体地,在将cnt依次与预存储的各缓存(例如缓存1,缓存2,…,缓存N)所指向的缓存数据块的字节数(即第二字节数)进行比对的过程中,操作系统会记录比对过或遍历过的各缓存中记录的历史验证通过次数的数值,在比对过程或遍历过程结束后,返回所记录的历史验证通过次数为最小值的缓存的序号,其中,在实际应用中,可以仅当未查找到与字节数cnt相等的缓存时,即不存在与第一字节数相等的第二字节数时,再返回遍历过程中记录的历史验证通过次数为最小值的缓存的序号。
进一步地,当基于数字证书对程序A进行安全验证且通过时,即通过证书库中的数字证书对程序验签通过时,需要更新缓存,其中,待更新的缓存就是历史验证通过次数为最小值的缓存,在更新的过程中,依据程序A的第一字节数cnt来更新历史验证通过次数为最小值的缓存指向的缓存数据块的字节数,即将历史验证通过次数的缓存所指向的缓存数据块的字节数更新为程序A的第一字节数cnt;另外,依据程序A的相关数据信息来更新历史验证通过次数为最小值的缓存指向的缓存数据块中存储的数据信息,即将历史验证通过次数为最小值的缓存指向的缓存数据块中存储的数据信息更新为程序A的相关数据信息;以及,将上述序号对应的缓存数据块的验证通过次数设置为预设值,例如设置为1,从而完成缓存的更新,便于后续再次进行程序安全验证时,能够根据更新后的缓存进行安全验证。
需要说明的是,多个中央处理器CPU在运行程序时,会同时访问缓存目录,因此,需要通过锁机制进行同步,即当更新缓存时,需要获取到该缓存的写锁,从而获取到该缓存的写权限。
在本发明实施例中,通过操作系统中预先存储的缓存来对程序进行安全验证,当无法找到与待运行程序匹配的缓存时,再通过数字证书来对程序进行安全验证,不仅避免了仅依赖数字证书这种单一的程序安全验证方法,而且还避免了解密运算与哈希运算因为大量数学运算而造成的耗时及CPU运算力,从而在一定程度上提高了程序的安全验证效率,减少了对CPU运算力的消耗。
本发明第二实施例提供了一种程序安全验证装置,如图3所示,包括:读取模块31、字节数确定模块32与安全验证模块33,其中,读取模块31用于当检测到程序启动运行时,读取程序的相关数据信息,程序的相关数据信息包括程序的指令序列及程序对应的签名信息;字节数确定模块32用于确定程序的相关数据信息的第一字节数;安全验证模块33用于基于第一字节数对程序进行安全验证。
进一步地,安全验证模块33包括比对子模块331、第一验证子模块与332第二验证子模块333,如图4所示,其中,比对子模块331用于将第一字节数依次与预存储的各缓存中记录的第二字节数进行比对,以确定是否存在与第一字节数相等的第二字节数,其中,第二字节数为各缓存所指向的缓存数据块的字节数;第一验证子模块332用于当存在与第一字节数相等的第二字节数时,基于与第一字节数相等的第二字节数对应的至少一个缓存数据块,对程序进行安全验证;第二验证子模块333用于当不存在与第一字节数相等的第二字节数时,基于预存储的至少一个数字证书对程序进行安全验证。
进一步地,第一验证子模块332包括字节数比对子单元3321与第一安全验证子单元3322,如图4所示,其中,字节数比对子单元3321用于将与第一字节数相等的第二字节数对应的至少一个缓存数据块中存储的数据信息依次与程序的相关数据信息进行比对;第一安全验证子单元3322用于当程序的相关数据信息与任一缓存数据块中存储的数据信息相同时,确定程序通过安全验证,以及当程序的相关数据信息与至少一个缓存数据块中存储的数据信息均不相同时,确定通过第二验证子模块对程序进行安全验证。
进一步地,第二验证子模块333包括数字证书确定子单元3331与第二安全验证子单元3332,如图4所示,其中,数字证书确定子单元3331用于根据程序对应的签名信息中携带的数字证书标识信息,确定签名信息对应的数字证书;第二安全验证子单元3332用于基于数字证书对程序进行安全验证。
进一步地,程序的签名信息还包括签名信息的密文部分;其中,第二安全验证子单元3332包括解密子单元33321、哈希运算子单元33322、检测子单元33323与确定子单元33324,如图4所示,其中,解密子单元33321用于通过数字证书对应的公钥对程序对应的签名信息的密文部分进行解密运算,得到相应的解密结果;哈希运算子单元33322用于对程序的指令序列进行哈希运算,得到相应的哈希运算结果;检测子单元33323用于检测解密结果与哈希运算结果是否相同;确定子单元33324用于当解密结果与哈希运算结果相同时,确定程序通过安全验证。
进一步地,该装置还包括返回模块34,如图4所示,其中,返回模块34用于返回历史验证通过次数为最小值的缓存的序号,其中,各缓存中记录有历史验证通过次数。
进一步地,该装置还包括第一更新模块35、第二更新模块36与设置模块37,如图4所示,其中,第一更新模块35用于依据程序的第一字节数来更新历史验证通过次数为最小值的缓存指向的缓存数据块的字节数;第二更新模块36用于依据程序的相关数据信息来更新历史验证通过次数为最小值的缓存指向的缓存数据块中存储的数据信息;设置模块37用于将序号对应的缓存中记录的历史验证通过次数设置为预设值。
通过本发明实施例,当检测到程序启动运行时,读取程序的相关数据信息,程序的相关数据信息包括程序的指令序列及程序对应的签名信息,为后续确定程序的相关数据信息的字节数提供前提保障;确定程序的相关数据信息的第一字节数,便于后续能够根据该第一字节数快速、有效地对程序进行安全验证;基于第一字节数对程序进行安全验证,从而能够根据第一字节数确定相应的验证策略,并根据相应的验证策略高效、准确地对程序进行安全验证。
另外,在本发明实施例中,通过操作系统中预先存储的缓存来对程序进行安全验证,当无法找到与待运行程序匹配的缓存时,再通过数字证书来对程序进行安全验证,从而在一定程度上提高了程序的安全验证效率,减少了对CPU运算力的消耗。
本发明的另一实施例提供了一种终端设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述的程序安全验证方法。
本技术领域技术人员可以理解,本发明包括涉及用于执行本申请中所述操作中的一项或多项的设备。这些设备可以为所需的目的而专门设计和制造,或者也可以包括通用计算机中的已知设备。这些设备具有存储在其内的计算机程序,这些计算机程序选择性地激活或重构。这样的计算机程序可以被存储在设备(例如,计算机)可读介质中或者存储在适于存储电子指令并分别耦联到总线的任何类型的介质中,所述计算机可读介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随即存储器)、EPROM(Erasable ProgrammableRead-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically ErasableProgrammable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
本技术领域技术人员可以理解,可以用计算机程序指令来实现这些结构图和/或框图和/或流图中的每个框以及这些结构图和/或框图和/或流图中的框的组合。本技术领域技术人员可以理解,可以将这些计算机程序指令提供给通用计算机、专业计算机或其他可编程数据处理方法的处理器来实现,从而通过计算机或其他可编程数据处理方法的处理器来执行本发明公开的结构图和/或框图和/或流图的框或多个框中指定的方案。
本技术领域技术人员可以理解,本发明中已经讨论过的各种操作、方法、流程中的步骤、措施、方案可以被交替、更改、组合或删除。进一步地,具有本发明中已经讨论过的各种操作、方法、流程中的其他步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。进一步地,现有技术中的具有与本发明中公开的各种操作、方法、流程中的步骤、措施、方案也可以被交替、更改、重排、分解、组合或删除。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (7)

1.一种程序安全验证方法,其特征在于,包括:
当检测到程序启动运行时,读取所述程序的相关数据信息,所述程序的相关数据信息包括所述程序的指令序列及所述程序对应的签名信息;
确定所述程序的相关数据信息的第一字节数;
基于所述第一字节数对所述程序进行安全验证;
所述基于所述第一字节数对所述程序进行安全验证,包括:
将所述第一字节数依次与预存储的各缓存中记录的第二字节数进行比对,以确定是否存在与所述第一字节数相等的第二字节数,其中,所述第二字节数为各缓存所指向的缓存数据块的字节数;
若存在,则基于与所述第一字节数相等的第二字节数对应的至少一个缓存数据块,对所述程序进行安全验证;
若不存在,则基于预存储的至少一个数字证书对所述程序进行安全验证;
所述基于与所述第一字节数相等的第二字节数对应的至少一个缓存数据块对所述程序进行安全验证,包括:
将与所述第一字节数相等的第二字节数对应的至少一个缓存数据块中存储的数据信息依次与所述程序的相关数据信息进行比对;
若所述程序的相关数据信息与任一缓存数据块中存储的数据信息相同,确定所述程序通过安全验证;
若所述程序的相关数据信息与至少一个缓存数据块中存储的数据信息均不相同,基于预存储的至少一个数字证书对所述程序进行安全验证。
2.根据权利要求1所述的方法,其特征在于,所述基于预存储的至少一个数字证书对所述程序进行安全验证,包括:
根据所述程序对应的签名信息中携带的数字证书标识信息,确定所述签名信息对应的数字证书;
基于所述数字证书对所述程序进行安全验证。
3.根据权利要求2所述的方法,其特征在于,所述程序的签名信息还包括:所述签名信息的密文部分;
其中,所述基于所述数字证书对所述程序进行安全验证,包括:
通过所述数字证书对应的公钥对所述签名信息的密文部分进行解密运算,得到相应的解密结果;
对所述程序的指令序列进行哈希运算,得到相应的哈希运算结果;
检测所述解密结果与所述哈希运算结果是否相同;
若相同,确定所述程序通过安全验证。
4.根据权利要求1所述的方法,其特征在于,将所述第一字节数依次与预存储的各缓存中记录的第二字节数进行比对之后,还包括:
返回历史验证通过次数为最小值的缓存的序号,其中,各缓存中记录有历史验证通过次数。
5.根据权利要求4所述的方法,其特征在于,若基于预存储的至少一个数字证书确定所述程序通过安全验证,还包括:
依据所述程序的第一字节数来更新历史验证通过次数为最小值的缓存指向的缓存数据块的字节数;
依据所述程序的相关数据信息来更新历史验证通过次数为最小值的缓存指向的缓存数据块中存储的数据信息;以及,
将所述序号对应的缓存中记录的历史验证通过次数设置为预设值。
6.一种程序安全验证装置,其特征在于,包括:
读取模块,用于当检测到程序启动运行时,读取所述程序的相关数据信息,所述程序的相关数据信息包括所述程序的指令序列及所述程序对应的签名信息;
字节数确定模块,用于确定所述程序的相关数据信息的第一字节数;
安全验证模块,用于基于所述第一字节数对所述程序进行安全验证;
所述安全验证模块包括比对子模块、第一验证子模块与第二验证子模块;
所述比对子模块,用于将所述第一字节数依次与预存储的各缓存中记录的第二字节数进行比对,以确定是否存在与所述第一字节数相等的第二字节数,其中,所述第二字节数为各缓存所指向的缓存数据块的字节数;
所述第一验证子模块,用于当存在与所述第一字节数相等的第二字节数时,基于与所述第一字节数相等的第二字节数对应的至少一个缓存数据块,对所述程序进行安全验证;
所述第一验证子模块,包括:字节数比对子单元与第一安全验证子单元;
所述字节数比对子单元,用于将与第一字节数相等的第二字节数对应的至少一个缓存数据块中存储的数据信息依次与程序的相关数据信息进行比对;
所述第一安全验证子单元,用于当程序的相关数据信息与任一缓存数据块中存储的数据信息相同时,确定程序通过安全验证,以及当程序的相关数据信息与至少一个缓存数据块中存储的数据信息均不相同时,确定通过第二验证子模块对程序进行安全验证;
所述第二验证子模块,用于当不存在与所述第一字节数相等的第二字节数时,基于预存储的至少一个数字证书对所述程序进行安全验证。
7.一种终端设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-5任一项所述的程序安全验证的方法。
CN201810185113.1A 2018-03-07 2018-03-07 程序安全验证方法、装置及终端设备 Active CN108416209B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810185113.1A CN108416209B (zh) 2018-03-07 2018-03-07 程序安全验证方法、装置及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810185113.1A CN108416209B (zh) 2018-03-07 2018-03-07 程序安全验证方法、装置及终端设备

Publications (2)

Publication Number Publication Date
CN108416209A CN108416209A (zh) 2018-08-17
CN108416209B true CN108416209B (zh) 2021-10-22

Family

ID=63130104

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810185113.1A Active CN108416209B (zh) 2018-03-07 2018-03-07 程序安全验证方法、装置及终端设备

Country Status (1)

Country Link
CN (1) CN108416209B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101189586A (zh) * 2005-06-01 2008-05-28 松下电器产业株式会社 计算机系统及程序生成装置
CN102819714A (zh) * 2012-07-27 2012-12-12 东莞宇龙通信科技有限公司 终端和应用程序安全控制方法
CN102930185A (zh) * 2012-11-28 2013-02-13 中国人民解放军国防科学技术大学 运行时程序安全关键数据的完整性验证方法及装置
CN105308612A (zh) * 2013-03-11 2016-02-03 微软技术许可有限责任公司 用于安全代码启动的动态加载测量环境
CN106778227A (zh) * 2016-11-24 2017-05-31 四川无声信息技术有限公司 应用程序处理方法、应用程序启动方法及装置
CN106991321A (zh) * 2017-04-18 2017-07-28 北京元心科技有限公司 多容器系统中无痕运行应用程序的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9542298B2 (en) * 2014-07-08 2017-01-10 International Business Machines Corporation Reducing resource overhead in verbose trace using recursive object pruning prior to string serialization

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101189586A (zh) * 2005-06-01 2008-05-28 松下电器产业株式会社 计算机系统及程序生成装置
CN102819714A (zh) * 2012-07-27 2012-12-12 东莞宇龙通信科技有限公司 终端和应用程序安全控制方法
CN102930185A (zh) * 2012-11-28 2013-02-13 中国人民解放军国防科学技术大学 运行时程序安全关键数据的完整性验证方法及装置
CN105308612A (zh) * 2013-03-11 2016-02-03 微软技术许可有限责任公司 用于安全代码启动的动态加载测量环境
CN106778227A (zh) * 2016-11-24 2017-05-31 四川无声信息技术有限公司 应用程序处理方法、应用程序启动方法及装置
CN106991321A (zh) * 2017-04-18 2017-07-28 北京元心科技有限公司 多容器系统中无痕运行应用程序的方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SEcube: An Open-Source Security Platform in a Single SoC;Antonio Varriale等;《网页在线公开:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7483810》;20160602;第1-6页 *
Side channel analysis techniques towards a methodology for reverse engineering of JavaCard byte-code;Mohammed Amine Kasmi等;《网页在线公开:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7492753》;20160616;第1-7页 *
采用数字签名技术的可信启动方法研究;杨霞等;《计算机工程与应用》;20160616;第45卷(第3期);第448-452页 *

Also Published As

Publication number Publication date
CN108416209A (zh) 2018-08-17

Similar Documents

Publication Publication Date Title
US11876791B2 (en) Message authentication with secure code verification
US10474823B2 (en) Controlled secure code authentication
US9043615B2 (en) Method and apparatus for a trust processor
US8171275B2 (en) ROM BIOS based trusted encrypted operating system
CN1276319C (zh) 一种保护电子装置的方法,保护系统及电子装置
CN110990084B (zh) 芯片的安全启动方法、装置、存储介质和终端
AU2008200225B8 (en) ROM bios based trusted encrypted operating system
EP3610607B1 (en) Cryptographic key management based on identity information
US20060107047A1 (en) Method, device, and system of securely storing data
US20090282254A1 (en) Trusted mobile platform architecture
US8543841B2 (en) Secure hosted execution architecture
JP2016520265A (ja) セキュリティパラメータに基づくワーキングセキュリティキーの生成
JP2018512010A (ja) セキュアなソフトウェアの認証と検証
KR20110139145A (ko) 컴퓨팅 시스템의 보안 코프로세서 모듈의 집약성을 향상시키는 방법, 복수의 기계 인스트럭션을 포함하는 기계 판독가능한 저장 매체 및 컴퓨팅 시스템의 보안 코프로세서 모듈
CN111614467B (zh) 系统后门防御方法、装置、计算机设备和存储介质
JP2009080772A (ja) ソフトウェア起動システム、ソフトウェア起動方法、及びソフトウェア起動プログラム
US20080148045A1 (en) Method for Reducing Fraud
CN108416209B (zh) 程序安全验证方法、装置及终端设备
CN116956298A (zh) 应用运行环境检测方法和装置
CN108427880B (zh) 程序运行的方法及装置
JP2002509269A (ja) 送出器デバイスから受信器デバイスへのメッセージの伝達を安全にする方法
CN114791834A (zh) 一种应用程序的启动方法、装置、电子设备及存储介质
CN117828551A (zh) 软件产品的许可证检测方法、装置及介质

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230427

Address after: Room 401, Floor 4, No. 2, Haidian East Third Street, Haidian District, Beijing 100080

Patentee after: Yuanxin Information Technology Group Co.,Ltd.

Address before: 100176 room 2222, building D, building 33, 99 Kechuang 14th Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing

Patentee before: YUANXIN TECHNOLOGY