CN108270791A - 一种安全运行可执行文件的方法及系统 - Google Patents

一种安全运行可执行文件的方法及系统 Download PDF

Info

Publication number
CN108270791A
CN108270791A CN201810087142.4A CN201810087142A CN108270791A CN 108270791 A CN108270791 A CN 108270791A CN 201810087142 A CN201810087142 A CN 201810087142A CN 108270791 A CN108270791 A CN 108270791A
Authority
CN
China
Prior art keywords
module
client
authorization code
cloud server
data
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
Application number
CN201810087142.4A
Other languages
English (en)
Other versions
CN108270791B (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.)
Beijing Jianshi Chengxin Technologies Co.,Ltd.
Original Assignee
Feitian Technologies 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 Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201810087142.4A priority Critical patent/CN108270791B/zh
Publication of CN108270791A publication Critical patent/CN108270791A/zh
Application granted granted Critical
Publication of CN108270791B publication Critical patent/CN108270791B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine 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/602Providing cryptographic facilities or services
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2133Verifying human interaction, e.g., Captcha
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/101Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measures for digital rights management
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • 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/3247Cryptographic 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 digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Databases & Information Systems (AREA)
  • Power Engineering (AREA)
  • Computer And Data Communications (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开一种安全运行可执行文件的方法及系统,属于信息安全领域。本发明公开的系统包括客户端、云服务器和云管理平台;其中,客户端包括:哈希模块、第一组织模块、第一发送模块、第一接收模块、第一提示模块、第一获取模块、第二组织模块和第二接收模块;云服务器包括:第三接收模块、第一查找模块、第一生成模块、第一绑定模块、第二发送模块、第四接收模块、第二查找模块、第三查找模块、第一判断模块、第二获取模块、第五保存模块、第四查找模块和执行模块;云管理平台包括:第三获取模块、第二生成模块和第二绑定模块。本发明提供的技术方案可以提高操作的便捷性,而且不会因硬件加密锁的丢失导致可执行文件的功能无法实现。

Description

一种安全运行可执行文件的方法及系统
技术领域
本发明涉及信息安全领域,尤其涉及一种安全运行可执行文件的方法及系统。
背景技术
传统软件保护采用的手段主要是软件开发商将软件的部分代码以及相关的重要数据放在硬件的加密锁内,在运行软件时必须将硬件的加密锁与运行软件的主机连接,导致操作不方便;而且,一旦加密锁丢失会导致软件的部分代码无法运行,甚至导致整个软件无法运行。
发明内容
本发明为解决上述技术问题公开了一种安全运行可执行文件的方法及系统。
本发明提供的一种安全运行可执行文件的方法,包括以下步骤:
步骤S1:客户端根据处理器标识、物理地址、本地主机名称和I P地址计算哈希值,根据预设的授权码和所述哈希值组织连接指令,将所述连接指令发送给云服务器;
步骤S2:所述云服务器接收到所述连接指令时,从数据库中查找与所述连接指令中的授权码一致的目的授权码,若查找到则生成第二会话标识,将所述第二会话标识和所述连接指令中的哈希值与所述目的授权码进行绑定,并将所述第二会话标识返回所述客户端;若未查找到则向所述客户端返回连接失败的信息;
步骤S3:所述客户端接收到所述第二会话标识时,提示用户输入验证码,获取到用户输入的验证码时,根据预设的可执行文件名称、请求参数、所述哈希值、所述验证码和所述第二会话标识组织运行指令,将所述运行指令发送给所述云服务器;接收到所述连接失败的信息时,结束;
步骤S4:所述云服务器接收到所述运行指令时,从数据库中查找与所述运行指令中的第二会话标识一致的第二会话标识,若查找到则执行步骤S5;若未查找到则向所述客户端返回错误信息;
步骤S5:所述云服务器从数据库中找到与所述第二会话标识绑定的目的授权码,判断运行指令中的哈希值是否与所述目的授权码绑定的哈希值一致,并判断运行指令中的验证码是否与所述目的授权码绑定的目的验证码一致,如果判断结果均为是则执行步骤S6;否则向所述客户端返回错误信息;
步骤S6:所述云服务器获取与所述目的授权码绑定的可执行文件路径和文件系统,根据所述可执行文件路径找到自身保存的可执行文件,根据所述文件系统、所述运行指令中的可执行文件名称、请求参数在虚拟空间中运行找到的可执行文件得到运行结果,将所述运行结果返回所述客户端;
步骤S7:所述客户端接收到运行结果时,结束;接收到错误信息时报错,结束;
所述步骤S1之前,还包括:云管理平台获取所述可执行文件路径、所述文件系统和用户输入的所述目的验证码,生成所述目的授权码,将所述可执行文件路径、文件系统、生成的所述目的授权码和用户输入的所述目的验证码进行绑定并保存到数据库。
本发明公开的一种安全运行可执行文件的系统,包括客户端、云服务器和云管理平台;
所述客户端包括:
哈希模块,用于根据处理器标识、物理地址、本地主机名称和I P地址计算哈希值;
第一组织模块,用于根据预设的授权码和所述哈希模块计算得到的所述哈希值组织连接指令;
第一发送模块,用于将所述第一组织模块的所述连接指令发送给所述云服务器;
第一接收模块,用于接收来自所述云服务器的第二会话标识;用于接收来自所述云服务器的连接失败的信息;
第一提示模块,用于所述第一接收模块接收到所述第二会话标识时,提示用户输入验证码;
第一获取模块,用于获取用户输入的验证码;
第二组织模块,用于根据预设的可执行文件名称、请求参数、所述哈希模块计算得到的所述哈希值、所述第一获取模块获取的所述验证码和所述第一接收模块接收的所述第二会话标识组织运行指令;
第一发送模块,还用于将所述第二组织模块组织的所述运行指令发送给所述云服务器;
第二接收模块,用于接收来自云服务器的运行结果;用于接收来自所述云服务器的错误信息;
所述云服务器包括:
第三接收模块,用于接收来自所述客户端的连接指令;
第一查找模块,用于从数据库中查找与所述第三接收模块接收的所述连接指令中的授权码一致的目的授权码;
第一生成模块,用于当所述第一查找模块从数据库中查找与所述第三接收模块接收的所述连接指令中的授权码一致的目的授权码时,生成第二会话标识;
第一绑定模块,用于将所述第一生成模块生成的所述第二会话标识和所述第三接收模块接收的所述连接指令中的哈希值与所述第一查找模块查找到的目的授权码进行绑定;
第二发送模块,用于将所述第一生成模块生成的所述第二会话标识返回所述客户端;用于当所述第一查找模块从数据库中没有查找与所述第三接收模块接收的所述连接指令中的授权码一致的目的授权码时,向所述客户端返回连接失败的信息;
第四接收模块,用于接收来自所述客户端的运行指令;
第二查找模块,用于从数据库中查找与所述第四接收模块接收的所述运行指令中的第二会话标识一致的第二会话标识;
第三查找模块,用于当所述第二查找模块从数据库中查找到与所述第四接收模块接收的所述运行指令中的第二会话标识一致的第二会话标识时,从数据库中找到与所述第二会话标识绑定的目的授权码;
第一判断模块,用于判断所述第四接收模块接收的所述运行指令中的哈希值是否与所述第三查找模块查找到的所述目的授权码绑定的哈希值一致,并判断所述第四接收模块接收的所述运行指令中的验证码是否与所述第三查找模块查找到的所述目的授权码绑定的目的验证码一致;
第二获取模块,用于当所述第一判断模块判断结果均为是时,获取与所述第三查找模块查找到的所述目的授权码绑定的可执行文件路径和文件系统;
第五保存模块,用于保存可执行文件;
第四查找模块,用于根据所述第二获取模块获取的所述可执行文件路径找到所述第五保存模块保存的可执行文件;
执行模块,用于根据所述文件系统、所述运行指令中的可执行文件名称、请求参数在虚拟空间中运行找到的可执行文件得到运行结果;
第二发送模块,用于将所述执行模块得到的所述运行结果返回所述客户端;用于当所述第二查找模块从数据库中未查找到与所述第四接收模块接收的所述运行指令中的第二会话标识一致的第二会话标识时,向所述客户端返回错误信息;用于当所述第一判断模块判断结果不均为是时,向所述客户端返回错误信息;
所述云管理平台包括:
第三获取模块,用于获取可执行文件路径、所述文件系统和用户输入的所述目的验证码;
第二生成模块,用于所述第三获取模块获取可执行文件路径、所述文件系统和用户输入的所述目的验证码时,生成所述目的授权码;
第二绑定模块,用于将第三获取模块获取的所述可执行文件路径、文件系统、用户输入的所述目的验证码和所述第二生成模块生成的所述目的授权码进行绑定并保存到数据库。
本发明的有益效果是:将可执行文件保存在云服务器中,将与可执行文件相关的文件系统和可执行文件路径放入数据库中,不用将可执行文件单独放入硬件的加密锁中,提高了操作的便捷性,而且不会因硬件加密锁的丢失导致可执行文件的功能无法实现。
附图说明
图1所示为本发明实施例1提供的一种安全运行可执行文件的方法的流程图;
图2所示为本发明实施例2提供的一种安全运行可执行文件的方法的流程图;
图3所示为本发明实施例3提供的一种安全运行可执行文件的方法的流程图;
图4所示为本发明实施例4提供的一种安全运行可执行文件的系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
本实施例提供一种安全运行可执行文件的方法,如图1所示,包括:
步骤S1:客户端根据处理器标识、物理地址、本地主机名称和I P地址计算哈希值,根据预设的授权码和哈希值组织连接指令,将连接指令发送给云服务器;
步骤S2:云服务器接收到连接指令时,从数据库中查找与连接指令中的授权码一致的目的授权码,若查找到则生成第二会话标识,将第二会话标识和连接指令中的哈希值与目的授权码进行绑定,并将第二会话标识返回客户端;若未查找到则向客户端返回连接失败的信息;客户端接收到连接失败的信息时,结束;
步骤S3:客户端接收到第二会话标识时,提示用户输入验证码,获取到用户输入的验证码时,根据预设的可执行文件名称、请求参数、哈希值、验证码和第二会话标识组织运行指令,将运行指令发送给云服务器;
步骤S4:云服务器接收到运行指令时,从数据库中查找与运行指令中的第二会话标识一致的第二会话标识,若查找到则执行步骤S5;若未查找到则向客户端返回错误信息,客户端接收到错误信息时结束;
步骤S5:云服务器从数据库中找到与第二会话标识绑定的目的授权码,判断运行指令中的哈希值是否与目的授权码绑定的哈希值一致,并判断运行指令中的验证码是否与目的授权码绑定的目的验证码一致,如果判断结果均为是则执行步骤S6;否则向客户端返回错误信息;客户端接收到错误信息时,结束;
步骤S6:云服务器获取与目的授权码绑定的可执行文件路径和文件系统,根据可执行文件路径找到自身保存的可执行文件,根据文件系统、运行指令中的可执行文件名称、请求参数在虚拟空间中运行找到的可执行文件得到运行结果,将运行结果返回客户端;
步骤S7:客户端接收到运行结果时,结束;
步骤S1之前,还包括:云管理平台获取可执行文件路径、文件系统和用户输入的目的验证码,生成目的授权码,将可执行文件路径、文件系统、生成的目的授权码和用户输入的目的验证码进行绑定并保存到数据库。
可选地,上述步骤S3中,客户端根据预设的可执行文件名称、请求参数、哈希值、验证码和第二会话标识组织运行指令,可以替换为:客户端根据预设的可执行文件名称、请求参数、哈希值和第二会话标识组织运行指令;
相应地,上述步骤S3中,客户端获取到用户输入的验证码之后,客户端根据预设的可执行文件名称、请求参数、哈希值和第二会话标识组织运行指令之前还包括:
步骤S31:客户端根据第二会话标识、用户输入的验证码组织验证指令,将验证指令发送给云服务器;
步骤S32:云服务器接收到验证指令时,从数据库中找到与验证指令中的第二会话标识绑定的目的授权码,找到与目的授权码绑定的目的验证码,判断验证指令中的验证码是否与目的验证码一致,是则将验证状态设置为成功的状态,将成功的状态与目的授权码绑定,向客户端返回验证成功的结果;否则验证失败,向客户端返回验证失败的结果;
上述客户端根据预设的可执行文件名称、请求参数、哈希值和第二会话标识组织运行指令,具体为:客户端接收到验证成功的结果时,根据预设的可执行文件名称、请求参数、哈希值和第二会话标识组织运行指令;
上述步骤S32之后,还包括:客户端接收到验证失败的结果时,结束;
上述步骤S5替换为:云服务器从数据库中找到与第二会话标识绑定的目的授权码,判断与目的授权码绑定的验证状态是否为成功的状态,并且判断判断运行指令中的哈希值是否与目的授权码绑定的哈希值一致,当判断结果均为是时执行步骤S6;当判断结果不均为是时向客户端返回错误信息。
具体地,上述步骤S1中,客户端根据预设的授权码和哈希值组织连接指令,将连接指令发送给云服务器,具体为:客户端使用自身保存的RSA公钥对授权码和哈希值进行加密得到第一加密数据,根据第一加密数据组织连接指令,使用自身保存的预设密钥对连接指令进行签名得到第一签名数据,将连接指令和第一签名数据发送给云服务器;
相应地,上述步骤S2具体为:云服务器接收到连接指令和第一签名数据,使用自身保存的预设密钥根据第一签名数据对连接指令进行验签,验签通过时,使用自身保存的RSA私钥对连接指令中的第一加密数据进行解密得到授权码和哈希值,从数据库中查找与解密得到的授权码一致的目的授权码,若查找到则生成第二会话标识,将第二会话标识和解密得到的哈希值与目的授权码进行绑定,使用自身保存的RSA私钥对第二会话标识进行加密得到第五加密数据,根据第五加密数据生成连接响应,使用自身保存的预设密钥对连接响应签名得到连接响应的签名数据,将连接响应和连接响应的签名数据返回客户端;若未查找到则向客户端返回连接失败的信息;验签未通过时,向客户端返回验签失败的信息;
上述步骤S3中,客户端接收到第二会话标识,具体为:客户端使用自身保存的预设密钥根据接收的连接响应的签名数据对接收的连接响应进行验签,验签通过则使用自身保存的RSA公钥对连接响应中第五加密数据进行解密得到第二会话标识,验签未通过则结束。
可选地,上述步骤S2中云服务器从数据库中查找到与连接指令中的授权码一致的目的授权码之后,还包括:云服务器生成会话密钥,将会话密钥与目的授权码进行绑定,并将会话密钥返回客户端;
相应地,上述步骤S31,具体为:客户端使用会话密钥对用户输入的验证码进行加密得到第二加密数据,根据第二会话标识和第二加密数据组织验证指令,使用会话密钥对验证指令进行签名得到第二签名数据,将验证指令和第二签名数据发送给云服务器;
上述步骤S32具体为:云服务器接收到验证指令和第二签名数据,从数据库中找到与验证指令中的第二会话标识绑定的目的授权码,找到与目的授权码绑定的话会话密钥,使用找到的会话密钥根据第二签名数据对验证指令进行验签,验签通过时,使用会话密钥对验证指令中的第二加密数据进行解密得到验证码,找到与目的授权码绑定的目的验证码,判断解密得到的验证码是否与找到的目的验证码一致,是则将验证状态设置为成功的状态,将成功的状态与目的授权码绑定,向客户端返回验证成功的结果,否则向客户端返回验证失败的结果;验签未通过时,向客户端返回验签失败的信息;
上述客户端根据预设的可执行文件名称、请求参数、哈希值和第二会话标识组织运行指令,具体为:客户端使用会话密钥对预设的可执行文件名称、请求参数、哈希值进行加密得到第三加密数据,根据第三加密数据和第二会话标识组织运行指令,使用会话密钥对运行指令进行签名得到第三签名数据;客户端向云服务器发送运行指令时,还将第三签名数据发送给云服务器;
上述云服务器从数据库中找到与第二会话标识绑定的目的授权码之后,还包括:云服务器从数据库中找到与目的授权码绑定的会话密钥,使用会话密钥根据接收的第三签名数据对运行指令进行验签,验签通过时,使用会话密钥对运行指令中的第三加密数据解密得到验证码和哈希值,当判定运行指令中的哈希值与目的授权码绑定的哈希值一致、判定验证状态为成功的状态时执行步骤S6;
上述步骤S6中,云服务器将运行结果返回客户端之前,还包括:云服务器使用会话密钥对运行结果进行加密得到加密的运行结果,根据加密的运行结果组织运行结果响应数据,使用会话密钥对运行结果响应数据进行签名得到第四签名数据;
上述云服务器将运行结果返回客户端,具体为:云服务器将运行结果响应数据和第四签名数据返回客户端;
上述步骤S7中,客户端接收到运行结果,具体为:客户端使用会话密钥根据接收的第四签名数据对接收的运行结果响应数据验签,验签通过时,使用会话密钥对运行结果响应数据中加密的运行结果进行解密得到运行结果;验签未通过时,报错,结束。
可选地,上述步骤S2中云服务器从数据库中查找到与连接指令中的授权码一致的目的授权码之后,还包括:云服务器生成会话密钥,将会话密钥与目的授权码进行绑定,将会话密钥返回客户端;
相应地,上述步骤S3中,客户端根据预设的可执行文件名称、请求参数、哈希值、验证码和第二会话标识组织运行指令,将运行指令发送给云服务器,具体包括:客户端使用会话密钥对预设的可执行文件名称、请求参数、哈希值、验证码进行加密得到第四加密数据,根据第四加密数据和第二会话标识组织运行指令,使用会话密钥对运行指令进行签名得到第五签名数据,将运行指令和第五签名数据发送给云服务器;
上述步骤S5具体包括:云服务器从数据库中找到与第二会话标识绑定的目的授权码,找到与目的授权码绑定的话会话密钥,使用会话密钥根据接收的第五签名数据对运行指令进行验签,验签通过则使用会话密钥对运行指令中的第四加密数据进行解密得到哈希值和验证码,判断解密得到的哈希值是否与目的授权码绑定的哈希值一致,并判断解密得到的验证码是否与目的授权码绑定的目的验证码一致,如果判断结果均为是则执行步骤S6,否则向客户端返回错误信息;验签未通过则向客户端返回验签失败的信息;
上述步骤S6中,云服务器将运行结果返回客户端之前,还包括:云服务器使用会话密钥对运行结果进行加密得到加密的运行结果,根据加密的运行结果组织运行结果响应数据,使用会话密钥对运行结果响应数据进行签名得到第六签名数据;
上述步骤S6中,云服务器将运行结果返回客户端,具体为:云服务器将运行结果响应数据和第六签名数据返回客户端;
上述步骤S7中,客户端接收到运行结果,具体为:客户端使用会话密钥根据接收的第六签名数据对接收的运行结果响应数据验签,验签通过时,使用会话密钥对运行结果响应数据中加密的运行结果进行解密得到运行结果;验签未通过时,报错,结束;
上述步骤S7中还包括:客户端接收到验签失败的信息时,结束。
本实施例中,上述文件系统中包括密钥文件。
本实施例中,上述可执行文件中包括核心算法。
可选地,上述连接指令中还包括预设的第一会话标识;
相应地,上述步骤S2中,云服务器从数据库中查找与连接指令中的授权码一致的目的授权码之前还包括:云服务器判断连接指令中的第一会话标识是否与自身保存的第一会话标识一致,是则从数据库中查找与连接指令中的授权码一致的目的授权码,否则向客户端返回连接失败的信息。
可选地,上述步骤S6中,云服务器将运行结果返回客户端,具体为:云服务器根据运行结果组织运行结果响应数据,将运行结果响应数据返回客户端;
相应地,上述步骤S7中,客户端接收到运行结果,具体为:客户端接收到运行结果响应数据;
上述步骤S7中还包括:客户端根据运行结果响应数据判断是否成功运行可执行文件,是则结束;否则报错,结束。
具体地,上述步骤S6中,云服务器获取与目的授权码绑定的可执行文件路径,根据可执行文件路径找到自身保存的可执行文件,具体为:云服务器获取与目的授权码绑定的可执行文件的相对路径,使用可执行文件的相对路径与自身保存的预设路径进行拼接得到拼接路径,根据拼接路径找到自身保存的可执行文件;
相应地,上述云管理平台获取可执行文件路径,具体为:云管理平台获取可执行文件的相对路径;
上述云管理平台将可执行文件路径、文件系统、生成的目的授权码和用户输入的目的验证码进行绑定并保存到数据库,具体为:云管理平台将可执行文件的相对路径、文件系统、生成的目的授权码和用户输入的目的验证码进行绑定并保存到数据库。
实施例2
本实施例提供一种安全运行可执行文件的方法,包括:
步骤100:客户端根据处理器标识、物理地址、本地主机名称和I P地址计算哈希值,使用自身保存的RSA公钥对自身保存的预设的授权码、哈希值进行加密得到第一加密数据,根据第一加密数据、预设的第一会话标识组织连接指令,使用预设密钥对连接指令进行签名得到第一签名数据。
例如,客户端根据处理器标识47656E75696E65496E74656CC3060300000000000123456789ABCDEF、物理地址24-05-0F-65-AB-CD、本地主机名称FT-PC和IP地址192.168.11.21计算得到的哈希值为75 ff 1c c1 78 6f 5f 82 f5 3d ee 89 91 7d d0 df 4e 70 a0 a0AA BB CC CC DD EE 11 22 33 44 55 66。
具体地,根据第一加密数据、预设的第一会话标识组织连接指令,具体为:客户端根据加密标识、连接指令标识、数据长度、第一加密数据、第一会话标识组织连接指令。
例如,客户端使用自身保存的RSA公钥
96 76 5B 8A 50 78 5F B5 1C 9A 6D 20 C5 38 2A 03
81 66 00 D6 F5 69 0F D2 09 3E 3F 96 45 57 4E 4B
1B 47 D6 97 47 EC 6F 53 A4 2C 75 BE C5 58 E1 E3
63 36 14 C2 D5 27 69 02 7C 10 4E 37 DA 44 95 D0
93 9B FA 3C 50 4E 7E F9 DF 3D 82 0D 24 AA 58 E2
22 28 70 3C E9 B9 5C ED 4B 5C 98 44 07 69 26 8E
19 0E 4F 17 BD 9A 90 EC 8C E8 10 42 6A B0 FF 98
5E 95 12 64 D2 3E 63 27 9A 32 9C 19 01 14 CC DD
对哈希值75 ff 1c c1 78 6f 5f 82 f5 3d ee 89 91 7d d0 df 4e 70 a0 a0AA BB CC CC DD EE 11 22 33 44 55 66、自身保存的预设的授权码PNCM9UA73CKZY4G6进行加密得到第一加密数据3a df c3 f9 d1 9e e5 59 f6 ed 97 85 c8 93 c9 81 92 1930 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 536e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77a6 b0 e9 3e c0 76 d8 d1 96 05 8b 3c 5d cd eb 56 07 86 9a 21 f5 7f 48 55 b0 5a74 69 ed b5 12 23 bc 70 45 2c 62 f2 54 25 11 2a f7 1b bd f7 82 57 5c 81 e3 20bf aa 04 b1 74 1e,根据加密标识40、连接指令标识24 01 00 00、数据长度80 00 00 00、第一加密数据3a df c3 f9 d1 9e e5 59 f6 ed 97 85 c8 93 c9 81 92 19 30 c5 e6 e068 61 c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 6344 95 e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 e9 3ec0 76 d8 d1 96 05 8b 3c 5d cd eb 56 07 86 9a 21 f5 7f 48 55 b0 5a 74 69 ed b512 23 bc 70 45 2c 62 f2 54 25 11 2a f7 1b bd f7 82 57 5c 81 e3 20 bf aa 04 b174 1e、预设的第一会话标识ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff组织的连接指令为04ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff 80 00 00 00 24 01 00 00 3a df c3 f9 d1 9ee5 59 f6 ed 97 85 c8 93 c9 81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 9248 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 e9 3e c0 76 d8 d1 96 05 8b 3c 5d cdeb 56 07 86 9a 21 f5 7f 48 55 b0 5a 74 69 ed b5 12 23 bc 70 45 2c 62 f2 54 2511 2a f7 1b bd f7 82 57 5c 81 e3 20 bf aa 04 b1 74 1e。
客户端使用预设密钥11 32 03 64 19 86 07 98 09 BA 0B 0C DD 0E FF 10 对连接指令进行签名得到第一签名数据为9d ee 65 6b 17 1f 59 3d。
步骤101:客户端向云服务器发送连接指令和第一签名数据。
步骤102:云服务器使用自身保存的预设密钥根据所述第一签名数据对连接指令进行验签,验签通过则执行步骤103,验签未通过则向客户端返回验签失败的信息。
例如,云服务器接收的连接指令为04 ff ff ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff80 00 00 00 24 01 00 00 3a df c3 f9 d1 9e e5 59 f6 ed 97 85 c8 93 c9 81 92 1930 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 536e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77a6 b0 e9 3e c0 76 d8 d1 96 05 8b 3c 5d cd eb 56 07 86 9a 21 f5 7f 48 55 b0 5a74 69 ed b5 12 23 bc 70 45 2c 62 f2 54 25 11 2a f7 1b bd f7 82 57 5c 81 e3 20bf aa 04 b1 74 1e,获取第一字节上的数据40作为加密标识;获取第二字节至第六十五字节上的数据ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff作为第一会话标识;获取第六十六字节至第六十九字节上的数据80 00 00 00作为数据长度,表示数据长度为128个字节;获取第七十字节至第七十三字节上的数据24 01 00 00作为连接指令标识;获取第七十四字节至第二百零一字节上的数据3a df c3 f9 d1 9e e5 59 f6 ed 97 85 c8 93 c9 81 9219 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c53 6e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf77 a6 b0 e9 3e c0 76 d8 d1 96 05 8b 3c 5d cd eb 56 07 86 9a 21 f5 7f 48 55 b05a 74 69 ed b5 12 23 bc 70 45 2c 62 f2 54 25 11 2a f7 1b bd f7 82 57 5c 81 e320 bf aa 04 b1 74 1e作为第一加密数据;
云服务器接收到的第一签名数据为9d ee 65 6b 17 1f 59 3d;
具体地,步骤102中,云服务器使用自身保存的预设密钥根据所述第一签名数据对连接指令进行验签,具体为:云服务器使用自身保存的预设密钥对连接指令进行签名得到签名数据,判断得到的签名数据是否与接收的第一签名数据一致,是则验签通过,否则验签未通过。
例如,云服务器使用自身保存的预设密钥11 32 03 64 19 86 07 98 09 BA 0B0C DD 0E FF 10对连接指令进行签名得到签名数据9d ee 65 6b 17 1f 59 3d,判断得到的签名数据与接收的第一签名数据一致,则验签通过。
步骤103:云服务器判断自身保存的第一会话标识是否与连接指令中的第一会话标识一致,是则执行步骤104,否则向客户端返回连接失败的信息。
例如,云服务器判断自身保存的第一会话标识ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff ff与连接指令中的第一会话标识ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff一致,则执行步骤104。
步骤104:云服务器使用自身保存的RSA私钥对连接指令中的第一加密数据进行解密得到授权码和哈希值,从数据库中查找与解密得到的授权码一致的目的授权码,若查找到则执行步骤105;若未查找到则向客户端返回连接失败的信息。
例如,云服务器使用自身保存的RSA私钥
BD E2 08 2E 53 79 9E C4 EA 0F 35 5B 80 A6 CC F1
17 3D 62 88 AE D3 F9 1E 44 6A 8F B5 DB 00 26 4C
71 97 BD E2 08 2E 53 79 9F C4 EA 0F 35 5B 80 A6
CC F1 17 3D 62 88 AE D3 F9 1F 44 6A 90 B5 DF 93
CA DA 69 F9 88 18 A7 36 C6 55 E5 74 04 93 22 B2
41 D1 60 F0 7F 0F 9E 2D BD 4C DC 6B FB 8A 19 A9
38 C8 57 E7 76 05 95 24 B4 43 D3 62 F1 81 10 A0
2F BF 4E DD 6D FC 8C 1B AB 3A CA 59 E8 78 07 CF对连接指令中的第一加密数据进行解密得到授权码PNCM9UA73CKZY4G6和哈希值75 ff 1c c1 78 6f 5f 82 f5 3dee 89 91 7d d0 df 4e 70 a0 a0 AA BB CC CC DD EE 11 22 33 44 55 66,当从数据库中查找与解密得到的授权码一致的目的授权码PNCM9UA73CKZY4G6时,则执行步骤105。
步骤105:云服务器生成第二会话标识和会话密钥,将第二会话标识、会话密钥和解密得到的哈希值与目的授权码进行绑定,使用自身保存的RSA私钥对第二会话标识和会话密钥进行加密得到第五加密数据,根据第五加密数据生成连接响应,使用自身保存的预设密钥对连接响应签名得到连接响应的签名数据,向客户端返回连接响应和连接响应的签名数据。
步骤105中云服务器还生成成功的连接状态值;相应地,云服务器根据第五加密数据生成连接响应,具体为:云服务器根据成功的连接状态值、预设的数据长度和第五加密数据生成连接响应。
例如,云服务器生成第二会话标识81 92 19 30 c5 e6 e0 68 61 c4 32 3a 6378 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 9044 11 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1b bd 82 00、成功的连接状态值00 00 00 00和会话密钥28 73 0F 4A 73 75 8F 91 F8 18 29 37 46 5262 70,将第二会话标识、哈希值和会话密钥与目的授权码4QQO8RDJCLI8NE96进行绑定,使用自身保存的RSA私钥
BD E2 08 2E 53 79 9E C4 EA 0F 35 5B 80 A6 CC F1
17 3D 62 88 AE D3 F9 1E 44 6A 8F B5 DB 00 26 4C
71 97 BD E2 08 2E 53 79 9F C4 EA 0F 35 5B 80 A6
CC F1 17 3D 62 88 AE D3 F9 1F 44 6A 90 B5 DF 93
CA DA 69 F9 88 18 A7 36 C6 55 E5 74 04 93 22 B2
41 D1 60 F0 7F 0F 9E 2D BD 4C DC 6B FB 8A 19 A9
38 C8 57 E7 76 05 95 24 B4 43 D3 62 F1 81 10 A0
2F BF 4E DD 6D FC 8C 1B AB 3A CA 59 E8 78 07 CF对第二会话标识和会话密钥进行加密得到第五加密数据05 3a df c3 f9 d1 9e e5 59 f6 ed 97 85 c8 93 c9 8192 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 104c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 75 80 0000 00 e3 20 bf aa 04 b1 74 1e 00,根据预设的数据长度50 00 00 00第五加密数据和成功的连接状态值00 00 00 00生成的连接响应为00 00 00 00 05 3a df c3 f9 d1 9ee5 59 f6 ed 97 85 c8 93 c9 81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 9248 b3 cb 16 20 46 6c 75 80 00 00 00 e3 20 bf aa 04 b1 74 1e 00 50 00 00 00,使用自身保存的预设密钥11 32 03 64 19 86 07 98 09 BA 0B 0C DD 0E FF 10对连接响应签名得到连接响应的签名数据ee ab 65 6b 17 1f 59 3d。
本实施例中,在步骤102-步骤104中云服务器向客户端返回连接失败的信息或者验签失败的信息之后,客户端收到连接失败的信息或者验签失败的信息时,报错,结束。
步骤106:客户端使用自身保存的预设密钥根据接收的连接响应的签名数据对接收的连接响应进行验签,验签通过则执行步骤107,验签未通过则报错,结束。
例如,客户端接收到的连接响应为00 00 00 00 05 3a df c3 f9 d1 9e e5 59f6 ed 97 85 c8 93 c9 81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7 df 9ec8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 92 48 b3cb 16 20 46 6c 75 80 00 00 00 e3 20 bf aa 04 b1 74 1e 00 50 00 00 00,获取连接响应中第一字节至第四字节上的数据00 00 00 00作为成功的连接状态值;获取连接响应中第五字节至第七十四字节上的数据05 3a df c3 f9 d1 9e e5 59 f6 ed 97 85 c8 93c9 81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 7580 00 00 00 e3 20 bf aa 04 b1 74 1e 00作为第五加密数据,获取第七十五字节上的数据至第七十八字节上的数据50 00 00 00作为第五加密数据的长度;
客户端接收到的连接响应的签名数据为ee ab 65 6b 17 1f 59 3d。
具体地,步骤106中,客户端使用自身保存的预设密钥根据接收的连接响应的签名数据对接收的连接响应进行验签,具体为:客户端使用自身保存的预设密钥对连接响应进行签名得到签名数据,判断得到的签名数据是否与接收的连接响应的签名数据一致,是则验签通过,否则验签未通过。例如,客户端使用自身保存的预设密钥11 32 03 64 19 86 0798 09 BA 0B 0C DD 0E FF 10对连接响应进行签名得到签名数据ee ab 65 6b 17 1f 593d,与接收的连接响应的签名数据一致,则验签通过。
步骤107:客户端使用自身保存的RSA公钥对连接响应中第五加密数据进行解密得到第二会话标识和会话密钥。
例如,客户端使用自身保存的RSA公钥
96 76 5B 8A 50 78 5F B5 1C 9A 6D 20 C5 38 2A 03
81 66 00 D6 F5 69 0F D2 09 3E 3F 96 45 57 4E 4B
1B 47 D6 97 47 EC 6F 53 A4 2C 75 BE C5 58 E1 E3
63 36 14 C2 D5 27 69 02 7C 10 4E 37 DA 44 95 D0
93 9B FA 3C 50 4E 7E F9 DF 3D 82 0D 24 AA 58 E2
22 28 70 3C E9 B9 5C ED 4B 5C 98 44 07 69 26 8E
19 0E 4F 17 BD 9A 90 EC 8C E8 10 42 6A B0 FF 98
5E 95 12 64 D2 3E 63 27 9A 32 9C 19 01 14 CC DD对连接响应中第五加密数据05 3a df c3 f9 d1 9e e5 59 f6 ed 97 85 c8 93 c9 81 92 19 30 c5 e6 e0 68 61c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 75 80 00 00 00 e3 20 bf aa 04 b174 1e 00进行解密得到第二会话标识81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 115d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1b bd 82 00和会话密钥28 73 0F 4A 73 75 8F 91 F8 18 29 37 46 52 62 70。
步骤108:客户端提示用户输入验证码,获取到用户输入的验证码时,使用会话密钥对用户输入的验证码进行加密得到第二加密数据,根据第二会话标识和第二加密数据组织验证指令,使用会话密钥对验证指令进行签名得到第二签名数据,将验证指令和第二签名数据发送给云服务器;
具体地,客户端根据第二会话标识和第二加密数据组织验证指令,具体为:客户端根据第二会话标识、第二加密数据、数据长度、验证指令标识和加密标识组织验证指令。
例如,客户端获取到用户输入的验证码1234567812345678时,使用会话密钥28 730F 4A 73 75 8F 91 F8 18 29 37 46 52 62 70对用户输入的验证码1234567812345678进行加密得到第二加密数据a6 a0 03 1b f4 a2 95 11 6c 1f ba 99 4a 95 0c 3b c5 4e00 e8 31 ba 99 4a 73 1b f4 a2 95 00 e8 1f ba 99 4a 95 0c f4 a2 4e 00 e8 cf 77a6 b0 e9 3e c0 76 d8 d1 96 05 8b 3c 5d cd eb 56 07 86 9a 31 07 f4 da 74 69 edb5 12 23 bc 70 45 2c 62 f2 54 2500 00 00 3a 63 78 11 5d b7 df 9e c8 84 85 c34c 51 f0 10 4c 53 6e 70 a1 00 00 00 00 00 00 00 00 00 22 25 58 46 89 60 e3 20bf aa 04 b1 74,根据第二会话标识81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 115d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1b bd 82 00、验证指令标识27 01 00 00、加密标识84、数据长度80 00 00 00和第二加密数据a6 a0 03 1b f4 a295 11 6c 1f ba 99 4a 95 0c 3b c5 4e 00 e8 31 ba 99 4a 73 1b f4 a2 95 00 e8 1fba 99 4a 95 0c f4 a2 4e 00 e8 cf 77 a6 b0 e9 3e c0 76 d8 d1 96 05 8b 3c 5d cdeb 56 07 86 9a 31 07 f4 da 74 69 ed b5 12 23 bc 70 45 2c 62 f2 54 2500 00 003a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 00 00 00 00 0000 00 00 00 22 25 58 46 89 60 e3 20 bf aa 04 b1 74组织的验证指令为84 81 92 1930 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 536e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77a6 b0 11 2a f7 1b bd 82 00 80 00 00 00 27 01 00 00 a6 a0 03 1b f4 a2 95 11 6c1f ba 99 4a 95 0c 3b c5 4e 00 e8 31 ba 99 4a 73 1b f4 a2 95 00 e8 1f ba 99 4a95 0c f4 a2 4e 00 e8 cf 77 a6 b0 e9 3e c0 76 d8 d1 96 05 8b 3c 5d cd eb 56 0786 9a 31 07 f4 da 74 69 ed b5 12 23 bc 70 45 2c 62 f2 54 2500 00 00 3a 63 7811 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 00 00 00 00 00 00 00 0000 22 25 58 46 89 60 e3 20 bf aa 04 b1 74。
客户端使用会话密钥28 73 0F 4A 73 75 8F 91 F8 18 29 37 46 52 62 70 对验证指令进行签名得到的第二签名数据为ae 3c b5 6f 17 1f 5a 35。
步骤109:云服务器从数据库中找到与验证指令中的第二会话标识绑定的目的授权码,找到与目的授权码绑定的会话密钥,使用找到的会话密钥根据第二签名数据对验证指令进行验签,验签通过则执行步骤110;验签未通过则向客户端返回验签失败的信息。
例如,云服务器接收到验证指令为84 81 92 19 30 c5 e6 e0 68 61 c4 32 3a63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f190 44 11 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1b bd 82 0080 00 00 00 27 01 00 00 a6 a0 03 1b f4 a2 95 11 6c 1f ba 99 4a 95 0c 3b c5 4e00 e8 31 ba 99 4a 73 1b f4 a2 95 00 e8 1f ba 99 4a 95 0c f4 a2 4e 00 e8 cf 77a6 b0 e9 3e c0 76 d8 d1 96 05 8b 3c 5d cd eb 56 07 86 9a 31 07 f4 da 74 69 edb5 12 23 bc 70 45 2c 62 f2 54 2500 00 00 3a 63 78 11 5d b7 df 9e c8 84 85 c34c 51 f0 10 4c 53 6e 70 a1 00 00 00 00 00 00 00 00 00 22 25 58 46 89 60 e3 20bf aa 04 b1 74,获取验证指令中第一个字节上的数据84作为加密标识;获取验证指令中第二字节至第六十五字节上的数据81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 5db7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11 ed92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1b bd 82 00作为第二会话标识;获取第六十六字节至第六十九字节上的数据80 00 00 00作为数据长度;获取第七十字节至第七十三字节上的数据27 01 00 00作为验证指令标识,获取验证指令中第七十四字节至第七字节上的数据a6 a0 03 1b f4 a2 95 11 6c 1f ba 99 4a 95 0c 3b c5 4e00 e8 31 ba 99 4a 73 1b f4 a2 95 00 e8 1f ba 99 4a 95 0c f4 a2 4e 00 e8 cf 77a6 b0 e9 3e c0 76 d8 d1 96 05 8b 3c 5d cd eb 56 07 86 9a 31 07 f4 da 74 69 edb5 12 23 bc 70 45 2c 62 f2 54 2500 00 00 3a 63 78 11 5d b7 df 9e c8 84 85 c34c 51 f0 10 4c 53 6e 70 a1 00 00 00 00 00 00 00 00 00 22 25 58 46 89 60 e3 20bf aa 04 b1 74作为第二加密数据。
云服务器接收的第二签名数据为ae 3c b5 6f 17 1f 5a 35。
具体地,云服务器使找到的用会话密钥根据第二签名数据对验证指令进行验签,具体为:云服务器使用会话密钥对验证指令进行签名得到签名数据,判断得到的签名数据是否与接收的第二签名数据一致,是则验签通过,否则验签未通过。
可选地,本实施例中上述步骤108还可以为:客户端提示用户输入验证码,获取到用户输入的验证码时,使用会话密钥对用户输入的验证码、哈希值和第二会话标识进行加密得到第二加密数据,根据第二会话标识和第二加密数据组织验证指令;
相应地,上述步骤109中,具体包括:
步骤1091:云服务器使用会话密钥对验证指令中的第二加密数据进行解密得到验证码、哈希值和第二会话标识,判断解密得到的第二会话标识是否与验证指令中的第二会话标识一致,是则执行步骤1092,否则向客户端返回验证失败的信息;
步骤1092:云服务器从数据库中找到与验证指令中的第二会话标识绑定的目的授权码,判断解密得到哈希值是否与目的授权码绑定的哈希值一致,是则执行步骤1093;否则向客户端返回验证失败的信息;
步骤1093:云服务器找到与目的授权码绑定的话会话密钥,使用找到的用会话密钥根据第二签名数据对验证指令进行验签,验签通过则执行步骤110;验签未通过则向客户端返回验签失败的信息。
可选地,步骤109之前还包括:云服务器从数据库中查找与验证指令中的第二会话标识一致的第二会话标识,若查找到则执行步骤109,若未查找到则向客户端返回验证失败的结果。
步骤110:云服务器使用找到的会话密钥对验证指令中的第二加密数据进行解密得到验证码,找到与目的授权码绑定的目的验证码,判断解密得到的验证码是否与目的验证码一致,是则将验证状态设置为成功的状态,将成功的状态与目的授权码绑定,向客户端返回验证成功的结果,否则向客户端返回验证失败的结果。
本实施例中,验证状态默认为验证失败的状态或未验证的状态。
例如,云服务器使用找到的会话密钥对验证指令中的第二加密数据进行解密得到验证码1234567812345678,找到与目的授权码PNCM9UA73CKZY4G6绑定的验证码1234567812345678,判断解密得到的验证码与找到的目的验证码一致,则向客户端返回验证成功的结果00 00 00 00。
步骤111:客户端接收到验证结果时,判断验证结果是否为成功,是则执行步骤112;否则报错,结束。
例如,客户端接收的验证结果为00 00 00 00,将00 00 00 00作为验证成功的结果。
可选地,上述步骤110中还包括:云服务器使用会话密钥对验证成功的结果或者验证失败的结果进行签名,得到签名数据,并将签名数据发送给客户端。
例如,云服务器使用会话密钥28 73 0F 4A 73 75 8F 91 F8 18 29 37 46 52 6270对验证成功的结果00 00 00 00进行签名,得到签名数据9e a8 67 6b 17 2f 53 ad。
相应地,步骤111之前还包括:客户端使用会话密钥根据接收的签名数据对接收的验证结果进行验签,验签通过则执行步骤111,验签未通过则报错,结束。
具体地,客户端使用会话密钥根据接收的签名数据对接收的验证结果进行验签,具体为:客户端使用会话密钥对接收的验证结果进行签名,得到签名数据,判断计算得到的签名数据是否与接收的签名数据一致,是则验签通过,否则验签未通过。
例如,客户端使用会话密钥28 73 0F 4A 73 75 8F 91 F8 18 29 37 46 52 6270对接收的验证结果00 00 00 00进行签名得到签名数据9e a8 67 6b 17 2f 53 ad,判断计算得到的签名数据与接收的签名数据一致,则验签通过。
步骤112:客户端使用会话密钥对请求参数、哈希值、预设的可执行文件名称进行加密得到第三加密数据,根据第二会话标识和第三加密数据组织运行指令,使用会话密钥对运行指令进行签名得到第三签名数据,将运行指令和第三签名数据发送给云服务器。
具体地,客户端根据第二会话标识和第三加密数据组织运行指令,具体为:客户端根据加密标识、运行指令标识、第二会话标识、数据长度和第三加密数据组织运行指令。
例如,客户端使用会话密钥28 73 0F 4A 73 75 8F 91 F8 18 29 37 46 52 6270对请求参数
0D 43 3C BA C8 C9 56 04 84 B0 E3 0E 62 43 E1 16
FA 0F 55 FC E9 52 90 F0 63 4F A4 1A B8 CE 1D 01
C2 2D 65 AE 46 38 13 F4 33 A3 25 D4 18 6F BF AF
8E 73 06 39 63 5B 1C 03 11 D9 33 22 E1 3C 20 B6
10 95 9B 4F C3 BB BC 0D 3B 18 EE 4F 28 D4 0F 50
11 84 D6 CC 4E EF 64 51 8B 61 C1 0D 6A A0 E5 9F
66 3F D9 85 22 1E 3E C8 50 FC 9D D9 77 59 C3 38
89 60 E0 6B 3A EF C1 F0 97 54 F0 90 76 79 05 F5、哈希值75ff 1c c1 786f 5f 82 f5 3d ee 89 91 7d d0 df 4e 70 a0 a0 AA BB CC CC DD EE 11 22 33 44 5566和预设的可执行文件名称ftcloudshell_x86.dll进行加密得到第三加密数据a6 a0 031b f4 a2 95 11 6c 1f ba 99 4a 95 0c 3b c5 4e 00 e8 31 07 f4 da 00 00 00 00 0000 00 00 00 00 00 00 ad ef 89 23 14 89 bc af 00 22 58 63 98 14 29 ab cb ef ffee aa de bd fd ab 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 e9 3e c0 76 d8 d196 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 12 23 bc 70 45 2c 62 20 bf aa 04b1 74 1e f2 54 25 11 2a f7 1b bd f7 df c3 f9 d1 9e e5 59 f6 ed,根据加密标识84、运行指令标识28 01 00 00、第二会话标识81 92 19 30 c5 e6 e0 68 61 c4 32 3a 6378 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 9044 11 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1b bd 82 00、数据长度80 00 00 00和第三加密数据a6 a0 03 1b f4 a2 95 11 6c 1f ba 99 4a 95 0c3b c5 4e 00 e8 31 07 f4 da 00 00 00 00 00 00 00 00 00 00 00 00 ad ef 89 23 1489 bc af 00 22 58 63 98 14 29 ab cb ef ff ee aa de bd fd ab 48 b3 cb 16 20 466c 75 9e 59 cf 77 a6 b0 e9 3e c0 76 d8 d1 96 92 19 30 c5 e6 e0 68 61 c4 32 3a63 78 11 12 23 bc 70 45 2c 62 20 bf aa 04 b1 74 1e f2 54 25 11 2a f7 1b bd f7df c3 f9 d1 9e e5 59 f6 ed组织得到的运行指令为84 81 92 19 30 c5 e6 e0 68 61c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1bbd 82 00 80 00 00 00 28 01 00 00 a6 a0 03 1b f4 a2 95 11 6c 1f ba 99 4a 95 0c3b c5 4e 00 e8 31 07 f4 da 00 00 00 00 00 00 00 00 00 00 00 00 ad ef 89 23 1489 bc af 00 22 58 63 98 14 29 ab cb ef ff ee aa de bd fd ab 48 b3 cb 16 20 466c 75 9e 59 cf 77 a6 b0 e9 3e c0 76 d8 d1 96 92 19 30 c5 e6 e0 68 61 c4 32 3a63 78 11 12 23 bc 70 45 2c 62 20 bf aa 04 b1 74 1e f2 54 25 11 2a f7 1b bd f7df c3 f9 d1 9e e5 59 f6 ed,使用会话密钥28 73 0F 4A 73 75 8F 91 F8 18 29 37 4652 62 70对运行指令进行签名得到第三签名数据eb eb 6f fb f7 1f d9 dd。
步骤113:云服务器接收到运行指令和第三签名数据时,从数据库中查找与运行指令中的第二会话标识一致的第二会话标识,若查找到则执行步骤114;若未查找到则向客户端返回错误信息;
例如,云服务器到运行指令为84 81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 7811 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 4411 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1b bd 82 00 80 0000 00 28 01 00 00 a6 a0 03 1b f4 a2 95 11 6c 1f ba 99 4a 95 0c 3b c5 4e 00 e831 07 f4 da 00 00 00 00 00 00 00 00 00 00 00 00 ad ef 89 23 14 89 bc af 00 2258 63 98 14 29 ab cb ef ff ee aa de bd fd ab 48 b3 cb 16 20 46 6c 75 9e 59 cf77 a6 b0 e9 3e c0 76 d8 d1 96 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 12 23bc 70 45 2c 62 20 bf aa 04 b1 74 1e f2 54 25 11 2a f7 1b bd f7 df c3 f9 d1 9ee5 59 f6 ed,获取运行指令中第一个字节上的数据84作为加密标识,获取运行指令中第二字节至第六十五字节上的数据81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 9248 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1b bd 82 00作为第二会话标识,获取运行指令中第六十六字节至第六十九字节上的数据80 00 00 00作为数据长度,获取验证指令中第七十字节至第七十三字节上的数据28 01 00 00作为运行指令标识,获取第七十四字节至第二百零一字节上的数据a6 a0 03 1b f4 a2 95 11 6c 1f ba 99 4a 950c 3b c5 4e 00 e8 31 07 f4 da 00 00 00 00 00 00 00 00 00 00 00 00 ad ef 89 2314 89 bc af 00 22 58 63 98 14 29 ab cb ef ff ee aa de bd fd ab 48 b3 cb 16 2046 6c 75 9e 59 cf 77 a6 b0 e9 3e c0 76 d8 d1 96 92 19 30 c5 e6 e0 68 61 c4 323a 63 78 11 12 23 bc 70 45 2c 62 20 bf aa 04 b1 74 1e f2 54 25 11 2a f7 1b bdf7 df c3 f9 d1 9e e5 59 f6 ed作为第三加密数据。
云服务器接收的第三签名数据为eb eb 6f fb f7 1f d9 dd。
步骤114:云服务器从数据库中找到与第二会话标识绑定的目的授权码,找到与目的授权码绑定的会话密钥,使用会话密钥根据第三签名数据对运行指令进行验签,验签通过执行步骤115,验签未通过则向客户端返回运行失败的结果。
具体地,上述云服务器使用会话密钥根据第三签名数据对运行指令进行验签,具体为:云服务器使用会话密钥对运行指令进行签名得到签名数据,判断签名得到的签名数据是否与接收的第三签名数据一致,是则验签通过,否则验签未通过。
例如,云服务器从数据库中找到与第二会话标识81 92 19 30 c5 e6 e0 68 61c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1bbd 82 00绑定的目的授权码PNCM9UA73CKZY4G6,找到与目的授权码PNCM9UA73CKZY4G6绑定的会话密钥28 73 0F 4A 73 75 8F 91 F8 18 29 37 46 52 62 70,使用会话密钥对运行指令进行签名得到签名数据,判断签名得到的签名数据eb eb 6f fb f7 1f d9 dd与接收的第三签名数据eb eb 6f fb f7 1f d9 dd一致,则验签通过。
步骤115:云服务器使用会话密钥对第三加密数据进行解密得到哈希值、请求参数和可执行文件名称,判断与目的授权码绑定的验证状态是否为成功的状态,并判断解密得到的哈希值是否与目的授权码绑定的哈希值一致,如果判断结果均为是则执行步骤116,如果判断结果不均为是则向客户端返回错误信息;
客户端接收到错误信息时,报错,结束。
步骤116:云服务器从数据库中找到与目的授权码绑定的文件系统和可执行文件路径,根据可执行文件路径找到自身保存的可执行文件,根据文件系统、请求参数和可执行文件名称在虚拟空间中运行找到的可执行文件得到运行结果,将运行结果返回客户端;
例如,云服务器从数据库中找到与目的授权码PNCM9UA73CKZY4G6绑定的文件系统和可执行文件路径D:\Server\lib\ftcloudshell_x86.dll,根据可执行文件路径D:\Server\lib\ftcloudshell_x86.dll找到自身保存的可执行文件,根据文件系统、请求参数
0D 43 3C BA C8 C9 56 04 84 B0 E3 0E 62 43 E1 16
FA 0F 55 FC E9 52 90 F0 63 4F A4 1A B8 CE 1D 01
C2 2D 65 AE 46 38 13 F4 33 A3 25 D4 18 6F BF AF
8E 73 06 39 63 5B 1C 03 11 D9 33 22 E1 3C 20 B6
10 95 9B 4F C3 BB BC 0D 3B 18 EE 4F 28 D4 0F 50
11 84 D6 CC 4E EF 64 51 8B 61 C1 0D 6A A0 E5 9F
66 3F D9 85 22 1E 3E C8 50 FC 9D D9 77 59 C3 38
89 60 E0 6B 3A EF C1 F0 97 54 F0 90 76 79 05 F5和可执行文件名称ftcloudshell_x86.dll在虚拟空间中运行找到的可执行文件得到运行结果01 02 03 0405 06 07 08 09 0a 0b 0c 0d 0e 0f 00,将运行结果返回客户端。
本实施例中,虚拟空间可以具体为虚拟机或者沙盒。
本实施例中,步骤116之后还包括:云服务器将验证状态与目的授权码进行解绑,或者将与目的授权码绑定的验证状态设置为未验证的状态,或者将与目的授权码绑定的验证状态设置为验证失败的状态。
可选地,步骤116之后还包括:云服务器将第二会话标识与目的授权码进行解绑;进一步地,步骤116之后还包括:云服务器将会话密钥和哈希值与目的授权码进行解绑。
步骤117:客户端接收运行结果,结束。
本实施例中,步骤100之前还包括:云管理平台获取可执行文件路径、文件系统和用户输入的目的验证码,生成目的授权码,将可执行文件路径、文件系统、生成的目的授权码和用户输入的目的验证码进行绑定并保存到数据库。
本实施例中,云管理平台生成目的授权码可以具体为:云服务器调用随机数函数生成目的授权码;或者云服务器通过生成随机数的算法生成目的授权码。
例如,目的验证码为1234567812345678、目的授权码为PNCM9UA73CKZY4G6、可执行文件路径为D:\Server\lib\ftcloudshell_x86.dll。
本实施例中,上述步骤116中,云服务器获取与目的授权码绑定的可执行文件路径,根据可执行文件路径找到自身保存的可执行文件,具体为:云服务器获取与目的授权码绑定的可执行文件的相对路径,使用可执行文件的相对路径与自身保存的预设路径进行拼接得到拼接路径,根据拼接路径找到自身保存的可执行文件;
例如,云服务器从数据库中找到的与目的授权码绑定的可执行文件的相对路径为\lib\ftcloudshell_x86.dll,使用可执行文件的相对路径\lib\ftcloudshell_x86.dll与自身保存的预设路径D:\Server进行拼接得到拼接路径D:\Server\lib\ftcloudshell_x86.dll,根据拼接路径D:\Server\lib\ftcloudshell_x86.dll找到自身保存的可执行文件。
相应地,上述云管理平台获取可执行文件路径,具体为:云管理平台获取可执行文件的相对路径;例如,云管理平台获取可执行文件的相对路径为\lib\ftcloudshell_x86.dll;
上述云管理平台将可执行文件路径、文件系统、生成的目的授权码和用户输入的目的验证码进行绑定并保存到数据库,具体为:云管理平台将可执行文件的相对路径、文件系统、生成的目的授权码和用户输入的目的验证码进行绑定并保存到数据库。
可选地,步骤116中,云服务器将运行结果返回客户端,具体为:云服务器根据运行结果组织运行结果响应数据,将运行结果响应数据返回客户端;
相应地,步骤117中,客户端接收到运行结果,具体为:客户端接收到运行结果响应数据;步骤117中还包括:客户端根据运行结果响应数据判断是否成功运行可执行文件,是则结束;否则报错,结束。
可选地,步骤116中,云服务器将运行结果返回客户端具体为:云服务器使用会话密钥对运行结果进行加密得到加密的运行结果,根据运行结果组织运行结果响应数据,使用会话密钥对运行结果响应数据进行签名得到第四签名数据,将运行结果响应数据和第四签名数据返回客户端;
相应地,步骤117中,客户端接收到运行结果,具体为:客户端使用会话密钥根据接收的第四签名数据对接收的运行结果响应数据验签,验签通过时,使用会话密钥对运行结果响应数据中加密的运行结果进行解密得到运行结果;验签未通过时,报错,结束。
具体地,上述文件系统中包括密钥文件。
相应地,上述可执行文件中包括核心算法。
例如,核心算法为3DES算法、DES算法、SHA1算法、SHA256、RAS算法中的一种或多种。
需要说明的是,客户端接收到的运行结果可以是客户端运行本地应用程序的最终结果;也可以将运行结果作为客户端运行本地应用程序的中间数据,在执行本地应用程序的后续代码时使用保存的运行结果,具体参考下面三个实例:
实例一,客户端生成随机数之后,在使用随机数之前,对随机数进行验证,具体如下:
客户端使用自身保存的第一公钥对随机数进行加密得到随机数密文,客户端组织运行指令时将随机数密文作为请求参数;
相应地,上述云服务器根据文件系统、请求参数和可执行文件名称在虚拟空间中运行找到的可执行文件,具体为:云服务器根据可执行文件名称启动找到的可执行文件,使用文件系统中的第一私钥对随机数密文解密得到随机数,使用文件系统中的第二私钥对解密得到的随机数进行加密得到运行结果,将运行结果发送给客户端;
客户端接收到运行结果之后使用自身保存的第二公钥对运行结果进行解密得到解密数据,判断解密数据是否与生成的随机数一致,是则验证成功(验证成功时可以使用随机数,例如将随机数作为加密密钥);否则报错,结束。
实例二,客户端获取加密的文档数据(例如,加密的PDF文档数据、加密的Word文档数据),将加密的文档数据作为请求参数发送给云服务器;例如,请求参数为
0D 43 3C BA C8 C9 56 04 84 B0 E3 0E 62 43 E1 16
FA 0F 55 FC E9 52 90 F0 63 4F A4 1A B8 CE 1D 01
C2 2D 65 AE 46 38 13 F4 33 A3 25 D4 18 6F BF AF
8E 73 06 39 63 5B 1C 03 11 D9 33 22 E1 3C 20 B6
10 95 9B 4F C3 BB BC 0D 3B 18 EE 4F 28 D4 0F 50
11 84 D6 CC 4E EF 64 51 8B 61 C1 0D 6A A0 E5 9F
66 3F D9 85 22 1E 3E C8 50 FC 9D D9 77 59 C3 38
89 60 E0 6B 3A EF C1 F0 97 54 F0 90 76 79 05 F5;相应地,上述步骤116中,云服务器根据文件系统、请求参数和可执行文件名称在虚拟空间中运行找到的可执行文件,具体为:云服务器根据可执行文件名称启动找到的可执行文件,使用文件系统中的密钥对加密的文档数据解密得到运行结果,将运行结果发送给客户端;客户端收到运行结果后,根据运行结果进行显示;
例如,客户端接收的运行结果为:01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e0f 00。
实例三,客户端将加密的密码作为请求参数;
相应地,上述云服务器根据文件系统、请求参数和可执行文件名称在虚拟空间中运行找到的可执行文件,具体为:云服务器根据可执行文件名称启动找到的可执行文件,使用文件系统中的密钥对加密的密码进行解密得到密码明文,将密码明文作为运行结果返回给客户端;
客户端获取运行结果后,用户使用密码明文打开加密的文档。例如,用户在加密的word/PDF/ZIP文档的密码输入框中输入密码明文后可以打开文档。
实施例3
本实施例提供一种安全运行可执行文件的方法,如图3所示,包括:
步骤200:客户端根据处理器标识、物理地址、本地主机名称和IP地址计算哈希值,使用自身保存的RSA公钥对自身保存的预设的授权码、哈希值进行加密得到第一加密数据,根据第一加密数据、预设的第一会话标识组织连接指令,使用预设密钥对连接指令进行签名得到第一签名数据。
步骤201:客户端向云服务器发送连接指令和第一签名数据。
步骤202:云服务器使用自身保存的预设密钥根据所述第一签名数据对连接指令进行验签,验签通过则执行步骤203,验签未通过则向客户端返回验签失败的信息。
步骤203:云服务器判断自身保存的第一会话标识是否与连接指令中的第一会话标识一致,是则执行步骤204,否则向客户端返回连接失败的信息。
步骤204:云服务器使用自身保存的RSA私钥对连接指令中的第一加密数据进行解密得到授权码和哈希值,从数据库中查找与解密得到的授权码一致的目的授权码,若查找到则执行步骤205;若未查找到则向客户端返回连接失败的信息。
步骤205:云服务器生成第二会话标识和会话密钥,将第二会话标识、会话密钥和解密得到的哈希值与目的授权码进行绑定,使用自身保存的RSA私钥对第二会话标识和会话密钥进行加密得到第五加密数据,根据第五加密数据生成连接响应,使用自身保存的预设密钥对连接响应签名得到连接响应的签名数据,将连接响应和连接响应的签名数据返回客户端。
本实施例中,在步骤202-步骤204中云服务器向客户端返回连接失败的信息或者验签失败的信息之后,客户端接收到连接失败的信息或者验签失败的信息时,报错,结束。
步骤206:客户端使用自身保存的预设密钥根据接收的连接响应的签名数据对接收的连接响应进行验签,验签通过则执行步骤207,验签未通过则报错,结束。
步骤207:客户端使用自身保存的RSA公钥对连接响应中第五加密数据进行解密得到第二会话标识和会话密钥。
上述步骤200-步骤207与实施例2中的步骤100-步骤107相同,在此不再赘述。
步骤208:客户端提示用户输入验证码,获取到用户输入的验证码时,使用会话密钥对请求参数、哈希值、验证码、预设的可执行文件名称进行加密得到第四加密数据,根据第二会话标识和第四加密数据组织运行指令,使用会话密钥对运行指令进行签名得到第五签名数据,将运行指令和第五签名数据发送给云服务器。
具体地,客户端根据第二会话标识和第四加密数据组织运行指令,具体为:客户端根据加密标识、运行指令标识、第二会话标识、数据长度和第四加密数据组织运行指令。
例如,客户端使用会话密钥28 73 0F 4A 73 75 8F 91 F8 18 29 37 46 52 6270对请求参数
0D 43 3C BA C8 C9 56 04 84 B0 E3 0E 62 43 E1 16
FA 0F 55 FC E9 52 90 F0 63 4F A4 1A B8 CE 1D 01
C2 2D 65 AE 46 38 13 F4 33 A3 25 D4 18 6F BF AF
8E 73 06 39 63 5B 1C 03 11 D9 33 22 E1 3C 20 B6
10 95 9B 4F C3 BB BC 0D 3B 18 EE 4F 28 D4 0F 50
11 84 D6 CC 4E EF 64 51 8B 61 C1 0D 6A A0 E5 9F
66 3F D9 85 22 1E 3E C8 50 FC 9D D9 77 59 C3 38
89 60 E0 6B 3A EF C1 F0 97 54 F0 90 76 79 05 F5、验证码1234567812345678、哈希值75 ff 1c c1 78 6f 5f 82 f5 3d ee 89 91 7d d0 df 4e 70a0 a0 AA BB CC CC DD EE 11 22 33 44 55 66和预设的可执行文件名称ftcloudshell_x86.dll进行加密得到第四加密数据00 22 58 63 98 14 29 ab cb ee ff ee aa de bdfd ab 48 b3 cb 16 d6 a0 03 1b f4 a2 95 11 6c 1f ba 99 4a 95 0c 3b c5 4e 00 e831 07 f4 da 00 00 00 00 00 00 00 00 00 00 00 00 ad ef 89 23 14 89 bc af 20 466c 75 9e 59 cf 77 a6 b0 e9 3e c0 76 d8 d1 96 92 19 30 c5 b1 74 1e f2 54 25 112a f7 1b bd f7 df c3 f9 d1 9e e5 59 f6 ed e6 e0 68 61 c4 32 3a 63 78 11 12 23bc 70 45 2c 62 20 bf aa 04,根据加密标识84、运行指令标识28 01 00 00、第二会话标识81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 759e 59 cf 77 a6 b0 11 2a f7 1b bd 82 00、数据长度80 00 00 00和第四加密数据00 2258 63 98 14 29 ab cb ee ff ee aa de bd fd ab 48 b3 cb 16 d6 a0 03 1b f4 a2 9511 6c 1f ba 99 4a 95 0c 3b c5 4e 00 e8 31 07 f4 da 00 00 00 00 00 00 00 00 0000 00 00 ad ef 89 23 14 89 bc af 20 46 6c 75 9e 59 cf 77 a6 b0 e9 3e c0 76 d8d1 96 92 19 30 c5 b1 74 1e f2 54 25 11 2a f7 1b bd f7 df c3 f9 d1 9e e5 59 f6ed e6 e0 68 61 c4 32 3a 63 78 11 12 23 bc 70 45 2c 62 20 bf aa 04组织得到的运行指令为84 81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7 df 9e c8 84 85c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 92 48 b3 cb 16 2046 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1b bd 82 00 80 00 00 00 28 01 00 00 00 2258 63 98 14 29 ab cb ee ff ee aa de bd fd ab 48 b3 cb 16 d6 a0 03 1b f4 a2 9511 6c 1f ba 99 4a 95 0c 3b c5 4e 00 e8 31 07 f4 da 00 00 00 00 00 00 00 00 0000 00 00 ad ef 89 23 14 89 bc af 20 46 6c 75 9e 59 cf 77 a6 b0 e9 3e c0 76 d8d1 96 92 19 30 c5 b1 74 1e f2 54 25 11 2a f7 1b bd f7 df c3 f9 d1 9e e5 59 f6ed e6 e0 68 61 c4 32 3a 63 78 11 12 23 bc 70 45 2c 62 20 bf aa 04,使用会话密钥28 73 0F 4A 73 75 8F 91 F8 18 29 37 46 52 62 70对运行指令进行签名得到第五签名数据cb ec 6f 3b e7 12 d9 d2。
步骤209:云服务器接收到运行指令和第五签名数据时,从数据库中查找与运行指令中的第二会话标识一致的第二会话标识,若查找到则执行步骤210;若未查找到则向客户端返回错误信息;
例如,云服务器到运行指令为84 81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 7811 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 4411 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1b bd 82 00 80 0000 00 28 01 00 00 00 22 58 63 98 14 29 ab cb ee ff ee aa de bd fd ab 48 b3 cb16 d6 a0 03 1b f4 a2 95 11 6c 1f ba 99 4a 95 0c 3b c5 4e 00 e8 31 07 f4 da 0000 00 00 00 00 00 00 00 00 00 00 ad ef 89 23 14 89 bc af 20 46 6c 75 9e 59 cf77 a6 b0 e9 3e c0 76 d8 d1 96 92 19 30 c5 b1 74 1e f2 54 25 11 2a f7 1b bd f7df c3 f9 d1 9e e5 59 f6 ed e6 e0 68 61 c4 32 3a 63 78 11 12 23 bc 70 45 2c 6220 bf aa 04,获取运行指令中第一个字节上的数据84作为加密标识,获取运行指令中第二字节至第六十五字节上的数据81 92 19 30 c5 e6 e0 68 61 c4 32 3a 63 78 11 5d b7df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95 e2 cc f1 90 44 11 ed 9248 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1b bd 82 00作为第二会话标识,获取运行指令中第六十六字节至第六十九字节上的数据80 00 00 00作为数据长度,获取验证指令中第七十字节至第七十三字节上的数据28 01 00 00作为运行指令标识,获取第七十四字节至第二百零一字节上的数据00 22 58 63 98 14 29 ab cb ee ff ee aa debd fd ab 48 b3 cb 16 d6 a0 03 1b f4 a2 95 11 6c 1f ba 99 4a 95 0c 3b c5 4e 00e8 31 07 f4 da 00 00 00 00 00 00 00 00 00 00 00 00 ad ef 89 23 14 89 bc af 2046 6c 75 9e 59 cf 77 a6 b0 e9 3e c0 76 d8 d1 96 92 19 30 c5 b1 74 1e f2 54 2511 2a f7 1b bd f7 df c3 f9 d1 9e e5 59 f6 ed e6 e0 68 61 c4 32 3a 63 78 11 1223 bc 70 45 2c 62 20 bf aa 04作为第四加密数据。
云服务器接收的第五签名数据为cb ec 6f 3b e7 12 d9 d2。
步骤210:云服务器从数据库中找到与第二会话标识绑定的目的授权码,找到与目的授权码绑定的会话密钥,使用会话密钥根据第五签名数据对运行指令进行验签,验签通过执行步骤211,验签未通过则向客户端返回运行失败的结果。
具体地,上述云服务器使用会话密钥根据第五签名数据对运行指令进行验签,具体为:云服务器使用会话密钥对运行指令进行签名得到签名数据,判断签名得到的签名数据是否与接收的第五签名数据一致,是则验签通过,否则验签未通过。
例如,云服务器从数据库中找到与第二会话标识81 92 19 30 c5 e6 e0 68 61c4 32 3a 63 78 11 5d b7 df 9e c8 84 85 c3 4c 51 f0 10 4c 53 6e 70 a1 63 44 95e2 cc f1 90 44 11 ed 92 48 b3 cb 16 20 46 6c 75 9e 59 cf 77 a6 b0 11 2a f7 1bbd 82 00绑定的目的授权码PNCM9UA73CKZY4G6,找到与目的授权码PNCM9UA73CKZY4G6绑定的会话密钥28 73 0F 4A 73 75 8F 91 F8 18 29 37 46 52 62 70,使用会话密钥对运行指令进行签名得到签名数据,判断签名得到的签名数据cb ec 6f 3b e7 12 d9 d2与接收的第五签名数据cb ec 6f 3b e7 12 d9 d2一致,则验签通过。
步骤211:云服务器使用会话密钥对第五加密数据进行解密得到哈希值、请求参数、验证码和可执行文件名称,判断与目的授权码绑定的目的验证码是否与解密得到的验证码一致,并判断解密得到的哈希值是否与目的授权码绑定的哈希值一致,如果判断结果均为是则执行步骤212,否则向客户端返回错误信息;
客户端接收到错误信息时,报错,结束。
步骤212:云服务器从数据库中找到与目的授权码绑定的文件系统和可执行文件路径,根据可执行文件路径找到自身保存的可执行文件,根据文件系统、请求参数和可执行文件名称在虚拟空间中运行找到的可执行文件得到运行结果,将运行结果返回客户端;
具体地,步骤212与实施例2中步骤116相同,在此不再赘述。
可选地,步骤212之后还包括:云服务器将第二会话标识与目的授权码进行解绑;进一步地,步骤212之后还包括:云服务器将会话密钥和哈希值与目的授权码进行解绑。
本实施例中,虚拟空间可以具体为虚拟机或者沙盒。
步骤213:客户端接收运行结果,结束。
本实施例中,步骤200之前还包括:云管理平台获取可执行文件路径、文件系统和用户输入的目的验证码,生成目的授权码,将可执行文件路径、文件系统、生成的目的授权码和用户输入的目的验证码进行绑定并保存到数据库。
本实施例中,云管理平台生成目的授权码可以具体为:云服务器调用随机数函数生成目的授权码;或者云服务器通过生成随机数的算法生成目的授权码。
例如,目的验证码为1234567812345678、目的授权码为PNCM9UA73CKZY4G6、可执行文件路径为D:\Server\lib\ftcloudshell_x86.dll。
可选地,本实施例中,上述云服务器获取与目的授权码绑定的可执行文件路径,根据可执行文件路径找到自身保存的可执行文件,具体为:云服务器获取与目的授权码绑定的可执行文件的相对路径,使用可执行文件的相对路径与自身保存的预设路径进行拼接得到拼接路径,根据拼接路径找到自身保存的可执行文件;
例如,云服务器从数据库中找到的与目的授权码绑定的可执行文件的相对路径为\lib\ftcloudshell_x86.dll,使用可执行文件的相对路径\lib\ftcloudshell_x86.dll与自身保存的预设路径D:\Server进行拼接得到拼接路径D:\Server\lib\ftcloudshell_x86.dll,根据拼接路径D:\Server\lib\ftcloudshell_x86.dll找到自身保存的可执行文件。
相应地,上述云管理平台获取可执行文件路径,具体为:云管理平台获取可执行文件的相对路径;例如,云管理平台获取可执行文件的相对路径为\lib\ftcloudshell_x86.dll;
上述云管理平台将可执行文件路径、文件系统、生成的目的授权码和用户输入的目的验证码进行绑定并保存到数据库,具体为:云管理平台将可执行文件的相对路径、文件系统、生成的目的授权码和用户输入的目的验证码进行绑定并保存到数据库。
可选地,上述云服务器将运行结果返回客户端,具体为:云服务器根据运行结果组织运行结果响应数据,将运行结果响应数据返回客户端;
相应地,上述户端接收到运行结果,具体为:客户端接收到运行结果响应数据;步骤213中还包括:客户端根据运行结果响应数据判断是否成功运行可执行文件,是则结束;否则报错,结束。
可选地,上述云服务器将运行结果返回客户端具体为:云服务器使用会话密钥对运行结果进行加密得到加密的运行结果,根据运行结果组织运行结果响应数据,使用会话密钥对运行结果响应数据进行签名得到第四签名数据,将运行结果响应数据和第四签名数据返回客户端;
相应地,上述客户端接收到运行结果,具体为:客户端使用会话密钥根据接收的第四签名数据对接收的运行结果响应数据验签,验签通过时,使用会话密钥对运行结果响应数据中加密的运行结果进行解密得到运行结果;验签未通过时,报错,结束。
具体地,上述文件系统中包括密钥文件。
相应地,上述可执行文件中包括核心算法。
例如,核心算法为3DES算法、DES算法、SHA1算法、SHA256、RAS算法中的一种或多种。
需要说明的是,客户端接收到的运行结果可以是客户端运行本地应用程序的最终结果;也可以将运行结果作为客户端运行本地应用程序的中间数据,在执行本地应用程序的后续代码时使用保存的运行结果,具体实例参考实施例2,在此不再赘述。
实施例4
本实施例提供一种安全运行可执行文件的系统,如图4所示,包括客户端1、云服务器2和云管理平台3;
客户端1包括:
哈希模块101,用于根据处理器标识、物理地址、本地主机名称和I P地址计算哈希值;
第一组织模块102,用于根据预设的授权码和哈希模块101计算得到的哈希值组织连接指令;
第一发送模块103,用于将第一组织模块102的连接指令发送给云服务器2;
第一接收模块104,用于接收来自云服务器2的第二会话标识;用于接收来自云服务器2的连接失败的信息;
第一提示模块105,用于第一接收模块104接收到第二会话标识时,提示用户输入验证码;
第一获取模块106,用于获取用户输入的验证码;
第二组织模块107,用于根据预设的可执行文件名称、请求参数、哈希模块101计算得到的哈希值、第一获取模块106获取的验证码和第一接收模块104接收的第二会话标识组织运行指令;
第一发送模块103,还用于将第二组织模块107组织的运行指令发送给云服务器2;
第二接收模块108,用于接收来自云服务器2的运行结果;用于接收来自云服务器2的错误信息;
云服务器2包括:
第三接收模块201,用于接收来自客户端1的连接指令;
第一查找模块202,用于从数据库中查找与第三接收模块201接收的连接指令中的授权码一致的目的授权码;
第一生成模块203,用于当第一查找模块202从数据库中查找与第三接收模块201接收的连接指令中的授权码一致的目的授权码时,生成第二会话标识;
第一绑定模块204,用于将第一生成模块203生成的第二会话标识和第三接收模块201接收的连接指令中的哈希值与第一查找模块202查找到的目的授权码进行绑定;
第二发送模块205,用于将第一生成模块203生成的第二会话标识返回客户端1;用于当第一查找模块202从数据库中没有查找与第三接收模块201接收的连接指令中的授权码一致的目的授权码时,向客户端1返回连接失败的信息;
第四接收模块206,用于接收来自客户端1的运行指令;
第二查找模块207,用于从数据库中查找与第四接收模块206接收的运行指令中的第二会话标识一致的第二会话标识;
第三查找模块208,用于当第二查找模块207从数据库中查找到与第四接收模块206接收的运行指令中的第二会话标识一致的第二会话标识时,从数据库中找到与第二会话标识绑定的目的授权码;
第一判断模块209,用于判断第四接收模块206接收的运行指令中的哈希值是否与第三查找模块208查找到的目的授权码绑定的哈希值一致,并判断第四接收模块206接收的运行指令中的验证码是否与第三查找模块208查找到的目的授权码绑定的目的验证码一致;
第二获取模块210,用于当第一判断模块209判断结果均为是时,获取与第三查找模块208查找到的目的授权码绑定的可执行文件路径和文件系统;
第五保存模块211,用于保存可执行文件;
第四查找模块212,用于根据第二获取模块210获取的可执行文件路径找到第五保存模块211保存的可执行文件;
执行模块213,用于根据文件系统、运行指令中的可执行文件名称、请求参数在虚拟空间中运行第四查找模块212找到的可执行文件得到运行结果;
第二发送模块205,还用于将执行模块213得到的运行结果返回客户端1;用于当第二查找模块207从数据库中未查找到与第四接收模块206接收的运行指令中的第二会话标识一致的第二会话标识时,向客户端1返回错误信息;用于当第一判断模块209判断结果不均为是时,向客户端1返回错误信息;
云管理平台3包括:
第三获取模块301,用于获取可执行文件路径、文件系统和用户输入的目的验证码;
第二生成模块302,用于第三获取模块301获取可执行文件路径、文件系统和用户输入的目的验证码时,生成目的授权码;
第二绑定模块303,用于将第三获取模块301获取的可执行文件路径、文件系统、用户输入的目的验证码和第二生成模块302生成的目的授权码进行绑定并保存到数据库。
可选地,上述客户端1还包括第三组织模块;
第三组织模块,用于根据第一接收模块104接收的第二会话标识、第一获取模块106获取的用户输入的验证码组织验证指令;
上述第一发送模块103,还用于将第三组织模块组织的验证指令发送给云服务器2;
上述第二接收模块108,还用于接收来自云服务器2的验证成功的结果;用于接收来自云服务器2的验证失败的结果;
上述第二组织模块107替换为第四组织模块;
第四组织模块,用于当第二接收模块108接收到来自云服务器的验证成功的结果时,根据预设的可执行文件名称、请求参数、哈希模块101计算得到的哈希值和第一接收模块104接收的第二会话标识组织运行指令;
上述云服务器2还包括:第五查找模块、第二判断模块、设置模块、第三绑定模块;
上述第三接收模块201,还用于接收来自客户端1的验证指令;
第五查找模块,用于从数据库中找到与第三接收模块201接收的验证指令中的第二会话标识绑定的目的授权码,找到与目的授权码绑定的目的验证码;
第二判断模块,用于判断第三接收模块201接收的验证指令中的验证码是否与第五查找模块找到的目的验证码一致;
设置模块,用于当第二判断模块判断结果为是时,将验证状态设置为成功的状态;
第三绑定模块,用于将设置模块设置的成功的状态与第五查找模块找到的目的授权码绑定;
上述第二发送模块205,还用于当第二判断模块判断结果为是时,向客户端1返回验证成功的结果;用于当第二判断模块判断结果为否时,向客户端1返回验证失败的结果;
上述第一判断模块209替换为第三判断模块;
第三判断模块,用于判断与第三查找模块208查找到的目的授权码绑定的验证状态是否为成功的状态,并且判断第四接收模块206接收的运行指令中的哈希值是否与第三查找模块208查找到的目的授权码绑定的哈希值一致;
上述第二获取模块210,还用于当第三判断模块判断结果均为是时,获取与第三查找模块208查找到的目的授权码绑定的可执行文件路径和文件系统;
上述第二发送模块205,还用于当第三判断模块判断结果不均为是时,向客户端1返回错误信息。
可选地,上述客户端1还包括第一保存模块;
第一保存模块,用于保存RSA公钥和预设密钥;
上述第一组织模块102,具体用于:使用第一保存模块保存的RSA公钥对授权码和哈希值进行加密得到第一加密数据,根据第一加密数据组织连接指令,使用第一保存模块保存的预设密钥对连接指令进行签名得到第一签名数据;
上述第一发送模块103,具体用于将第一组织模块102组织的连接指令和第一组织模块102得到的第一签名数据发送给云服务器2;
上述第一接收模块104,具体用于接收来自云服务器2的连接响应数据和连接响应的签名数据,使用第一保存模块保存的预设密钥根据接收的连接响应的签名数据对接收的连接响应进行验签,验签通过则使用第一保存模块保存的RSA公钥对连接响应中第五加密数据进行解密得到第二会话标识;
上述第三接收模块201,还用于接收来自客户端1的第一签名数据;
上述云服务器2还包括第二保存模块、第一验签模块、第一解密模块、第一加密模块、第一签名模块、第一解密模块、第五组织模块;
第二保存模块,用于保存RSA私钥和预设密钥;
第一验签模块,用于使用第二保存模块保存的预设密钥根据第三接收模块201接收的第一签名数据对连接指令进行验签;
第一解密模块,用于第一验签模块验签通过时,使用第二保存模块保存的RSA私钥对第三接收模块201接收的连接指令中的第一加密数据进行解密得到授权码和哈希值;
上述第一查找模块202,具体用于从数据库中查找与第一解密模块解密得到的授权码一致的目的授权码;
上述第一绑定模块204,具体用于将第一生成模块203生成的第二会话标识和第一解密模块解密得到的哈希值与目的授权码进行绑定;
第一加密模块,用于使用第二保存模块保存的RSA私钥对第一生成模块203生成的第二会话标识进行加密得到第五加密数据;
第五组织模块,用于根据第一加密模块得到的第五加密数据生成连接响应;
第一签名模块,用于使用第二保存模块保存的预设密钥对第五组织模块生成的连接响应签名得到连接响应的签名数据;
上述第二发送模块205,具体用于将第五组织模块生成的连接响应和第一签名模块得到的连接响应的签名数据返回客户端1;
上述第二发送模块205,还用于第一验签模块验签未通过时,向客户端1返回验签失败的信息。
可选地,上述客户端1还包括第二加密模块、第二签名模块、第三签名模块;
上述第一接收模块104,还用于接收来自云服务器2的会话密钥;
第二加密模块,用于使用第一接收模块104接收的会话密钥对用户输入的验证码进行加密得到第二加密数据;
上述第三组织模块,具体用于根据第一接收模块104接收的第二会话标识和第二加密模块得到的第二加密数据组织验证指令;
第二签名模块,用于使用第一接收模块104接收的会话密钥对第三组织模块组织的验证指令进行签名得到第二签名数据;
上述第一发送模块103,具体用于将第三组织模块组织的验证指令和第二签名模块得到的第二签名数据发送给云服务器2;
上述第二接收模块108,还用于接收来自云服务器2的验签失败的信息;
上述第四组织模块,具体用于使用第一接收模块104接收的会话密钥对预设的可执行文件名称、请求参数、哈希值进行加密得到第三加密数据,根据第三加密数据和第二会话标识组织运行指令;
第三签名模块,用于使用第一接收模块104接收的会话密钥对运行指令进行签名得到第三签名数据;
上述第一发送模块103,还用于将第三签名数据发送给云服务器2;
上述第二接收模块108,具体用于接收来自云服务器2的第四签名数据和运行结果响应数据,使用第一接收模块104接收的会话密钥根据接收的第四签名数据对接收的运行结果响应数据验签,验签通过时,使用会话密钥对运行结果响应数据中加密的运行结果进行解密得到运行结果;
上述云服务器2还包括密钥生成模块、第二验签模块、第二解密模块、第三加密模块和第四签名模块;
密钥生成模块,用于第一查找模块202从数据库中查找到与第三接收模块201接收的连接指令中的授权码一致的目的授权码时,生成会话密钥;
上述第一绑定模块204,还用于将密钥生成模块生成的会话密钥与第一查找模块202查找到的目的授权码进行绑定;
上述第二发送模块205,还用于将密钥生成模块生成的会话密钥返回客户端1;
上述第三接收模块201,还用于接收来自客户端1的第二签名数据和第三签名数据;
上述第五查找模块,还用于从数据库中找到与目的授权码绑定的话会话密钥;用于从数据库中找到与目的授权码绑定的哈希值;
第二验签模块,用于使用第五查找模块找到的会话密钥根据第二签名数据对验证指令进行验签;
第二解密模块,用于当第二验签模块验签通过时,使用会话密钥对验证指令中的第二加密数据进行解密得到验证码;
上述第二判断模块,具体用于判断第二解密模块解密得到的验证码是否与第五查找模块找到的目的验证码一致;
上述第二验签模块,还用于使用第五查找模块找到的会话密钥根据第三签名数据对运行指令进行验签;
上述第二解密模块,还用于当第二验签模块使用第五查找模块找到的会话密钥根据第三签名数据对运行指令验签通过时,使用会话密钥对运行指令中的第三加密数据进行解密得到哈希值;
上述第三判断模块,具体用于判断第二解密模块解密得到的哈希值是否与第五查找模块找到的哈希值一致、并判断与第三查找模块208查找到的目的授权码绑定的验证状态是否为成功的状态;
上述第二获取模块210,具体用于当第三判断模块判定结果均为是时,获取与第三查找模块208查找到的目的授权码绑定的可执行文件路径和文件系统;
第三加密模块,用于使用第五查找模块找到的会话密钥对执行模块213得到的运行结果进行加密得到加密的运行结果;
第四签名模块,用于根据第三加密模块得到的加密的运行结果组织运行结果响应数据,使用第五查找模块查找到的会话密钥对运行结果响应数据进行签名得到第四签名数据;
上述第二发送模块205,具体用于将第四签名模块组织的运行结果响应数据和第四签名模块得到的第四签名数据返回客户端1;
上述第二发送模块205,还用于当第二验签模块验签未通过时,向客户端1返回验签失败的信息。
可选地,上述第一接收模块104,还用于接收来自云服务器2的会话密钥;
相应地,上述第二组织模块107,具体用于使用第一接收模块104接收的会话密钥对预设的可执行文件名称、请求参数、哈希模块101得到的哈希值、第一获取模块106获取的验证码进行加密得到第四加密数据,根据第四加密数据和第一接收模块104接收的第二会话标识组织运行指令,使用第一接收模块104接收的会话密钥对运行指令进行签名得到第五签名数据;
第一发送模块103,具体用于将第二组织模块107组织的运行指令和第二组织模块107得到的第五签名数据发送给云服务器2;
上述第二接收模块108,还用于接收来自云服务器2的验签失败的信息;
上述第二接收模块108,具体用于接收来自云服务器2的第六签名数据和运行结果响应数据,使用第一接收模块104接收的会话密钥根据接收的第六签名数据对接收的运行结果响应数据验签,验签通过时,使用会话密钥对运行结果响应数据中加密的运行结果进行解密得到运行结果;验签未通过时,报错,结束;
上述云服务器2还包括第三验签模块、第三解密模块、第四加密模块、第六组织模块、第五签名模块;
上述第一生成模块203,还用于当第一查找模块202从数据库中查找与第三接收模块201接收的连接指令中的授权码一致的目的授权码时,生成会话密钥;
上述第一绑定模块204,还用于将第一生成模块203生成的会话密钥与第一查找模块202查找到的目的授权码进行绑定;
上述第二发送模块205,还用于将第一生成模块203生成的会话标识返回客户端1;
上述第四接收模块206,还用于接收来自客户端1的第五签名数据;
上述第三查找模块208,还用于从数据库中找到与目的授权码绑定的话会话密钥;
第三验签模块,用于使用第三查找模块208找到的会话密钥根据第四接收模块206接收的第五签名数据对第四接收模块206接收的运行指令进行验签;
第三解密模块,用于当第三验签模块验签通过时,使用第三查找模块208找到的会话密钥对第四接收模块206接收运行指令中的第四加密数据进行解密得到哈希值和验证码;
第一判断模块209,具体用于判断第三解密模块解密得到的哈希值是否与第三查找模块208查找到的目的授权码绑定的哈希值一致,并判断第三解密模块解密得到的验证码是否与目的授权码绑定的目的验证码一致;
上述第二发送模块205,还用于当第三验签模块验签未通过时,向客户端1返回验签失败的信息;
第四加密模块,用于使用第三查找模块208查找到的会话密钥对执行模块213得到的运行结果进行加密得到加密的运行结果;
第六组织模块,用于根据第四加密模块加密的运行结果组织运行结果响应数据;
第五签名模块,用于使用第三查找模块208找到的会话密钥对第六组织模块组织的运行结果响应数据进行签名得到第六签名数据;
上述第二发送模块205,具体用于将第六组织模块组织的运行结果响应数据和第五签名模块得到的第六签名数据返回客户端1。
本实施例中,上述第二获取模块210获取的文件系统中包括密钥文件。
本实施例中,上述第四查找模块212查找到的可执行文件中包括核心算法。
可选地,上述第一组织模块102组织的连接指令中还包括第一会话标识;
上述云服务器2还包括第四判断模块、第三保存模块;
第三保存模块,用于保存第一会话标识;
第四判断模块,用于判断第三接收模块201接收的连接指令中的第一会话标识是否与第三保存模块保存的第一会话标识一致;
上述第一查找模块202,具体用于当第四判断模块判断结果为是时,从数据库中查找与第三接收模块201接收的连接指令中的授权码一致的目的授权码;
上述第二发送模块205,还用于当第四判断模块判断结果为否时,向客户端1返回连接失败的信息。
可选地,上述第二发送模块205,具体用于根据执行模块213得到的运行结果组织运行结果响应数据,将运行结果响应数据返回客户端1;
上述第二接收模块108,具体用于接收来自云服务器2的运行结果响应数据;
上述客户端1还包括第五判断模块;
第五判断模块,用于根据第二接收模块108接收的运行结果响应数据判断是否成功运行可执行文件,是则结束;否则报错,结束。
可选地,上述服务器还包括第四保存模块;
第四保存模块,用于保存预设路径;
上述第二获取模块210,具体用于当第一判断模块209判断结果均为是时,获取与第三查找模块208查找到的目的授权码绑定的可执行文件的相对路径和文件系统;
上述第四查找模块212,具体用于使用第二获取模块210获取的可执行文件的相对路径与第四保存模块保存的预设路径进行拼接得到拼接路径,根据拼接路径找到第五保存模块211保存的可执行文件;
上述第三获取模块301,具体用于获取可执行文件的相对路径、文件系统和用户输入的目的验证码;
上述第二绑定模块303,具体用于将第三获取模块301获取的可执行文件的相对路径、文件系统、第二生成模块生成的目的授权码和用户输入的目的验证码进行绑定并保存到数据库。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

Claims (20)

1.一种安全运行可执行文件的方法,其特征在于,包括:
步骤S1:客户端根据处理器标识、物理地址、本地主机名称和IP地址计算哈希值,根据预设的授权码和所述哈希值组织连接指令,将所述连接指令发送给云服务器;
步骤S2:所述云服务器接收到所述连接指令时,从数据库中查找与所述连接指令中的授权码一致的目的授权码,若查找到则生成第二会话标识,将所述第二会话标识和所述连接指令中的哈希值与所述目的授权码进行绑定,并将所述第二会话标识返回所述客户端;若未查找到则向所述客户端返回连接失败的信息;
步骤S3:所述客户端接收到所述第二会话标识时,提示用户输入验证码,获取到用户输入的验证码时,根据预设的可执行文件名称、请求参数、所述哈希值、所述验证码和所述第二会话标识组织运行指令,将所述运行指令发送给所述云服务器;接收到所述连接失败的信息时,结束;
步骤S4:所述云服务器接收到所述运行指令时,从数据库中查找与所述运行指令中的第二会话标识一致的第二会话标识,若查找到则执行步骤S5;若未查找到则向所述客户端返回错误信息;
步骤S5:所述云服务器从数据库中找到与所述第二会话标识绑定的目的授权码,判断运行指令中的哈希值是否与所述目的授权码绑定的哈希值一致,并判断运行指令中的验证码是否与所述目的授权码绑定的目的验证码一致,如果判断结果均为是则执行步骤S6;否则向所述客户端返回错误信息;
步骤S6:所述云服务器获取与所述目的授权码绑定的可执行文件路径和文件系统,根据所述可执行文件路径找到自身保存的可执行文件,根据所述文件系统、所述运行指令中的可执行文件名称、请求参数在虚拟空间中运行找到的可执行文件得到运行结果,将所述运行结果返回所述客户端;
步骤S7:所述客户端接收到运行结果时,结束;接收到错误信息时报错,结束;
所述步骤S1之前,还包括:云管理平台获取所述可执行文件路径、所述文件系统和用户输入的所述目的验证码,生成所述目的授权码,将所述可执行文件路径、文件系统、生成的所述目的授权码和用户输入的所述目的验证码进行绑定并保存到数据库。
2.根据权利要求1所述的方法,其特征在于,步骤S3中,所述客户端根据预设的可执行文件名称、请求参数、所述哈希值、所述验证码和所述第二会话标识组织运行指令,替换为:所述客户端根据预设的可执行文件名称、请求参数、所述哈希值和所述第二会话标识组织运行指令;
所述步骤S3中,所述客户端获取到用户输入的验证码之后,所述客户端根据预设的可执行文件名称、请求参数、所述哈希值和所述第二会话标识组织运行指令之前还包括:
步骤S31:所述客户端根据所述第二会话标识、用户输入的验证码组织验证指令,将所述验证指令发送给所述云服务器;
步骤S32:所述云服务器接收到所述验证指令时,从数据库中找到与所述验证指令中的第二会话标识绑定的目的授权码,找到与所述目的授权码绑定的目的验证码,判断所述验证指令中的验证码是否与所述目的验证码一致,是则将验证状态设置为成功的状态,将成功的状态与所述目的授权码绑定,向所述客户端返回验证成功的结果;否则验证失败,向所述客户端返回验证失败的结果;
所述客户端根据预设的可执行文件名称、请求参数、所述哈希值和所述第二会话标识组织运行指令,具体为:所述客户端接收到验证成功的结果时,根据预设的可执行文件名称、请求参数、所述哈希值和所述第二会话标识组织运行指令;
步骤S32之后,还包括:所述客户端接收到验证失败的结果时,结束;
所述步骤S5替换为:所述云服务器从数据库中找到与所述第二会话标识绑定的目的授权码,判断与所述目的授权码绑定的验证状态是否为成功的状态,并且判断判断运行指令中的哈希值是否与所述目的授权码绑定的哈希值一致,当判断结果均为是时执行步骤S6;当判断结果不均为是时向所述客户端返回错误信息。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤S1中,所述客户端根据预设的授权码和所述哈希值组织连接指令,将所述连接指令发送给云服务器,具体为:所述客户端使用自身保存的RSA公钥对所述授权码和所述哈希值进行加密得到第一加密数据,根据所述第一加密数据组织连接指令,使用自身保存的预设密钥对所述连接指令进行签名得到第一签名数据,将所述连接指令和所述第一签名数据发送给所述云服务器;
所述步骤S2具体为:所述云服务器接收到所述连接指令和所述第一签名数据,使用自身保存的预设密钥根据所述第一签名数据对所述连接指令进行验签,验签通过时,使用自身保存的RSA私钥对所述连接指令中的第一加密数据进行解密得到授权码和哈希值,从数据库中查找与解密得到的授权码一致的目的授权码,若查找到则生成第二会话标识,将所述第二会话标识和解密得到的哈希值与所述目的授权码进行绑定,使用自身保存的RSA私钥对所述第二会话标识进行加密得到第五加密数据,根据所述第五加密数据生成连接响应,使用自身保存的预设密钥对所述连接响应签名得到连接响应的签名数据,将所述连接响应和所述连接响应的签名数据返回所述客户端;若未查找到则向所述客户端返回连接失败的信息;验签未通过时,向所述客户端返回验签失败的信息;
所述步骤S3中,所述客户端接收到所述第二会话标识,具体为:所述客户端使用自身保存的预设密钥根据接收的连接响应的签名数据对接收的连接响应进行验签,验签通过则使用自身保存的RSA公钥对所述连接响应中第五加密数据进行解密得到第二会话标识,验签未通过则结束。
4.根据权利要求2所述的方法,其特征在于,所述步骤S2中所述云服务器从数据库中查找到与所述连接指令中的授权码一致的目的授权码之后,还包括:所述云服务器生成会话密钥,将所述会话密钥与所述目的授权码进行绑定,并将所述会话密钥返回所述客户端;
所述步骤S31,具体为:所述客户端使用所述会话密钥对用户输入的验证码进行加密得到第二加密数据,根据所述第二会话标识和所述第二加密数据组织验证指令,使用所述会话密钥对所述验证指令进行签名得到第二签名数据,将所述验证指令和所述第二签名数据发送给所述云服务器;
所述步骤S32具体为:所述云服务器接收到验证指令和第二签名数据,从数据库中找到与所述验证指令中的第二会话标识绑定的目的授权码,找到与所述目的授权码绑定的话会话密钥,使用找到的所述会话密钥根据所述第二签名数据对所述验证指令进行验签,验签通过时,使用所述会话密钥对所述验证指令中的第二加密数据进行解密得到验证码,找到与目的授权码绑定的目的验证码,判断解密得到的验证码是否与找到的目的验证码一致,是则将验证状态设置为成功的状态,将成功的状态与所述目的授权码绑定,向所述客户端返回验证成功的结果,否则向所述客户端返回验证失败的结果;验签未通过时,向所述客户端返回验签失败的信息;
所述客户端根据预设的可执行文件名称、请求参数、所述哈希值和所述第二会话标识组织运行指令,具体为:所述客户端使用所述会话密钥对预设的可执行文件名称、请求参数、所述哈希值进行加密得到第三加密数据,根据所述第三加密数据和所述第二会话标识组织所述运行指令,使用所述会话密钥对所述运行指令进行签名得到第三签名数据;所述客户端向所述云服务器发送所述运行指令时,还将所述第三签名数据发送给所述云服务器;
所述云服务器从数据库中找到与所述第二会话标识绑定的目的授权码之后,还包括:所述云服务器从数据库中找到与所述目的授权码绑定的会话密钥,使用所述会话密钥根据接收的第三签名数据对所述运行指令进行验签,验签通过时,使用会话密钥对运行指令中的第三加密数据解密得到验证码和哈希值,当判定运行指令中的哈希值与所述目的授权码绑定的哈希值一致、判定验证状态为成功的状态时执行步骤S6;
所述步骤S6中,所述云服务器将所述运行结果返回所述客户端之前,还包括:所述云服务器使用所述会话密钥对所述运行结果进行加密得到加密的运行结果,根据所述加密的运行结果组织运行结果响应数据,使用所述会话密钥对所述运行结果响应数据进行签名得到第四签名数据;
所述云服务器将所述运行结果返回所述客户端,具体为:所述云服务器将所述运行结果响应数据和所述第四签名数据返回所述客户端;
所述步骤S7中,所述客户端接收到运行结果,具体为:所述客户端使用会话密钥根据接收的第四签名数据对接收的运行结果响应数据验签,验签通过时,使用会话密钥对运行结果响应数据中加密的运行结果进行解密得到运行结果;验签未通过时,报错,结束。
5.根据权利要求1所述的方法,其特征在于,所述步骤S2中所述云服务器从数据库中查找到与所述连接指令中的授权码一致的目的授权码之后,还包括:所述云服务器生成会话密钥,将所述会话密钥与所述目的授权码进行绑定,将所述会话密钥返回所述客户端;
所述步骤S3中,所述客户端根据预设的可执行文件名称、请求参数、所述哈希值、所述验证码和所述第二会话标识组织运行指令,将所述运行指令发送给所述云服务器,具体包括:所述客户端使用所述会话密钥对预设的可执行文件名称、请求参数、所述哈希值、所述验证码进行加密得到第四加密数据,根据所述第四加密数据和所述第二会话标识组织运行指令,使用所述会话密钥对所述运行指令进行签名得到第五签名数据,将所述运行指令和所述第五签名数据发送给所述云服务器;
所述步骤S5具体包括:所述云服务器从数据库中找到与所述第二会话标识绑定的目的授权码,找到与目的授权码绑定的话会话密钥,使用会话密钥根据接收的第五签名数据对所述运行指令进行验签,验签通过则使用所述会话密钥对所述运行指令中的第四加密数据进行解密得到哈希值和验证码,判断解密得到的哈希值是否与所述目的授权码绑定的哈希值一致,并判断解密得到的验证码是否与所述目的授权码绑定的目的验证码一致,如果判断结果均为是则执行步骤S6,否则向所述客户端返回错误信息;验签未通过则向所述客户端返回验签失败的信息;
所述步骤S6中,所述云服务器将所述运行结果返回所述客户端之前,还包括:所述云服务器使用所述会话密钥对所述运行结果进行加密得到加密的运行结果,根据加密的运行结果组织运行结果响应数据,使用所述会话密钥对所述运行结果响应数据进行签名得到第六签名数据;
所述步骤S6中,所述云服务器将所述运行结果返回所述客户端,具体为:所述云服务器将所述运行结果响应数据和所述第六签名数据返回所述客户端;
所述步骤S7中,所述客户端接收到运行结果,具体为:所述客户端使用会话密钥根据接收的第六签名数据对接收的运行结果响应数据验签,验签通过时,使用会话密钥对运行结果响应数据中加密的运行结果进行解密得到运行结果;验签未通过时,报错,结束;
所述步骤S7中还包括:所述客户端接收到验签失败的信息时,结束。
6.根据权利要求1或2所述的方法,其特征在于,所述文件系统中包括密钥文件。
7.根据权利要求1或2所述的方法,其特征在于,所述可执行文件中包括核心算法。
8.根据权利要求1或2所述的方法,其特征在于,所述连接指令中还包括预设的第一会话标识;
所述步骤S2中,所述云服务器从数据库中查找与所述连接指令中的授权码一致的目的授权码之前还包括:所述云服务器判断连接指令中的第一会话标识是否与自身保存的第一会话标识一致,是则从数据库中查找与所述连接指令中的授权码一致的目的授权码,否则向所述客户端返回连接失败的信息。
9.根据权利要求1或2所述的方法,其特征在于,所述步骤S6中,所述云服务器将所述运行结果返回所述客户端,具体为:所述云服务器根据所述运行结果组织运行结果响应数据,将所述运行结果响应数据返回所述客户端;
所述步骤S7中,所述客户端接收到运行结果,具体为:所述客户端接收到所述运行结果响应数据;
所述步骤S7中还包括:所述客户端根据所述运行结果响应数据判断是否成功运行可执行文件,是则结束;否则报错,结束。
10.根据权利要求1或2所述的方法,其特征在于,所述步骤S6中,云服务器获取与所述目的授权码绑定的可执行文件路径,根据所述可执行文件路径找到自身保存的可执行文件,具体为:所述云服务器获取与所述目的授权码绑定的可执行文件的相对路径,使用所述可执行文件的相对路径与自身保存的预设路径进行拼接得到拼接路径,根据所述拼接路径找到自身保存的可执行文件;
所述云管理平台获取所述可执行文件路径,具体为:所述云管理平台获取可执行文件的相对路径;
所述云管理平台将所述可执行文件路径、文件系统、生成的所述目的授权码和用户输入的所述目的验证码进行绑定并保存到数据库,具体为:所述云管理平台将所述可执行文件的相对路径、文件系统、生成的所述目的授权码和用户输入的所述目的验证码进行绑定并保存到数据库。
11.一种安全运行可执行文件的系统,其特征在于,包括客户端、云服务器和云管理平台;
所述客户端包括:
哈希模块,用于根据处理器标识、物理地址、本地主机名称和IP地址计算哈希值;
第一组织模块,用于根据预设的授权码和所述哈希模块计算得到的所述哈希值组织连接指令;
第一发送模块,用于将所述第一组织模块的所述连接指令发送给所述云服务器;
第一接收模块,用于接收来自所述云服务器的第二会话标识;用于接收来自所述云服务器的连接失败的信息;
第一提示模块,用于所述第一接收模块接收到所述第二会话标识时,提示用户输入验证码;
第一获取模块,用于获取用户输入的验证码;
第二组织模块,用于根据预设的可执行文件名称、请求参数、所述哈希模块计算得到的所述哈希值、所述第一获取模块获取的所述验证码和所述第一接收模块接收的所述第二会话标识组织运行指令;
所述第一发送模块,还用于将所述第二组织模块组织的所述运行指令发送给所述云服务器;
第二接收模块,用于接收来自云服务器的运行结果;用于接收来自所述云服务器的错误信息;
所述云服务器包括:
第三接收模块,用于接收来自所述客户端的连接指令;
第一查找模块,用于从数据库中查找与所述第三接收模块接收的所述连接指令中的授权码一致的目的授权码;
第一生成模块,用于当所述第一查找模块从数据库中查找与所述第三接收模块接收的所述连接指令中的授权码一致的目的授权码时,生成第二会话标识;
第一绑定模块,用于将所述第一生成模块生成的所述第二会话标识和所述第三接收模块接收的所述连接指令中的哈希值与所述第一查找模块查找到的目的授权码进行绑定;
第二发送模块,用于将所述第一生成模块生成的所述第二会话标识返回所述客户端;用于当所述第一查找模块从数据库中没有查找与所述第三接收模块接收的所述连接指令中的授权码一致的目的授权码时,向所述客户端返回连接失败的信息;
第四接收模块,用于接收来自所述客户端的运行指令;
第二查找模块,用于从数据库中查找与所述第四接收模块接收的所述运行指令中的第二会话标识一致的第二会话标识;
第三查找模块,用于当所述第二查找模块从数据库中查找到与所述第四接收模块接收的所述运行指令中的第二会话标识一致的第二会话标识时,从数据库中找到与所述第二会话标识绑定的目的授权码;
第一判断模块,用于判断所述第四接收模块接收的所述运行指令中的哈希值是否与所述第三查找模块查找到的所述目的授权码绑定的哈希值一致,并判断所述第四接收模块接收的所述运行指令中的验证码是否与所述第三查找模块查找到的所述目的授权码绑定的目的验证码一致;
第二获取模块,用于当所述第一判断模块判断结果均为是时,获取与所述第三查找模块查找到的所述目的授权码绑定的可执行文件路径和文件系统;
第五保存模块,用于保存可执行文件;
第四查找模块,用于根据所述第二获取模块获取的所述可执行文件路径找到所述第五保存模块保存的可执行文件;
执行模块,用于根据所述文件系统、所述运行指令中的可执行文件名称、请求参数在虚拟空间中运行所述第四查找模块找到的可执行文件得到运行结果;
所述第二发送模块,还用于将所述执行模块得到的所述运行结果返回所述客户端;用于当所述第二查找模块从数据库中未查找到与所述第四接收模块接收的所述运行指令中的第二会话标识一致的第二会话标识时,向所述客户端返回错误信息;用于当所述第一判断模块判断结果不均为是时,向所述客户端返回错误信息;
所述云管理平台包括:
第三获取模块,用于获取可执行文件路径、所述文件系统和用户输入的所述目的验证码;
第二生成模块,用于所述第三获取模块获取可执行文件路径、所述文件系统和用户输入的所述目的验证码时,生成所述目的授权码;
第二绑定模块,用于将第三获取模块获取的所述可执行文件路径、文件系统、用户输入的所述目的验证码和所述第二生成模块生成的所述目的授权码进行绑定并保存到数据库。
12.根据权利要求11所述的方法,其特征在于,所述客户端还包括第三组织模块;
所述第三组织模块,用于根据所述第一接收模块接收的所述第二会话标识、所述第一获取模块获取的用户输入的验证码组织验证指令;
所述第一发送模块,还用于将所述第三组织模块组织的所述验证指令发送给所述云服务器;
所述第二接收模块,还用于接收来自所述云服务器的验证成功的结果;用于接收来自所述云服务器的验证失败的结果;
所述第二组织模块替换为第四组织模块;
所述第四组织模块,用于当所述第二接收模块接收到来自所述云服务器的验证成功的结果时,根据预设的可执行文件名称、请求参数、所述哈希模块计算得到的所述哈希值和所述第一接收模块接收的所述第二会话标识组织运行指令;
所述云服务器还包括:第五查找模块、第二判断模块、设置模块、第三绑定模块;
所述第三接收模块,还用于接收来自所述客户端的验证指令;
所述第五查找模块,用于从数据库中找到与所述第三接收模块接收的所述验证指令中的第二会话标识绑定的目的授权码,找到与所述目的授权码绑定的目的验证码;
所述第二判断模块,用于判断所述第三接收模块接收的所述验证指令中的验证码是否与所述第五查找模块找到的所述目的验证码一致;
所述设置模块,用于当所述第二判断模块判断结果为是时,将验证状态设置为成功的状态;
所述第三绑定模块,用于将所述设置模块设置的成功的状态与所述第五查找模块找到的所述目的授权码绑定;
所述第二发送模块,还用于当所述第二判断模块判断结果为是时,向所述客户端返回验证成功的结果;用于当所述第二判断模块判断结果为否时,向所述客户端返回验证失败的结果;
所述第一判断模块替换为第三判断模块;
所述第三判断模块,用于判断与所述第三查找模块查找到的所述目的授权码绑定的验证状态是否为成功的状态,并且判断所述第四接收模块接收的运行指令中的哈希值是否与所述第三查找模块查找到的所述目的授权码绑定的哈希值一致;
所述第二获取模块,还用于当所述第三判断模块判断结果均为是时,获取与所述第三查找模块查找到的所述目的授权码绑定的可执行文件路径和文件系统;
所述第二发送模块,还用于当所述第三判断模块判断结果不均为是时,向所述客户端返回错误信息。
13.根据权利要求11或12所述的方法,其特征在于,所述客户端还包括第一保存模块;
所述第一保存模块,用于保存RSA公钥和预设密钥;
所述第一组织模块,具体用于:使用所述第一保存模块保存的RSA公钥对所述授权码和所述哈希值进行加密得到第一加密数据,根据所述第一加密数据组织连接指令,使用所述第一保存模块保存的预设密钥对所述连接指令进行签名得到第一签名数据;
所述第一发送模块,具体用于将所述第一组织模块组织的所述连接指令和所述第一组织模块得到的所述第一签名数据发送给所述云服务器;
所述第一接收模块,具体用于接收来自所述云服务器的连接响应数据和连接响应的签名数据,使用所述第一保存模块保存的预设密钥根据接收的连接响应的签名数据对接收的连接响应进行验签,验签通过则使用所述第一保存模块保存的RSA公钥对所述连接响应中第五加密数据进行解密得到第二会话标识;
所述第三接收模块,还用于接收来自所述客户端的第一签名数据;
所述云服务器还包括第二保存模块、第一验签模块、第一解密模块、第一加密模块、第一签名模块、第一解密模块、第五组织模块;
所述第二保存模块,用于保存RSA私钥和预设密钥;
所述第一验签模块,用于使用所述第二保存模块保存的预设密钥根据所述第三接收模块接收的所述第一签名数据对所述连接指令进行验签;
所述第一解密模块,用于所述第一验签模块验签通过时,使用所述第二保存模块保存的RSA私钥对所述第三接收模块接收的所述连接指令中的第一加密数据进行解密得到授权码和哈希值;
所述第一查找模块,具体用于从数据库中查找与所述第一解密模块解密得到的授权码一致的目的授权码;
所述第一绑定模块,具体用于将所述第一生成模块生成的所述第二会话标识和所述第一解密模块解密得到的哈希值与所述目的授权码进行绑定;
所述第一加密模块,用于使用所述第二保存模块保存的RSA私钥对所述第一生成模块生成的所述第二会话标识进行加密得到第五加密数据;
所述第五组织模块,用于根据所述第一加密模块得到的所述第五加密数据生成连接响应;
所述第一签名模块,用于使用所述第二保存模块保存的预设密钥对所述第五组织模块生成的所述连接响应签名得到连接响应的签名数据;
所述第二发送模块,具体用于将所述第五组织模块生成的所述连接响应和所述第一签名模块得到的连接响应的签名数据返回所述客户端;
所述第二发送模块,还用于所述第一验签模块验签未通过时,向所述客户端返回验签失败的信息。
14.根据权利要求12所述的方法,其特征在于,所述客户端还包括第二加密模块、第二签名模块、第三签名模块;
所述第一接收模块,还用于接收来自所述云服务器的会话密钥;
所述第二加密模块,用于使用所述第一接收模块接收的所述会话密钥对用户输入的验证码进行加密得到第二加密数据;
所述第三组织模块,具体用于根据所述第一接收模块接收的所述第二会话标识和所述第二加密模块得到的所述第二加密数据组织验证指令;
所述第二签名模块,用于使用所述第一接收模块接收的所述会话密钥对所述第三组织模块组织的所述验证指令进行签名得到第二签名数据;
所述第一发送模块,具体用于将所述第三组织模块组织的所述验证指令和所述第二签名模块得到的所述第二签名数据发送给所述云服务器;
所述第二接收模块,还用于接收来自所述云服务器的验签失败的信息;
所述第四组织模块,具体用于使用所述第一接收模块接收的所述会话密钥对预设的可执行文件名称、请求参数、所述哈希值进行加密得到第三加密数据,根据所述第三加密数据和所述第二会话标识组织所述运行指令;
所述第三签名模块,用于使用所述第一接收模块接收的所述会话密钥对所述运行指令进行签名得到第三签名数据;
所述第一发送模块,还用于将所述第三签名数据发送给所述云服务器;
所述第二接收模块,具体用于接收来自所述云服务器的第四签名数据和运行结果响应数据,使用所述第一接收模块接收的所述会话密钥根据接收的第四签名数据对接收的运行结果响应数据验签,验签通过时,使用所述会话密钥对运行结果响应数据中加密的运行结果进行解密得到运行结果;
所述云服务器还包括密钥生成模块、第二验签模块、第二解密模块、第三加密模块和第四签名模块;
所述密钥生成模块,用于所述第一查找模块从数据库中查找到与所述第三接收模块接收的所述连接指令中的授权码一致的目的授权码时,生成会话密钥;
所述第一绑定模块,还用于将所述密钥生成模块生成的所述会话密钥与所述第一查找模块查找到的所述目的授权码进行绑定;
所述第二发送模块,还用于将所述密钥生成模块生成的所述会话密钥返回所述客户端;
所述第三接收模块,还用于接收来自所述客户端的第二签名数据和第三签名数据;
所述第五查找模块,还用于从数据库中找到与所述目的授权码绑定的话会话密钥;用于从数据库中找到与所述目的授权码绑定的哈希值;
所述第二验签模块,用于使用所述第五查找模块找到的所述会话密钥根据所述第二签名数据对所述验证指令进行验签;
所述第二解密模块,用于当所述第二验签模块验签通过时,使用所述会话密钥对所述验证指令中的第二加密数据进行解密得到验证码;
所述第二判断模块,具体用于判断所述第二解密模块解密得到的验证码是否与所述第五查找模块找到的目的验证码一致;
所述第二验签模块,还用于使用所述第五查找模块找到的所述会话密钥根据所述第三签名数据对所述运行指令进行验签;
所述第二解密模块,还用于当所述第二验签模块使用所述第五查找模块找到的所述会话密钥根据所述第三签名数据对所述运行指令验签通过时,使用所述会话密钥对所述运行指令中的第三加密数据进行解密得到哈希值;
所述第三判断模块,具体用于判断所述第二解密模块解密得到的哈希值是否与所述第五查找模块找到的哈希值一致、并判断与所述第三查找模块查找到的所述目的授权码绑定的验证状态是否为成功的状态;
所述第二获取模块,具体用于当所述第三判断模块判定结果均为是时,获取与所述第三查找模块查找到的所述目的授权码绑定的可执行文件路径和文件系统;
所述第三加密模块,用于使用所述第五查找模块找到的会话密钥对所述执行模块得到的所述运行结果进行加密得到加密的运行结果;
所述第四签名模块,用于根据所述第三加密模块得到的所述加密的运行结果组织运行结果响应数据,使用所述第五查找模块查找到的所述会话密钥对所述运行结果响应数据进行签名得到第四签名数据;
所述第二发送模块,具体用于将第四签名模块组织的所述运行结果响应数据和所述第四签名模块得到的所述第四签名数据返回所述客户端;
所述第二发送模块,还用于当所述第二验签模块验签未通过时,向所述客户端返回验签失败的信息。
15.根据权利要求11所述的方法,其特征在于,所述第一接收模块,还用于接收来自所述云服务器的会话密钥;
所述第二组织模块,具体用于使用所述第一接收模块接收的所述会话密钥对预设的可执行文件名称、请求参数、所述哈希模块得到的所述哈希值、所述第一获取模块获取的所述验证码进行加密得到第四加密数据,根据所述第四加密数据和所述第一接收模块接收的所述第二会话标识组织运行指令,使用所述第一接收模块接收的所述会话密钥对所述运行指令进行签名得到第五签名数据;
所述第一发送模块,具体用于将所述第二组织模块组织的所述运行指令和所述第二组织模块得到的所述第五签名数据发送给所述云服务器;
所述第二接收模块,还用于接收来自所述云服务器的验签失败的信息;
所述第二接收模块,具体用于接收来自所述云服务器的第六签名数据和运行结果响应数据,使用所述第一接收模块接收的所述会话密钥根据接收的第六签名数据对接收的运行结果响应数据验签,验签通过时,使用会话密钥对运行结果响应数据中加密的运行结果进行解密得到运行结果;验签未通过时,报错,结束;
所述云服务器还包括第三验签模块、第三解密模块、第四加密模块、第六组织模块、第五签名模块;
所述第一生成模块,还用于当所述第一查找模块从数据库中查找与所述第三接收模块接收的所述连接指令中的授权码一致的目的授权码时,生成会话密钥;
所述第一绑定模块,还用于将所述第一生成模块生成的所述会话密钥与所述第一查找模块查找到的目的授权码进行绑定;
所述第二发送模块,还用于将所述第一生成模块生成的所述会话标识返回所述客户端;
所述第四接收模块,还用于接收来自所述客户端的第五签名数据;
所述第三查找模块,还用于从数据库中找到与所述目的授权码绑定的话会话密钥;
所述第三验签模块,用于使用所述第三查找模块找到的所述会话密钥根据所述第四接收模块接收的第五签名数据对第四接收模块接收的所述运行指令进行验签;
所述第三解密模块,用于当所述第三验签模块验签通过时,使用所述第三查找模块找到的所述会话密钥对所述第四接收模块接收所述运行指令中的第四加密数据进行解密得到哈希值和验证码;
所述第一判断模块,具体用于判断所述第三解密模块解密得到的哈希值是否与所述第三查找模块查找到的所述目的授权码绑定的哈希值一致,并判断所述第三解密模块解密得到的验证码是否与所述目的授权码绑定的目的验证码一致;
所述第二发送模块,还用于当所述第三验签模块验签未通过时,向所述客户端返回验签失败的信息;
所述第四加密模块,用于使用所述第三查找模块查找到的所述会话密钥对所述执行模块得到的所述运行结果进行加密得到加密的运行结果;
所述第六组织模块,用于根据所述第四加密模块加密的运行结果组织运行结果响应数据;
所述第五签名模块,用于使用所述第三查找模块找到的所述会话密钥对所述第六组织模块组织的所述运行结果响应数据进行签名得到第六签名数据;
所述第二发送模块,具体用于将所述第六组织模块组织的所述运行结果响应数据和所述第五签名模块得到的所述第六签名数据返回所述客户端。
16.根据权利要求11或12所述的方法,其特征在于,所述第二获取模块获取的所述文件系统中包括密钥文件。
17.根据权利要求11或12所述的方法,其特征在于,所述第四查找模块查找到的所述可执行文件中包括核心算法。
18.根据权利要求11或12所述的方法,其特征在于,所述第一组织模块组织的所述连接指令中还包括第一会话标识;
所述云服务器还包括第四判断模块、第三保存模块;
所述第三保存模块,用于保存第一会话标识;
所述第四判断模块,用于判断所述第三接收模块接收的所述连接指令中的第一会话标识是否与所述第三保存模块保存的第一会话标识一致;
所述第一查找模块,具体用于当所述第四判断模块判断结果为是时,从数据库中查找与所述第三接收模块接收的所述连接指令中的授权码一致的目的授权码;
所述第二发送模块,还用于当所述第四判断模块判断结果为否时,向所述客户端返回连接失败的信息。
19.根据权利要求11或12所述的方法,其特征在于,所述第二发送模块,具体用于根据所述执行模块得到的所述运行结果组织运行结果响应数据,将所述运行结果响应数据返回所述客户端;
所述第二接收模块,具体用于接收来自所述云服务器的所述运行结果响应数据;
所述客户端还包括第五判断模块;
所述第五判断模块,用于根据所述第二接收模块接收的所述运行结果响应数据判断是否成功运行可执行文件,是则结束;否则报错,结束。
20.根据权利要求11或12所述的方法,其特征在于,所述服务器还包括第四保存模块;
所述第四保存模块,用于保存预设路径;
所述第二获取模块,具体用于当所述第一判断模块判断结果均为是时,获取与所述第三查找模块查找到的所述目的授权码绑定的可执行文件的相对路径和文件系统;
所述第四查找模块,具体用于使用所述第二获取模块获取的所述可执行文件的相对路径与所述第四保存模块保存的所述预设路径进行拼接得到拼接路径,根据所述拼接路径找到所述第五保存模块保存的可执行文件;
所述第三获取模块,具体用于获取可执行文件的相对路径、所述文件系统和用户输入的所述目的验证码;
所述第二绑定模块,具体用于将所述第三获取模块获取的所述可执行文件的相对路径、文件系统、所述第二生成模块生成的所述目的授权码和用户输入的所述目的验证码进行绑定并保存到数据库。
CN201810087142.4A 2018-01-30 2018-01-30 一种安全运行可执行文件的方法及系统 Active CN108270791B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810087142.4A CN108270791B (zh) 2018-01-30 2018-01-30 一种安全运行可执行文件的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810087142.4A CN108270791B (zh) 2018-01-30 2018-01-30 一种安全运行可执行文件的方法及系统

Publications (2)

Publication Number Publication Date
CN108270791A true CN108270791A (zh) 2018-07-10
CN108270791B CN108270791B (zh) 2020-07-07

Family

ID=62776946

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810087142.4A Active CN108270791B (zh) 2018-01-30 2018-01-30 一种安全运行可执行文件的方法及系统

Country Status (1)

Country Link
CN (1) CN108270791B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109101790A (zh) * 2018-08-01 2018-12-28 北京海泰方圆科技股份有限公司 生成签名密钥的方法及装置、签名方法及装置
CN109787968A (zh) * 2019-01-02 2019-05-21 郑州云海信息技术有限公司 一种云平台加密许可方法、装置、终端及存储介质
CN111544893A (zh) * 2020-04-30 2020-08-18 福建天晴在线互动科技有限公司 一种基于游戏中防止代码流程伪造的加固方法及其系统
CN111600914A (zh) * 2020-07-27 2020-08-28 北京信安世纪科技股份有限公司 一种数据传输方法、服务端和客户端
CN114095150A (zh) * 2021-11-12 2022-02-25 微位(深圳)网络科技有限公司 身份鉴定方法、装置、设备及可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030009677A1 (en) * 2001-07-09 2003-01-09 Strongin Geoffrey S. Software modem with privileged mode driver authentication
CN101149768A (zh) * 2006-09-20 2008-03-26 展讯通信(上海)有限公司 一种专用处理器软件的加密和解密方法
CN101447013A (zh) * 2008-12-29 2009-06-03 北京飞天诚信科技有限公司 软件运行方法、装置及系统
CN102063597A (zh) * 2010-12-29 2011-05-18 东莞市创锐电子技术有限公司 一种利用加密狗对软件进行鉴权的方法
CN103714273A (zh) * 2013-12-31 2014-04-09 深圳市兴邦创新信息技术有限公司 一种基于在线动态授权的软件授权系统及方法
CN105187450A (zh) * 2015-10-08 2015-12-23 飞天诚信科技股份有限公司 一种基于认证设备进行认证的方法和设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030009677A1 (en) * 2001-07-09 2003-01-09 Strongin Geoffrey S. Software modem with privileged mode driver authentication
CN101149768A (zh) * 2006-09-20 2008-03-26 展讯通信(上海)有限公司 一种专用处理器软件的加密和解密方法
CN101447013A (zh) * 2008-12-29 2009-06-03 北京飞天诚信科技有限公司 软件运行方法、装置及系统
CN102063597A (zh) * 2010-12-29 2011-05-18 东莞市创锐电子技术有限公司 一种利用加密狗对软件进行鉴权的方法
CN103714273A (zh) * 2013-12-31 2014-04-09 深圳市兴邦创新信息技术有限公司 一种基于在线动态授权的软件授权系统及方法
CN105187450A (zh) * 2015-10-08 2015-12-23 飞天诚信科技股份有限公司 一种基于认证设备进行认证的方法和设备

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109101790A (zh) * 2018-08-01 2018-12-28 北京海泰方圆科技股份有限公司 生成签名密钥的方法及装置、签名方法及装置
CN109101790B (zh) * 2018-08-01 2019-10-15 北京海泰方圆科技股份有限公司 生成签名密钥的方法及装置、签名方法及装置
CN109787968A (zh) * 2019-01-02 2019-05-21 郑州云海信息技术有限公司 一种云平台加密许可方法、装置、终端及存储介质
CN111544893A (zh) * 2020-04-30 2020-08-18 福建天晴在线互动科技有限公司 一种基于游戏中防止代码流程伪造的加固方法及其系统
CN111544893B (zh) * 2020-04-30 2023-09-01 福建天晴在线互动科技有限公司 一种基于游戏中防止代码流程伪造的加固方法及其系统
CN111600914A (zh) * 2020-07-27 2020-08-28 北京信安世纪科技股份有限公司 一种数据传输方法、服务端和客户端
CN114095150A (zh) * 2021-11-12 2022-02-25 微位(深圳)网络科技有限公司 身份鉴定方法、装置、设备及可读存储介质
CN114095150B (zh) * 2021-11-12 2024-01-26 微位(深圳)网络科技有限公司 身份鉴定方法、装置、设备及可读存储介质

Also Published As

Publication number Publication date
CN108270791B (zh) 2020-07-07

Similar Documents

Publication Publication Date Title
CN108270791A (zh) 一种安全运行可执行文件的方法及系统
Dowling et al. A cryptographic analysis of the TLS 1.3 handshake protocol
US7681037B2 (en) Network connection system
CN101641976B (zh) 认证方法
CN101926188B (zh) 对通信终端的安全策略分发
CN105847247A (zh) 一种认证系统及其工作方法
CN108243176B (zh) 数据传输方法和装置
CN107948155A (zh) 密码校验方法、装置、计算机设备和计算机可读存储介质
CN108270739B (zh) 一种管理加密信息的方法及装置
CN110489996A (zh) 一种数据库数据安全管理方法及系统
CN101815091A (zh) 密码提供设备、密码认证系统和密码认证方法
CA2518032A1 (en) Methods and software program product for mutual authentication in a communications network
CN106416123A (zh) 基于密码的认证
JP2009087035A (ja) 暗号クライアント装置、暗号パッケージ配信システム、暗号コンテナ配信システム、暗号管理サーバ装置、ソフトウェアモジュール管理装置、ソフトウェアモジュール管理プログラム
CN105141420B (zh) 一种安全导入、签发证书的方法、设备及服务器
CN108256309A (zh) 硬件登录windows10以上系统的实现方法及装置
CN112733129B (zh) 一种服务器带外管理的可信接入方法
CN108183798A (zh) 应用的实名认证方法、服务器、移动终端及可读存储介质
CN110190950A (zh) 一种安全签名的实现方法及装置
CN110381075A (zh) 基于区块链的设备身份认证方法和装置
Cairns et al. Security analysis of the W3C web cryptography API
CN110245117A (zh) 一种基于区块链的云上数据可信删除方法与系统
CN106850232B (zh) 状态保持的授权管理方法和系统
CN109981677A (zh) 一种授信管理方法及装置
CN109474431A (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
TR01 Transfer of patent right

Effective date of registration: 20231008

Address after: 100085 room 205, B / F, Huizhi building, 9 Xueqing Road, Haidian District, Beijing

Patentee after: Beijing Jianshi Chengxin Technologies Co.,Ltd.

Address before: 17th floor, building B, Huizhi building, No.9, Xueqing Road, Haidian District, Beijing 100085

Patentee before: Feitian Technologies Co.,Ltd.

TR01 Transfer of patent right