CN1215418C - 一种防止在计算机中运行的应用系统被攻击或篡改的方法 - Google Patents

一种防止在计算机中运行的应用系统被攻击或篡改的方法 Download PDF

Info

Publication number
CN1215418C
CN1215418C CN 01107429 CN01107429A CN1215418C CN 1215418 C CN1215418 C CN 1215418C CN 01107429 CN01107429 CN 01107429 CN 01107429 A CN01107429 A CN 01107429A CN 1215418 C CN1215418 C CN 1215418C
Authority
CN
China
Prior art keywords
module
certificate
signature
subsystem
file
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.)
Expired - Lifetime
Application number
CN 01107429
Other languages
English (en)
Other versions
CN1365053A (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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN 01107429 priority Critical patent/CN1215418C/zh
Publication of CN1365053A publication Critical patent/CN1365053A/zh
Application granted granted Critical
Publication of CN1215418C publication Critical patent/CN1215418C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

一种防止在计算机中运行的应用系统被攻击或篡改的方法,先将各可加载模块被开发商各自拥有的数字证书签名,产生证书链和可加载模块签名信息作为信任书文件保存。从该文件获取证书链确认验证者本身;调用者根据该文件可找到模块签名信息,并从磁盘和内存映象空间对被加载模块验证来确定在装载前、后没有被恶意攻击者篡改,而且签名验证可随时在线进行,同时可对加载模块中的函数调用进行安全链接检查,从代码级保证动态计算环境的安全。

Description

一种防止在计算机中运行的应用系统被攻击或篡改的方法
技术领域
本发明涉及系统安全技术,具体涉及基于公开密钥体制(PublicKey Infrastructure,PKI)的数字证书在计算机应用系统中的应用,更具体地说,涉及一种防止在计算机中运行的应用系统代码被攻击或篡改的方法。
背景技术
随着计算机的普及,互联网的广泛应用,各种病毒、非法入侵程序对计算机应用系统安全造成极大威胁。这些非法代码往往通过修改应用系统代码或入口达到破坏目的。目前,解决问题主要是通过系统级安全进行防范,如防火墙、各种杀毒软件,并且它们只能针对现有的系统漏洞或已知的病毒特征码扫描。对于预防新的病毒和其它非法入侵程序具有滞后性,往往在已遭受攻击后才找出解决办法进行补救。而现行的在计算机上运行的应用系统,特别是大型的和复杂的应用系统,都采用了模块化设计,经常需要调用多个软件模块或其它应用程序,并且根据需要会随时从环境中添加和移走这些模块。为了防止恶意攻击者的攻击或篡改,建立一个安全可信任的计算环境,特别是在动态计算环境中,对应用系统、各加载模块和调用程序之间的验证处理和安全检查显得格外重要。
发明内容
本发明的目的在于,提供一种防止在计算机中运行的应用系统被攻击或篡改的方法,可以克服现有技术存在的上述缺点,特别是可以有效地防止来自应用系统外部的非法代码的入侵,保证在动态环境下应用系统、各加载模块和其它调用程序的安全性,使得运行在计算机中的应用系统的功能不被破坏和影响,从而建立一个安全可信任的计算环境。
本发明的目的是基于以下认识实现的,由于基于公开密钥框架(PKI)的数字签名是实现上述验证处理和安全检查的比较完善的算法。本发明提出并利用认证系统的分层认证结构(证书链)和数字证书的签名验证技术。一方面,利用证书链验证了验证者本身(开发模块开发商)的真实性;另一方面,利用数字证书的签名验证技术,采用自我完整性检查、应用系统和各模块相互之间进行双向认证以及安全链接检查,从代码级去保证动态计算环境的安全。
本发明的目的是这样实现的,构造一种防止在计算机中运行的应用系统被攻击或篡改的方法,所述应用系统包括第一子系统和第二子系统,其特征在于,包括以下步骤:根据第一子系统中的可加载模块A1、加载应用程序A2和第二子系统中的可加载模块B1和加载应用程序B2设置信任书文件,
启动所述第一子系统时,通过查找所述信任书文件,获得证书链和模块信息,由证书链验证开发商的真实性。
验证对欲装载模块A1、A2进行完整性检查(即签名验证),如果签名验证成功则装载所述模块A1、A2;
将所述第一子系统中模块A1、A2装入可执行环境中,在运行环境中,验证所述模块A1、A2在执行环境中的内存映象代码的杂凑值,将之与事先计算好的杂凑值进行比较,如果比较两者相同,验证装载后的完整性,其后可随时相互在线验证,防止恶意攻击者的在线攻击。启动第二子系统时,装载模块B1、B2的验证方法与上述相同。
对应用系统和模块、模块和模块之间的函数调用进行安全链接检查,检查被调用的函数地址是否在所属模块的内存映象地址空间内。
按照本发明提供的方法,所述应用系统和第一子系统由第一开发商提供,所述第二子系统由第二开发商提供,第一子系统调用第二子系统,其特征在于,所述在包含第一子系统和第二子系统的应用系统中设置信任书文件的步骤包括以下步骤:
由所述第一开发商生成根证书,使第一子系统中的动态可装载模块A1、A2实现自我签名;
所述第一开发商用根证书为第二开发商拥有的数字证书签名,形成第二级数字证书,所述第二开发商利用自己的数字证书为所述第二子系统动态可加载模块B1、可加载应用程序B2签名;
将所述根证书、所述数字证书形成的证书链以及模块信息、被签名的模块代码的杂凑值(信息摘要)、签名验证的具体算法以文件方式保存作为信任书文件。
按照本发明提供的方法,其特征在于,所述完整性验证包括以下步骤:从信任书文件中根据证书链读取签名验证用的模块证书和模块信息,验证验证者本身的真实性;从磁盘和内存映象空间两方面计算模块代码的杂凑值,将之与证书中事先计算好的杂凑值进行比较,如果一致,则验证了模块在装载前和装载后没有被他人篡改;相互验证能在线进行,防止在线攻击;对加载模块的函数调用实行安全链接检查,检查函数地址是否在模块内存映性地址空间内。
按照本发明提供的方法,其特征在于,所述第一、第二子系统运行时,所述信任书文件存储在外部存储介质中。
实施本发明提供的防止在计算机中运行的应用系统被攻击或篡改的方法,具有以下显著优点:应用了基于公开密钥框架(PKI)的数字签名技术,通过利用数字证书的签名验证技术,采用自我完整性检查、应用系统、各加载模块和其它被调用程序之间的双向认证,从磁盘和内存映象空间两方面分别对已签名的代码进行验证,确定代码在装载前或装载后没有被恶意攻击者篡改;在动态计算环境中,加载模块会不断地从环境中添加和移走,本方法能保证相互验证处理在线进行,即在应用系统运行中能随时进行相互验证处理,有效地防止了恶意攻击者的在线攻击;对加载模块的函数调用实行安全链接检查,检查函数地址是否在模块内存代码空间内。从这三个方面,实现在代码级上保证动态计算环境的安全性。
结合附图和实施例,进一步说明本发明的特点,
附图说明
图1是按照本发明的方法形成签名及验证证书链的示意图;
图2是按照本发明的方法,对可装载模块进行验证的过程示意图;
具体实施方式
在图1示出的本发明的方法原理性结构图中,设应用系统A本身有可加载模块A1和可加载应用程序A2,该A1、A2需要调用由开发商B开发的可加载模块B1和可加载应用程序B2,具体地说,即在一个应用系统中,有一个被调用的子系统SA,以及一个被调用的子系统SB,子系统SA包括可加载模块A1和可加载应用程序A2,子系统SB包括可加载模块B1和可加载应用程序B2,其中应用系统A和子系统SA、由开发商A开发,子系统SB由开发商B开发,子系统SA调用子系统SB。图1中,方框102、104表示数字证书,箭头线101、103表示私钥的对象。
为检测和防止在静态和动态条件下应用系统被攻击或篡改,由应用系统提供者预先为应用系统准备信任书文件,该文件可以随应用系统一起销售或分发,该信任书文件是这样形成的:
1)开发商A生成自我签名的根证书CA,给系统A的可装载模块A1、A2实现自我签名,包括计算模块A1、A2代码的杂凑值(即信息摘要),并签名杂凑值。
2)开发商A用根证书为开发商B拥有的数字证书签名,形成第二级数字证书CB,开发商B用数字证书CB对自己开发的模块B1、B2签名,即用证书CB对应的算法和私钥计算模块B1、B2代码的杂凑值,并签名杂凑值。开发商B也可为提供模块的其他开发商生成自己签名的数字证书,如此类推。
3)将1、2形成证书链作为信任书以文件方式保存。信任书还记录了模块的信息,被签名的模块代码的杂凑值,签名日期,签名验证的具体算法等等。
当应用系统分发到用户,在启动应用系统之前,首先,找出该应用系统的信任书文件,从中读取签名验证用的证书链和模块信息,在模块装载前,按以下步骤验证其完整性:
1)根据证书链验证验证者本身(即开发商提供的各级数字证书)的真实性;
2)计算模块代码的杂凑值(即信息摘要),由证书获得事先计算好的杂凑值,与当前计算得到的杂凑值比较,如果一致,则验证了模块没有被他人篡改。
如果上述验证了静态模块没有被他人篡改,则准备装载模块A1、A2。将模块A1、A2装入可执行环境中,在运行环境中,验证模块在执行环境中的内存映象,即计算内存映象代码的杂凑值,与事先计算好的杂凑值比较,实现装载后的签名验证,其后可随时相互验证模块在执行环境中的内存映象,达到相互在线验证,防止了恶意攻击者的在线攻击。应用系统和模块、模块和模块之间的函数调用都采用了安全链接检查,检查被调用的函数地址是否在所属模块的内存映象地址空间内。
为防止计算机中运行的应用系统遭到恶意攻击者的攻击或篡改,保证动态计算环境的安全,上述技术方案还可以按照以下方式表述和实现:
1、使用基于公开密钥框架(Public Key Infrastructure,PKI)的数字签名这一比较成熟的算法。即利用数字证书的签名验证技术,采用自我完整性检查,系统与模块之间、模块与模块之间双向认证,对可加载模块内的函数调用采用安全链接检查,从代码级保证了动态计算环境的安全。
2、数字证书在应用系统和模块的对象代码之外被公开,以便他们能被任何伙伴验证。它使得所有模块被签名以及签名验证被执行。
3、为确定由谁检查这个验证者,也就是确定该证书是可信任的。为在计算环境中建立信任,从一个单个可信任的模块开始是很重要的。在应用系统级建立根证书,其它证书(被调用者)由上一级证书(调用者)签名,形成签名验证证书链(如图1所示),以此作为信任书以文件的方式保存。
可装载模块在添加到可执行环境中前必须被检查,调用者能根据信任书文件找到验证可装载模块的证书链和相关信息。从磁盘读入它的代码在装载前验证其完整性。在它们在系统中运行后,从内存映象中检查装入模块的代码,在线检查这些模块。通过使每一个模块去检查其他模块的完整性和信任书,这些应用程序的安全性能被进一步加强。检查步骤如图2所示,在框201中,调用者准备动态装载程序模块;在框202中,从磁盘读区读取模块的信任书,获取证书链、读入模块代码,验证签名;在框203中,如果验证成功,将装载模块到可执行环境;在框204中,在运行中读取模块的内存印象,相互的内存中读取,相互在线验证签名,同时,对模块的函数调用进行安全性检查
本发明涉及基于公开密钥体制(PKI)的数字证书在计算机应用系统中的应用,它利用数字证书的数字签名和验证功能,检查应用系统的完整性,使用各种不同规模的应用系统的安全性保障,对所有调用的应用程序子系统或装载的模块进行完整性检查和认证,从而确保计算环境的安全。

Claims (6)

1、一种防止在计算机中运行的应用系统被攻击或篡改的方法,所述应用系统包括第一子系统和第二子系统,其特征在于,包括以下步骤:
(1)设置信任书文件,包括以下步骤:
由所述第一开发商生成根证书,使第一子系统中的动态可装载模块A1、A2实现自我签名;
所述第二开发商的数字证书由第一开发商的数字证书签名,形成第二级数字证书,给第二子系统动态可装载模块B1、可加载应用程序B2签名;
将所述根证书、所述数字证书形成的证书链以及模块信息、被签名的模块代码的杂凑值,签名验证的具体算法以文件方式保存作为信任书文件。
(2)启动所述第一子系统时,通过查找所述信任书文件对所述第一子系统欲装载模块A1、A2进行完整性验证,包括以下步骤:从信任书文件中根据证书链读取签名验证用的模块证书和模块信息,验证其真实性;计算模块代码的杂凑值,将之与证书中事先计算好的杂凑值进行比较,如果一致,则验证了模块没有被他人篡改。如果检验完整则装载所述模块A1、A2;
(3)将所述第一子系统的模块A1、A2装入可执行环境中,在运行环境中,随时或定时验证所述模块A1、A2在执行环境中的内存映象代码的杂凑值,将之与事先计算好的杂凑值进行比较,如果比较两者相同,则验证没有出现恶意攻击者的攻击。
(4)装载模块B1和B2同上述步骤,即由所述第一子系统加载所述第二子系统,通过查找所述信任书文件验证对欲装载模块B1、B2进行完整性验证,如果检验完整则装载之,并在运行环境中,随时或定时验证所述模块B1、B2在执行环境中的内存映象代码的杂凑值,将之与事先计算好的杂凑值进行比较,如果比较两者相同,则验证没有出现恶意攻击者的攻击。
2、根据权利要求1所述方法,其特征在于,对加载模块中的函数调用采用安全链接检查,检查函数地址是否在模块内存映象地址空间内。
3、根据权利要求1-5任一项所述方法,其特征在于,所述第一、第二子系统运行时,所述信任书文件存储在外部存储介质中。
4、一种防止在计算机中运行的应用系统被攻击或篡改的方法,其特征在于,包括以下步骤:
由应用系统及可加载模块的开发商生成自我签名的根证书,被加载的其它模块由根证书或作为调用者的上一级证书签名,将上述数字签名链接成签名验证证书链,以此作为信任书以文件的方式保存;
应用系统的每一个可装载模块在添加到可执行环境中前必须被签名验证,调用者根据所述信任书文件找到验证可装载模块的证书链和它的对象代码,验证签名,如果没有被篡改则加载到运行环境中。在将模块加载到可执行环境中后,计算被加载模块在执行环境中的内存映象代码的杂凑值,将之与事先计算好的杂凑值进行比较,如果比较两者相同,验证模块加载后没有遭到恶意攻击者的攻击。
5、根据权利要求4所述方法,其特征在于,在应用系统运行过程中,还包括以下步骤,随时在线检查模块代码的内存映象,使每一个模块去检查其他模块内存映象代码的完整性和信任书,使得所有模块签名验证被在线执行,防止恶意攻击者的在线攻击。
6、根据权利要求4所述方法,其特征在于,在应用系统运行过程中,还包括以下步骤:对加载模块中的函数调用进行安全链接检查,检查函数地址是否在模块内存映象地址空间内。
CN 01107429 2001-01-09 2001-01-09 一种防止在计算机中运行的应用系统被攻击或篡改的方法 Expired - Lifetime CN1215418C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 01107429 CN1215418C (zh) 2001-01-09 2001-01-09 一种防止在计算机中运行的应用系统被攻击或篡改的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 01107429 CN1215418C (zh) 2001-01-09 2001-01-09 一种防止在计算机中运行的应用系统被攻击或篡改的方法

Publications (2)

Publication Number Publication Date
CN1365053A CN1365053A (zh) 2002-08-21
CN1215418C true CN1215418C (zh) 2005-08-17

Family

ID=4656357

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 01107429 Expired - Lifetime CN1215418C (zh) 2001-01-09 2001-01-09 一种防止在计算机中运行的应用系统被攻击或篡改的方法

Country Status (1)

Country Link
CN (1) CN1215418C (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7194626B2 (en) * 2002-11-21 2007-03-20 International Business Machines Corporation Hardware-based secure code authentication
CN100447763C (zh) * 2003-05-29 2008-12-31 联想(北京)有限公司 一种安全芯片及基于该芯片的信息安全处理设备和方法
CN100394374C (zh) * 2003-09-03 2008-06-11 安国国际科技股份有限公司 磁盘型式的可携式数据储存装置的动态设定方法
US7725735B2 (en) * 2005-03-29 2010-05-25 International Business Machines Corporation Source code management method for malicious code detection
US7640587B2 (en) * 2005-03-29 2009-12-29 International Business Machines Corporation Source code repair method for malicious code detection
US8700915B2 (en) * 2006-07-12 2014-04-15 Irdeto Corporate B.V. Method and system for verifying authenticity of at least part of an execution environment for executing a computer module
CN101295278B (zh) * 2007-04-23 2010-08-11 大唐移动通信设备有限公司 定位被改写代码段所在进程的方法及装置
TWI467408B (zh) * 2011-11-15 2015-01-01 Mstar Semiconductor Inc 嵌入式元件與控制方法
CN105447387B (zh) * 2015-11-05 2018-06-19 工业和信息化部电信研究院 基于硬件隔离环境的可信应用检测的方法及装置
CN106899552B (zh) * 2015-12-21 2020-03-20 中国电信股份有限公司 认证方法,认证终端以及系统

Also Published As

Publication number Publication date
CN1365053A (zh) 2002-08-21

Similar Documents

Publication Publication Date Title
US6381698B1 (en) System and method for providing assurance to a host that a piece of software possesses a particular property
EP1695169B1 (en) Method and apparatus for incremental code signing
US7546587B2 (en) Run-time call stack verification
US7228434B2 (en) Method of protecting the integrity of a computer program
US8886929B2 (en) Generating a chain of trust for a virtual endpoint
Weber et al. A software flaw taxonomy: aiming tools at security
WO2020163303A1 (en) Systems and methods of security for trusted artificial intelligence hardware processing
US20080072049A1 (en) Software authorization utilizing software reputation
WO1998034365A1 (en) System and method for providing software property assurance to a host
JP2010508567A (ja) コンピューティングデバイスにおけるマルウェアの無効化
WO2009087619A2 (en) Stateless attestation system
JP2006202270A (ja) 部分イメージハッシュを使用して実行可能ファイルのインテグリティーを検証するためのシステムおよび方法
AU2009290958A1 (en) Malware detection method and apparatus
CN1215418C (zh) 一种防止在计算机中运行的应用系统被攻击或篡改的方法
JP4878447B2 (ja) ワームの封じ込め
EP3830725A1 (en) Hardware based identities for software modules
CN112511306A (zh) 一种基于混合信任模型的安全运行环境构建方法
CN113282946A (zh) 基于高可信环境下数据访问过程的信息安全方法及系统
CN114900316A (zh) 一种基于区块链的物联网设备快速身份认证方法及系统
Swarnkar et al. Security, privacy, trust management and performance optimization of blockchain technology
JP4526383B2 (ja) 実行可能なコードを格納するタンパーエビデントな取り外し可能な媒体
CN112352240A (zh) 用于证明或检查数据处理装置的安全性的数据处理装置、系统和方法
Baseri et al. Cybersecurity in the Quantum Era: Assessing the Impact of Quantum Computing on Infrastructure
CN113051624A (zh) 基于类型检测的智能合约信息流完整性验证方法及系统
CN109951527B (zh) 面向虚拟化系统的hypervisor完整性检测方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
ASS Succession or assignment of patent right

Owner name: ZTE CO., LTD.

Free format text: FORMER OWNER: ZHONGXING INTEGRATED CIRCUIT DESIGN CO. LTD., SHENZHEN CITY

Effective date: 20031027

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20031027

Applicant after: ZTE Corporation

Applicant before: Zhongxing Integrated Circuit Design Co., Ltd., Shenzhen City

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20050817

CX01 Expiry of patent term