CN112860240B - 脚本验证方法、脚本签名方法及计算设备 - Google Patents

脚本验证方法、脚本签名方法及计算设备 Download PDF

Info

Publication number
CN112860240B
CN112860240B CN202110439984.3A CN202110439984A CN112860240B CN 112860240 B CN112860240 B CN 112860240B CN 202110439984 A CN202110439984 A CN 202110439984A CN 112860240 B CN112860240 B CN 112860240B
Authority
CN
China
Prior art keywords
script
file
script file
signature
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.)
Active
Application number
CN202110439984.3A
Other languages
English (en)
Other versions
CN112860240A (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.)
Wuhan Deepin Technology Co ltd
Original Assignee
Wuhan Deepin 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 Wuhan Deepin Technology Co ltd filed Critical Wuhan Deepin Technology Co ltd
Priority to CN202110439984.3A priority Critical patent/CN112860240B/zh
Publication of CN112860240A publication Critical patent/CN112860240A/zh
Application granted granted Critical
Publication of CN112860240B publication Critical patent/CN112860240B/zh
Priority to PCT/CN2021/129672 priority patent/WO2022222437A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

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

Abstract

本发明公开了一种脚本验证方法,在操作系统中执行,包括步骤:执行脚本文件;判断脚本文件是否是待验证脚本文件;如果是待验证脚本文件,则基于脚本文件获取脚本文件路径,并将脚本文件路径写入字符设备文件;读取字符设备文件,以便基于字符设备文件中的脚本文件路径获取待验证脚本文件;以及对待验证脚本文件进行签名验证,如果验证成功,则继续执行所述脚本文件。本发明还一并公开了相应的脚本签名方法和计算设备。本发明的脚本验证方法,能充分保证脚本运行时的安全性。

Description

脚本验证方法、脚本签名方法及计算设备
技术领域
本发明涉及脚本签名技术领域,特别涉及一种脚本验证方法、脚本签名方法及计算设备。
背景技术
脚本开发方便、无需编译、可直接运行,广泛应用于Linux操作系统。Linux操作系统中常用的脚本包括shell、python、perl、lua、rubby等。脚本作为一种纯文本格式的可执行程序,目前在执行脚本时仅检查执行用户、可执行权限和root账号,缺乏有效的安全机制,而且,用户很难确定脚本的发布者、脚本是否被篡改过。对于银行、企业等对安全要求较高的系统环境,在运行脚本时,如何保证脚本的安全可信至关重要。
现有技术中对脚本的签名方法有两种,一种是开发者对脚本签名后,将签名信息附加保存到被签名的文件内部,例如Powershell脚本数字签名方案。基于该签名方法对脚本进行签名后,用户在运行签名脚本时,Powershell提取、检查脚本中的签名信息,确认发布者证书是否受信任,根据不同的脚本执行策略,对未经安全签名的、不信任发布者的脚本作出响应处理。这种签名方法仅适用于Windows系统下的PowerShell脚本,不能适应Linux系统下的众多脚本语言,导致Linux系统无法使用这种签名方法。
还有一种签名方法,在开发者对脚本进行签名后,将签名信息额外保存为单独的签名文件,进而发布签名文件和脚本,这种独立的签名文件在传递过程中很容易丢失。而且,用户在运行签名后的脚本前,需要手动进行验签,即使不验签或验证不通过也可以执行脚本,不能保证脚本运行时的安全性。
为此,需要一种脚本签名方法及脚本验证方法来解决上述技术方案中存在的问题。
发明内容
为此,本发明提供一种脚本验证方法和脚本签名方法,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供了一种脚本验证方法,在操作系统中执行,包括步骤:执行脚本文件;判断脚本文件是否是待验证脚本文件;如果是待验证脚本文件,则基于脚本文件获取脚本文件路径,并将脚本文件路径写入字符设备文件;读取字符设备文件,以便基于字符设备文件中的脚本文件路径获取待验证脚本文件;以及对待验证脚本文件进行签名验证,如果验证成功,则继续执行所述脚本文件。
可选地,在根据本发明的脚本验证方法中,判断脚本文件是否是待验证脚本文件的步骤包括:获取脚本文件中的脚本解释器参数,判断脚本解释器参数指定的是否是预定脚本解释器;如果是预定脚本解释器,则确定脚本文件是待验证脚本文件。
可选地,在根据本发明的脚本验证方法中,还包括步骤:如果未获取到脚本解释器参数,则获取脚本文件参数,判断脚本文件参数指定的文件是否是elf文件或java文件;如果不是elf文件或java文件,则确定脚本文件是待验证脚本文件。
可选地,在根据本发明的脚本验证方法中,还包括步骤:如果签名验证失败,则终止执行所述脚本文件,并生成签名验证失败的消息显示在界面。
可选地,在根据本发明的脚本验证方法中,在对待验证脚本文件进行签名验证之后,还包括步骤:将验证结果写入字符设备文件。
可选地,在根据本发明的脚本验证方法中,对脚本文件进行签名验证包括:调用脚本验证方法对脚本文件进行签名验证。
可选地,在根据本发明的脚本验证方法中,对脚本文件进行签名验证的步骤包括:
从脚本文件尾部获取注释信息,基于所述注释信息获取签名数据;获取脚本文件中的脚本内容;基于摘要算法计算所述脚本内容的第一摘要;基于签名证书对所述签名数据进行解密,生成第二摘要;对比第一摘要和第二摘要是否相同,如果相同,则验证成功。
可选地,在根据本发明的脚本验证方法中,基于签名证书对所述签名数据进行解密的步骤包括:将所述签名数据转换为预定结构的签名信息;对签名证书进行验证,以便验证脚本文件的发布者身份;基于签名证书对所述签名信息进行解密,生成第二摘要。
根据本发明的一个方面,提供了一种脚本签名方法,在计算设备中执行,包括步骤:获取脚本文件中的脚本内容;基于摘要算法计算所述脚本内容的摘要;基于私钥对所述摘要进行签名,生成签名信息,并将所述签名信息转换为签名数据;以及基于注释方法将所述签名数据添加到脚本文件尾部,以作为所述脚本文件的注释信息。
根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述的方法的指令。
根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述方法。
根据本发明的技术方案,提供了一种脚本签名方法和脚本验证方法,基于脚本签名方法可以对Linux系统下的多种语言的脚本文件进行开发者签名,将签名数据以注释的方式添加到脚本文件的尾部,使得签名数据作为注释信息保存在被签名的脚本文件内部,不易丢失。并且,在执行脚本文件时,计算设备通过执行脚本验证方法来判断脚本是否需要进行验证,并对需要验证的签名后的脚本文件中的签名数据进行验证,只有在验证通过之后才能继续运行脚本,这样,能够充分保证脚本运行时的安全性。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的脚本签名方法200的流程图;
图3示出了根据本发明一个实施例的脚本验证方法300的流程图;以及
图4示出了根据本发明一个实施例的脚本验证方法300的时序图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明中的脚本签名方法200及脚本验证方法300适于在计算设备中执行。计算设备通过执行脚本签名方法200对脚本文件进行开发者签名,并将签名数据以注释的方式添加到脚本文件中。在执行脚本文件时,计算设备通过执行脚本验证方法300对脚本文件中的签名数据进行验证。
图1示出了根据本发明一个实施例的计算设备100的示意图。
如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(UP)、微控制器(UC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。
计算设备100还包括储存设备132,储存设备132包括可移除储存器136和不可移除储存器138。
计算设备100还可以包括储存接口总线134。储存接口总线134实现了从储存设备132(例如,可移除储存器136和不可移除储存器138)经由总线/接口控制器130到基本配置102的通信。操作系统120、应用122以及数据124的至少一部分可以存储在可移除储存器136和/或不可移除储存器138上,并且在计算设备100上电或者要执行应用122时,经由储存接口总线134而加载到系统存储器106中,并由一个或者多个处理器104来执行。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以是这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中以编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
计算设备100可以实现为包括桌面计算机和笔记本计算机配置的个人计算机。当然,计算设备100也可以实现为小尺寸便携(或者移动)电子设备的一部分,这些电子设备可以是诸如蜂窝电话、数码照相机、个人数字助理(PDA)、个人媒体播放器设备、无线网络浏览设备、个人头戴设备、应用专用设备、或者可以包括上面任何功能的混合设备。甚至可以被实现为服务器,如文件服务器、数据库服务器、应用程序服务器和WEB服务器等。本发明的实施例对此均不做限制。
在根据本发明的实施例中,计算设备100被配置为执行根据本发明的脚本签名方法200。其中,计算设备100的应用122中包含用于执行本发明的脚本签名方法200的多条程序指令,这些程序指令可以被计算设备100读取并执行,以便计算设备100执行根据本发明的脚本签名方法200来对脚本文件进行开发者签名。
在根据本发明的实施例中,计算设备100被配置为执行根据本发明的脚本验证方法300。其中,计算设备100的操作系统120中包含用于执行本发明的脚本验证方法300的多条程序指令,这些程序指令可以被计算设备100读取并执行,以便操作系统执行根据本发明的脚本验证方法300来对签名后的脚本文件进行验证。
需要说明的是,根据本发明的技术方案,当开发者对脚本文件签名时,计算设备100通过执行脚本签名方法200对脚本文件进行签名,并将签名数据以注释的方式添加到脚本文件的尾部,使得签名数据作为注释信息保存在被签名的脚本文件中。当用户执行签名后的脚本文件时,计算设备100的操作系统通过执行脚本验证方法300来对脚本文件中的签名数据进行验证。
图2示出了根据本发明一个实施例的脚本签名方法200的流程图。方法200适于在计算设备(例如前述计算设备100)中执行。
应当指出,脚本签名方法200适于对Linux系统下的多种语言的脚本文件进行开发者签名,这里,本发明不限于具体的脚本语言。
如图2所示,方法200始于步骤S210。在步骤S210中,获取脚本文件中的脚本内容。
在步骤S220中,基于摘要算法计算脚本内容的摘要。也就是说,基于摘要算法对脚本内容计算摘要,该摘要也即是脚本文件的摘要。这里,摘要算法例如是消息摘要算法。
需要说明的是,在获取脚本文件中的脚本内容时,忽略空行和注释行。这样,在步骤S220中计算脚本文件的摘要时,是基于去除空行和注释行后的脚本内容来计算摘要。
在步骤S230中,基于私钥和签名算法对摘要进行签名计算,生成签名信息,并对签名信息进行格式转换后生成签名数据。这里,对摘要计算签名后得到的签名信息是符合pkcs#7标准的结构体,通过对符合pkcs#7标准的签名信息进行格式转换后得到的是pem格式的签名数据。应当指出,本发明不限于签名信息的具体格式。
在步骤S240中,基于注释方法将pem格式的签名数据添加到脚本文件尾部,作为脚本文件的注释信息。这样,根据本发明的方法200对脚本文件内容签名后生成的签名数据,是作为注释信息保存在被签名的脚本文件内部,避免了单独保存签名文件方案的容易丢失问题。
应当指出,在本发明的脚本签名方法200以及相应的脚本验证方法300中,均适用于Linux系统下的多种语言的脚本文件,这里,本发明对脚本文件的脚本语言不做具体限定。例如,脚本文件可以实现为Shell脚本、Python脚本、Perl脚本、Lua脚本、Rubby脚本等,但不限于此。在本发明的实施例中,仅以Shell脚本为例对本发明的脚本签名方法200和脚本验证方法300进行详细说明。
图3示出了根据本发明一个实施例的脚本验证方法300的流程图。方法300适于在计算设备(例如前述计算设备100)的操作系统中执行。
如图3所示,方法300始于步骤S310。在步骤S310中,执行脚本文件。这里,可以在Linux系统中执行一种或多种脚本文件,例如执行Shell脚本、Python脚本、Perl脚本、Lua脚本、Rubby脚本,且不限于这些脚本文件。
随后,在步骤S320中,判断脚本文件是否是待验证脚本文件。也就是说,在执行脚本文件时,判断脚本文件是否是待验证脚本文件。
需要说明的是,这里的待验证脚本文件例如是基于前述脚本签名方法200进行签名后的脚本文件,在用户请求执行签名后的脚本文件时,计算设备100会根据本发明的脚本验证方法300对签名后的脚本文件的签名数据进行验证。应当理解,基于脚本签名方法200进行签名后的待验证脚本文件可以是Shell脚本、Python脚本、Perl脚本、Lua脚本、Rubby脚本中的一种或多种。
根据一个实施例,可以按照以下步骤来判断脚本文件是否是待验证脚本文件:
获取脚本文件中的脚本解释器参数,判断脚本解释器参数指定的是否是预定脚本解释器。这里,预定脚本解释器包括与基于脚本签名方法200进行签名的一种或多种脚本文件相匹配的、适于解析并执行相应脚本文件的一种或多种脚本解释器,例如shell脚本解释器bash。应当指出,预定脚本解释器可以包括一种或多种脚本解释器,本发明不限于预定脚本解释器的具体种类。在一种实施方式中,脚本解释器参数是作为脚本文件首行的第一个参数。
如果是预定脚本解释器,则确定脚本文件是待验证脚本文件,也即是基于脚本签名方法200进行签名后的脚本文件。如果指定的不是预定脚本解释器,则确定脚本文件不是待验证脚本文件。
另外,如果未获取到脚本解释器参数,则进一步获取脚本文件参数,判断脚本文件参数指定的文件(脚本文件本身)是否是elf文件或java文件。如果脚本文件参数指定的文件不是elf文件或java文件,则也确定脚本文件是待验证脚本文件。反之,如果脚本文件参数指定的文件是elf文件或java文件,则确定脚本文件不是待验证脚本文件,不再基于方法300对该脚本文件进行验证。
在一种实施方式中,在基于上述步骤判断脚本文件是否是待验证脚本文件之前,预先基于内核模块的search_binary_handler函数获取脚本文件中包括的一个或多个参数。这样,可以从获取到的所有参数中,获取与脚本解释器相对应的参数、与脚本文件本身相对应的参数、与脚本文件路径相对应的参数等。
在前述步骤S320中,如果确定脚本文件是待验证脚本文件,则执行步骤S330。
在步骤S330中,对当前待验证的脚本文件执行阻塞,同时基于该脚本文件获取脚本文件路径,例如通过获取脚本文件中的相应参数(与脚本文件路径相对应的参数)来获取脚本文件路径,随后将脚本文件路径写入字符设备文件。这里,字符设备文件例如是dev文件。
随后,在步骤S340中,读取字符设备文件,以便基于字符设备文件中的脚本文件路径获取待验证脚本文件。
最后,在步骤S350中,调用脚本验证方法对待验证脚本文件进行签名验证,即是对脚本文件的签名数据进行验证。这里,脚本验证方法例如可以实现为shell-sign程序。如果对脚本文件签名验证成功,则继续执行当前的脚本文件。如果对脚本文件签名验证失败,则终止执行当前的脚本文件,并生成签名验证失败的消息显示在界面,以便提示用户当前脚本文件因验证失败而不能运行。
这样,本发明在执行脚本文件时通过对脚本文件进行签名验证,在验证通过之后才能运行脚本,从而能保证在Linux系统下运行脚本文件时的安全性。
图4示出了根据本发明一个实施例的脚本验证方法300的时序图。
根据一种实施方式,如图4所示,脚本文件可以实现为shell脚本,前述步骤S310~S330适于由Linux系统内核的LSM模块执行。前述步骤S340~S350适于由后台进程deepin-elf-verify执行。
如图4所示,后台进程deepin-elf-verify循环读取字符设备文件,并调用shell-sign脚本验证方法来对待验证脚本文件进行签名验证。随后,后台进程deepin-elf-verify获取shell-sign方法返回的签名验证结果,其中,在确定验证结果为验证失败时,后台进程deepin-elf-verify生成脚本文件签名验证失败的消息,并将消息发送至UI界面进行显示。
另外,后台进程deepin-elf-verify还将验证结果写入字符设备文件(dev)。内核的LSM模块通过从字符设备文件读取验证结果,并根据读取到的验证结果来确定是否放行脚本文件、继续执行脚本文件。这里,在内核的LSM模块读取到的验证结果为验证成功时,放行该脚本文件,以便继续执行该脚本文件。
需要说明的是,在本发明的实施例中,由于脚本文件的签名数据是作为注释信息保存在脚本文件中的,因此,在对脚本文件进行签名验证时,需要预先拆分脚本文件,分别获取脚本文件中的签名数据和脚本内容。
根据一个实施例,通过从脚本文件尾部获取注释信息,基于注释信息获取签名数据。这里,去除注释信息的行首的注释字符“#”,从‘-----END PKCS7-----’开始,读取到‘-----BEGIN PKCS7-----’停止,将读取到的所有行组合可以得到Pem格式的签名数据(字符串)。随后,获取脚本文件中的脚本内容。应当指出,在获取脚本内容时,忽略空行和注释行。
进而,基于摘要算法计算脚本内容的第一摘要。摘要算法例如是消息摘要算法。
并且,基于签名证书对从脚本文件中获取的签名数据进行解密,生成第二摘要。具体地,首先对签名数据进行格式转换,将签名数据转换为预定结构的签名信息,预定结构例如是符合pkcs#7标准的结构体,但不限于此。随后,对签名证书进行验证,以便验证脚本文件的发布者身份。在基于签名证书对发布者身份验证通过之后,基于签名证书的公钥(与方法200中的私钥相匹配)对签名信息进行解密,生成第二摘要。
最后,对比第一摘要和第二摘要是否相同,如果相同,则对脚本文件签名验证成功,从而继续执行该脚本文件。如果不同,则签名验证失败,终止执行该脚本文件。
根据本发明的技术方案,基于脚本签名方法200可以对Linux系统下的多种语言的脚本文件进行签名,将签名数据以注释的方式添加到脚本文件的尾部,使得签名数据作为注释信息保存在被签名的脚本文件内部,不易丢失。并且,在执行脚本文件时,计算设备通过执行脚本验证方法300来判断脚本是否需要进行验证,并对需要验证的签名后的脚本文件中的签名数据进行验证,只有在验证通过之后才能继续运行脚本,这样,能够充分保证Linux系统下的多种脚本运行时的安全性。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的多语言垃圾文本的识别方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (9)

1.一种脚本验证方法,在操作系统中执行,包括步骤:
执行脚本文件,所述脚本文件包括Linux系统下的多种语言的脚本文件;
判断脚本文件是否是待验证脚本文件,其中,获取脚本文件中的脚本解释器参数,判断脚本解释器参数指定的是否是预定脚本解释器,如果是预定脚本解释器,则确定脚本文件是待验证脚本文件;
如果是待验证脚本文件,则基于脚本文件获取脚本文件路径,并将脚本文件路径写入字符设备文件;
读取字符设备文件,以便基于字符设备文件中的脚本文件路径获取待验证脚本文件;以及
对待验证脚本文件进行签名验证,如果验证成功,则继续执行所述脚本文件。
2.如权利要求1所述的方法,其中,还包括步骤:
如果未获取到脚本解释器参数,则获取脚本文件参数,判断脚本文件参数指定的文件是否是elf文件或java文件;
如果不是elf文件或java文件,则确定脚本文件是待验证脚本文件。
3.如权利要求1所述的方法,其中,还包括步骤:如果签名验证失败,则终止执行所述脚本文件,并生成签名验证失败的消息显示在界面;
在对待验证脚本文件进行签名验证之后,还包括步骤:将验证结果写入字符设备文件。
4.如权利要求1-3任一项所述的方法,其中,对脚本文件进行签名验证包括:
调用脚本验证方法对脚本文件进行签名验证。
5.如权利要求1-3任一项所述的方法,其中,对脚本文件进行签名验证的步骤包括:
从脚本文件尾部获取注释信息,基于所述注释信息获取签名数据;获取脚本文件中的脚本内容;
基于摘要算法计算所述脚本内容的第一摘要;
基于签名证书对所述签名数据进行解密,生成第二摘要;
对比第一摘要和第二摘要是否相同,如果相同,则验证成功。
6.如权利要求5所述的方法,其中,基于签名证书对所述签名数据进行解密的步骤包括:
将所述签名数据转换为预定结构的签名信息;
对签名证书进行验证,以便验证脚本文件的发布者身份;
基于签名证书对所述签名信息进行解密,生成第二摘要。
7.一种脚本签名方法,在计算设备中执行,包括步骤:
获取脚本文件中的脚本内容,所述脚本文件包括Linux系统下的多种语言的脚本文件,其中,脚本文件中包括脚本解释器参数,如果所述脚本解释器参数指定的是预定脚本解释器,则脚本文件是待验证脚本文件;
基于摘要算法计算所述脚本内容的摘要;
基于私钥对所述摘要进行签名,生成签名信息,并将所述签名信息转换为签名数据;以及
基于注释方法将所述签名数据添加到脚本文件尾部,以作为所述脚本文件的注释信息。
8.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-7中任一项所述的方法的指令。
9.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-7中任一项所述方法。
CN202110439984.3A 2021-04-23 2021-04-23 脚本验证方法、脚本签名方法及计算设备 Active CN112860240B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110439984.3A CN112860240B (zh) 2021-04-23 2021-04-23 脚本验证方法、脚本签名方法及计算设备
PCT/CN2021/129672 WO2022222437A1 (zh) 2021-04-23 2021-11-10 脚本验证方法、脚本签名方法及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110439984.3A CN112860240B (zh) 2021-04-23 2021-04-23 脚本验证方法、脚本签名方法及计算设备

Publications (2)

Publication Number Publication Date
CN112860240A CN112860240A (zh) 2021-05-28
CN112860240B true CN112860240B (zh) 2021-07-16

Family

ID=75992723

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110439984.3A Active CN112860240B (zh) 2021-04-23 2021-04-23 脚本验证方法、脚本签名方法及计算设备

Country Status (2)

Country Link
CN (1) CN112860240B (zh)
WO (1) WO2022222437A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860240B (zh) * 2021-04-23 2021-07-16 武汉深之度科技有限公司 脚本验证方法、脚本签名方法及计算设备
CN114282222B (zh) * 2021-12-16 2023-03-24 上海健交科技服务有限责任公司 一种可信脚本加载及执行方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101951605A (zh) * 2010-09-14 2011-01-19 浙江大学 移动Widget的数字签名方法
CN102244659A (zh) * 2011-06-30 2011-11-16 成都市华为赛门铁克科技有限公司 安全策略脚本执行方法、装置以及安全策略系统
CN103400063A (zh) * 2013-08-06 2013-11-20 深信服网络科技(深圳)有限公司 脚本文件执行方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707634B2 (en) * 2004-01-30 2010-04-27 Microsoft Corporation System and method for detecting malware in executable scripts according to its functionality
CN101739340B (zh) * 2009-12-17 2012-06-06 金蝶软件(中国)有限公司 一种脚本文件的验证方法和装置
US9483250B2 (en) * 2014-09-15 2016-11-01 International Business Machines Corporation Systems management based on semantic models and low-level runtime state
WO2017175157A1 (en) * 2016-04-06 2017-10-12 Karamba Security Secure controller operation and malware prevention
US11528611B2 (en) * 2018-03-14 2022-12-13 Rose Margaret Smith Method and system for IoT code and configuration using smart contracts
CN110413268B (zh) * 2018-04-28 2023-11-10 武汉斗鱼网络科技有限公司 一种中间件验证方法、存储介质、设备及系统
CN111914250B (zh) * 2020-08-18 2022-05-17 中科方德软件有限公司 一种Linux系统脚本程序运行时验证与管控方法
CN112507685B (zh) * 2020-11-30 2022-10-14 锐捷网络股份有限公司 一种yang文件验证方法、装置、电子设备及存储介质
CN112860240B (zh) * 2021-04-23 2021-07-16 武汉深之度科技有限公司 脚本验证方法、脚本签名方法及计算设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101951605A (zh) * 2010-09-14 2011-01-19 浙江大学 移动Widget的数字签名方法
CN102244659A (zh) * 2011-06-30 2011-11-16 成都市华为赛门铁克科技有限公司 安全策略脚本执行方法、装置以及安全策略系统
CN103400063A (zh) * 2013-08-06 2013-11-20 深信服网络科技(深圳)有限公司 脚本文件执行方法及装置

Also Published As

Publication number Publication date
WO2022222437A1 (zh) 2022-10-27
CN112860240A (zh) 2021-05-28

Similar Documents

Publication Publication Date Title
US8601579B2 (en) System and method for preserving references in sandboxes
CN108900471B (zh) 用于传输数据的服务器、客户端、网络系统及方法
CN112507328B (zh) 一种文件签名方法、计算设备及存储介质
CN112860240B (zh) 脚本验证方法、脚本签名方法及计算设备
WO2019169759A1 (zh) 模拟接口的创建装置、方法及计算机可读存储介质
US9721101B2 (en) System wide root of trust chaining via signed applications
CN106815031B (zh) 内核模块加载方法和装置
AU2012262867A1 (en) System and method for preserving references in sandboxes
CN108960830A (zh) 智能合约的部署方法、装置、设备及存储介质
WO2022252466A1 (zh) 一种应用程序的授权方法、计算设备以及存储介质
CN112835628A (zh) 一种服务器操作系统引导方法、装置、设备及介质
CN114168937A (zh) 一种资源访问方法、计算设备及可读存储介质
CN113535275A (zh) 一种混合应用构建方法、装置及计算设备
CN113961086B (zh) 一种快捷键实现方法、计算设备及存储介质
CN115904317A (zh) 一种前后端接口统一调用方法、装置、设备及存储介质
CN111897728B (zh) 接口调试方法及相关设备
WO2018145241A1 (zh) 一种基于指纹信息的电子支付方法和装置
CN114880648A (zh) 操作系统的批量离线激活方法、在线激活方法及激活系统
CN114329490A (zh) Mcu中软件自启动方法、装置及终端
CN113849245A (zh) 一种应用程序运行方法、计算设备及存储介质
CN112989435A (zh) 一种数字签名方法及计算设备
CN109472148B (zh) 加载热补丁的方法、装置和存储介质
CN113139197B (zh) 一种项目验签方法、装置和电子设备
Darmawan et al. SignChain: Enhanced Digital Signature System Security with HashIDs in Blockchain
CN115858448A (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
EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20210528

Assignee: Tongxin Software Technology Co.,Ltd.

Assignor: WUHAN DEEPIN TECHNOLOGY Co.,Ltd.

Contract record no.: X2021980010212

Denomination of invention: Script verification method, script signature method and computing device

Granted publication date: 20210716

License type: Common License

Record date: 20210929