CN111291371A - 一种应用程序安全验证方法及装置 - Google Patents

一种应用程序安全验证方法及装置 Download PDF

Info

Publication number
CN111291371A
CN111291371A CN202010028242.7A CN202010028242A CN111291371A CN 111291371 A CN111291371 A CN 111291371A CN 202010028242 A CN202010028242 A CN 202010028242A CN 111291371 A CN111291371 A CN 111291371A
Authority
CN
China
Prior art keywords
verified
executable file
file
application program
verification
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.)
Pending
Application number
CN202010028242.7A
Other languages
English (en)
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.)
Beijing Shenzhidu Technology Co ltd
Original Assignee
Beijing Shenzhidu 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 Beijing Shenzhidu Technology Co ltd filed Critical Beijing Shenzhidu Technology Co ltd
Priority to CN202010028242.7A priority Critical patent/CN111291371A/zh
Publication of CN111291371A publication Critical patent/CN111291371A/zh
Pending legal-status Critical Current

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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种应用程序安全验证方法,在计算设备中执行,包括:在应用程序启动运行时以及运行过程中,判断待载入内存的目标文件是否为可执行文件;若目标文件为可执行文件,则将应用程序的当前进程号和可执行文件的文件名加入待验证链表,将当前进程作为待验证进程,将其状态设置为休眠;获取待验证链表,验证待验证链表中的可执行文件的安全性,将验证结果写回待验证链表;唤醒待验证进程,根据进程号来查找待验证链表中是否包括待验证进程所操作的可执行文件的验证结果,当查找到验证结果时,根据验证结果来允许或拒绝将相应的可执行文件载入内存,以使应用程序继续运行或终止运行。本发明一并公开了相应的应用程序安全验证装置和计算设备。

Description

一种应用程序安全验证方法及装置
技术领域
本发明涉及Linux应用安全技术领域,尤其涉及一种Linux操作系统下的用于验证应用程序安全性的方法及装置。
背景技术
Linux操作系统被广泛应用于服务器、手机以及嵌入式等领域。随着Linux系统的推广和普及,基于Linux操作系统的应用程序越来越多,应用程序的安全性问题逐渐被开发者及用户所重视。恶意的应用程序可能非法获取用户信息,病毒或恶意程序可能通过篡改系统中的其他程序来实现入侵,从而给系统安全带来威胁。
因此,需要提供一种应用于Linux操作系统的应用程序安全验证方法。
发明内容
为此,本发明提供一种应用程序安全验证方法及装置,以力图解决或至少缓解上面存在的问题。
根据本发明的第一个方面,提供一种应用程序安全验证方法,在计算设备中执行,包括:
可选地,在根据本发明的应用程序安全验证方法中,在应用程序启动运行时以及运行过程中,判断待载入内存的目标文件是否为可执行文件;若目标文件为可执行文件,则将所述应用程序的当前进程号和所述可执行文件的文件名加入待验证链表,将所述当前进程作为待验证进程,并将其状态设置为休眠;获取所述待验证链表,验证待验证链表中的可执行文件的安全性,将验证结果写回所述待验证链表;唤醒待验证进程,根据进程号来查找待验证链表中是否包括待验证进程所操作的可执行文件的验证结果,当查找到验证结果时,根据验证结果来允许或拒绝将相应的可执行文件载入内存,以使应用程序继续运行或终止运行。
可选地,在根据本发明的应用程序安全验证方法中,可执行文件包括可执行程序和动态链接库。
可选地,在根据本发明的应用程序安全验证方法中,按照以下步骤来判断待载入内存的目标文件是否为可执行文件:判断内核可执行文件指针是否非空、目标文件对内存映射区域的权限是否为可读且可执行、目标文件对内存映射区域的共享及存储方式是否包括私有方式;若以上三个判断条件均为是,则所述目标文件为可执行文件。
可选地,在根据本发明的应用程序安全验证方法中,若以上三个判断条件至少一个为否,则所述目标文件不是可执行文件,将所述目标文件载入内存,以便应用程序继续运行。
可选地,在根据本发明的应用程序安全验证方法中,在所述将所述应用程序的当前进程号和所述可执行文件的文件名加入待验证链表的步骤之前,还包括步骤:判断所述可执行文件是否位于预先配置的可信目录;若所述可执行文件位于上述可信目录,则将所述可执行文件载入内存,以使应用程序继续运行。
可选地,在根据本发明的应用程序安全验证方法中,可信目录包括系统软件目录/usr与系统启动目录/boot。
可选地,在根据本发明的应用程序安全验证方法中,可执行文件包括待载入数据、签名和数字证书,所述签名为采用所述数字证书对应的私钥对所述待载入数据的映射值进行加密而得到;所述验证待验证链表中的可执行文件的安全性的步骤包括:计算所述待载入数据的映射值;采用所述数字证书中记载的公钥对所述签名进行解密,得到解密结果;若计算出的映射值与所述解密结果相同,则所述可执行文件安全。
可选地,在根据本发明的应用程序安全验证方法中,映射值为哈希值。
可选地,在根据本发明的应用程序安全验证方法中,验证待验证链表中的可执行文件的安全性的步骤还包括:在已验证缓存中查找所述可执行文件的验证结果,其中,所述已验证缓存中存储有自上次安全性验证后未被修改的可执行文件的验证结果;若未查找到所述可执行文件的验证结果,则通过对比待载入数据的映射值与签名的解密结果来判断可执行文件的安全性。
可选地,在根据本发明的应用程序安全验证方法中,当在待验证链表中未查找到待验证进程的可执行文件的验证结果时,将该待验证进程的状态设置为休眠。
可选地,在根据本发明的应用程序安全验证方法中,待验证链表存储于设备文件中,所述获取所述待验证链表以及将验证结果写回所述待验证链表的步骤通过所述设备文件的读、写接口完成。
可选地,在根据本发明的应用程序安全验证方法中,进程的休眠和唤醒机制包括:等待队列、netlink socket、信号量。
根据本发明的第二个方面,提供一种应用程序安全验证装置,驻留于计算设备中,包括内核模块和用户态验证模块,所述内核模块适于:在应用程序启动运行时以及运行过程中,判断待载入内存的目标文件是否为可执行文件;若目标文件为可执行文件,则将所述应用程序的当前进程号和所述可执行文件的文件名加入待验证链表,将所述当前进程作为待验证进程,并将其状态设置为休眠;唤醒所述用户态验证模块,以便所述用户态验证模块验证待验证链表中的可执行文件的安全性;以及在所述用户态验证模块将验证结果写回待验证链表后,唤醒待验证进程,根据进程号来查找待验证链表中是否包括待验证进程所操作的可执行文件的验证结果,当查找到验证结果时,根据验证结果来允许或拒绝将相应的可执行文件载入内存,以使应用程序继续运行或终止运行;所述用户态验证模块适于:获取所述待验证链表,验证待验证链表中的可执行文件的安全性,以及将验证结果写回所述待验证链表。
可选地,在根据本发明的应用程序安全验证装置中,可执行文件包括待载入数据、签名和数字证书,所述签名为采用所述数字证书对应的私钥对所述待载入数据的映射值进行加密而得到;所述用户态验证模块适于按照以下步骤来验证待验证链表中的可执行文件的安全性:计算所述待载入数据的映射值;采用所述数字证书中记载的公钥对所述签名进行解密,得到解密结果;若计算出的映射值与所述解密结果相同,则所述可执行文件安全。
可选地,在根据本发明的应用程序安全验证装置中,还包括签名模块,所述签名模块适于:计算可执行文件的待载入数据的映射值,采用数字证书对应的私钥对所述映射值进行加密以得到签名;以及将所述签名和所述数字证书写入所述可执行文件中。
根据本发明的第三个方面,提供一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,当所述程序指令被所述处理器读取并执行时,使得所述计算设备执行上述应用程序安全验证方法。
根据本发明的第四个方面,提供一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行上述应用程序安全验证方法。
本发明的应用程序安全验证方案通过结合内核模块与用户态验证模块,实现了Linux操作系统下的应用程序安全验证,大大提高了Linux操作系统的安全性。当应用程序启动运行时以及运行过程中,在内核将应用程序的可执行文件载入内存之前,唤醒用户态验证模块,以便用户态验证模块来验证可执行文件的安全性。内核模块根据用户态验证模块提交的验证结果来采取相应措施。若验证结果为安全,则将可执行文件载入内存,以使应用程序继续运行;若验证结果为不安全,则拒绝将可执行文件载入内存,从而使应用程序终止运行,出错退出。
应用程序的可执行文件中记载有待载入数据的签名和数字证书,数字证书经认证中心认证,能够用于确认应用程序的来源。用户态验证模块根据数据证书中记载的公钥来对其可执行文件进行安全验证,实现了应用程序从开发、下载安装到运行的安全管理闭环,保证了应用程序的安全性,从而提高了Linux操作系统的安全性。
在本发明的应用程序安全验证方法中,可以通过判断可执行文件是否位于预先配置的可信目录来判断可执行文件是否安全。如果可执行文件位于可信目录(例如/usr与/boot),则认为可执行文件安全,不再需要调用用户态验证模块来验证可执行文件的安全性,从而避免操作系统在内核态与用户态之间切换,减少了安全验证过程的计算量,加快了安全验证的速度,提高了安全验证过程的性能。
此外,在本发明的应用程序安全验证方法中,可以将可执行文件的安全验证结果缓存下来。这样,当下次验证可执行文件的安全性时,可以先从缓存中查找验证结果,若缓存中不存在相应的验证结果,再通过对比待载入数据的映射值与签名的解密结果来判断可执行文件的安全性。这样可以减少安全验证过程中的磁盘IO操作及计算量,提高了安全验证过程的性能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的应用程序安全验证装置100的示意图;
图2示出了根据本发明一个实施例的安全验证系统200的示意图;
图3示出了根据本发明一个实施例的计算设备300的示意图;
图4示出了根据本发明一个实施例的应用程序安全验证方法400的流程图;以及
图5示出了根据本发明一个实施例的应用程序安全验证过程的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
针对现有技术中存在的问题,本发明提供一种应用程序安全验证方法及装置,以实现Linux操作系统下的应用程序安全验证,提高Linux操作系统的安全性。
图1示出了根据本发明一个实施例的应用程序安全验证装置100的示意图。如图1所示,装置100包括签名模块110、内核模块120和用户态验证模块130。
签名模块110适于采用数字证书对应用程序的可执行文件进行签名。
数字证书指的是在互联网中用于标识主体身份的数字认证。在应用开发领域,数字证书由认证中心(Certificate Authority,CA)签发,用于证明应用程序的开发者(可以是公司,也可以是个人)的身份。认证中心通常是应用程序所依赖的操作系统的开发商,例如,开发者开发运行于Linux操作系统上的应用程序,那么其需要向Linux操作系统的开发商来申请数字证书。
开发者申请数字证书的过程通常如下:开发者在本地生成自己的密钥对(包括公钥、私钥),将私钥保存在本地,将公钥和开发者的身份信息发送至认证中心。认证中心核实开发者身份后,向开发者签发数字证书,数字证书中包括证书的序列号(用于唯一标识该认证中心签发的数字证书)、有效期、所有人名称(即开发者名称)、证书所有人的公钥、认证中心对该证书的签名等信息。
在本发明的实施例中,认证中心除了将数字证书返回给开发者之外,还将签名模块110返回给开发者。签名模块110可以实现为一个软件开发工具包((SoftwareDevelopment Kit,SDK),开发者可以通过SDK所提供的接口,来采用数字证书对应用程序的可执行文件进行签名。
根据一种实施例,签名模块110可以按照以下步骤来对应用程序的可执行文件进行签名:计算可执行文件的待载入数据的映射值,采用数字证书所对应的私钥对该映射值进行加密以得到签名;以及将签名和数字证书写入可执行文件中。
可执行文件的待载入数据,指的是可执行文件在执行时,需要被载入内存的数据部分。待载入数据的映射值可以是按照任意一种映射算法来对待载入数据进行映射所得到的值,映射算法通常采用哈希算法,例如MD5、SHA等,但不限于此,相应地,映射值即为哈希值。本发明对私钥加密映射值时所采用的加密算法不做限制,其例如可以是RSA算法、ElGamal算法等,但不限于此。
内核模块120、用户态验证模块130用于在应用程序启动运行时以及运行过程中,对应用程序的安全性进行验证。其中,内核模块120实现为Linux操作系统内核的一部分,用户态验证模块130实现为运行于Linux操作系统上的用户态程序。在本发明的实施例中,内核模块120与用户态验证模块130相结合,实现了Linux系统下的应用程序安全验证。
当应用程序启动运行时以及运行过程中,内核模块120判断待载入内存的目标文件是否为可执行文件;若目标文件为可执行文件,则将应用程序的当前进程号(ProcessID,PID)和可执行文件的文件名加入待验证链表,将当前进程作为待验证进程,并将其状态设置为休眠。随后,唤醒用户态验证模块130,以便用户态验证模块130来验证待验证链表中的可执行文件的安全性。
用户态验证模块130被内核模块120唤醒后,获取待验证链表,验证待验证链表中的可执行文件的安全性,并将验证结果写回待验证链表。
当用户态验证模块130将验证结果写回待验证链表后,内核模块120唤醒待验证进程,根据进程号来查找待验证链表中是否包括待验证进程所操作的可执行文件的验证结果。当查找到验证结果时,根据验证结果来允许或拒绝将相应的可执行文件载入内存,以使应用程序继续运行或终止运行。
内核模块120和用户态验证模块130的功能及处理逻辑将于下文中详述。
需要说明的是,本发明的应用程序安全验证装置100包括签名模块110、内核模块120、用户态验证模块130三个软件模块,但是,这三个软件模块不一定驻留于同一个计算设备中。内核模块120和用户态验证模块130相结合,用于在应用程序启动运行时以及运行过程中对应用程序的安全性进行验证,这两个模块通常驻留于同一个计算设备中,如图1中的虚线框所示。签名模块110用于对应用程序的可执行文件进行签名,其可以与内核模块120、用户态验证模块130驻留于同一个计算设备中,也可以与内核模块120、用户态验证模块130驻留于不同的计算设备中。
图2示出了根据本发明一个实施例的安全验证系统200的示意图,以说明装置100中的三个软件模块在计算设备中的具体部署方式。需要说明的是,图2中仅示例性地示出了一个开发终端210、一个应用商店服务器220和一个用户终端230,本领域技术人员可以理解,在实践中,开发终端210、应用商店服务器220、用户终端230均可以有多个。
如图2所示,在一个实施例中,签名模块110仅部署于开发终端210中,内核模块120和用户态验证模块130仅部署于用户终端230中。具体地:
开发终端210中仅部署有签名模块110。开发终端210为开发者所使用的用于对应用程序进行开发、测试的终端设备,其例如可以是台式计算机、笔记本计算机、手机、平板电脑等,但不限于此。
开发者在开发终端210上开发应用于Linux操作系统的应用程序A,并采用签名模块110对应用程序A的可执行文件进行签名,签名后的可执行文件包括待载入数据、签名和开发者的数字证书。
应用商店服务器220为用于管理适用于Linux操作系统的应用程序的服务器。当开发者开发完成应用程序A并签名后,将签名后的应用程序A的安装包上传至应用商店服务器220。应用商店服务器220根据开发者的数字证书来验证应用程序A的安全性,当安全性验证通过后,将其发布至应用商店,以供用户终端230下载安装。
用户终端230为用户所使用的终端设备,其例如可以是台式计算机、笔记本计算机等个人配置的计算机,也可以是手机、平板电脑、可穿戴设备等移动终端,还可以是诸如智能家居设备、工业控制设备等物联网设备,但不限于此。
用户终端230中安装有Linux操作系统,Linux操作系统包括内核模块120和在操作系统上实现的用户态验证模块130。用户可以从应用商店服务器220处下载应用程序A的安装包并进行安装,完成安装后,用户终端230上便可以运行应用程序A。当用户启动应用程序A后,内核需要将应用程序A的可执行文件载入内存,随后才能执行该程序。
在本发明的实施例中,在将可执行文件载入内存之前,由内核模块120和用户态验证模块130来验证可执行文件的安全性,若验证成功,则可执行文件安全,将其载入内存,从而使应用程序A继续运行;若验证失败,则可执行文件不安全,拒绝将其载入内存,从而使应用程序A终止运行。
如图2所示,在另一个实施例中,签名模块110、内核模块120和用户态验证模块130均部署于开发终端210中,并且,内核模块120和用户态验证模块130也部署于用户终端230中。具体地:
开发者在开发终端210上开发应用于Linux操作系统的应用程序A,并采用签名模块110对应用程序A的可执行文件进行签名,签名后的可执行文件包括待载入数据、签名和开发者的数字证书。
并且,开发终端210上安装有Linux操作系统,Linux操作系统包括内核模块120和在操作系统上实现的用户态验证模块130。当开发者完成对应用程序A的签名后,可以运行签名后的应用程序A,以对应用程序A进行测试。当应用程序A启动后,将应用程序A的可执行文件载入内存之前,由内核模块120和用户态验证模块130来验证可执行文件的安全性,若验证成功,则可执行文件安全,将其载入内存,从而使应用程序A继续运行,测试通过。若验证失败,则可执行文件不安全,拒绝将其载入内存,从而使应用程序A终止运行,测试失败。
当开发者对应用程序A签名并测试通过后,将签名后的应用程序A的安装包上传至应用商店服务器220。应用商店服务器220根据开发者的数字证书来验证应用程序A的安全性,当安全性验证通过后,将其发布至应用商店,以供用户终端230下载安装。
用户终端230中安装有Linux操作系统,Linux操作系统包括内核模块120和在操作系统上实现的用户态验证模块130。用户可以从应用商店服务器220处下载应用程序A的安装包并进行安装,完成安装后,用户终端230上便可以运行应用程序A。当用户启动应用程序A后,内核将应用程序A的可执行文件载入内存之前,由内核模块120和用户态验证模块130来验证可执行文件的安全性,若验证成功,则可执行文件安全,将其载入内存,从而使应用程序A继续运行;若验证失败,则可执行文件不安全,拒绝将其载入内存,从而使应用程序A终止运行。
本发明的内核模块120和用户态验证模块130驻留于计算设备中,例如驻留于图2所示的开发终端210或用户终端230中,用于执行本发明的应用程序安全验证方法400,以实现Linux操作系统下的应用程序安全性验证。计算设备可以是任意安装有Linux操作系统的设备,例如服务器、个人计算机、手机、平板电脑、可穿戴设备、物联网设备等,但不限于此。
图3示出了根据本发明一个实施例的计算设备300的示意图。需要说明的是,图3所示的计算设备300仅为一个示例,在实践中,用于实施本发明的应用程序安全验证方法400的计算设备可以是任意型号的设备,其硬件配置情况可以与图3所示的计算设备300相同,也可以与图3所示的计算设备300不同。实践中用于实施本发明的应用程序安全验证方法的计算设备可以对图3所示的计算设备300的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
如图3所示,在基本的配置302中,计算设备300典型地包括系统存储器306和一个或者多个处理器304。存储器总线308可以用于在处理器304和系统存储器306之间的通信。
取决于期望的配置,处理器304可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器304可以包括诸如一级高速缓存310和二级高速缓存312之类的一个或者多个级别的高速缓存、处理器核心314和寄存器316。示例的处理器核心314可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器318可以与处理器304一起使用,或者在一些实现中,存储器控制器318可以是处理器304的一个内部部分。
取决于期望的配置,系统存储器306可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器RAM,磁盘中的数据需要加载至物理内存中才能够被处理器304读取。系统存储器306可以包括操作系统320、一个或者多个应用322以及程序数据324。在一些实施方式中,应用322可以布置为在操作系统上由一个或多个处理器304利用程序数据324执行指令。在本发明的实施例中,操作系统320为Linux操作系统,其包括用于处理基本系统服务以及执行依赖于硬件的任务的程序指令。应用322包括用于实现各种用户期望的功能的程序指令,应用322例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境IDE、编译器等)等,但不限于此。当应用322被安装到计算设备300中时,可以向操作系统320添加驱动模块。
在计算设备300启动运行时,处理器304会从存储器306中读取操作系统320的程序指令并执行。应用322运行在操作系统320之上,利用操作系统320以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用322时,应用322会加载至存储器306中,处理器304从存储器306中读取并执行应用322的程序指令。
计算设备300还可以包括有助于从各种接口设备(例如,输出设备342、外设接口344和通信设备346)到基本配置302经由总线/接口控制器330的通信的接口总线340。示例的输出设备342包括图形处理单元348和音频处理单元350。它们可以被配置为有助于经由一个或者多个A/V端口352与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口344可以包括串行接口控制器354和并行接口控制器356,它们可以被配置为有助于经由一个或者多个I/O端口358和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备346可以包括网络控制器360,其可以被布置为便于经由一个或者多个通信端口364与一个或者多个其他计算设备362通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在本发明的实施例中,操作系统320为Linux操作系统,操作系统320包括内核模块120,应用322包括用户态验证模块130,内核模块120和用户态验证模块130执行本发明的应用程序安全验证方法400,以保证Linux操作系统下的应用程序的安全性。
图4示出了根据本发明一个实施例的应用程序安全验证方法400的流程图。方法400在计算设备(例如前述计算设备300)中执行,具体地,方法400由计算设备中的内核模块120和用户态验证模块130执行。如图4所示,方法400始于步骤S410。
在步骤S410中,在应用程序启动运行时以及运行过程中,判断待载入内存的目标文件是否为可执行文件。
当应用程序启动运行时,shell调用fork系统调用创建一个新进程,新进程调用execve系统调用进入内核,内核通过内存映射函数mmap来将应用程序运行所需要的目标文件载入内存。目标文件包括应用程序的可执行文件以及执行该应用程序所需要的非可执行文件,可执行文件进一步包括可执行程序和动态链接库。在Linux系统下,可执行文件通常为ELF格式,即ELF文件。
在应用程序的运行过程中,也可能需要将一些目标文件载入内存,例如,将应用程序所需要的动态链接库或非可执行文件载入内存。
在本发明的实施例中,每当应用程序需要将目标文件载入内存,均需要按照方法400来验证目标文件的安全性。
内存映射函数mmap的形式如下:
void*mmap(void*addr,size_t length,int prot,int flags,int fd,off_toffset)
其中,参数addr指定文件应被映射到的内存起始地址,其值通常设为NULL,表示由内核自动选定内存起始地址;
参数length为文件中应被映射至内存的字节数,其从可执行文件中的第offset个字节开始算起;
参数prot为内存映射区域的权限,其值可以为以下几种方式的组合:PROT_READ(可读),PROT_WRITE(可写),PROT_EXEC(可执行),PROT_NONE(不可访问);
参数flags为内存映射区域的共享方式与存储方式,其值包括MAP_SHARED,MAP_PRIVATE,MAP_FIXED等;
参数fd为映射到内存中的文件描述符;
参数offset为文件映射的偏移量,即从文件中的第几个字节开始映射,其值通常设置为0,表示从文件头开始映射。
在采用内存映射函数mmap将可执行文件映射至内存中时,参数prot的值应当为PROT_READ|PROT_EXEC,即可读且可执行;并且,参数flag的值应当包括MAP_PRIVATE,表示此内存为私有内存,对映射区域的写入操作会产生一个映射文件的复制,即私人的“写入时复制”(copy on write)对此区域作的任何修改都不会写回原来的文件内容。
在本发明的实施例中,内存映射函数mmap在将目标文件映射至内存之前,需要调用本发明的内核模块120,来判断目标文件是否为可执行文件。即,步骤S410由内核模块120执行。如果目标文件不是可执行文件,则将目标文件载入内存,以便应用程序继续运行。如果目标文件是可执行文件,则目标文件可能威胁操作系统安全,需要由内核模块120和用户态验证模块130执行后续步骤S420~S440,来验证该可执行文件的安全性,验证通过后,mmap函数再将可执行文件载入内存。
根据一种实施例,内核模块120可以实现为security_mmap_file函数,其形式如下:
int*security_mmap_file(struct file*file,unsigned long prot,unsignedlong flags)
其中,file参数为内核可执行文件指针,该指针指向内核中用于记录可执行文件信息的结构体;prot、flags参数的值由mmap函数传入,二者的含义与mmap函数中prot、flags参数的含义相同,分别为文件对于内存映射区域的权限、文件对于内存映射区域的共享及存储方式。
基于security_mmap_file函数,根据一种实施例,内核模块120按照以下步骤来判断待载入内存的目标文件是否为可执行文件:判断内核可执行文件指针file是否非空(NULL)、目标文件对内存映射区域的权限prot是否为可读且可执行(PROT_READ|PROT_EXEC)、目标文件对内存映射区域的共享及存储方式flags是否包括私有方式(MAP_PRIVATE),若以上三个判断条件均为是,则目标文件为可执行文件。
若以上三个判断条件中至少有一个为否,则目标文件不是可执行文件。例如,若内核可执行文件指针file为空,则表明目标文件不包含在内核已注册的多个可执行文件中,因此目标文件不是可执行文件;若目标文件对内存映射区域的权限prot不是可读且可执行,则目标文件显然不是可执行文件;若目标文件的共享及存储方式不是私有方式,则其与可执行文件的特征相悖,因此也不是可执行文件。
若内核模块120判断出目标文件不是可执行文件,则无需验证目标文件的安全性,mmap函数接下来将目标文件载入内存,以便应用程序继续运行。
若内核模块120判断出目标文件为可执行文件,则需要执行后续步骤S420~S440来验证可执行文件的安全性,验证通过后,mmap函数再将可执行文件载入内存。
步骤S420由内核模块120执行。在步骤S420中,若目标文件为可执行文件,则将应用程序的当前进程号和可执行文件的文件名加入待验证链表,将当前进程作为待验证进程,并将其状态设置为休眠。
根据一种实施例,在步骤S420将应用程序的当前进程号和可执行文件的文件名加入待验证链表之前,还包括步骤:判断可执行文件是否位于预先配置的可信目录,若可执行文件位于可信目录,则将可执行文件载入内存,以使应用程序继续运行。
可信目录可以由本领域技术人员自行设置,在一个实施例中,可信目录包括系统软件目录/usr和系统启动目录/boot。usr是操作系统软件资源所放置的目录,boot目录用于放置系统启动会使用到的文件,包括Linux内核文件以及启动选项与启动所需的配置文件等。这两个目录下的可执行文件被认为是驻留在系统分区,因而是安全的,可以跳过安全性验证的步骤,直接将其载入内存,不再需要调用用户态验证模块130来验证可执行文件的安全性。这样避免了操作系统在内核态与用户态之间切换,减少了安全验证过程的计算量,加快了安全验证的速度,提高了安全验证过程的性能。
若可执行文件不是位于可信目录,则需要在步骤S420中将其加入待验证链表,以便验证其安全性。
在步骤S420中,内核模块120将当前进程号和可执行文件的文件名加入待验证链表,待验证链表是待进行安全性验证的可执行文件的集合。将当前进程作为待验证进程,加入等待队列,并将其状态设置为休眠。等待队列是待验证进程的集合,其中包括至少一个待验证进程。
根据一种实施例,内核模块120创建一个设备文件,将待验证链表存储于该设备文件中。并且,内核模块120实现该设备文件的读(read)、写(write)接口,以供用户态验证模块130对该设备文件进行读写,从而获取待验证链表以及将验证结果写回待验证链表。
内核模块120将可执行文件加入待验证链表,并将相应的进程休眠后,唤醒用户态验证模块130,用户态验证模块130执行步骤S430,来验证待验证链表中的可执行文件的安全性。
在步骤S430中,获取待验证链表,验证待验证链表中的可执行文件的安全性,将验证结果写回待验证链表。
步骤S430由用户态验证模块130执行。用户态验证模块通过内核实现的读接口来读取设备文件,从而获取待验证链表。
用户态验证模块130在获取待验证链表后,根据待验证链表中记载的可执行文件的文件名,读取可执行文件中的待载入数据、签名和数字证书,并验证其安全性。根据一种实施例,用户态验证模块130按照以下步骤来验证可执行文件的安全性:计算待载入数据的映射值,采用数字证书中记载的公钥对签名进行解密,得到解密结果,若计算出的映射值与解密结果相同,则可执行文件安全;若计算出的映射值与解密结果不同,则可执行文件不安全。
数字证书能够确认应用程序的来源,保证其来源可靠,若计算出的映射值与采用数字证书得到的解密结果相同,则表明可执行文件完整,没有被篡改,可执行文件安全。若计算出的映射值与解密结果不同,则表明可执行文件被非法篡改,可执行文件不安全。
当用户态验证模块130得出可执行文件的安全验证结果后,将验证结果通过内核实现的写接口写回待验证链表中。
根据一种实施例,用户态验证模块130还可以将可执行文件的验证结果缓存至已验证缓存中,已验证缓存中存储有自上次安全性验证后未被修改的可执行文件的验证结果。若自上次安全性验证后,可执行文件被修改(例如被卸载后重新安装),则将其验证结果从已验证缓存中删除。
已验证缓存可以提高可执行文件的安全验证过程的性能。基于已验证缓存,根据一种实施例,在步骤S430中,用户态验证模块130在验证可执行文件的安全性时,可以先在已验证缓存中查找该可执行文件的验证结果,若查找到验证结果,则直接将该验证结果写回待验证链表,无需再通过对比待载入数据的映射值与签名的解密结果来判断可执行文件的安全性。若未查找到验证结果,再通过对比待载入数据的映射值与签名的解密结果来判断可执行文件的安全性。这样可以减少安全验证过程中的磁盘IO操作及计算量,提高了安全验证过程的性能。
内核模块120通过写接口接收到用户态验证模块130的写操作,获取写操作中的验证结果,修改待验证链表中的相应可执行文件的验证结果,随后执行步骤S440。
在步骤S440中,唤醒待验证进程,根据进程号来查找待验证链表中是否包括待验证进程所操作的可执行文件的验证结果,当查找到验证结果时,根据验证结果来允许或拒绝将相应的可执行文件载入内存,以使应用程序继续运行或终止运行。
根据一种实施例,待验证进程存储于等待队列中。在步骤S440中,内核模块120唤醒等待队列中的各个待验证进程,获取各待验证进程的进程号(PID),根据进程号来查找待验证链表中是否包括待验证进程所操作的可执行文件的验证结果。
若查找到验证结果,则将相应的待验证进程从等待队列中删除,并根据验证结果来允许或拒绝将相应的可执行文件载入内存,以使应用程序继续运行或终止运行。具体地,若验证结果为安全,则允许将相应的可执行文件载入内存,以使应用程序继续运行;若验证结果为不安全,则拒绝将相应的可执行文件载入内存,以使应用程序出错退出,终止运行。
若未查找到验证结果,则将相应待验证进程的状态设置为休眠。待用户态验证模块130下次写回验证结果时,再将其唤醒。
需要说明的是,在以上实施例中,待验证进程的等待和唤醒通过等待队列来实现。在另一些实施例中,进程的等待和唤醒还可以通过netlink socket、信号量等形式来实现,本发明对进程的等待和唤醒机制不做限制。
以下以图5为例,来进一步说明本发明的应用程序安全验证过程。图5所示的应用程序安全验证过程包括步骤S512~S530。
在步骤S512执行之前,内核模块120创建一个设备文件,用于存储待验证链表,并实现该设备文件的读写接口,以便用户态验证模块130在启动后,循环读写该设备文件,以获取内核的待验证链表并向待验证链表写回验证结果。在初始状态下,待验证链表为空,因此用户态验证模块130将进入休眠,等待内核的唤醒。
当应用程序被启动运行时以及运行过程中,将触发步骤S512,调用内核的mmap函数来将运行该程序所需要的目标文件载入内存。mmap函数在将目标文件载入内存之前,执行步骤S514,调用security_mmap_file,即本发明的内核模块120,来判断目标文件是否为ELF文件(可执行文件),以及在目标文件为ELF文件时,验证ELF文件的安全性。
在步骤S516中,security_mmap_file函数的形式为int*security_mmap_file(struct file*file,unsigned long prot,unsigned long flags),该函数通过检查参数file(文件指针)的值是否非空,参数prot(权限)的值是否为PROT_READ|PROT_EXEC,参数flags(共享及存储方式)的值是否包含MAP_PRIVATE来判断目标文件是否为ELF文件。
若上述三个条件中有一个是假,则目标文件不是ELF文件,内存映射可以继续进行,security_mmap_file返回0,mmap函数将目标文件载入内存,即完成内存映射,以便应用程序继续运行。
若上述三个条件均为真,则目标文件为ELF文件,继续执行步骤S518~S530来验证ELF文件的安全性。
在步骤S518中,内核模块120将ELF文件名及当前进程的进程号添加至内部的待验证链表中,将当前进程作为待验证进程,加入等待队列,唤醒等待读取设备文件的用户态验证模块130。
在步骤S520中,内核模块120将当前进程休眠,等待被唤醒。
在步骤S522中,用户态验证模块130被唤醒,通过读接口获取设备文件中的待验证链表,得到待验证的ELF文件的文件名。
用户态验证模块130根据文件名来读取ELF文件的待载入数据、签名和数字证书,计算待载入数据的映射值,并采用数字证书中的公钥来对签名进行解密,得到解密结果。对比计算出的映射值与解密结果是否相同,并将对比结果(即验证结果)通过对设备文件的写操作通知内核模块120。
在步骤S524中,内核模块120处理设备文件的写操作,获得ELF文件的验证结果,将验证结果写入待验证链表中,并唤醒等待队列中的待验证进程。
在步骤S526中,待验证进程被唤醒后,内核模块120遍历待验证链表,来查找各进程的待验证文件名与验证结果。
在步骤S528中,判断是否查找到验证结果。若查找到验证结果,则将相应的待验证进程从等待队列中删除,进入步骤S530;若未查找到验证结果,则回到步骤S520。
在步骤S530中,判断验证结果是否为通过验证。若ELF文件通过验证,则内存映射可以继续进行,security_mmap_file返回0,mmap完成内存映射,待验证进程得以继续执行,从而使应用程序继续运行;若ELF文件未通过验证,则内存映射无法进行,security_mmap_file返回-EPERM,mmap函数拒绝进行内存映射,待验证进程被终止,从而使应用程序出错退出,终止运行。
需要说明的是,在图5所示的实施例中,ELF文件可以是可执行程序,也可以是动态链接库。
步骤S518、S522可以加入性能优化。具体地,在步骤S518中,将ELF文件名加入待验证链表之前,可以判断ELF文件是否位于系统软件目录/usr中。系统软件目录/usr下的ELF文件被认为是驻留在系统分区,因而是安全的,允许将其载入内存,从而可以跳过后续安全性验证步骤S520~S530。在步骤S522中,可以将已经验证过的ELF文件的验证结果缓存下来,从而避免在ELF文件没有改动的情况下再次验证。
图5中所涉及的进程等待和唤醒机制除了使用等待队列之外,也可以使用netlinksocket、信号量等多种形式。
图5中的步骤S522由用户态验证模块130执行,其他步骤均由内核模块120执行。
A10、如权利要求1-9中任一项所述的方法,其中,当在待验证链表中未查找到待验证进程的可执行文件的验证结果时,将该待验证进程的状态设置为休眠。
A11、如权利要求1-10中任一项所述的方法,其中,所述待验证链表存储于设备文件中,所述获取所述待验证链表以及将验证结果写回所述待验证链表的步骤通过所述设备文件的读、写接口完成。
A12、如权利要求1-11中任一项所述的方法,其中,进程的休眠和唤醒机制包括:等待队列、netlink socket、信号量。
A14、如权利要求13所述的装置,其中,所述可执行文件包括待载入数据、签名和数字证书,所述签名为采用所述数字证书对应的私钥对所述待载入数据的映射值进行加密而得到;
所述用户态验证模块适于按照以下步骤来验证待验证链表中的可执行文件的安全性:
计算所述待载入数据的映射值;
采用所述数字证书中记载的公钥对所述签名进行解密,得到解密结果;
若计算出的映射值与所述解密结果相同,则所述可执行文件安全。
A15、如权利要求13或14所述的装置,还包括签名模块,所述签名模块适于:
计算可执行文件的待载入数据的映射值,采用数字证书对应的私钥对所述映射值进行加密以得到签名;以及
将所述签名和所述数字证书写入所述可执行文件中。
A16、一种计算设备,包括:
至少一个处理器;和
存储有程序指令的存储器;
当所述程序指令被所述处理器读取并执行时,使得所述计算设备执行如权利要求1-12中任一项所述的应用程序安全验证方法。
A17、一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-12中任一项所述的应用程序安全验证方法。
虽然本发明已以较佳实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的应用程序安全验证方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。

Claims (10)

1.一种应用程序安全验证方法,在计算设备中执行,包括:
在应用程序启动运行时以及运行过程中,判断待载入内存的目标文件是否为可执行文件;
若目标文件为可执行文件,则将所述应用程序的当前进程号和所述可执行文件的文件名加入待验证链表,将所述当前进程作为待验证进程,并将其状态设置为休眠;
获取所述待验证链表,验证待验证链表中的可执行文件的安全性,将验证结果写回所述待验证链表;
唤醒待验证进程,根据进程号来查找待验证链表中是否包括待验证进程所操作的可执行文件的验证结果,当查找到验证结果时,根据验证结果来允许或拒绝将相应的可执行文件载入内存,以使应用程序继续运行或终止运行。
2.如权利要求1所述的方法,其中,所述可执行文件包括可执行程序和动态链接库。
3.如权利要求1或2所述的方法,其中,按照以下步骤来判断待载入内存的目标文件是否为可执行文件:
判断内核可执行文件指针是否非空、目标文件对内存映射区域的权限是否为可读且可执行、目标文件对内存映射区域的共享及存储方式是否包括私有方式;
若以上三个判断条件均为是,则所述目标文件为可执行文件。
4.如权利要求3所述的方法,其中,若以上三个判断条件至少一个为否,则所述目标文件不是可执行文件,将所述目标文件载入内存,以便应用程序继续运行。
5.如权利要求1-4中任一项所述的方法,其中,在所述将所述应用程序的当前进程号和所述可执行文件的文件名加入待验证链表的步骤之前,还包括步骤:
判断所述可执行文件是否位于预先配置的可信目录;
若所述可执行文件位于所述可信目录,则将所述可执行文件载入内存,以使应用程序继续运行。
6.如权利要求5所述的方法,其中,所述可信目录包括系统软件目录/usr和系统启动目录/boot。
7.如权利要求1-6中任一项所述的方法,其中,所述可执行文件包括待载入数据、签名和数字证书,所述签名为采用所述数字证书对应的私钥对所述待载入数据的映射值进行加密而得到;
所述验证待验证链表中的可执行文件的安全性的步骤包括:
计算所述待载入数据的映射值;
采用所述数字证书中记载的公钥对所述签名进行解密,得到解密结果;
若计算出的映射值与所述解密结果相同,则所述可执行文件安全。
8.如权利要求7所述的方法,其中,所述映射值为哈希值。
9.如权利要求7或8所述的方法,其中,所述验证待验证链表中的可执行文件的安全性的步骤还包括:
在已验证缓存中查找所述可执行文件的验证结果,其中,所述已验证缓存中存储有自上次安全性验证后未被修改的可执行文件的验证结果;
若未查找到所述可执行文件的验证结果,则通过对比待载入数据的映射值与签名的解密结果来判断可执行文件的安全性。
10.一种应用程序安全验证装置,驻留于计算设备中,包括内核模块和用户态验证模块,
所述内核模块适于:
在应用程序启动运行时以及运行过程中,判断待载入内存的目标文件是否为可执行文件;
若目标文件为可执行文件,则将所述应用程序的当前进程号和所述可执行文件的文件名加入待验证链表,将所述当前进程作为待验证进程,并将其状态设置为休眠;
唤醒所述用户态验证模块,以便所述用户态验证模块验证待验证链表中的可执行文件的安全性;以及
在所述用户态验证模块将验证结果写回待验证链表后,唤醒待验证进程,根据进程号来查找待验证链表中是否包括待验证进程所操作的可执行文件的验证结果,当查找到验证结果时,根据验证结果来允许或拒绝将相应的可执行文件载入内存,以使应用程序继续运行或终止运行;
所述用户态验证模块适于:
获取所述待验证链表,验证待验证链表中的可执行文件的安全性,以及将验证结果写回所述待验证链表。
CN202010028242.7A 2020-01-10 2020-01-10 一种应用程序安全验证方法及装置 Pending CN111291371A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010028242.7A CN111291371A (zh) 2020-01-10 2020-01-10 一种应用程序安全验证方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010028242.7A CN111291371A (zh) 2020-01-10 2020-01-10 一种应用程序安全验证方法及装置

Publications (1)

Publication Number Publication Date
CN111291371A true CN111291371A (zh) 2020-06-16

Family

ID=71030677

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010028242.7A Pending CN111291371A (zh) 2020-01-10 2020-01-10 一种应用程序安全验证方法及装置

Country Status (1)

Country Link
CN (1) CN111291371A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111783072A (zh) * 2020-07-15 2020-10-16 北京同源华安软件科技有限公司 Linux系统下的安全控制方法和装置
CN111914303A (zh) * 2020-08-07 2020-11-10 中科方德软件有限公司 Linux系统运行时状态的安全度量与安全验证方法
CN112182584A (zh) * 2020-09-28 2021-01-05 广东小天才科技有限公司 安全校验方法及装置、电子设备、存储介质
CN112416759A (zh) * 2020-11-06 2021-02-26 中国南方电网有限责任公司 安全管理方法、工控主机、计算机设备和存储介质
CN112463164A (zh) * 2020-12-14 2021-03-09 记忆科技(深圳)有限公司 SoC程序执行的显示定位方法、装置、计算机设备及存储介质
CN113051584A (zh) * 2021-05-31 2021-06-29 武汉深之度科技有限公司 一种系统安全启动方法、装置、计算设备及可读存储介质
CN113094708A (zh) * 2021-04-12 2021-07-09 北京明朝万达科技股份有限公司 电子文件处理方法及装置、存储介质和处理器
CN114205237A (zh) * 2020-08-26 2022-03-18 中国移动通信集团终端有限公司 应用程序的鉴权方法、装置、电子设备及计算机存储介质
CN115688187A (zh) * 2023-01-04 2023-02-03 中科方德软件有限公司 一种硬链接数据的安全管理方法、装置、电子设备及计算机可读存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101137963A (zh) * 2005-04-07 2008-03-05 微软公司 用于验证可执行文件可信度的系统和方法
CN101520832A (zh) * 2008-12-22 2009-09-02 康佳集团股份有限公司 一种文件代码签名验证系统及其方法
US20100293614A1 (en) * 2009-05-12 2010-11-18 Vilppola Kari M Method, Apparatus, and Computer Program for Providing Application Security
CN102509049A (zh) * 2011-11-14 2012-06-20 任子行网络技术股份有限公司 一种程序合法性验证方法和系统
US20140123280A1 (en) * 2012-10-30 2014-05-01 Gabriel Kedma Runtime detection of self-replicating malware
CN104268473A (zh) * 2014-09-23 2015-01-07 龙芯中科技术有限公司 应用程序检测方法和装置
CN104933359A (zh) * 2015-05-19 2015-09-23 西北大学 一种恶意软件的多执行路径构造方法
CN106156607A (zh) * 2016-07-11 2016-11-23 青岛海信智能商用系统有限公司 一种SElinux安全访问方法和POS终端
CN106228078A (zh) * 2016-07-29 2016-12-14 浪潮电子信息产业股份有限公司 一种Linux下基于增强型ROST的安全运行方法
CN106560830A (zh) * 2016-07-01 2017-04-12 哈尔滨安天科技股份有限公司 一种Linux嵌入式系统中的安全防护方法及系统
CN110442474A (zh) * 2018-05-02 2019-11-12 深信服科技股份有限公司 一种数据一致性验证方法、系统及数据验证端

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101137963A (zh) * 2005-04-07 2008-03-05 微软公司 用于验证可执行文件可信度的系统和方法
CN101520832A (zh) * 2008-12-22 2009-09-02 康佳集团股份有限公司 一种文件代码签名验证系统及其方法
US20100293614A1 (en) * 2009-05-12 2010-11-18 Vilppola Kari M Method, Apparatus, and Computer Program for Providing Application Security
CN102804194A (zh) * 2009-05-12 2012-11-28 诺基亚公司 用于提供应用安全性的方法、装置和计算机程序
CN102509049A (zh) * 2011-11-14 2012-06-20 任子行网络技术股份有限公司 一种程序合法性验证方法和系统
US20140123280A1 (en) * 2012-10-30 2014-05-01 Gabriel Kedma Runtime detection of self-replicating malware
CN104268473A (zh) * 2014-09-23 2015-01-07 龙芯中科技术有限公司 应用程序检测方法和装置
CN104933359A (zh) * 2015-05-19 2015-09-23 西北大学 一种恶意软件的多执行路径构造方法
CN106560830A (zh) * 2016-07-01 2017-04-12 哈尔滨安天科技股份有限公司 一种Linux嵌入式系统中的安全防护方法及系统
CN106156607A (zh) * 2016-07-11 2016-11-23 青岛海信智能商用系统有限公司 一种SElinux安全访问方法和POS终端
CN106228078A (zh) * 2016-07-29 2016-12-14 浪潮电子信息产业股份有限公司 一种Linux下基于增强型ROST的安全运行方法
CN110442474A (zh) * 2018-05-02 2019-11-12 深信服科技股份有限公司 一种数据一致性验证方法、系统及数据验证端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
曾勇军等: "基于MAC的ELF文件执行安全性的提高", 《计算机工程》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111783072A (zh) * 2020-07-15 2020-10-16 北京同源华安软件科技有限公司 Linux系统下的安全控制方法和装置
CN111914303A (zh) * 2020-08-07 2020-11-10 中科方德软件有限公司 Linux系统运行时状态的安全度量与安全验证方法
CN111914303B (zh) * 2020-08-07 2023-08-18 中科方德软件有限公司 Linux系统运行时状态的安全度量与安全验证方法
CN114205237A (zh) * 2020-08-26 2022-03-18 中国移动通信集团终端有限公司 应用程序的鉴权方法、装置、电子设备及计算机存储介质
CN112182584A (zh) * 2020-09-28 2021-01-05 广东小天才科技有限公司 安全校验方法及装置、电子设备、存储介质
CN112416759A (zh) * 2020-11-06 2021-02-26 中国南方电网有限责任公司 安全管理方法、工控主机、计算机设备和存储介质
CN112463164A (zh) * 2020-12-14 2021-03-09 记忆科技(深圳)有限公司 SoC程序执行的显示定位方法、装置、计算机设备及存储介质
CN112463164B (zh) * 2020-12-14 2024-02-13 记忆科技(深圳)有限公司 SoC程序执行的显示定位方法、装置、计算机设备及存储介质
CN113094708A (zh) * 2021-04-12 2021-07-09 北京明朝万达科技股份有限公司 电子文件处理方法及装置、存储介质和处理器
CN113051584A (zh) * 2021-05-31 2021-06-29 武汉深之度科技有限公司 一种系统安全启动方法、装置、计算设备及可读存储介质
CN115688187A (zh) * 2023-01-04 2023-02-03 中科方德软件有限公司 一种硬链接数据的安全管理方法、装置、电子设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN111291371A (zh) 一种应用程序安全验证方法及装置
US8544092B2 (en) Integrity verification using a peripheral device
US9536080B2 (en) Method for validating dynamically loaded libraries using team identifiers
KR101565230B1 (ko) 샌드박스에 참조들을 유지하는 시스템 및 방법
US11409884B2 (en) Security profiling of system firmware and applications from an OOB appliance at a differentiated trust boundary
KR101434102B1 (ko) 인증된 안티바이러스 에이전트에게 메모리를 스캔하는 직접 액세스를 제공하는 것
US9280337B2 (en) Secured distribution of software updates
RU2456663C2 (ru) Прогрессивная начальная загрузка для беспроводного устройства
US20060236122A1 (en) Secure boot
US8918907B2 (en) Approaches for firmware to trust an application
JP5346608B2 (ja) 情報処理装置およびファイル検証システム
JP2005182789A (ja) 特定の装置または装置のクラスにおいてのみソフトウェアの更新のインストールまたは稼動を確実に行えるようにする方法及びシステム
JP2006202270A (ja) 部分イメージハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法
JP2009521033A (ja) コンピュータシステムのアプリケーションを認証する方法
JP2009503648A (ja) 信頼される環境をサポートするコンピュータ可読コンポーネントの自動更新
CN114186280B (zh) 一种文件访问方法、计算设备及可读存储介质
US20220382874A1 (en) Secure computation environment
US20230334127A1 (en) System and method for protecting software licensing information via a trusted platform module
CN112204548A (zh) 应用特定客户端证书的自动生成
KR20220090537A (ko) 정책 적용을 위한 가상 환경 유형 검증
Dhobi et al. Secure firmware update over the air using trustzone
Zhao et al. A private user data protection mechanism in trustzone architecture based on identity authentication
US8844024B1 (en) Systems and methods for using tiered signing certificates to manage the behavior of executables
CN111447178A (zh) 一种访问控制方法、系统及计算设备
CN113536361B (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 17th Floor, Building 12, Yard 10, Kegu 1st Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing 100176 (Beijing Pilot Free Trade Zone High-end Industry Zone Yizhuang Group)

Applicant after: Beijing Tongxin Software Technology Co.,Ltd.

Address before: 603, block B, Putian Desheng, No.28, xinjiekouwei street, Xicheng District, Beijing 100032

Applicant before: BEIJING SHENZHIDU TECHNOLOGY CO.,LTD.