本发明涉及计算机技术领域,更具体的说,涉及一种安全运行可执行文件的方法及系统。
背景技术:
随着工业化与信息化在国家电网的融合,以及近年来网络通信技术的快速发展,在网络应用大力发展的同时,网络的开放性也带来了巨大的安全隐患,存在被病毒攻击的风险。由于计算机病毒逐渐从高度依赖“零日”漏洞,演变为不依赖“零日”漏洞的高度定制化特种病毒,因此,如何对病毒进行拦截成为了保障电力物联网安全运行的重要条件。
目前病毒拦截方式主要为病毒特征检测技术,通过对病毒特征进行检测,来对病毒进行针对性的拦截,从而防止病毒传播。然而,病毒存在大量变种,采用病毒特征检测方式来防止病毒传播已无法满足物联网终端在新形势下的安全需求。
技术实现要素:
有鉴于此,本发明公开一种安全运行可执行文件的方法及系统,以实现在运行可执行文件之前,对可执行文件进行了多次验证,将携带病毒和/或恶意程序的可执行文件进行滤除,从而实现可执行文件的安全运行。
一种安全运行可执行文件的方法,包括:
当检测到可执行文件被调用时,获取所述可执行文件、所述可执行文件的调用主体以及所述调用主体对所述可执行文件的操作指令;
判断所述调用主体对所述可执行文件的所述操作指令是否有效;
如果是,则拦截所述调用主体对所述可执行文件执行的所述操作指令;
判断所述可执行文件、所述调用主体和所述操作指令是否存在于预先设置的acl中,其中,所述acl中的内容包括:主体、客体和操作指令;
如果是,则判断所述可执行文件的数字签名与在所述acl中对应的可执行文件的数字签名是否匹配;
如果是,则判断所述可执行文件的数字签名是否可信;
如果是,则加载所述可执行文件,并启动新进程运行所述可执行文件。
可选的,还包括:
当所述调用主体对所述可执行文件的所述操作指令无效,或者所述可执行文件、所述调用主体和所述操作指令不存在于所述acl中,或者所述可执行文件的数字签名与在所述acl中对应的可执行文件的数字签名不匹配,或者所述可执行文件的数字签名不可信,则禁止所述可执行文件运行。
可选的,在所述加载所述可执行文件,并启动新进程运行所述可执行文件之后,还包括:
将运行的所述可执行文件存储至预先构建的可信云数据库。
可选的,还包括:
当检测到所述可信云数据库中存储的可执行文件发生变更后,基于变更后的可执行文件生成新的acl;
对所述新的acl进行数据签名,得到目标acl;
将所述目标acl写入区块链分布式账本。
可选的,还包括:
将写入所述目标acl的区块链分布式账本同步发送至所述可信云数据库和客户端。
一种安全运行可执行文件的系统,包括:
获取单元,用于当检测到可执行文件被调用时,获取所述可执行文件、所述可执行文件的调用主体以及所述调用主体对所述可执行文件的操作指令;
第一判断单元,用于判断所述调用主体对所述可执行文件的所述操作指令是否有效;
拦截单元,用于在所述第一判断单元判断为是的情况下,拦截所述调用主体对所述可执行文件执行的所述操作指令;
第二判断单元,用于判断所述可执行文件、所述调用主体和所述操作指令是否存在于预先设置的acl中,其中,所述acl中的内容包括:主体、客体和操作指令;
第三判断单元,用于在所述第二判断单元判断为是的情况下,判断所述可执行文件的数字签名与在所述acl中对应的可执行文件的数字签名是否匹配;
第四判断单元,用于在所述第三判断单元判断为是的情况下,判断所述可执行文件的数字签名是否可信;
加载单元,用于在所述第四判断单元判断为是的情况下,加载所述可执行文件,并启动新进程运行所述可执行文件。
可选的,还包括:
禁止单元,用于当所述调用主体对所述可执行文件的所述操作指令无效,或者所述可执行文件、所述调用主体和所述操作指令不存在于所述acl中,或者所述可执行文件的数字签名与在所述acl中对应的可执行文件的数字签名不匹配,或者所述可执行文件的数字签名不可信,则禁止所述可执行文件运行。
可选的,还包括:
存储单元,用于在所述加载单元在所述加载所述可执行文件,并启动新进程运行所述可执行文件之后,将运行的所述可执行文件存储至预先构建的可信云数据库。
可选的,还包括:
生成单元,用于当检测到所述可信云数据库中存储的可执行文件发生变更后,基于变更后的可执行文件生成新的acl;
签名单元,用于对所述新的acl进行数据签名,得到目标acl;
写入单元,用于将所述目标acl写入区块链分布式账本。
可选的,还包括:
发送单元,用于将写入所述目标acl的区块链分布式账本同步发送至所述可信云数据库和客户端。
从上述的技术方案可知,本发明公开了一种安全运行可执行文件的方法及系统,当检测到可执行文件被调用时,获取可执行文件、可执行文件的调用主体以及调用主体对可执行文件的操作指令,当确定调用主体对可执行文件的操作指令有效时,并不会执行操作指令,而是进一步验证可执行文件、调用主体和操作指令是否存在于预先设置的acl中,通过将可执行文件的数字签名与在acl中对应的可执行文件的数字签名进行匹配验证可执行文件是否被篡改,以及验证可执行文件的数字签名是否可信,当所有的验证均通过时才会加载可执行文件,并启动新进程运行可执行文件,任何一个验证未通过,均禁止可执行文件运行。由于本发明在运行可执行文件之前,对可执行文件进行了多次验证,因此,可以将携带病毒和/或恶意程序的可执行文件进行滤除,从而实现了可执行文件的安全运行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。
图1为本发明实施例公开的一种安全运行可执行文件的方法流程图;
图2为本发明实施例公开的一种安全运行可执行文件的系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种安全运行可执行文件的方法及系统,当检测到可执行文件被调用时,获取可执行文件、可执行文件的调用主体以及调用主体对可执行文件的操作指令,当确定调用主体对可执行文件的操作指令有效时,并不会执行操作指令,而是进一步验证可执行文件、调用主体和操作指令是否存在于预先设置的acl中,通过将可执行文件的数字签名与在acl中对应的可执行文件的数字签名进行匹配验证可执行文件是否被篡改,以及验证可执行文件的数字签名是否可信,当所有的验证均通过时才会加载可执行文件,并启动新进程运行可执行文件,任何一个验证未通过,均禁止可执行文件运行。由于本发明在运行可执行文件之前,对可执行文件进行了多次验证,因此,可以将携带病毒和/或恶意程序的可执行文件进行滤除,从而实现了可执行文件的安全运行。
参见图1,本发明一实施例公开的一种安全运行可执行文件的方法流程图,该方法应用于客户端,该方法包括步骤:
步骤s101、当检测到可执行文件被调用时,获取所述可执行文件、所述可执行文件的调用主体以及所述调用主体对所述可执行文件的操作指令;
具体的,在实际应用中,当用户调用某个可执行文件时,会获取可执行文件、可执行文件的调用主体以及调用主体对可执行文件的操作指令,其中,该调用主体也即待执行主体的调用账号,调用主体对可执行文件的操作指令,比如,执行、读、写等。
其中,可执行文件中包含有应用程序。
步骤s102、判断所述调用主体对所述可执行文件的所述操作指令是否有效,如果是,则执行步骤s103,如果否,则执行步骤s108;
具体的,当用户调用某个可执行文件时,操作系统会将可执行文件、调用主体和所述操作指令发送至操作系统内核,由操作系统内核确定调用主体对所述可执行文件的所述操作指令是否有效,具体判断过程可参见现有成熟方案,此处不再赘述。当确定调用主体对可执行文件的操作指令有效时,操作系统中的安全模块会hook该操作,并对可执行文件、调用主体和操作指令进行第二次验证。
其中,操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。
hook是是一种操作系统调试中断机制,中文译为“挂钩”或“钩子”。在对特定的系统事件进行hook后,一旦发生已hook事件,对该事件进行hook的程序就会收到系统的通知,这时程序就能在第一时间对该事件做出响应。
本实施例中,操作系统中设置有hook模块,hook模块用于拦截系统对文件的读、写、执行等操作。
步骤s103、拦截所述调用主体对所述可执行文件执行的所述操作指令;
在实际应用中,可以在操作系统中设置拦截模块,利用该拦截模块调用lsm安全模块接口,lsm是linuxsecritymodule的简称,即linux安全模块。拦截模块是一种轻量级通用访问控制框架,适合于多种访问控制模型在它上面以内核可加载模块的形实现。
其中,拦截模块由访问文件驱动和访问进程驱动组成,拦截模块可以对文件读、写和执行操作进行拦截。
在拦截模块中设置有acl(accesscontrollists,访问控制列表),acl可支持粗粒度的读、写和执行操作,也可以支持系统op指令级的细粒度操作。acl中的内容包括:主体、客体和操作指令,主体可以包括:账户、进程和ip中的任意一个或多个组合,客体可以包括:文件、进程、服务、磁盘、设备和网络等。
本实施例中,主体指的是可执行文件的调用主体,客体指的是可执行文件。在实际应用中,默认acl为程序白名单,即允许执行的一组操作行为描述。
需要说明的是,本实施例采用操作系统内核的hook技术来控制操作系统的执行文件的调用和进程运行控制,由此获取操作系统的控制权,root用户也无法绕过拦截模块的控制。本步骤的关键作用是把控应用程序入口,当用户需要调用可执行文件时,操作系统接收到用户对可执行文件的操作指令时,也即操作系统检测到可执行文件被调用时,会先判断原生权限,也即判断调用主体对可执行文件的操作指令是否有效,如果是,则在调用操作指令时,hook技术在此时进行拦截,也就是说,即使原生权限验证通过,也不会使可执行文件在操作系统中随意执行。
步骤s104、判断所述可执行文件、所述调用主体和所述操作指令是否存在于预先设置的acl中,如果是,则执行步骤s105,如果否,则执行步骤s108;
需要说明的是,本实施例中通过可信云数据库生成程序白名单,该程序白名单也即acl,终端的操作系统只能执行acl中的可执行文件。
其中,生成的acl可作为白名单导出。
终端的安全模块可以导入acl。
在实际应用中,acl可导入访问控制模型,例如,基于角色的访问控制(rbac,rolebasedaccesscontrol)、强制访问控制模型(mac,mandatoryaccesscontrol)、基于属性的访问控制(abac,attributebasedaccesscontrol)等安全策略。
步骤s105、判断所述可执行文件的数字签名与在所述acl中对应的可执行文件的数字签名是否匹配,如果是,则执行步骤s106,如果否,则执行步骤s108;
其中,拦截模块会对acl中的客体,也即可执行文件进行数字签名,具体的,拦截模块采用单向散列函数对acl中的客体进行数字签名,该数字签名具体为md5数字签名。
单向散列函数:又称单向hash函数、杂凑函数,用于把任意长的输入消息串变化成固定长的输出串且由输出串难以得到输入串的一种函数。
本实施例通过将可执行文件的数字签名与在acl中对应的可执行文件的数字签名进行匹配来确定可执行文件是否被篡改,当两者匹配时,表明可执行文件的数字签名未被篡改,反之,当两者不匹配时,表明可执行文件的数字签名被篡改,此时,禁止可执行文件运行。
步骤s106、判断所述可执行文件的数字签名是否可信,如果是,则执行步骤s107,如果否,则执行步骤s108;
其中,确定可执行文件的数字签名是否可信,可以通过判断可执行文件的数字签名是否在未被篡改时生成,具体可参见现有成熟方案,此处不再赘述。
步骤s107、加载所述可执行文件,并启动新进程运行所述可执行文件。
步骤s108、禁止所述可执行文件运行。
综上可知,本发明公开的安全运行可执行文件的方法,当检测到可执行文件被调用时,获取可执行文件、可执行文件的调用主体以及调用主体对可执行文件的操作指令,当确定调用主体对可执行文件的操作指令有效时,并不会执行操作指令,而是进一步验证可执行文件、调用主体和操作指令是否存在于预先设置的acl中,通过将可执行文件的数字签名与在acl中对应的可执行文件的数字签名进行匹配验证可执行文件是否被篡改,以及验证可执行文件的数字签名是否可信,当所有的验证均通过时才会加载可执行文件,并启动新进程运行可执行文件,任何一个验证未通过,均禁止可执行文件运行。由于本发明在运行可执行文件之前,对可执行文件进行了多次验证,因此,可以将携带病毒和/或恶意程序的可执行文件进行滤除,从而实现了可执行文件的安全运行。
为进一步优化上述实施例,在步骤s107之后,还可以包括:
将运行的所述可执行文件存储至预先构建的可信云数据库。
其中,存储至可信云数据库的可执行文件均具有数字签名,该数据签名可以为采用hash算法生成md5数字签名。
需要说明的是,本发明通过建立可信云数据库来维护所有可能在终端执行的执行文件。通过可信云数据库对这些执行文件进行管理、发布和更新等,由此终端的操作系统只能通过可信云数据库来更细执行文件中的程序。
本发明通过将通过验证的可执行文件存储至可新云数据库,实现将所有需要在泛物联网终端运行的应用程序统一整理归集。
在实际应用中,在构建可信云数据库时,可以采用云架构,构建可信程序的管理平台,利用h5开发的webui进行管理。可信云数据库可进行新程序发布、程序更新、程序管理、版本管理、文件同步、备份还原、下载控制等功能。
为保证acl的安全性,防止acl被篡改,本发明对acl进行了区块链化。
因此,为进一步优化上述实施例,安全运行可执行文件的方法还可以包括步骤:
当检测到所述可信云数据库中存储的可执行文件发生变更后,基于变更后的可执行文件生成新的acl;
对所述新的acl进行数据签名,得到目标acl;
将所述目标acl写入区块链分布式账本。
为进一步优化上述实施例,还可以包括:
将写入所述目标acl的区块链分布式账本同步发送至所述可信云数据库和客户端。
其中,客户端可以根据目标acl进行文件和进程的访问控制。
需要特别说明的是,对acl进行区块链化中的所需的全部通信均采用https(hypertexttransferprotocoloversecuresocketlayer,超文本传输安全协议)加密方式传输。
为进一步优化上述实施例,还可以包括:
1)建立拦截模块,所述拦截模块由访问文件驱动和访问进程驱动组成,用于拦截调用主体对可执行文件执行的操作指令;
2)建立基础模块;
其中,所述基础模块包括:acl同步子模块、hash计算子模块、访问控制子模块和链数据读写子模块。
acl同步子模块,用于接收通过区块链下发的acl白名单规则;
hash计算子模块,用于针对操作系统调用的可执行文件进行数字签名,并判断可执行文件的数字签名与在acl中对应的可执行文件的数字签名是否匹配,以确定所述可执行文件是否被篡改;
访问控制子模块,用于根据acl确定操作系统当前运行的可执行文件是否被允许,以确定所述可执行文件允许运行或拒绝运行;
链数据读写子模块,用于获取区块链分布式账本中的acl信息,并将操作系统的软件安装和变更内容记录到所述区块链分布式账本中。
3)建立应用模块;
其中,所述应用模块包括:日志发送子模块、安全更新子模块、下载子模块和安全执行子模块;
日志发送子模块,用于对客户端产生的日志数据进行保存,并能够将所述日志数据发送至预设位置;
安全更新子模块,用于,监测可信云数据库中的软件版本,检测到新的软件版本时,执行更新操作;
下载子模块,用于从可信云数据库下载更新的软件;
安全执行子模块,用于检测客户端各个子模块的执行情况,排出发现客户端的运行故障。
综上可知,本发明公开的安全运行可执行文件的方法,当检测到可执行文件被调用时,获取可执行文件、可执行文件的调用主体以及调用主体对可执行文件的操作指令,当确定调用主体对可执行文件的操作指令有效时,并不会执行操作指令,而是进一步验证可执行文件、调用主体和操作指令是否存在于预先设置的acl中,通过将可执行文件的数字签名与在acl中对应的可执行文件的数字签名进行匹配验证可执行文件是否被篡改,以及验证可执行文件的数字签名是否可信,当所有的验证均通过时才会加载可执行文件,并启动新进程运行可执行文件,任何一个验证未通过,均禁止可执行文件运行。由于本发明在运行可执行文件之前,对可执行文件进行了多次验证,因此,可以将携带病毒和/或恶意程序的可执行文件进行滤除,从而实现了可执行文件的安全运行。
其次,本发明采用可信云数据库发布新软件,并进行统一维护管理,当可信云数据库中存储的可执行文件发生变更后,生成新的acl,采用区块链技术的acl管理系统,可以将acl写入区块链分布式账本,并可全称跟踪和回溯软件的迭代过程,各终端系统可以从区块链上获取acl,从可信云数据库更新软件,从而实现度整个配变网络的软件环境的为主。
另外,本发明中必需通过acl添加进行才可以运行,因此,即使通过零日攻击取得root等特权,也无法随意执行程序。
与上述方法实施例相对应,本发明还公开了一种安全运行可执行文件的系统。
参见图2,本发明一实施例公开的一种安全运行可执行文件的系统的结构示意图,该系统应用于客户端,该系统包括:
获取单元201,用于当检测到可执行文件被调用时,获取所述可执行文件、所述可执行文件的调用主体以及所述调用主体对所述可执行文件的操作指令;
具体的,在实际应用中,当用户调用某个可执行文件时,会获取可执行文件、可执行文件的调用主体以及调用主体对可执行文件的操作指令,其中,该调用主体也即待执行主体的调用账号,调用主体对可执行文件的操作指令,比如,执行、读、写等。
其中,可执行文件中包含有应用程序。
第一判断单元202,用于判断所述调用主体对所述可执行文件的所述操作指令是否有效;
具体的,当用户调用某个可执行文件时,操作系统会将可执行文件、调用主体和所述操作指令发送至操作系统内核,由操作系统内核确定调用主体对所述可执行文件的所述操作指令是否有效,具体判断过程可参见现有成熟方案,此处不再赘述。当确定调用主体对可执行文件的操作指令有效时,操作系统中的安全模块会hook该操作,并对可执行文件、调用主体和操作指令进行第二次验证。
其中,操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。
hook是是一种操作系统调试中断机制,中文译为“挂钩”或“钩子”。在对特定的系统事件进行hook后,一旦发生已hook事件,对该事件进行hook的程序就会收到系统的通知,这时程序就能在第一时间对该事件做出响应。
本实施例中,操作系统中设置有hook模块,hook模块用于拦截系统对文件的读、写、执行等操作。
拦截单元203,用于在所述第一判断单元202判断为是的情况下,拦截所述调用主体对所述可执行文件执行的所述操作指令;
在实际应用中,可以在操作系统中设置拦截模块,利用该拦截模块调用lsm安全模块接口,lsm是linuxsecritymodule的简称,即linux安全模块。拦截模块是一种轻量级通用访问控制框架,适合于多种访问控制模型在它上面以内核可加载模块的形实现。
其中,拦截模块由访问文件驱动和访问进程驱动组成,拦截模块可以对文件读、写和执行操作进行拦截。
在拦截模块中设置有acl(accesscontrollists,访问控制列表),acl可支持粗粒度的读、写和执行操作,也可以支持系统op指令级的细粒度操作。acl中的内容包括:主体、客体和操作指令,主体可以包括:账户、进程和ip中的任意一个或多个组合,客体可以包括:文件、进程、服务、磁盘、设备和网络等。
本实施例中,主体指的是可执行文件的调用主体,客体指的是可执行文件。在实际应用中,默认acl为程序白名单,即允许执行的一组操作行为描述。
需要说明的是,本实施例采用操作系统内核的hook技术来控制操作系统的执行文件的调用和进程运行控制,由此获取操作系统的控制权,root用户也无法绕过拦截模块的控制。本步骤的关键作用是把控应用程序入口,当用户需要调用可执行文件时,操作系统接收到用户对可执行文件的操作指令时,也即操作系统检测到可执行文件被调用时,会先判断原生权限,也即判断调用主体对可执行文件的操作指令是否有效,如果是,则在调用操作指令时,hook技术在此时进行拦截,也就是说,即使原生权限验证通过,也不会使可执行文件在操作系统中随意执行。
第二判断单元204,用于判断所述可执行文件、所述调用主体和所述操作指令是否存在于预先设置的acl中,其中,所述acl中的内容包括:主体、客体和操作指令;
需要说明的是,本实施例中通过可信云数据库生成程序白名单,该程序白名单也即acl,终端的操作系统只能执行acl中的可执行文件。
其中,生成的acl可作为白名单导出。
终端的安全模块可以导入acl。
在实际应用中,acl可导入访问控制模型,例如,基于角色的访问控制(rbac,rolebasedaccesscontrol)、强制访问控制模型(mac,mandatoryaccesscontrol)、基于属性的访问控制(abac,attributebasedaccesscontrol)等安全策略。
第三判断单元205,用于在所述第二判断单元204判断为是的情况下,判断所述可执行文件的数字签名与在所述acl中对应的可执行文件的数字签名是否匹配;
其中,拦截模块会对acl中的客体,也即可执行文件进行数字签名,具体的,拦截模块采用单向散列函数对acl中的客体进行数字签名,该数字签名具体为md5数字签名。
单向散列函数:又称单向hash函数、杂凑函数,用于把任意长的输入消息串变化成固定长的输出串且由输出串难以得到输入串的一种函数。
本实施例通过将可执行文件的数字签名与在acl中对应的可执行文件的数字签名进行匹配来确定可执行文件是否被篡改,当两者匹配时,表明可执行文件的数字签名未被篡改,反之,当两者不匹配时,表明可执行文件的数字签名被篡改,此时,禁止可执行文件运行。
第四判断单元206,用于在所述第三判断单元205判断为是的情况下,判断所述可执行文件的数字签名是否可信;
其中,确定可执行文件的数字签名是否可信,可以通过判断可执行文件的数字签名是否在未被篡改时生成,具体可参见现有成熟方案,此处不再赘述。
加载单元207,用于在所述第四判断单元206判断为是的情况下,加载所述可执行文件,并启动新进程运行所述可执行文件。
综上可知,本发明公开的安全运行可执行文件的系统,当检测到可执行文件被调用时,获取可执行文件、可执行文件的调用主体以及调用主体对可执行文件的操作指令,当确定调用主体对可执行文件的操作指令有效时,并不会执行操作指令,而是进一步验证可执行文件、调用主体和操作指令是否存在于预先设置的acl中,通过将可执行文件的数字签名与在acl中对应的可执行文件的数字签名进行匹配验证可执行文件是否被篡改,以及验证可执行文件的数字签名是否可信,当所有的验证均通过时才会加载可执行文件,并启动新进程运行可执行文件,任何一个验证未通过,均禁止可执行文件运行。由于本发明在运行可执行文件之前,对可执行文件进行了多次验证,因此,可以将携带病毒和/或恶意程序的可执行文件进行滤除,从而实现了可执行文件的安全运行。
因此,为进一步优化上述实施例,上述系统还可以包括:
禁止单元,用于当所述调用主体对所述可执行文件的所述操作指令无效,或者所述可执行文件、所述调用主体和所述操作指令不存在于所述acl中,或者所述可执行文件的数字签名与在所述acl中对应的可执行文件的数字签名不匹配,或者所述可执行文件的数字签名不可信,则禁止所述可执行文件运行。
为进一步优化上述实施例,上述系统还可以包括:
存储单元,用于在所述加载单元207在所述加载所述可执行文件,并启动新进程运行所述可执行文件之后,将运行的所述可执行文件存储至预先构建的可信云数据库。
其中,存储至可信云数据库的可执行文件均具有数字签名,该数据签名可以为采用hash算法生成md5数字签名。
需要说明的是,本发明通过建立可信云数据库来维护所有可能在终端执行的执行文件。通过可信云数据库对这些执行文件进行管理、发布和更新等,由此终端的操作系统只能通过可信云数据库来更细执行文件中的程序。
本发明通过将通过验证的可执行文件存储至可新云数据库,实现将所有需要在泛物联网终端运行的应用程序统一整理归集。
在实际应用中,在构建可信云数据库时,可以采用云架构,构建可信程序的管理平台,利用h5开发的webui进行管理。可信云数据库可进行新程序发布、程序更新、程序管理、版本管理、文件同步、备份还原、下载控制等功能。
为保证acl的安全性,防止acl被篡改,本发明对acl进行了区块链化。
因此,为进一步优化上述实施例,上述系统还可以包括:
生成单元,用于当检测到所述可信云数据库中存储的可执行文件发生变更后,基于变更后的可执行文件生成新的acl;
签名单元,用于对所述新的acl进行数据签名,得到目标acl;
写入单元,用于将所述目标acl写入区块链分布式账本。
为进一步优化上述实施例,上述系统还可以包括:
发送单元,用于将写入所述目标acl的区块链分布式账本同步发送至所述可信云数据库和客户端。
其中,客户端可以根据目标acl进行文件和进程的访问控制。
需要特别说明的是,对acl进行区块链化中的所需的全部通信均采用https(hypertexttransferprotocoloversecuresocketlayer,超文本传输安全协议)加密方式传输。
综上可知,本发明公开的安全运行可执行文件的系统,当检测到可执行文件被调用时,获取可执行文件、可执行文件的调用主体以及调用主体对可执行文件的操作指令,当确定调用主体对可执行文件的操作指令有效时,并不会执行操作指令,而是进一步验证可执行文件、调用主体和操作指令是否存在于预先设置的acl中,通过将可执行文件的数字签名与在acl中对应的可执行文件的数字签名进行匹配验证可执行文件是否被篡改,以及验证可执行文件的数字签名是否可信,当所有的验证均通过时才会加载可执行文件,并启动新进程运行可执行文件,任何一个验证未通过,均禁止可执行文件运行。由于本发明在运行可执行文件之前,对可执行文件进行了多次验证,因此,可以将携带病毒和/或恶意程序的可执行文件进行滤除,从而实现了可执行文件的安全运行。
其次,本发明采用可信云数据库发布新软件,并进行统一维护管理,当可信云数据库中存储的可执行文件发生变更后,生成新的acl,采用区块链技术的acl管理系统,可以将acl写入区块链分布式账本,并可全称跟踪和回溯软件的迭代过程,各终端系统可以从区块链上获取acl,从可信云数据库更新软件,从而实现度整个配变网络的软件环境的为主。
另外,本发明中必需通过acl添加进行才可以运行,因此,即使通过零日攻击取得root等特权,也无法随意执行程序。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
1.一种安全运行可执行文件的方法,其特征在于,包括:
当检测到可执行文件被调用时,获取所述可执行文件、所述可执行文件的调用主体以及所述调用主体对所述可执行文件的操作指令;
判断所述调用主体对所述可执行文件的所述操作指令是否有效;
如果是,则拦截所述调用主体对所述可执行文件执行的所述操作指令;
判断所述可执行文件、所述调用主体和所述操作指令是否存在于预先设置的acl中,其中,所述acl中的内容包括:主体、客体和操作指令;
如果是,则判断所述可执行文件的数字签名与在所述acl中对应的可执行文件的数字签名是否匹配;
如果是,则判断所述可执行文件的数字签名是否可信;
如果是,则加载所述可执行文件,并启动新进程运行所述可执行文件。
2.根据权利要求1所述的方法,其特征在于,还包括:
当所述调用主体对所述可执行文件的所述操作指令无效,或者所述可执行文件、所述调用主体和所述操作指令不存在于所述acl中,或者所述可执行文件的数字签名与在所述acl中对应的可执行文件的数字签名不匹配,或者所述可执行文件的数字签名不可信,则禁止所述可执行文件运行。
3.根据权利要求1所述的方法,其特征在于,在所述加载所述可执行文件,并启动新进程运行所述可执行文件之后,还包括:
将运行的所述可执行文件存储至预先构建的可信云数据库。
4.根据权利要求3所述的方法,其特征在于,还包括:
当检测到所述可信云数据库中存储的可执行文件发生变更后,基于变更后的可执行文件生成新的acl;
对所述新的acl进行数据签名,得到目标acl;
将所述目标acl写入区块链分布式账本。
5.根据权利要求4所述的方法,其特征在于,还包括:
将写入所述目标acl的区块链分布式账本同步发送至所述可信云数据库和客户端。
6.一种安全运行可执行文件的系统,其特征在于,包括:
获取单元,用于当检测到可执行文件被调用时,获取所述可执行文件、所述可执行文件的调用主体以及所述调用主体对所述可执行文件的操作指令;
第一判断单元,用于判断所述调用主体对所述可执行文件的所述操作指令是否有效;
拦截单元,用于在所述第一判断单元判断为是的情况下,拦截所述调用主体对所述可执行文件执行的所述操作指令;
第二判断单元,用于判断所述可执行文件、所述调用主体和所述操作指令是否存在于预先设置的acl中,其中,所述acl中的内容包括:主体、客体和操作指令;
第三判断单元,用于在所述第二判断单元判断为是的情况下,判断所述可执行文件的数字签名与在所述acl中对应的可执行文件的数字签名是否匹配;
第四判断单元,用于在所述第三判断单元判断为是的情况下,判断所述可执行文件的数字签名是否可信;
加载单元,用于在所述第四判断单元判断为是的情况下,加载所述可执行文件,并启动新进程运行所述可执行文件。
7.根据权利要求6所述的系统,其特征在于,还包括:
禁止单元,用于当所述调用主体对所述可执行文件的所述操作指令无效,或者所述可执行文件、所述调用主体和所述操作指令不存在于所述acl中,或者所述可执行文件的数字签名与在所述acl中对应的可执行文件的数字签名不匹配,或者所述可执行文件的数字签名不可信,则禁止所述可执行文件运行。
8.根据权利要求6所述的系统,其特征在于,还包括:
存储单元,用于在所述加载单元在所述加载所述可执行文件,并启动新进程运行所述可执行文件之后,将运行的所述可执行文件存储至预先构建的可信云数据库。
9.根据权利要求8所述的系统,其特征在于,还包括:
生成单元,用于当检测到所述可信云数据库中存储的可执行文件发生变更后,基于变更后的可执行文件生成新的acl;
签名单元,用于对所述新的acl进行数据签名,得到目标acl;
写入单元,用于将所述目标acl写入区块链分布式账本。
10.根据权利要求9所述的系统,其特征在于,还包括:
发送单元,用于将写入所述目标acl的区块链分布式账本同步发送至所述可信云数据库和客户端。
技术总结