CN108667594B - 一种基于pki公钥算法的软件程序模块完整性检测方法 - Google Patents

一种基于pki公钥算法的软件程序模块完整性检测方法 Download PDF

Info

Publication number
CN108667594B
CN108667594B CN201710189427.4A CN201710189427A CN108667594B CN 108667594 B CN108667594 B CN 108667594B CN 201710189427 A CN201710189427 A CN 201710189427A CN 108667594 B CN108667594 B CN 108667594B
Authority
CN
China
Prior art keywords
main program
module
program
public key
software
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
CN201710189427.4A
Other languages
English (en)
Other versions
CN108667594A (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.)
Koal Software Co ltd
Original Assignee
Koal Software 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 Koal Software Co ltd filed Critical Koal Software Co ltd
Priority to CN201710189427.4A priority Critical patent/CN108667594B/zh
Publication of CN108667594A publication Critical patent/CN108667594A/zh
Application granted granted Critical
Publication of CN108667594B publication Critical patent/CN108667594B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/006Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving public key infrastructure [PKI] trust models
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements

Abstract

本发明公开的一种基于PKI公钥算法的软件程序模块完整性检测方法,其基于PKI公钥算法和专用加载模块,其使用固定的证书对程序模块进行签名,并在应用的主程序中,通过包含固定的公钥证书、模块签名、及导入表数字信封,在程序运行时校验模块签名、加载模块、解密导入表信封、修复导入表、开启运行时代码区签名校验线程、并进入原程序入口点继续执行,其中签名时使用的私钥必须和验签时使用的证书一一对应。本发明的有益效果在于:在不影响软件程序正常功能的前提下防止软件被非法篡改和利用,同时也保护了应用软件所有者的知识产权。

Description

一种基于PKI公钥算法的软件程序模块完整性检测方法
技术领域
本发明涉及软件保护技术领域,尤其涉及一种基于PKI公钥算法的软件程序模块完整性检测方法。
背景技术
随着计算机在日常生产中的普及,在计算机上运行的各种应用软件也愈发丰富起来,到如今可谓是一片繁荣的景象。在各种应用软件一片繁荣的背后,在利益的驱使下,各种对应用软件的非法篡改、破解技术也不断发展,其主要方式为通过静态或者动态分析的方法对软件实施修改,从而达到获取软件的使用许可、破坏软件的正常功能或者执行恶意代码的目的。这种行为一方面使得软件所有者的知识产权受到损失,另一方面威胁用户本地计算机的安全。
现有的一些软件保护手段大多采用代码混淆、软件加壳或者将代码放到自实现虚拟机执行的方式对软件实施保护,但是现有的一些软件保护手段均不能有效地防止软件被非法篡改和利用,不但会降低软件程序的运行效率,而且有可能造成软件被杀毒软件禁用的情况出现,大大的影响了用户的使用体验。
为此,申请人进行了有益的探索和尝试,找到了解决上述问题的办法,下面将要介绍的技术方案便是在这种背景下产生的。
发明内容
本发明所要解决的技术问题:针对现有的软件保护手段存在不能有效地防止软件被非法篡改和利用、导致软件程序效率降低和有可能软件被杀毒软件禁用的情况出现等问题,而提供一种在不影响软件程序正常功能的前提下防止软件被非法篡改和利用的基于PKI公钥算法的软件程序模块完整性检测方法。
本发明所解决的技术问题可以采用以下技术方案来实现:
一种基于PKI公钥算法的软件程序模块完整性检测方法,包括以下步骤:
步骤1,采用固定的证书对软件程序除主程序之外的所有模块进行签名,同时对包括所述主程序在内的所有模块的可执行代码区进行签名;
步骤2,在主程序中增加一个新增节区,同时将步骤1得到的签名信息和公钥证书保存至所述主程序的新增节区内;
步骤3,获取主程序的导入表,并采用所述固定的证书对所述主程序的导入表进行数字信封处理得到导入表数字信封,再将所述导入表数字信封保存至所述主程序的新增节区内,同时清空所述主程序的导入表的非系统库导入表项;
步骤4,创建一个用于实现对模块进行签名校验和加载、解密导入表数字信封、修复导入表的功能的专用加载模块,并将所述专用加载模块附加到主程序的新增节区内;
步骤5,将主程序的原入口点保存至主程序的新增节区内,修改主程序的入口点为专用加载模块,软件程序运行时先对保存在所述主程序的新增节区内的专用加载模块运行,所述专用加载模块对可执行模块进行签名校验、加载,同时再开启一个单独的线程对各可执行模块在内存中的完整性进行动态检测,以防止被篡改,最后主线程转到主程序原入口点执行。
由于采用了如上的技术方案,本发明的有益效果在于:本发明提供的完整性校验方法,除了应用的启动部分外,所有程序可执行模块都可以用PKI算法的签名验签得到保护,在不影响软件程序正常功能的前提下防止软件被非法篡改和利用,同时也保护了应用软件所有者的知识产权。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的流程示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
名词解析
可执行文件:即可执行程序,windows为pe格式,linux和android平台下为elf格式,大多以头加节区的方式组织。
节区:英文描述为section,表示可执行文件中的一个代码块或者数据块
程序入口:即可执行文件开始执行后开始运行位置。
PKI:即公钥基础设施,具体描述可参考百度百科
http://baike.baidu.com/link?url=3A-5BhM_c0tlNvAHfDHXi5_Im7FJg89A3FLDXTN_O2Qw7LifdK83tSKZVmyHGODaPqvVkn6DrYoLQ6Xqm3DRFa。
公钥算法:即使用两把完全不同但又是完全匹配的一对钥匙—公钥和私钥进行签名验签的算法。
导入表:即可执行文件头中记录程序运行时需导入dll信息的表。
重定位表:即记录程序中位置无关代码信息的表。
shellcode:执行一定功能的一段机器码代码片段。
本发明的基于PKI公钥算法的软件程序模块完整性检测方法,其基于PKI公钥算法和专用加载模块,使用固定的证书对程序模块进行签名,并在应用的主程序中,通过包含固定的公钥证书、模块签名、及导入表数字信封,在程序运行时校验模块签名、加载模块、解密导入表信封、修复导入表、开启运行时代码区签名校验线程、并进入原程序入口点继续执行,其中签名时使用的私钥必须和验签时使用的证书一一对应。本发明的方法具体如下:
参见图1,图中给出的是一种基于PKI公钥算法的软件程序模块完整性检测方法,包括以下步骤:
步骤1,采用固定的证书对软件程序除主程序之外的所有模块进行签名,同时对包括所述主程序在内的所有模块的可执行代码区进行签名;
步骤2,在主程序中增加一个新增节区,同时将步骤1得到的签名信息和公钥证书保存至所述主程序的新增节区内;
步骤3,获取主程序的导入表,并采用所述固定的证书对所述主程序的导入表进行数字信封处理得到导入表数字信封,再将所述导入表数字信封保存至所述主程序的新增节区内,同时清空所述主程序的导入表的非系统库导入表项;
步骤4,创建一个用于实现对模块进行签名校验和加载、解密导入表数字信封、修复导入表的功能的专用加载模块,并将所述专用加载模块附加到主程序的新增节区内;
步骤5,将主程序的原入口点保存至主程序的新增节区内,修改主程序的入口点为专用加载模块,软件程序运行时先对保存在所述主程序的新增节区内的专用加载模块运行,所述专用加载模块对可执行模块进行签名校验、加载,同时再开启一个单独的线程对各可执行模块在内存中的完整性进行动态检测,以防止被篡改,最后主线程转到主程序原入口点执行。
以下通过一个具体实例来进一步说明本发明的技术方案:
1)选择一种公钥加密算法(RSA或者ECC),并使用对应的ca签发或者自签发生成证书;
2)实现一段具有如下功能的shellcode加载模块:
A、模块验签、加载
B、解密程序导入表数字信封、修复导入表、重定位表等可执行文件头结构
C、开启一个线程,并在该线程中进行运行时检测模块代码区签名
D、完成上述工作后转到原程序入口点执行
3)实现一个具有如下功能的工具:
A、对可执行模块签名生成签名信息
B、对可执行模块代码区签名生成签名信息
C、获取程序导入表,对导入表做数字信封,并清空非系统库导入表项
D、在程序中新增节区保存签名信息、公钥证书及导入表数字信封
E、修改可执行程序入口点,并保存主程序的原入口点到新增节区
F、包括shellcode加载模块代码,并将该加载模块写入主程序
G、可配置证书和可执行模块程序进行A、B、C、D、D、E、F操作
4)用步骤1)生成的证书配置到步骤3)实现的工具中,该工具负责将可执行模块签名信息、公钥证书、可执行模块代码区签名信息、导入表数字信封、原程序入口点及加载模块代码按可执行文件格式加入到主程序新增节区中,并将主程序的入口点修改为加载模块,应用程序启动时先运行专用的加载模块,加载模块完成模块验签、加载、修复主程序可执行头结构、开启运行时模块检测线程,然后转到主程序原入口点执行;
5)应用程序发布时,只需替换主程序为经过处理过的主程序即可。
本发明提供的完整性校验方法,除了应用的启动部分外,所有程序可执行模块都可以用PKI算法的签名验签得到保护,在不影响软件程序正常功能的前提下防止软件被非法篡改和利用,同时也保护了应用软件所有者的知识产权。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

Claims (1)

1.一种基于PKI公钥算法的软件程序模块完整性检测方法,其特征在于,包括以下步骤:
步骤1,采用固定的证书对软件程序除主程序之外的所有模块进行签名,同时对包括所述主程序在内的所有模块的可执行代码区进行签名;
步骤2,在主程序中增加一个新增节区,同时将步骤1得到的签名信息和公钥证书保存至所述主程序的新增节区内;
步骤3,获取主程序的导入表,并采用所述固定的证书对所述主程序的导入表进行数字信封处理得到导入表数字信封,再将所述导入表数字信封保存至所述主程序的新增节区内,同时清空所述主程序的导入表的非系统库导入表项;
步骤4,创建一个用于实现对模块进行签名校验和加载、解密导入表数字信封、修复导入表的功能的专用加载模块,并将所述专用加载模块附加到主程序的新增节区内;
步骤5,将主程序的原入口点保存至主程序的新增节区内,修改主程序的入口点为专用加载模块,软件程序运行时先对保存在所述主程序的新增节区内的专用加载模块运行,所述专用加载模块对可执行模块进行签名校验、加载,同时再开启一个单独的线程对各可执行模块在内存中的完整性进行动态检测,以防止被篡改,最后主线程转到主程序原入口点执行。
CN201710189427.4A 2017-03-27 2017-03-27 一种基于pki公钥算法的软件程序模块完整性检测方法 Active CN108667594B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710189427.4A CN108667594B (zh) 2017-03-27 2017-03-27 一种基于pki公钥算法的软件程序模块完整性检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710189427.4A CN108667594B (zh) 2017-03-27 2017-03-27 一种基于pki公钥算法的软件程序模块完整性检测方法

Publications (2)

Publication Number Publication Date
CN108667594A CN108667594A (zh) 2018-10-16
CN108667594B true CN108667594B (zh) 2022-10-11

Family

ID=63786268

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710189427.4A Active CN108667594B (zh) 2017-03-27 2017-03-27 一种基于pki公钥算法的软件程序模块完整性检测方法

Country Status (1)

Country Link
CN (1) CN108667594B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114338050A (zh) * 2022-03-14 2022-04-12 麒麟软件有限公司 一种应用程序接口安全管控方法、系统及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102024127A (zh) * 2010-11-17 2011-04-20 中国联合网络通信集团有限公司 应用软件控制平台、使用者终端、分发系统及方法
CN104462965A (zh) * 2014-11-14 2015-03-25 华为技术有限公司 应用程序完整性验证方法及网络设备
CN105447390A (zh) * 2015-11-16 2016-03-30 国网智能电网研究院 一种基于数字证书系统的软件版本可信管理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8332652B2 (en) * 2003-10-01 2012-12-11 International Business Machines Corporation Computing device that securely runs authorized software
US8364973B2 (en) * 2007-12-31 2013-01-29 Intel Corporation Dynamic generation of integrity manifest for run-time verification of software program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102024127A (zh) * 2010-11-17 2011-04-20 中国联合网络通信集团有限公司 应用软件控制平台、使用者终端、分发系统及方法
CN104462965A (zh) * 2014-11-14 2015-03-25 华为技术有限公司 应用程序完整性验证方法及网络设备
CN105447390A (zh) * 2015-11-16 2016-03-30 国网智能电网研究院 一种基于数字证书系统的软件版本可信管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于PKI的软件版权保护系统的设计与实现;赵盛;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20041215;全文 *

Also Published As

Publication number Publication date
CN108667594A (zh) 2018-10-16

Similar Documents

Publication Publication Date Title
EP3678324B1 (en) Method and apparatus for encrypting and decrypting product information
KR100792287B1 (ko) 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
US8341422B2 (en) Method and apparatus for incremental code signing
US10419217B2 (en) Security information configuration method, security verification method, and related chip
US8332652B2 (en) Computing device that securely runs authorized software
US8019994B2 (en) Authentication of a request to alter at least one of a BIOS and a setting associated with the BIOS
US7325126B2 (en) System and method for distributed module authentication
KR20090007123A (ko) 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템
CN110245466B (zh) 软件完整性保护和验证方法、系统、设备及存储介质
CN103765429A (zh) 数字签名机构相关的平台秘密
CN109445705A (zh) 固件认证方法及固态硬盘
US8347109B2 (en) Secure serial number generation
JP2007094879A (ja) オペレーティングシステム用基本プログラムの認証システム、これに用いるコンピュータ、およびコンピュータプログラム
CN108667594B (zh) 一种基于pki公钥算法的软件程序模块完整性检测方法
CN107958141A (zh) 一种基于芯片id号的软件保护方法
CN107092832A (zh) 一种及时弥补Secure‑Boot安全漏洞的方法
CN110855429A (zh) 一种基于tpm的软件密钥保护方法
CN110674525A (zh) 一种电子设备及其文件处理方法
CN107391970B (zh) Flash应用程序中的函数访问控制方法及装置
WO2020088515A1 (zh) Pos用户公钥安全认证方法、装置和终端设备
US20210406378A1 (en) Data protection in a pre-operation system environment based on an embedded key of an embedded controller
CN112131612B (zh) 一种cf卡数据防篡改方法、装置、设备及介质
CN115587389A (zh) 一种固件安全保护方法及系统
CN117828595A (zh) 一种攻击程序通过杀毒软件检测的方法和装置
CN115221477A (zh) 授权许可方法、许可证制作方法、芯片装置及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information

Address after: 200436 Room 601, Lane 299, Lane 299, JIANGCHANG West Road, Jingan District, Shanghai

Applicant after: KOAL SOFTWARE Co.,Ltd.

Address before: 200436 Room 601, Lane 299, Lane 299, JIANGCHANG West Road, Zhabei District, Shanghai

Applicant before: SHANGHAI KOAL SOFTWARE Co.,Ltd.

CB02 Change of applicant information
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant