CN105740699A - 一种可执行程序的保护方法及装置 - Google Patents
一种可执行程序的保护方法及装置 Download PDFInfo
- Publication number
- CN105740699A CN105740699A CN201610124029.XA CN201610124029A CN105740699A CN 105740699 A CN105740699 A CN 105740699A CN 201610124029 A CN201610124029 A CN 201610124029A CN 105740699 A CN105740699 A CN 105740699A
- Authority
- CN
- China
- Prior art keywords
- executable program
- data
- ciphertext
- operating system
- rsa
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种可执行程序的保护方法及装置,以解决现有技术的可执行程序的保护方法中,在可执行程序的运行阶段没有有效的保护措施,无法确定将要运行的可执行程序是否被篡改过,存在较大的安全隐患的问题。所述可执行程序的保护方法,包括:调用操作系统内核解析已启动的可执行程序,并将得到的程序数据加载到内存;若操作系统内核检测到可执行程序的程序数据中存在待检RSA密文,则获取待检RSA密文,并根据待检RSA密文生成第一SHA1摘要信息;调用操作系统内核获取密钥数据,根据密钥数据生成第二SHA1摘要信息,若操作系统内核确定第一SHA1摘要信息和第二SHA1摘要信息相同,则调用操作系统内核继续执行可执行程序。
Description
技术领域
本发明涉及可执行程序保护技术领域,尤其涉及一种可执行程序的保护方法及装置。
背景技术
一个可执行程序的生命周期大致分三个阶段:第一阶段为从可执行程序形成到成为安装设备端软件包的阶段;第二阶段为可执行程序在设备端安装完成后,以程序文件格式存储在设备端上的程序文件存储阶段;第三个阶段,为可执行程序在设备端的运行阶段。
现在技术中,通常在第一阶段和/或第二阶段对可执行程序进行保护:例如,在第一阶段的生成可执行程序的过程,对可执行程序的全部代码采用RSA(RonRivest、AdiShamirh、LenAdleman,RSA)非对称加密算法生成公钥和私钥,可执行程序在后续的安装过程中将利用公钥进行解密以验证该可执行程序是否被篡改过,从而实现对可执行程序的保护;又例如,在第二阶段的升级或安装可执行程序过程后,将安装后的可执行程序保存于安全的硬件设备中,从而防止安装后的可执行程序被篡改,从而实现对可执行程序的保护。当然上述两种方法可以结合在一起实施。
上述的现有技术的可执行程序的保护方法存在如下问题:在生成可执行程序时对该可执行程序的全部代码进行RSA加密后保存或将安装后的可执行程序保存于安全的硬件设备中,都无法确保加密后的可执行程序在存储后不被篡改。显然,现有技术的可执行程序的保护方法在运行阶段没有有效的保护措施,无法确定该运行的可执行程序是否被篡改过,而被篡改过的可执行程序运行时可以会出现无法正常运行或者非法运行使用户遭受损失等情况。因此现有技术的可执行程序的保护方法在对可执行程序进行保护时存在较大的安全隐患。
发明内容
本发明的目的是提供一种可执行程序的保护方法及装置,以解决现有技术的可执行程序的保护方法中,在可执行程序的运行阶段没有有效的保护措施,无法确定将要运行的可执行程序是否被篡改过,存在较大的安全隐患的问题。
本发明的目的是通过以下技术方案实现的:
本发明实施例提供一种可执行程序的保护方法,包括:
调用操作系统内核解析已启动的可执行程序,并将解析所述可执行程序得到的程序数据加载到内存,所述程序数据包括用于保存待检RSA密文的密文数据段;
若所述操作系统内核检测到所述密文数据段存在所述待检RSA密文,则获取所述待检RSA密文,并根据所述待检RSA密文生成第一SHA1摘要信息;
调用所述操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与所述可执行程序对应的密钥数据,根据包括有所述密钥数据的所述可执行程序的新程序数据生成第二SHA1摘要信息,其中,所述密钥数据为生成所述可执行程序所对应的原始RSA密文的部分数据;
若所述操作系统内核确定所述第一SHA1摘要信息和所述第二SHA1摘要信息相同,则判定所述待检RSA密文与所述原始RSA密文的内容一致,继续执行所述可执行程序。
本实施例中,在可执行程序的运行阶段,通过根据程序数据中保存的有可能被修改过的密文形成第一SHA1摘要信息,以及用具有较高安全性的密钥数据重新生成标准的第二SHA1摘要信息,通过二者的比对来确认可执行程序是否被修改过。由于对可执行程序在运行阶段进行校验保护,使只有没有被篡改过的可执行程序才可以继续运行,进而可以确保将要运行的可执行程序没有被篡改过,避免了运行可执行程序时存在的安全隐患。
具体的,若所述操作系统内核检测所述密文数据段不存在所述待检RSA密文,则停止执行所述可执行程序;或者,所述操作系统内核确定所述第一SHA1摘要信息和所述第二SHA1摘要信息不相同,则判定所述待检RSA密文与所述原始RSA密文的内容不一致,停止执行所述可执行程序。
优选的,调用所述操作系统内核将解析所述可执行程序得到的所述程序数据加载到内存后,还包括:
调用所述操作系统内核接收所述可执行程序发送的检测所述程序数据段是否存所述待检RSA密文的检测请求。
优选的,所述操作系统内核接收的所述检测请求为所述可执行程序通过netlink消息发送的。本实施例中,可执行程序通过使用netlink这种通信方式作为可执行程序与内核通信机制,避免使用设备节点和文件系统之类的显式文件通信,可以进一步提高可执行程序的安全性。
优选的,根据所述待检RSA密文生成所述第一SHA1摘要信息,包括:
调用所述操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与所述可执行程序对应的公钥;
调用所述操作系统内核根据获取到的所述公钥对所述待检RSA密文解密,生成所述第一SHA1摘要信息。
本实施例中,在不可擦写存储硬件中或预先保存于内核数据中获取的公钥具有更高的安全性。
优选的,所述根据包括有所述密钥数据的所述可执行程序的新程序数据生成所述第二SHA1摘要信息之前,还包括:
调用所述操作系统内核用获取到的所述密钥数据覆盖内存中所述程序数据的所述密文数据段保存的所述待检RSA密文,得到所述新程序数据。
本实施例中,用从内核数据中获取的密钥数据覆盖程序数据中的密文数据段中的待检RSA密文可以得到新程序数据,通过对新生成的新程序数据进行计算形成第二SHA1摘要信息,可以避免对可执行程序校验的信息全部保存在程序数据中,使经过不正当修改的可执行程序无法在设备端运行,进一步提高可执行程序的安全性。
本发明实施例有益效果如下:在可执行程序的运行阶段,通过根据程序数据中保存的有可能被修改过的密文形成第一SHA1摘要信息,以及用具有较高安全性的密钥数据重新生成标准的第二SHA1摘要信息,通过二者的比对来确认可执行程序是否被修改过。由于对可执行程序在运行阶段进行校验保护,使只有没有被篡改过的可执行程序才可以继续运行,进而可以确保将要运行的可执行程序没有被篡改过,避免了运行可执行程序时存在的安全隐患。
本发明实施例提供一种可执行程序的保护方法,编译生成所述可执行程序的过程中,包括:
生成对应所述可执行程序的用于解密的公钥和用于加密的私钥;
在所述可执行程序的用于保存RSA密文的密文数据段插入密钥数据;
根据包括所述密钥数据的所述可执行程序生成原始SHA1摘要信息;
利用所述私钥对所述原始SHA1摘要信息进行加密生成所述RSA密文,并使所述RSA密文覆盖所述密文数据段的所述密钥数据。
本实施例中,通过在可执行程序先插入密钥数据,再对包含密钥数据的可执行程序数据进行计算加密得到密文,通过用得到的密文覆盖可执行程序文件中的密文,即密钥数据只是在计算摘要信息时使用,并不保存在可执行程序的程序数据中,进一步提高了可执行程序被破译修改的难度,从而可以只使没有被修改过的可执行程序才可在设备端成功运行,使可执行程序具有更高的安全性。
优选的,生成对应所述可执行程序的所述公钥和所述私钥之后,还包括将将所述密钥数据保存到不可擦写存储硬件中或内核数据中;以及,
在生成对应所述可执行程序的所述公钥和所述私钥之后,将所述公钥保存到不可擦写存储硬件中或内核数据中,所述私钥保存到私有服务器中。
本发明实施例提供一种可执行程序的保护装置,包括:
解析单元,用于调用所述操作系统内核解析已启动的可执行程序,并将解析所述可执行程序得到的程序数据加载到内存,所述程序数据包括用于保存待检RSA密文的密文数据段;
第一生成单元,用于所述操作系统内核检测到所述密文数据段存在所述待检RSA密文,则获取所述待检RSA密文,并根据所述待检RSA密文生成第一SHA1摘要信息;
第二生成单元,用于调用所述操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与所述可执行程序对应的密钥数据,根据包括有所述密钥数据的所述可执行程序的新程序数据生成第二SHA1摘要信息,其中,所述密钥数据为生成所述可执行程序所对应的原始RSA密文的部分数据;
处理单元,用于所述操作系统内核确定所述第一SHA1摘要信息和所述第二SHA1摘要信息相同,则判定所述待检RSA密文与所述原始RSA密文的内容一致,继续执行所述可执行程序。
本实施例中,在可执行程序的运行阶段,通过根据程序数据中保存的有可能被修改过的密文形成第一SHA1摘要信息,以及用具有较高安全性的密钥数据重新生成标准的第二SHA1摘要信息,通过二者的比对来确认可执行程序是否被修改过。由于对可执行程序在运行阶段进行校验保护,使只有没有被篡改过的可执行程序才可以继续运行,进而可以确保将要运行的可执行程序没有被篡改过,避免了运行可执行程序时存在的安全隐患。
优选的,所述第一生成单元还用于调用所述操作系统内核若检测所述密文数据段不存在所述待检RSA密文时,则停止执行所述可执行程序;所述处理单元还用于调用所述操作系统内核确定所述第一SHA1摘要信息和所述第二SHA1摘要信息不相同时,则判定所述待检RSA密文与所述原始RSA密文内容不一致,停止执行所述可执行程序。
优选的,所述保护装置还包括接收单元,所述接收单元用于调用所述操作系统内核在所述解析单元将解析所述可执行程序得到的所述程序数据加载到内存后,接收所述可执行程序发送的检测所述程序数据段是否存所述待检RSA密文的检测请求。
优选的,所述接收单元接收的所述检测请求为所述可执行程序通过netlink消息发送的。
优选的,所述第一生成单元调用所述操作系统内核根据所述待检RSA密文生成所述第一SHA1摘要信息,包括:
调用所述操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与所述可执行程序对应的公钥;
调用所述操作系统内核根据获取到的所述公钥对所述待检RSA密文解密,生成所述第一SHA1摘要信息。
优选的,所述第二生成单元还用于根据包括有所述密钥数据的所述可执行程序的新程序数据生成第二SHA1摘要信息之前,调用所述操作系统内核用获取到的所述密钥数据覆盖内存中所述程序数据的所述密文数据段保存的所述待检RSA密文,得到所述新程序数据。
本发明实施例提供一种可执行程序的保护装置,所述保护装置包括:
生成单元,用于生成对应所述可执行程序的用于解密的公钥和用于加密的私钥;
插入单元,用于在所述可执行程序的程序数据中插入用于保存RSA密文的密文数据段,并在所述密文数据段中填充密钥数据;
计算单元,用于根据包括所述密钥数据的所述可执行程序生成原始SHA1摘要信息;
加密单元,用于利用所述私钥对所述原始SHA1摘要信息进行加密生成所述RSA密文,并使所述RSA密文覆盖所述密文数据段的所述密钥数据。
优选的,所述插入单元还用于将所述密钥数据保存到不可擦写存储硬件中或内核数据中;以及,所述生成单元还用于生成对应所述可执行程序的所述公钥和所述私钥之后,将所述公钥保存到不可擦写存储硬件中或内核数据中,所述私钥保存到私有服务器中。
本发明实施例有益效果如下:在可执行程序的运行阶段,通过根据程序数据中保存的有可能被修改过的密文形成第一SHA1摘要信息,以及用具有较高安全性的密钥数据重新生成标准的第二SHA1摘要信息,通过二者的比对来确认可执行程序是否被修改过。由于对可执行程序在运行阶段进行校验保护,使只有没有被篡改过的可执行程序才可以继续运行,进而可以确保将要运行的可执行程序没有被篡改过,避免了运行可执行程序时存在的安全隐患。
附图说明
图1为本发明实施例一提供的一种可执行程序的保护方法流程图;
图2为本发明实施例一提供的一种具体的可执行程序的保护方法流程图;
图3为本发明实施例二提供的一种可执行程序在形成阶段的保护方法流程图;
图4为本发明实施例三提供的一种可执行程序的保护装置的示意图;
图5为本发明实施例三提供的一种具体的可执行程序的保护装置的示意图;
图6为本发明实施例四提供的一种可执行程序在形成阶段的保护装置的示意图。
具体实施方式
下面结合说明书附图对本发明实施例的实现过程进行详细说明。需要注意的是,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
本发明实施例一,提供一种可执行程序的保护方法,如图1所示,包括以下步骤:
S11、调用操作系统内核解析已启动的可执行程序,并将解析可执行程序得到的程序数据加载到内存,程序数据包括用于保存待检RSA密文密文的密文数据段。其中,可执行程序的程序数据不仅包括运行可执行程序本身的数据还包括对可执行程序进行RSA加密后形成的密文进行保存的密文数据段。
优选的,操作系统内核将解析可执行程序得到的程序数据加载到内存后,还包括:操作系统内核接收可执行程序发送的检测程序数据段是否存待检RSA密文的检测请求。其中,操作系统内核接收的检测请求为可执行程序通过netlink消息发送的。本实施例中,可执行程序通过使用netlink这种通信方式作为可执行程序与内核通信机制,使可执行程序具有较高的安全性。
S12、若操作系统内核检测到密文数据段存在待检RSA密文,则获取待检RSA密文,并根据待检RSA密文生成第一SHA1摘要信息。
具体的,若操作系统内核检测密文数据段不存在待检RSA密文则停止执行可执行程序。
优选的,操作系统内核根据待检RSA密文生成第一SHA1摘要信息,包括:
操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与可执行程序对应的公钥,其中,在不可擦写存储硬件中或预先保存于内核数据中获取的公钥具有更高的安全性;
操作系统内核根据获取到的公钥对待检RSA密文解密,生成第一SHA1摘要信息。
其中,需要说明的是,在运行可执行程序之前,已将与可执行程序对应的公钥保存到具有较高安全性的不可擦写存储硬件中或操作系统的内核数据中。
S13、调用操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与可执行程序对应的密钥数据,根据包括有密钥数据的可执行程序的新程序数据生成第二SHA1摘要信息,其中,密钥数据为生成可执行程序所对应的原始RSA密文的部分数据。
需要说明的是,在运行可执行程序之前,已将与可执行程序对应的密钥数据保存到具有较高安全性的不可擦写存储硬件中或操作系统的内核数据中。其中,需要说明的是,运行可执行程序过程中从内核数据段中获取的密钥数据与在编译生成可执行程序的过程中(下文对其进行详述)所使用的密钥数据为同一密钥数据,为一段自定义数据,可以根据需要自行设定,只是用于在不同阶段生成SHA1摘要信息。
优选的,操作系统内核根据包括有密钥数据的可执行程序的新程序数据生成第二SHA1摘要信息之前,还包括:
操作系统内核用获取到的密钥数据覆盖内存中程序数据的密文数据段保存的待检RSA密文,得到对应可执行程序的新程序数据。
优选的,操作系统内核根据包括有密钥数据的可执行程序的新程序数据生成第二SHA1摘要信息,包括:
操作系统内核对包括有密钥数据的可执行程序的新程序数据进行加密计算,生成第二SHA1摘要信息。
本实施例中,用从内核数据中获取的密钥数据覆盖程序数据中的密文数据段中的待检RSA密文可以得到新程序数据,通过对新生成的新程序数据进行计算形成第二SHA1摘要信息,可以避免对可执行程序校验的信息全部保存在程序数据中,使经过不正当修改的可执行程序无法在设备端运行,进一步提高可执行程序的安全性。
S14、若操作系统内核确定第一SHA1摘要信息和第二SHA1摘要信息相同,则判定RSA密文与原始RSA密文的内容一致,继续执行可执行程序。
具体的,若操作系统内核确定第一SHA1摘要信息和第二SHA1摘要信息不相同,则判定RSA密文与原始RSA密文的内容不一致,停止执行可执行程序。
本发明实施例有益效果如下:在可执行程序的运行阶段,通过根据程序数据中保存的有可能被修改过的密文形成第一SHA1摘要信息,以及用具有较高安全性的密钥数据重新生成标准的第二SHA1摘要信息,通过二者的比对来确认可执行程序是否被修改过。由于对可执行程序在运行阶段进行校验保护,使只有没有被篡改过的可执行程序才可以继续运行,进而可以确保将要运行的可执行程序没有被篡改过,避免了运行可执行程序时存在的安全隐患。
为了更具体的理解本发明实施例一所提供的对可执行程序的保护方法,下面结合图2,对实施例一提供的可执行程序的保护方法进行进一步具体详细的说明:
S101、设备端启动可执行程序。此时,默认设备端已经安装了可执行程序。
S102、调用操作系统内核解析已启动的可执行程序,并将解析可执行程序时获得的程序数据加载到设备端的内存上。其中,可执行程序的程序数据不仅包括可执行程序本身的程序数据,还包括对可执行程序经过加密形成的密文进行保存的密文数据段。
S103、操作系统内核接收可执行程序发送的检测请求。其中,检测请求为可执行程序通过使用netlink发送的检测程序数据段中是否存待检RSA密文的检测请求。本实施例中,可执行程序通过使用netlink这种通信方式作为可执行程序与内核通信机制,避免使用设备节点和文件系统之类的显式文件通信,可以进一步提高可执行程序的安全性。
S104、调用操作系统内核检测解析到的程序数据中的密文数据段是否存在待检RSA密文,若存在,则进行S105步骤;若不存在,则进行S113步骤。
S105、获取检测到的待检RSA密文。
S106、调用操作系统内核从不可擦写存储硬件中或操作系统的内核数据中获取与可执行程序对应的公钥。其中,需要说明的是,在运行可执行程序之前,已将加密时形成的与可执行程序对应的公钥保存到具有较高安全性的不可擦写存储硬件中或操作系统的内核数据中。
S107、调用操作系统内核根据从不可擦写存储硬件中或操作系统的内核数据中获得的公钥对解析可执行程序时获得的待检RSA密文进行解密以形成第一SHA1摘要信息。
S108、调用操作系统内核从不可擦写存储硬件中或操作系统的内核数据中获取与可执行程序对应的密钥数据,其中,密钥数据为生成可执行程序所对应的原始RSA密文的部分数据。其中,需要说明的是,在运行可执行程序之前,已将加密时形成的与可执行程序对应的密钥数据保存到具有较高安全性的不可擦写存储硬件中或操作系统的内核数据中。另外,步骤S108至少在步骤S105之后进行,即对密文的填充要在操作系统内核获取密文之后进行。
S109、调用操作系统内核用获得的密钥数据覆盖加载到内存中的程序数据中的待检RSA密文以形成新程序数据。
S110、调用操作系统内核对形成的新程序数据进行加密计算以形成第二SHA2摘要信息。本实施例中,用从内核数据中获取的密钥数据覆盖程序数据中的密文数据段中的RSA密文可以得到新程序数据,通过对新生成的新程序数据进行计算形成第二SHA1摘要信息,可以避免对可执行程序校验的信息全部保存在程序数据中,使经过不正当修改的可执行程序无法在设备端运行,进一步提高可执行程序的安全性。
S111、判断步骤S107形成的第一SHA1摘要信息和步骤S110形成的第二SHA2摘要信息是否相同,若二者相同,则进行步骤S112;若二者不相同,则进行步骤S113。
S112、停止运行可执行程序。
S113、继续运行可执行程序。
本发明实施例有益效果如下:在可执行程序的运行阶段,通过根据程序数据中保存的有可能被修改过的密文形成第一SHA1摘要信息,以及用具有较高安全性的密钥数据重新生成标准的第二SHA1摘要信息,通过二者的比对来确认可执行程序是否被修改过。由于对可执行程序在运行阶段进行校验保护,使只有没有被篡改过的可执行程序才可以继续运行,进而可以确保将要运行的可执行程序没有被篡改过,避免了运行可执行程序时存在的安全隐患。
基于同一发明思想,本发明实施例二提供一种可执行程序的保护方法,参见图3,编译生成可执行程序的过程中,包括如下步骤:
S21、生成对应可执行程序的用于解密的公钥和用于加密的私钥。
优选的,生成对应可执行程序的公钥和私钥之后,还包括将公钥保存到不可擦写存储硬件中或内核数据中,私钥保存到私有服务器中。
S22、在可执行程序的程序数据中插入用于保存待检RSA密文的密文数据段,并在密文数据段中填充密钥数据。优选的,将密钥数据保存到不可擦写存储硬件中或内核数据中,密钥数据还用于在运行可执行程序时生成第二SHA1摘要信息。其中,需要说明的是,在编译生成可执行程序的过程中所使用的密钥数据与运行可执行程序过程中从内核数据段中获取的密钥数据为同一密钥数据,为一段自定义数据,可以根据需要自行设定,只是用于在不同阶段生成SHA1摘要信息。
S23、根据包括密钥数据的可执行程序生成原始SHA1摘要信息。
S24、利用私钥对原始SHA1摘要信息进行加密生成RSA密文,并使RSA密文覆盖密文数据段的密钥数据。
本实施例中,通过在可执行程序先插入密钥数据,再对包含密钥数据的可执行程序数据进行计算加密得到密文,通过用得到的密文覆盖可执行程序文件中的密文,即密钥数据只是在计算摘要信息时使用,并不保存在可执行程序的程序数据中,进一步提高了可执行程序被破译修改的难度,从而可以只使没有被修改过的可执行程序才可在设备端成功运行,使可执行程序具有更高的安全性。
基于同一发明思想,本发明实施例三提供一种可执行程序的保护装置,参见图4和图5,包括:
解析单元31,解析单元31用于解析已启动的可执行程序,并将解析可执行程序得到的程序数据加载到内存,程序数据包括用于保存待检RSA密文的密文数据段。
优选的,保护装置还包括接收单元35,接收单元,接收单元35用于在解析单元31将解析可执行程序得到的程序数据加载到内存后,接收可执行程序发送的检测程序数据段是否存在待检RSA密文的检测请求。优选的,接收单元35接收的检测请求为可执行程序通过netlink消息发送的。
第一生成单元32,用于调用操作系统内核若检测到密文数据段存在待检RSA密文,则获取待检RSA密文,并根据待检RSA密文生成第一SHA1摘要信息。具体的,第一生成单元32还用于若检测到密文数据段不存在待检RSA密文,则调用操作系统内核停止执行可执行程序。
优选的,第一生成单元32用于调用操作系统内核根据RSA密文生成第一SHA1摘要信息,具体用于:
第一生成单元32用于调用操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与可执行程序对应的公钥;
第一生成单元32用于调用操作系统内核根据获取到的公钥对待检RSA密文解密,生成第一SHA1摘要信息。
第二生成单元33,用于调用操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与可执行程序对应的密钥数据,根据包括有密钥数据的可执行程序的新程序数据生成第二SHA1摘要信息,其中,密钥数据为生成可执行程序所对应的原始RSA密文的部分数据。
优选的,第二生成单元33还用于调用操作系统内核根据密钥数据生成第二SHA1摘要信息之前,
用获取到的密钥数据覆盖内存中程序数据的密文数据段保存的待检RSA密文,得到对应可执行程序的新程序数据。
优选的,第二生成单元33还用于调用操作系统内核对包括有密钥数据的新程序数据进行加密计算,生成第二SHA1摘要信息。
处理单元34,处理单元34用于调用操作系统内核若确定第一SHA1摘要信息和第二SHA1摘要信息相同,则判定RSA密文与原始RSA密文的内容一致,继续执行可执行程序。具体的,处理单元34还用于调用操作系统内核若确定第一SHA1摘要信息和第二SHA1摘要信息不相同,则判定RSA密文与原始RSA密文的内容不一致,停止执行可执行程序。
本实施例中,解析单元31解析已启动的可执行程序,从而将可执行程序文件中包含的程序数据加载到内存中,而可执行程序的程序数据不仅包含可执行程序本身的程序数据,还包含用于对可执行程序本身的程序数据加密过后形成的密文进行保存的密文数据段,通过根据程序数据中保存的有可能被修改过的密文形成第一SHA1摘要信息,以及用具有较高安全性的密钥数据重新生成标准的第二SHA1摘要信息,通过二者的比对来确认可执行程序是否被修改过,确保只有没有被修改过的可执行程序才可在设备端上继续运行,防止了被修改过的可执行程序在设备端的不正当运行,从而可以保证最终在设备端运行的可执行程序为未经过修改的可执行程序。
基于同一发明思想,本发明实施例四提供一种可执行程序的保护装置,参见图6,包括:
生成单元41,用于生成对应可执行程序的用于解密的公钥和用于加密的私钥。
优选的,生成单元41还用于生成对应可执行程序的公钥和私钥之后,将公钥保存到不可擦写存储硬件中或内核数据中,私钥保存到私有服务器中。
插入单元42,用于在所述可执行程序的程序数据中插入用于保存RSA密文的密文数据段,并在所述密文数据段中填充密钥数据。优选的,插入单元还用于将密钥数据保存到不可擦写存储硬件中或内核数据中。其中,密钥数据可以为自定义的一段数据,只用于在对可执行程序加密时和在可执行程序运行时重新计算第二SHA2摘要信息时使用,并不存在可执行程序的程序数据中,进一步提高了可执行程序被破译修改的难度。
计算单元43,用于根据包括密钥数据的可执行程序生成原始SHA1摘要信息。
加密单元44,用于利用私钥对原始SHA1摘要信息进行加密生成RSA密文,并使RSA密文覆盖密文数据段的密钥数据。
本实施例中,通过插入单元42在可执行程序先插入密钥数据,再通过计算单元43对包含密钥数据的可执行程序数据进行计算加密得到密文,通过加密单元44用得到的密文覆盖可执行程序文件中的密文,即密钥数据只是在计算摘要信息时使用,并不保存在可执行程序的程序数据中,进一步提高了可执行程序被破译修改的难度,从而可以只使没有被修改过的可执行程序才可在设备端成功运行,使可执行程序具有更高的安全性。
本发明实施例有益效果如下:在可执行程序的运行阶段,通过根据程序数据中保存的有可能被修改过的密文形成第一SHA1摘要信息,以及用具有较高安全性的密钥数据重新生成标准的第二SHA1摘要信息,通过二者的比对来确认可执行程序是否被修改过。由于对可执行程序在运行阶段进行校验保护,使只有没有被篡改过的可执行程序才可以继续运行,进而可以确保将要运行的可执行程序没有被篡改过,避免了运行可执行程序时存在的安全隐患。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (16)
1.一种可执行程序的保护方法,其特征在于,包括:
调用操作系统内核解析已启动的可执行程序,并将解析所述可执行程序得到的程序数据加载到内存,所述程序数据包括用于保存待检RSA密文的密文数据段;
若所述操作系统内核检测到所述密文数据段存在所述待检RSA密文,则获取所述待检RSA密文,并根据所述待检RSA密文生成第一SHA1摘要信息;
调用所述操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与所述可执行程序对应的密钥数据,根据包括有所述密钥数据的所述可执行程序的新程序数据生成第二SHA1摘要信息,其中,所述密钥数据为生成所述可执行程序所对应的原始RSA密文的部分数据;
若所述操作系统内核确定所述第一SHA1摘要信息和所述第二SHA1摘要信息相同,则判定所述待检RSA密文与所述原始RSA密文的内容一致,继续执行所述可执行程序。
2.如权利要求1所述保护方法,其特征在于,还包括:
若所述操作系统内核检测所述密文数据段不存在所述待检RSA密文,则停止执行所述可执行程序;或者,所述操作系统内核确定所述第一SHA1摘要信息和所述第二SHA1摘要信息不相同,则判定所述待检RSA密文与所述原始RSA密文的内容不一致,停止执行所述可执行程序。
3.如权利要求1所述保护方法,其特征在于,调用所述操作系统内核将解析所述可执行程序得到的所述程序数据加载到内存后,还包括:
调用所述操作系统内核接收所述可执行程序发送的检测所述程序数据段是否存在所述待检RSA密文的检测请求。
4.如权利要求3所述保护方法,其特征在于,所述操作系统内核接收的所述检测请求为所述可执行程序通过netlink消息发送的。
5.如权利要求1所述保护方法,其特征在于,根据所述待检RSA密文生成所述第一SHA1摘要信息,包括:
调用所述操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与所述可执行程序对应的公钥;
调用所述操作系统内核根据获取到的所述公钥对所述待检RSA密文解密,生成所述第一SHA1摘要信息。
6.如权利要求1所述保护方法,其特征在于,所述根据包括有所述密钥数据的所述可执行程序的新程序数据生成所述第二SHA1摘要信息之前,还包括:
调用所述操作系统内核用获取到的所述密钥数据覆盖内存中所述程序数据的所述密文数据段保存的所述待检RSA密文,得到所述新程序数据。
7.一种可执行程序的保护方法,其特征在于,编译生成所述可执行程序的过程中,包括:
生成对应所述可执行程序的用于解密的公钥和用于加密的私钥;
在所述可执行程序的程序数据中插入用于保存RSA密文的密文数据段,并在所述密文数据段中填充密钥数据;
根据包括所述密钥数据的所述可执行程序生成原始SHA1摘要信息;
利用所述私钥对所述原始SHA1摘要信息进行加密生成所述RSA密文,并使所述RSA密文覆盖所述密文数据段的所述密钥数据。
8.如权利要求7所述保护方法,其特征在于,还包括:
将所述密钥数据保存到不可擦写存储硬件中或内核数据中;以及,
在生成对应所述可执行程序的所述公钥和所述私钥之后,将所述公钥保存到不可擦写存储硬件中或内核数据中,所述私钥保存到私有服务器中。
9.一种可执行程序的保护装置,其特征在于,包括:
解析单元,用于调用所述操作系统内核解析已启动的可执行程序,并将解析所述可执行程序得到的程序数据加载到内存,所述程序数据包括用于保存待检RSA密文的密文数据段;
第一生成单元,用于所述操作系统内核检测到所述密文数据段存在所述待检RSA密文,则获取所述待检RSA密文,并根据所述待检RSA密文生成第一SHA1摘要信息;
第二生成单元,用于调用所述操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与所述可执行程序对应的密钥数据,根据包括有所述密钥数据的所述可执行程序的新程序数据生成第二SHA1摘要信息,其中,所述密钥数据为生成所述可执行程序所对应的原始RSA密文的部分数据;
处理单元,用于所述操作系统内核确定所述第一SHA1摘要信息和所述第二SHA1摘要信息相同,则判定所述待检RSA密文与所述原始RSA密文的内容一致,继续执行所述可执行程序。
10.如权利要求9所述保护装置,其特征在于,所述第一生成单元还用于调用所述操作系统内核若检测所述密文数据段不存在所述待检RSA密文时,则停止执行所述可执行程序;所述处理单元还用于调用所述操作系统内核确定所述第一SHA1摘要信息和所述第二SHA1摘要信息不相同时,则判定所述待检RSA密文与所述原始RSA密文内容不一致,停止执行所述可执行程序。
11.如权利要求9所述保护装置,其特征在于,所述保护装置还包括接收单元:
接收单元,用于调用所述操作系统内核在所述解析单元将解析所述可执行程序得到的所述程序数据加载到内存后,接收所述可执行程序发送的检测所述程序数据段是否存在所述待检RSA密文的检测请求。
12.如权利要求11所述保护装置,其特征在于,所述接收单元接收的所述检测请求为所述可执行程序通过netlink消息发送的。
13.如权利要求9所述保护装置,其特征在于,所述第一生成单元调用所述操作系统内核根据所述待检RSA密文生成所述第一SHA1摘要信息,包括:
调用所述操作系统内核获取不可擦写存储硬件中或预先保存于内核数据中的与所述可执行程序对应的公钥;
调用所述操作系统内核根据获取到的所述公钥对所述待检RSA密文解密,生成所述第一SHA1摘要信息。
14.如权利要求9所述保护装置,其特征在于,所述第二生成单元还用于根据包括有所述密钥数据的所述可执行程序的新程序数据生成第二SHA1摘要信息之前,调用所述操作系统内核用获取到的所述密钥数据覆盖内存中所述程序数据的所述密文数据段保存的所述待检RSA密文,得到所述新程序数据。
15.一种可执行程序的保护装置,其特征在于,所述保护装置包括:
生成单元,用于生成对应所述可执行程序的用于解密的公钥和用于加密的私钥;
插入单元,用于在所述可执行程序的程序数据中插入用于保存RSA密文的密文数据段,并在所述密文数据段中填充密钥数据;;
计算单元,用于根据包括所述密钥数据的所述可执行程序生成原始SHA1摘要信息;
加密单元,用于利用所述私钥对所述原始SHA1摘要信息进行加密生成所述RSA密文,并使所述RSA密文覆盖所述密文数据段的所述密钥数据。
16.如权利要求15所述保护装置,其特征在于,所述插入单元还用于将所述密钥数据保存到不可擦写存储硬件中或内核数据中;以及,所述生成单元还用于生成对应所述可执行程序的所述公钥和所述私钥之后,将所述公钥保存到不可擦写存储硬件中或内核数据中,所述私钥保存到私有服务器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610124029.XA CN105740699B (zh) | 2016-03-04 | 2016-03-04 | 一种可执行程序的保护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610124029.XA CN105740699B (zh) | 2016-03-04 | 2016-03-04 | 一种可执行程序的保护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105740699A true CN105740699A (zh) | 2016-07-06 |
CN105740699B CN105740699B (zh) | 2018-12-07 |
Family
ID=56249812
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610124029.XA Active CN105740699B (zh) | 2016-03-04 | 2016-03-04 | 一种可执行程序的保护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105740699B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255746A (zh) * | 2017-12-29 | 2018-07-06 | 北京元心科技有限公司 | 内存改写检测方法及装置 |
CN108376212A (zh) * | 2018-04-02 | 2018-08-07 | 湖南国科微电子股份有限公司 | 执行代码安全保护方法、装置及电子装置 |
CN111756698A (zh) * | 2020-05-27 | 2020-10-09 | 浪潮电子信息产业股份有限公司 | 一种消息传递方法、装置、设备和计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1550115A (zh) * | 2001-08-30 | 2004-11-24 | 摩托罗拉公司 | 校验下载软件的方法和相关设备 |
CN101136048A (zh) * | 2007-09-30 | 2008-03-05 | 广东南方信息安全产业基地有限公司 | 软件认证方法 |
CN101236590A (zh) * | 2008-03-07 | 2008-08-06 | 北京邮电大学 | 一种基于门限密码体制的软件分割保护的实现方法 |
CN101777108A (zh) * | 2010-01-22 | 2010-07-14 | 深圳创维数字技术股份有限公司 | 一种可执行exe文件的加密方法 |
CN102082784A (zh) * | 2010-11-11 | 2011-06-01 | 广东欧珀电子工业有限公司 | 一种软件在线升级方法 |
-
2016
- 2016-03-04 CN CN201610124029.XA patent/CN105740699B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1550115A (zh) * | 2001-08-30 | 2004-11-24 | 摩托罗拉公司 | 校验下载软件的方法和相关设备 |
CN101136048A (zh) * | 2007-09-30 | 2008-03-05 | 广东南方信息安全产业基地有限公司 | 软件认证方法 |
CN101236590A (zh) * | 2008-03-07 | 2008-08-06 | 北京邮电大学 | 一种基于门限密码体制的软件分割保护的实现方法 |
CN101777108A (zh) * | 2010-01-22 | 2010-07-14 | 深圳创维数字技术股份有限公司 | 一种可执行exe文件的加密方法 |
CN102082784A (zh) * | 2010-11-11 | 2011-06-01 | 广东欧珀电子工业有限公司 | 一种软件在线升级方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108255746A (zh) * | 2017-12-29 | 2018-07-06 | 北京元心科技有限公司 | 内存改写检测方法及装置 |
CN108376212A (zh) * | 2018-04-02 | 2018-08-07 | 湖南国科微电子股份有限公司 | 执行代码安全保护方法、装置及电子装置 |
CN111756698A (zh) * | 2020-05-27 | 2020-10-09 | 浪潮电子信息产业股份有限公司 | 一种消息传递方法、装置、设备和计算机可读存储介质 |
CN111756698B (zh) * | 2020-05-27 | 2022-11-18 | 浪潮电子信息产业股份有限公司 | 一种消息传递方法、装置、设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105740699B (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3196797B1 (en) | Method and network device for authenticating application program integrity | |
CN109120649B (zh) | 密钥协商方法、云服务器、设备、存储介质以及系统 | |
US9043604B2 (en) | Method and apparatus for key provisioning of hardware devices | |
CN109039657B (zh) | 密钥协商方法、设备、终端、存储介质以及系统 | |
US20140156742A1 (en) | System and method for updating software, server and client thereof | |
US8683214B2 (en) | Method and device that verifies application program modules | |
CN109802825A (zh) | 一种数据加密、解密的方法、系统及终端设备 | |
CN104836784B (zh) | 一种信息处理方法、客户端和服务器 | |
KR101729960B1 (ko) | 신뢰 보안 플랫폼 모듈을 이용한 보안 애플리케이션 인증 및 관리 방법 및 장치 | |
CN103577206A (zh) | 一种应用软件的安装方法和装置 | |
WO2016019790A1 (zh) | 一种安装包的校验方法、客户端、服务器及系统 | |
US20180204004A1 (en) | Authentication method and apparatus for reinforced software | |
CN110401538B (zh) | 数据加密方法、系统以及终端 | |
US20160028549A1 (en) | Information processing system and electronic device | |
CN108170461B (zh) | 差分升级包生成方法、差分升级方法及装置 | |
CN114662087B (zh) | 一种多端验证的安全芯片固件更新方法及装置 | |
CN105740699A (zh) | 一种可执行程序的保护方法及装置 | |
CN110879875A (zh) | 硬件加密装置、嵌入式系统版权保护系统及方法 | |
CN108270574B (zh) | 一种白名单库文件的安全加载方法及装置 | |
CN107257282B (zh) | 一种基于rc4算法的代码全包加密方法 | |
CN102196317A (zh) | 一种机顶盒的保护方法及机顶盒 | |
CN114915504B (zh) | 安全芯片初始认证方法及系统 | |
CN107908962A (zh) | 应用于Android智能终端的自检方法 | |
CN104732138A (zh) | 一种诊断设备的升级方法及设备 | |
CN106549754A (zh) | 管理密钥的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |