WO2010139258A1 - 一种软件版权保护方法、设备和系统 - Google Patents

一种软件版权保护方法、设备和系统 Download PDF

Info

Publication number
WO2010139258A1
WO2010139258A1 PCT/CN2010/073385 CN2010073385W WO2010139258A1 WO 2010139258 A1 WO2010139258 A1 WO 2010139258A1 CN 2010073385 W CN2010073385 W CN 2010073385W WO 2010139258 A1 WO2010139258 A1 WO 2010139258A1
Authority
WO
WIPO (PCT)
Prior art keywords
software
certificate
protected
copyright protection
ciphertext
Prior art date
Application number
PCT/CN2010/073385
Other languages
English (en)
French (fr)
Inventor
薛明
Original Assignee
Xue Ming
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 Xue Ming filed Critical Xue Ming
Publication of WO2010139258A1 publication Critical patent/WO2010139258A1/zh

Links

Classifications

    • 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

Definitions

  • the early software copyright protection method was to encrypt the software code or part of it, but the software copyright protection method based on pure software mechanism can be easily cracked.
  • Protecting software copyright devices is generally referred to as a "soft dog.”
  • the hardware technology for implementing software dogs has been developed for generations. The most advanced "soft dog" is the system on chip.
  • SWNDS Software Network Offering Subsystem
  • SWMDS Software Field Trading Subsystem
  • Step 501 SDA 206 in the user computer and SWETM 304 conducts electronic transactions, completing applications for purchasing software and online payment.
  • Step 503 The SWETM 304 sends a message containing the download token and the validity period of the token to the MP-NDM 305, informing the module that the user holding the token can purchase the body portion of the specified software.
  • Step 504 The SWETM 304 sends a message containing the download token and the validity period of the token to the PP-NDM 306, informing the module that the user holding the token can purchase the protected portion of the specified software.
  • Step 503 and step 504 may be performed simultaneously, with no logical sequence between them.
  • Step 512 The PP-NDM 306 receives the request, and first checks the validity of the download token. If the download token is legal, the validity of the DCert is checked. There are a plurality of contents for checking the validity of the certificate. The following steps are included in the solution described in the embodiment of the present invention:
  • the PP-NDM 306 can send the protected part PPSW of the software to the SDA.
  • the PPSW to be transmitted can be encrypted and encapsulated by the STDM method described above to obtain PPSW(enc), and then the encrypted message is sent to the SDA on the remote computer through the network.
  • the plurality of software obtained by the SPD 100 through the distribution process can share the same SPD 100 when running in the computer, thereby realizing the sharing of the software copyright protection device.
  • the PP-MDM 404 sends the request to the PSC 207 over the connected wired or wireless interface.
  • Step 602 The PSC 207 returns the requested certificate DCertl to the PP-MDM 404.
  • a storage medium such as a disc containing the main body of the software (MPSW) is delivered to the user.
  • Step 607 The SPA 201 returns DCert2 to the SSA 208.
  • Step 609 The PSC 207 uses the SPCV process to verify whether the DCert2 is a valid software protection certificate; if yes, first decrypts the PPSW (encl) stored in the device with its own private key to obtain the PPSW, and then uses the STDM method to utilize the DCert2. The public key encrypts the PPSW to obtain the encrypted software protected part PPSW (enc2). Finally, PSC 207 transmits PPSW (enc2) to SSA 208. At the same time, PPSW (encl) saved in this device is deleted to ensure that PPSW is only granted to the user.
  • Step 610 SSA 208 calls the SPA 201 interface to save PPSW (enc2).
  • the SPA 201 can save the PPSW (enc2) in the SPD 100, that is, the mode shown in FIG. 6; the other is to save the PPSW (enc2) in the permanent state of the computer. In the memory, this mode is not shown in FIG. 6.
  • the interface of the PSCI part and the communication protocol of the PSCP part have been embodied in the existing technical solutions, and the present invention will not be elaborated.
  • the invention mainly describes the program interface of the PSMI part and the communication protocol of the PSMP part:
  • IDevHandle Identifies the device handle of the SPD being accessed.
  • a handle is an identifier assigned to a different device by a computer system that uniquely identifies a device within a computer system.
  • the function name is: int SPA_SavePPSWtoSPD(int IDevHandle, char *szAppID, usigned char *pucPPSW, unsigned int *pulLen)
  • IDevHandle Identifies the device handle of the SPD being accessed.
  • pulLen Parameter The length of the valid data in pucPPS W, in bytes.
  • the function name is: int SPA_ReqShiftPPSW(int IDevHandle, char *szAppID, unsigned char *pucDCert, unsigned int *pulCertLen, unsigned char * pucPPSW, unsigned int *pulPPSWLen)
  • IDevHandle Identifies the device handle of the source SPD that holds PPSW.
  • szAppID The identification string of the software to which the PPSW belongs, ending with 0.
  • pulCertLen The length of the valid data in the parameter pucDCert, in bytes.
  • pucPPSW Pointer to the memory block of the PPSW code that was transferred from the source SPD.
  • pucPubk2 Pointer to the block holding the new device public key memory.
  • pucDCert Pointer to the memory block holding the current device certificate.
  • pulCertLen The length of the current device certificate data, in bytes.
  • IDevHandle Identifies the device handle of the SPD being accessed.
  • ulLen The length of the valid data in the parameter pucDCert, in bytes.
  • This interface is called by the application to upgrade the list of trusted CAs on the specified SPD device
  • IDevHandle Identifies the device handle of the SPD being accessed.
  • pucTcal Pointer to a block of memory that hosts the latest CA trust list.
  • ulLen The length of the valid data in the parameter pucTcal, in bytes.
  • SPD returns a response message to the SPA to save the PPSW request
  • Parameters a) A flag to save success or failure. 5) Request to transfer PPSW message
  • the SPA sends a request to the SPD to save the new device certificate.
  • Parameters a) A command to request a new device certificate to be saved;
  • the SPA sends a message to the SPD requesting to upgrade the device certificate.
  • the SPA sends a request to the SPD to upgrade the CA trust list message.
  • the source SPD needs to verify whether the device certificate of the destination SPD is a legal software protection certificate.
  • a certificate issued by a CA generally has a certain validity period, and the certificate will be considered invalid after it expires. Therefore, SPD 100 needs to provide the function of certificate upgrade.
  • the certificate upgrade process shown in Figure 8 can be used. Illustration:
  • CUA Certificate Upgrading Agent, Certificate Upgrade Agent. It is a program module responsible for upgrading device certificates and runs on computer devices connected to SPD.
  • Certificate Authority Certificate Authority Server.
  • This server is a server on the Internet that issues certificates on behalf of trusted third-party authorities. This server can be supplied by the SPD manufacturer or by a government agency or operator.
  • Step 802 The SPA sends a message to the SPD to prepare for the upgrade certificate.
  • Step 805 The CUA sends a request to the CA to upgrade the device certificate, which includes Pubk2 and DCertl.
  • Step 806 After receiving the request for certificate upgrade, the CA first uses the SPCV process to verify whether the DCertl is a valid software protection certificate. If it is not legal, the CA refuses to issue a new device certificate; otherwise, it generates a new software protection certificate, DCert2, where the public key is Pubk2 and is signed. Then, using the STDM method, the newly generated DCert2 is encrypted by using the public key Pubkl in DCertl to obtain DCert2(enc), which is then returned to the CUA.
  • the CA uses the SPCV process to verify whether the DCertl is a valid software protection certificate. If it is not legal, the CA refuses to issue a new device certificate; otherwise, it generates a new software protection certificate, DCert2, where the public key is Pubk2 and is signed. Then, using the STDM method, the newly generated DCert2 is encrypted by using the public key Pubkl in DCertl to obtain DCert2(enc), which is then returned to the CUA.
  • Step 807 The CUA issues a command to upgrade the device certificate to the SPA, which includes DCert2(enc).
  • Step 808 The SPA sends a request to the SPD to save the new device certificate, which contains DCert2(enc).
  • Step 811 The SPD uses Prvkl to decrypt the PPSW (encl) to obtain the plaintext of the PPSW, and then uses the Pubk2 to encrypt the PPSW using the STDM method to obtain the PPSW (enc2). After that, the SPD will include the PPSW (enc2) in the response message and return it to the SPA. The SPA will save the PPSW (enc2) in the local memory of the computer.
  • the SPA will need to repeat steps 810-811 multiple times until all PPSW encryption packages have been updated to perform subsequent operations.
  • the manufacturer of the device may increase or decrease the trusted CA in subsequent software copyright protection devices, and thus need to update the trusted CA list for the previously sold SPD.
  • SPD manufacturers can provide a TCAL server on the Internet for upgrading SPD's CA trust list.
  • the provided CA trust list file should be accompanied by a digital signature of the CA trusted by the SPD.
  • the software copyright protection device of the present invention stores a pair of public and private keys, and the public key is used to encrypt the protected portion of the software.
  • the encryption process is implemented in the software release, and the user can only Obtaining the ciphertext of the protected part of the software, and the ciphertext can only be decrypted by the private key in the unique software copyright protection device, thereby realizing the protection of the software copyright; the public key and the private key of the software copyright protection device can be The software is shared so that multiple softwares can share the same software copyright protection device.
  • ROM/RAM read-only memory
  • diskette diskette
  • optical disk etc.
  • a computer device which may be a personal computer, server, or network device, etc.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Description

一种软件版权保护方法、 设备和系统 技术领域
本发明涉及计算机技术领域, 特别涉及一种软件版权保护方法、 设 备和系统。 发明背景
用户合法使用软件包含两方面的含义: 一方面, 用户向软件企业购 买了使用该软件的合法授权; 另一方面, 用户在规定的范围内使用该软 件。 如果违反了上述任何一个方面均构成侵犯软件版权。 由于计算机软 件具有易于复制、 易于修改的特点, 软件版权的侵权问题是一个长期困 扰计算机软件业发展的大问题, 该问题严重影响了软件企业的盈利能 力, 是关系到软件企业生存的重要问题。
早期的软件版权保护方法是对软件代码或其一部分进行加密, 但这 种基于纯软件机制的软件版权保护方法很容易被破解。 随着计算机技术 的发展以及计算机硬件处理性能的提高, 开始采用软硬结合的办法来实 现对软件版权的保护。 保护软件版权设备一般被称为"软件狗"。 实现软 件狗的硬件技术已发展了好几代, 目前最先进的 "软件狗 "以片上系统
( System on Chip, SOC ) 芯片为核心, 来构造软件保护系统。
SOC 芯片可以做到在一个芯片内集成了中央处理器(CPU )、 片上 内存(RAM )、 非易失性的存储介质等部件, 能进行独立完整的数据计 算和存储保密任务。
现有技术中, 基于 SOC芯片的软件版权保护方案的工作原理如下: ( 1 )将软件中一部分重要的、 经常用到的代码提取出来, 保存到 软件版权保护设备中。 ( 2 )剩余的软件主体部分作为一个正常的软件在计算机中运行, 而软件版权保护设备通过某种形式与计算机相连。
( 3 ) 当软件主体部分需要调用被保护部分的代码时, 就向软件版 权保护设备发送调用指令, 请求执行某个函数, 并传递相关的参数。
( 4 )软件版权保护设备接到调用指令后, 根据收到的参数执行被 保护代码, 并将执行后得到的运算结果返回给计算机中运行的软件主体 部分, 使之继续运行下去。
由于 SOC芯片具有强大的处理能力,使得被保护的软件模块可以执 行许多复杂的处理, 因而软件破解者虽然可以跟踪监视计算机中软件的 执行情况,但是一般难以完全仿制在 SOC芯片中的被保护代码, 因而无 法破解这种软件狗。 而装有被保护代码的软件版权保护设备只能由生产 厂家生产, 并为每一份合法授权的软件配送一个软件版权保护设备。 只 有持有这种软件版权保护设备的用户才能正常运行相应的软件。
软件版权保护设备与计算机系统的连接, 包括但不限于如下方式: (1)将 SOC芯片制作成智能卡,通过通用串行总线( Universal
Serial Bus , USB )接口与计算机相连。
(2)将 SOC 芯片制作成外围设备接口 (Peripheral Facility Interface , PCI )插卡, 插入到计算机的 PCI插槽中。
(3)将 SOC 芯片嵌入到计算机的主板上, 作为计算机的一个 硬件模块, 通过计算机内部的总线与计算机系统相连。
(4)将软件版权保护设备做成一台网络设备, 通过网络接口与 计算机相连。
现有技术的基于 SOC芯片的软件版权保护方案存在着这样的缺点: 每一种软件版权保护设备只能由一个软件厂家定制, 只能与一个特定软 件配套使用。 如果用户购买了多个采用这种软件版权保护方案的软件, 在安装以及使用这些软件的过程中 , 有可能需要同时使用多个软件版权 保护设备, 或者不断地在多个软件版权保护设备之间进行切换, 这不但 给用户的使用带来了很大的麻烦, 对 SOC的计算资源也是一种浪费。 发明内容
有鉴于此, 本发明的目的在于, 提出一种软件版权保护方法、 设备 和系统, 在保证软件的使用必须经过合法授权的前提下, 实现多个软件 共用同一个软件版权保护设备, 提高了使用的便利性。
本发明实施例提出一种软件版权保护设备, 包括:
外部接口, 用于与计算机设备进行交互;
密钥模块, 用于存储一对执行非对称加密算法的公钥和私钥, 所述 公钥以设备证书的形式保存; 根据来自计算机设备的请求, 将存储的设 备证书通过所述外部接口发送至计算机设备;
被保护软件调用模块, 用于实现计算机设备的软件主体部分通过所 述外部接口对被保护软件管理模块进行调用;
被保护软件管理模块, 用于通过所述外部接口接收来自计算机设备 的软件被保护部分的密文, 用所述密钥模块中存储的私钥对软件被保护 部分的密文进行解密, 执行解密后的软件被保护部分得到运行结果, 并 通过所述外部接口向所述计算机设备返回所述运行结果。
本发明实施例还提出另一种软件版权保护设备, 包括:
外部接口, 用于与软件现场交易子系统或计算机设备进行交互; 密钥模块, 用于存储一对执行非对称加密算法的公钥和私钥, 所述 公钥以设备证书的形式保存; 将存储的设备证书通过所述外部接口发送 至软件现场交易子系统;
被保护软件调用模块, 用于实现计算机设备的软件主体部分通过所 述外部接口对被保护软件管理模块进行调用;
被保护软件管理模块, 用于通过所述外部接口接收来自软件现场交 易子系统的软件被保护部分的密文, 存储所述软件被保护部分的密文; 根据被保护软件调用模块的调用, 用所述密钥模块中存储的私钥对存储 的软件被保护部分的密文进行解密, 执行解密后的软件被保护部分得到 运行结果, 并通过所述外部接口向所述计算机设备返回所述运行结果。
本发明实施例提出一种软件版权保护方法, 包括如下步骤: 将软件分成主体部分和被保护部分, 所述主体部分和被保护部分对 应相同的软件标识, 软件主体部分安装在计算机设备中;
计算机设备执行所述软件主体部分, 向软件版权保护设备获取设备 证书, 并向软件网络发售子系统发出携带所述设备证书的下载软件请 求;
软件网络发售子系统收到所述下载软件请求后, 检查所述设备证书 的合法性, 若检查通过, 则用所述设备证书中包含的公钥对软件被保护 部分进行加密得到软件被保护部分的密文, 并将所述软件被保护部分的 密文发送至所述计算机设备;
计算机设备运行软件主体部分, 并向所述软件版权保护设备发送调 用软件被保护部分的请求消息, 所述请求消息中包含软件标识;
软件版权保护设备用自身的私钥解密所述软件标识对应的软件被保 护部分密文, 执行解密后的软件被保护部分得到运行结果, 并向所述计 算机设备返回所述运行结果。
本发明实施例还提出另一种软件版权保护方法, 包括如下步骤: 将软件分成主体部分和被保护部分, 所述主体部分和被保护部分对 应相同的软件标识, 软件主体部分安装在计算机设备中;
软件现场交易子系统向第一软件版权保护设备请求该设备的设备证 书 DCertl ; 第一软件版权保护设备将自身的设备证书 DCertl输入软件 现场交易子系统;
软件现场交易子系统验证 DCertl是否合法; 如果是, 利用设备证书 DCertl的公钥将软件被保护部分进行加密,将所得到的软件被保护部分 的密文传送给第一软件版权保护设备进行保存;
计算机设备运行软件主体部分, 并向所述第一软件版权保护设备发 送调用软件被保护部分的请求消息, 所述请求消息中包含软件标识; 第一软件版权保护设备用自身的私钥解密所述软件标识对应的软件 被保护部分密文, 执行解密后的软件被保护部分得到运行结果, 并向所 述计算机设备返回所述运行结果。
本发明实施例还提出一种软件版权保护系统, 包括软件网络发售子 系统、 计算机设备和软件版权保护设备, 所述软件网络发售子系统用于 分别存放软件主体部分和软件被保护部分; 与计算机设备进行在线电子 交易, 交易成功后, 将软件主体部分发送至计算机设备, 并通过计算机 设备的软件保护代理模块获取软件版权保护设备的设备证书, 并用所述 设备证书的公钥对软件被保护部分加密, 将加密得到的软件被保护部分 密文发送至计算机设备;
所述计算机设备包括:
软件主体部分模块, 用于运行软件主体部分, 并通过软件保护代理 模块向软件版权保护设备发出调用软件被保护部分的请求, 并通过软件 保护代理模块接收来自软件版权保护设备的软件被保护部分的运行结 果;
软件保护代理模块, 用于实现计算机设备与软件版权保护设备的通 信; 以及
软件下载代理, 用于与软件网络发售子系统进行在线的电子交易, 从软件版权保护设备获取设备证书, 将所述设备证书发送至软件网络发 售子系统, 并从所述软件网络发售子系统下载软件主体部分和软件被保 护部分的密文;
所述软件版权保护设备包括:
外部接口, 用于与计算机设备进行交互;
密钥模块, 用于存储一对执行非对称加密算法的公钥和私钥, 所述 公钥以设备证书的形式保存; 根据来自计算机设备的请求, 将存储的设 备证书通过所述外部接口发送至计算机设备;
被保护软件调用模块, 用于实现计算机设备的软件主体部分通过所 述外部接口对被保护软件管理模块进行调用;
被保护软件管理模块, 用于通过所述外部接口接收来自计算机设备 的软件被保护部分的密文, 用所述密钥模块中存储的私钥对软件被保护 部分的密文进行解密, 执行解密后的软件被保护部分得到运行结果, 并 通过所述外部接口向所述计算机设备返回所述运行结果。
本发明实施例提出了另一种软件版权保护系统, 包括软件现场交易 子系统、 计算机设备和软件版权保护设备,
所述软件现场交易子系统用于存放软件被保护部分; 获取软件版权 保护设备的设备证书, 并用所述设备证书的公钥对软件被保护部分加 密, 将加密得到的软件被保护部分密文发送至软件版权保护设备; 所述计算机设备包括:
软件主体部分模块, 用于运行软件主体部分, 通过软件保护代理模 块向软件版权保护设备发出调用软件被保护部分的请求, 并通过软件保 护代理模块接收来自软件版权保护设备的软件被保护部分的运行结果; 以及
软件保护代理模块, 用于实现计算机设备与软件版权保护设备的通 信;
所述软件版权保护设备包括:
外部接口, 用于与软件现场交易子系统或计算机设备进行交互; 密钥模块, 用于存储一对执行非对称加密算法的公钥和私钥, 所述 公钥以设备证书的形式保存; 将存储的设备证书通过所述外部接口发送 至软件现场交易子系统;
被保护软件调用模块, 用于实现计算机设备的软件主体部分通过所 述外部接口对被保护软件管理模块进行调用;
被保护软件管理模块, 用于通过所述外部接口接收来自软件现场交 易子系统的软件被保护部分的密文, 存储所述软件被保护部分的密文; 根据被保护软件调用模块的调用, 用所述密钥模块中存储的私钥对存储 的软件被保护部分的密文进行解密, 执行解密后的软件被保护部分得到 运行结果, 并通过所述外部接口向所述计算机设备返回所述运行结果。
从以上技术方案可以看出,软件版权保护设备保存一对公钥和私钥, 公钥用来对软件被保护部分进行加密, 用户只能获得软件被保护部分的 密文, 而该密文只能通过唯一的软件版权保护设备中的私钥解密, 从而 实现了对软件版权的保护; 多个软件的被保护部分可以使用同一个软件 版权保护设备的公钥进行加密, 这样多个软件可以共用同一个软件版权 保护设备。
附图简要说明 图 2为本发明实施例提出的软件版权保护系统的结构框图; 图 3为图 2所示软件版权保护系统中的软件网络发售子系统的结构 框图;
图 4为图 2所示软件版权保护系统中的软件现场交易子系统的结构 框图;
图 5为本发明实施例提出的软件网络发售的流程图;
图 6为本发明实施例提出的软件现场交易的流程图;
图 7为本发明实施例提出的软件版权保护设备、 软件保护代理模块 和应用层之间的协议框架示意图;
图 8为本发明实施例提出的升级证书的流程图。
实施本发明的方式
本发明所要解决的技术问题是如何实现软件版权保护设备可以被 多种软件所共享的问题。 本发明的技术方案包括如下内容:
( 1 ) 软件版权保护设备及软件版权保护设备系统的结构。 ( 2 ) 软件版权保护设备的使用方法。
( 3 ) 软件被保护部分如何在不同厂家生产的软件版权保护 设备之间转移, 即软件版权保护设备的兼容性问题。
( 4 ) 软件版权保护设备的管理和维护方法。
为使本发明的目的、 技术方案和优点更加清楚, 下面结合附图和具 体实施例对本发明作进一步的详细阐述。
( 1 )、 软件版权保护设备及系统
1. 1、 软件版权保护设备的结构
本发明实施例使用 SOC芯片为核心构造软件版权保护设备。从需要 被保护的软件中分割出部分代码, 由软件版权保护设备的公钥对该部分 代码进行非对称加密; 计算机中的软件主体部分当需要调用被保护代码 时, 就向软件版权保护设备发出请求消息; 软件版权保护设备的私钥对 这部分代码进行解密并执行该代码, 并将执行结果返回给计算机中的软 件主体部分。 软件版权保护设备的产品形态可以是计算机的一个外接设 备, 如通过 USB接口、 串口或并口连接的智能卡; 也可以是嵌入在计算 机主板上的一个外围设备, 还可以是网络上的服务器。
本发明所提供的软件版权保护设备的硬件结构如图 1所示, 包括: 中央处理器(CPU ) 101 , 具有数学计算和逻辑运算能力的处理器芯 片。
片上内存(RAM ) 102, 供 CPU101计算所使用, 用于加载正在运 行的软件代码。
存储区 103: 用来保存永久性数据的存储器, 可以通过如 Flash、 磁 盘等形式实现。
外部接口 104, 负责与计算机设备进行连接并进行数据交互的物理 器件。
存储区 103中保存的内容包括:
公钥和私钥 111: 一对执行非对称加密算法的公钥和私钥, 由生产 厂家提供。 其中的公钥以设备证书的形式保存, 该证书由某个受用户信 任的证书颁发机构 (Certificate Authority, CA)签发。 所谓"签发"就是指 认证机构用自己的私钥对用户的设备证书进行数字签名。
采用摘要算法对一段数据先计算出数字摘要, 再用私钥进行加密, 文件附加上用户的数字签名后, 接收者可以使用用户的公钥来验证数字 签名的正确性, 从而确信数据或文件没有被墓改, 且发送数据的一方的 确是用户本人。 而其中的摘要算法是指对任意长度的数据进行哈希 ( Hash )杂凑计算, 可以得到一个固定长度的计算结果。 这结果被称为 这段数据的摘要或指纹, 因为该结果包含了这段数据的某些特征信息 , 一旦数据被改变, 相同哈希算法计算出的摘要也是不同的。 所以这样的 哈希算法也被称为摘要算法。 常用的摘要算法有: MD5和 SHA1。
这个证书的格式可以通过如下方式实现: 对现有的 X.509 标准
Profile, RFC5280 )进行扩展, 在证书的扩展属性( Extended Key Usage ) 中增加一个新的密钥用途: 软件保护。 具体的属性值需要由标准组织来 确定, 本文用 "id-kp-softwareProtection"表示这个属性值。
生产软件版权保护设备的厂家必须保证与软件保护证书中的公钥 相对应的私钥被安全地放置于软件版权保护设备中, 该私钥一旦被放入 软件版权保护设备就无法再从设备外部读取, 软件版权保护设备也不提 供读取私钥的软硬件接口, 该私钥在软件版权保护设备之外也不应存在 备份。 生产厂家应通过对软硬件的精心设计来落实这些要求。 这条约定 已在目前的业界已普遍得到实施,如用于证书认证的 USB智能卡就必须 符合上述约定。 假如, 为了提高软件版权保护设备的公信度, 可以让受 信任的第三方来向软件版权保护设备存放证书和私钥。
CA信任列表 112:为了使软件版权保护设备能够信任与之通讯的对 方, 生产厂家可以在软件版权保护设备中预置一个 CA信任列表。 用此 列表中的 CA证书来验证通讯对方的证书是否合法。
CA信任列表中不但有 CA的名称, 还有相应的公钥证书, 以便对 他人提供的证书进行验证。 表 1给出了 CA列表的格式的一种示例:
Figure imgf000012_0001
表 1 CA信任列表 被保护软件模块(Protected Part of Software, PPSW ) 113, 是从软 件中分离出来的被保护部分的代码。 该部分是可选的, 既可以将被保护 的软件模块保存在软件版权保护设备当中, 也可以将被保护的软件模块 采用安全数据传输方法 ( Secure Transferring Data Methods, STDM ) 方 法进行加密处理后保存在计算机上。 如果采用后种方式, 当软件在计算 机中启动时, 可以将此加密的 PPSW传输给软件版权保护设备, 由软件 版权保护设备对其解密后再加载到 RAM中运行。 所述 STDM方法可以 安全地实现对所传输数据的加密, 且被加密的数据只能由接收方对应的 私钥解密。 所述 STDM 方法包括但不限于数字信封 (Digital Envelope, DE)、 公钥加密传输 (Public Key Encryption, PKE)等方法。
如果采用的 STDM方法是数字信封方法, 则包括如下步骤:
( 1 )计算机将已存储的加密数据报文 Data(DE)传输至软件版权保 护设备。 该加密数据报文的格式如下:
Data(DE) = DE_Header + K(enc) +PPSW(enc)
其中, K表示某种对称加密算法中使用的对称密钥, Κ用于对 PPSW 进行对称加密, PPSW(plain)表示 PPSW的明文, PPSW( enc )表示 PPSW 加密后得到的密文。 采用软件版权保护设备所提供的公钥, 使用某种非 对称加密算法, 将对称密钥 K 进行加密, 得到 K 的密文 K(enc)。 DE_Header是报文头, 可以包含 K(enc)的长度、 PPSW (enc)的长度、 对 称加密算法和非对称加密算法等内容。 生成 Data(DE)的过程是在软件的 发售过程中进行的, 具体说明见后。
( 2 )根据 Data(DE)的格式, 软件版权保护设备从 Data(DE)中分离 出 PPSW(enc)和 K(enc)两部分的数据。
( 3 )软件版权保护设备使用保存在自己本地的私钥, 对 K(enc)执 行非对称加密算法的解密操作, 可以获得对称密钥 K的明文。 ( 4 )软件版权保护设备使用对称密钥 K对 PPSW(enc)进行解密, 得到 PPSW的明文。
( 5 )软件版权保护设备执行 PPSW, 并向计算机返回运行结果。 如果采用 PKE的方法, 则包括如下步骤:
( 1 ) 计算机将自身存储的事先已加密的 PPSW ( enc )传输至 软件版权保护设备。 该 PPSW ( enc )是采用某种非对称 加密算法, 采用该软件版权保护设备所提供的公钥对 PPSW 进行加密得到的密文。 对 PPSW 进行加密得到 PPSW ( enc ) 的过程是在软件的发售过程中进行的, 具 体说明见后。
( 2 ) 软件版权保护设备用自身的私钥对 PPSW(enc)进行解密 得到 PPSW的明文;
( 3 ) 软件版权保护设备执行 PPSW, 并向计算机返回运行结 果。
被保护软件调用协议 ( PPSW Calling Protocol, PSCP )模块 114, 用于实现软件主体部分对软件版权保护设备上的 PPSW 功能的调用功 能。
被保护软件管理协议(PPSW Management Protocol, PSMP )模块 115, 是为了达到管理和维护 PPSW的目的, 在软件主体部分与软件版 权保护设备之间运行的管理通讯模块。 PSMP协议的详细介绍参见 "软件 版权保护设备的应用程序接口 ( API )和通讯协议"一节的介绍。
1.2、 软件版权保护系统 (Software Protection Infrastructure , SPI) 应用具有上述结构和功能的软件版权保护设备, 本发明实施例可以 提供如图 2所示的软件版权保护系统, 该系统中包括:
( 1 )软件版权保护设备 ( Software Protection Device, SPD ) 100, 即图 1所示的软件版权保护设备。
( 2 )软件保护代理模块(Software Protection Agent, SPA ) 201 , 该模块用于为计算机设备 200中的软件提供访问 SPD 100的接口。 SPA 201 可以是一个软件模块, 可以由软件版权保护设备的生产厂商提供, 也可以由操作系统提供。 具体软件接口描述参见"软件版权保护设备的 API接口和通讯协议"一节的介绍。
( 3 )软件的主体部分( Main Part of Software, MPSW ) 202, 可以 直接在计算机设备 200中运行。
( 4 )被保护的软件部分 ( Protected Part of Software, PPSW ) 203, 是从软件整体中分离出来的软件模块。 PPSW 203在 SPD 100中运行, 以起到防止软件被破解的效果。 PPSW 203既可以保存在 SPD 100中, 也可以采用 STDM方法加密后再保存到计算机设备 200中,在运行时再 加载到 SPD 100中。
( 5 )软件网给发售子系统( Software Network Distribution System, SWNDS ) 204, 即软件厂商用来实现网络发售软件的网站服务器。
( 6 )软件现场交易子系统(Software Market Distribution System, SWMDS ) 205, 即软件销售商用来进行现场交易的软件发售系统。
( 7 )软件下载代理( Software Downloading Agent, SDA ) 206, 用 于负责与 SWNDS 204进行在线的电子交易, 下载软件的主体部分 202 和被保护部分 203。 SDA 206可以是一个运行在计算机中的软件, 该软 件应该由软件厂商提供。
( 8 )被保护软件的携带装置( Protected Software Carrier, PSC ) 207。 该设备必须有足够大的存储空间, 用来保存被保护的软件模块。 在用户 购买软件时, 软件销售商将软件中受保护的部分即 PPSW 203 复制到 PSC 207中; 而软件的主体部分可以通过光盘等其它存储介质保存。 用 户购买了保存软件主体部分的存储介质, 在计算机设备 200中安装并运 行软件主体部分, PSC 207中保存的 PPSW 203传送给 SPD 100, 从而 完成了整个软件在计算机上的部署。
(9)软件转移代理( Software Shifting Agent, SSA ) 208。 它是一个 运行在计算机中的软件程序, 负责将软件被保护部分 203从 PSC 207通 过 SPA 201转移到 SPD 100。
所述计算机设备 200可以是个人电脑, 也可以是其他可运行软件的 电子设备, 包括但不限于游戏机、 移动通信终端、 上网本、 GPS导航仪 等。
本发明实施例所提供的软件保护系统支持以下两种软件发售方式:
( 1 )通过在线的电子交易, 以网络下载的方式发售软件。
( 2 )通过现场交易, 以拷贝软件的方式发售软件。
这两种发售方式要求软件厂商提供相应的发售系统: 软件网络发售 子系统( SWNDS ) 204和软件现场交易子系统( SWMDS ) 205。 以下对 这两个系统分别进行说明。
图 3示出了软件网络发售子系统 204的内部架构, 具体包括: ( 1 )软件数据库( Software Database, SWDB ) 301 , 是一个存放软 件的数据库。 在数据库中, 将一份可独立运行的软件分割为两部分: 软 件主体部分(MPSW ) 302和软件被保护部分(PPSW ) 303, 其中任何 一个部分都不可以独立运行; 或者, MPSW 302只能独立地实现该软件 的一部分功能,另一部分功能必须依赖 PPSW 303的运行结果才能实现。
( 2 )软件电子交易模块 ( Software Electronic Transaction Module, SWETM ) 304,该模块负责与远程用户终端进行电子交易, 交易成功则向 主体部分发售模块和被保护部分发售模块发送下载指示;
( 3 )主体部分发售模块 ( Main Part Network Distribution Module, MP-NDM ) 305, 用于根据来自软件电子交易模块 304的下载指示, 将 软件主体部分 302发送至计算机设备。
( 4 ) 被保护部分发售模块 ( Protected Part Network Distribution Module, PP-NDM ) 306, 用于在收到来自软件电子交易模块 304的下载 指示后, 获取软件版权保护设备 100的设备证书, 并根据证书颁发机构 验证,验证通过后,用所获取的设备证书的公钥对软件被保护部分加密, 将加密得到的软件被保护部分密文发送至计算机设备。
( 5 ) CA信任列表 ( Trusted CA List, TCAL ) 307, 包括 CA的名 称和相应的 CA公钥证书, 其形式可以如表 1所示。
图 4为所述软件现场交易子系统(SWMDS ) 205结构框图。 其中, ( 1 )MPSW 401和 PPSW 402分别是软件的主体部分和被保护部分。 在现场交易的情况下, MPSW 401的拷贝将通过各种存储媒质,如光盘、 磁盘等, 直接发售给购买者。
( 2 )软件数据库( Software Database, SWDB ) 403, 在里面只存放 了被保护部分软件( PPS W ) 402, 而无需存放 MPS W 401。
( 3 ) CA信任列表 ( Trusted CA List, TCAL ) 405, 包括 CA的名 称和相应的 CA公钥证书, 其形式可以如表 1所示。
( 4 )被保护部分的现场发售模块( Protected Part Market Distribution Module, PP-MDM ) 404, 用于获取 PSC207设备证书, 获取方式可以是 从 PSC 207的接口直接读取,或者通过人工输入的方式。根据 TCAL 405 过后, 用所述设备证书的公钥对 SWDB403中保存的 PPSW 402加密, 将加密得到的软件被保护部分密文发送至 PSC 207。 SWDB 403中可能 保存分别对应不同软件的多个 PPSW, PP-MDM 404需要获取软件标识, 根据软件标识找到对应的 PPSW并进行上述加密操作。
( 5 )被保护软件的携带装置( Protected Software Carrier, PSC ) 207, 用于保存用户已购买软件的被保护部分。 PSC 207的内部结构可以参照 图 1所示的 PSD 100, 换句话说, PSC 207可以就是一个软件版权保护 设备。或者, PSC 207也可以与本发明实施例的软件版权保护设备( SPD ) 有所不同: PSC 207可以不具备运行软件被保护部分的能力, 而 SPD必 须具有该能力; SPD可以不存储软件被保护部分, 只需要较小的存储空 间就可以满足需要; 而 PSC必须具有存储软件被保护部分的能力, 因此 其所需的存储空间相对较大。
2.1、 软件通过网络进行安全发售的流程
依照图 2所示软件版权保护系统以及图 3所示的软件网络发售子系 统 204, 软件通过网络进行安全发售的流程如图 5所示, 包括如下步骤: 步骤 501:用户计算机中的 SDA 206与 SWETM 304进行电子交易, 完成购买软件的申请和在线支付等操作。
步骤 502: SWETM 304在确认用户已完成购买操作的情况下, 为用 户生成一个下载软件所用的令牌, 并将此令牌下发给 SDA 206。 令牌包 括软件标识和交易标识。 软件标识是软件网络发售子系统为每个在线发 售的软件分配的标识符,根据软件标识可以在 SWDB 301中查找到相应 的下载软件。 交易标识包括交易流水号和防伪随机字符串。 交易流水号 是 SWETM 304 为每笔电子交易分配的顺序号。 防伪随机字符串是 SWETM 304为每笔电子交易临时生成的随机字符串, 有一定的有效期, 过期作废。 使用此字符串可以避免他人伪造交易。
步骤 503: SWETM 304将包含下载令牌和令牌有效期的消息发送给 MP-NDM 305, 通知该模块持有此令牌的用户可以购买指定软件的主体 部分。 步骤 504: SWETM 304将包含下载令牌和令牌有效期的消息发送给 PP-NDM 306, 通知该模块持有此令牌的用户可以购买指定软件的被保 护部分。 步骤 503和步骤 504可以是同时进行, 之间没有逻辑上的先后 顺序。
步骤 505: SDA 206向 MP-NDM 305发出下载软件主体的请求。 请 求中包括了软件下载令牌。
步骤 506: MP-NDM 305根据令牌中的交易标识检查下载令牌的合 法性, 检查通过后, 根据令牌中的软件标识获取相应的软件主体部分, 并向 SDA 206下发所获取的软件主体部分 302。 SDA 206将接收到的软 件主体部分保存在计算机本地的存储器中, 成为计算机设备 200 中的 MPSW 202。
步骤 507 : SDA 206向 SPA 201发出获取 SPD 100的设备证书 (Device Certificate, DCert.)的请求。
步骤 508: SPA 201向 SPD 100发送消息,要求获取设备证书 DCert。 步骤 509: SPD 100向 SPA 201返回 DCert文件。
步骤 510: SPA 201向 SDA 206返回 DCert。
步骤 511: SDA 206向 PP-NDM 306发出下载软件被保护部分的请 求。该请求中包括软件下载令牌和软件版权保护设备的设备证书 DCert。
步骤 512: PP-NDM 306接收该请求, 并首先检查下载令牌的合法 性, 若下载令牌合法, 再检查 DCert的合法性。 检查证书的合法性可以 有多项内容, 在本发明实施例所述的方案中包含以下的检查步骤:
1 )证书的是否过期?
2 )证书的颁发者是否在自己的受信任列表中?
3 )证书的数字签名是否正确?
4 ) 证 书 中 的 "Extended Key Usage"属性值是否 为 id-kp- softwareProtection?
只有上述检查都通过, 才表明收到的证书是合法的软件版权保护设 备证书。 为描述方便, 本文将上述验证证书的过程称为软件保护证书的 验证过程 ( Software Protection Certificate Verification, SPCV ) , 以下同。
PP-NDM 306检查下载令牌和设备证书的合法性均通过后, 就可以 向 SDA发送软件的被保护部分 PPSW了。 可以采用前文所述的 STDM 方法对要传输的 PPSW进行加密和封装, 得到 PPSW(enc), 然后通过网 络向远程计算机上的 SDA发送此加了密的报文。
步骤 513: SDA 206收到 PP-NDM 306发来的 PPSW(enc)后, 保存 PPSW(enc)。
本步骤可以有两种实现方式:
a) 将 PPSW(enc)发送给 SPD 100, 由 SPD 100使用自身的私钥对其 进行解密, 然后将解密后的 PPSW明文保存在 SPD 100中。 图 5中示出 的步骤 513就是这种实现方式。
b)将 PPSW(enc)保存在计算机 200 的永久性存储器上, 如磁盘。 当软件的主体部分启动运行时, 再将 PPSW(enc)传送给 SPD 100, 令其 解密和加载运行软件的被保护部分。 这种做法的好处是可以节省 SPD 100的存储空间。 该实现方式未在图 5中示出。
通过以上网络发售流程可以看出, SWNDS 204需要先获取 SPD 100 的设备证书, 并使用设备证书的公钥对 PPSW进行加密, 在发售完成后 用户所能得到的是加了密后的 PPSW, 而该密文只能通过 SPD 100内部 存储的私钥来解密。 由于每个 SPD100中所包含的公私钥都是独一无二 的, 所以上述被加密的 PPSW将无法被其它的 SPD100设备正确解密。 这样一来, 虽然本发明不能阻止用户对 MPSW和 PPSW(enc)的任意拷 贝, 但是这些拷贝都依赖同一 SPD100设备来执行, 所以用户在同一时 刻只能运行起来软件的一个拷贝, 从而起到了阻止用户使用软件非法拷 贝的效果。
此外, 用户使用 SPD 100通过该发售流程所得到的多个软件, 在计 算机中运行时将可以共用同一个 SPD 100, 从而实现了软件版权保护设 备的共享。
补充说明: 为了保证整个交易和下载过程的安全, SDA 206 与 SWNDS 204之间可以采用加密的安全通讯协议进行交互,如 SSL协议, 以完成身份认证、 私密性、 完整性和抗攻击等安全防护功能。
2.2、 软件通过现场交易形式进行软件发售的流程
依照图 2所示软件版权保护系统以及图 4所示的软件现场交易子系 统 205, 软件现场交易流程如图 6所示, 包括如下步骤:
步骤 601: PP-MDM 404向 PSC 207请求该设备的设备证书 DCertl。
205, PP-MDM 404通过连接的有线或无线接口向 PSC 207发出该请求。
步骤 602: PSC 207向 PP-MDM 404返回所请求的证书 DCertl。 步骤 603: PP-MDM 404采用 SPCV过程验证 DCertl是否为合法的 软件保护证书; 如果是, 就采用 STDM方法利用证书 DCertl的公钥将 PPSW进行加密,得到加密后的密文 PPSW(encl), 然后将其传送给 PSC 207进行保存; 否则, 就拒绝向 PSC 207传送 PPSW。 此外, 将保存有 软件主体部分( MPSW ) 的存储介质如光盘交给用户。
之后, 用户就可以带着保存了 MPSW的存储介质和 PSC 207回到 软件的安装地点, 将软件的主体部分 MPSW安装在计算机设备 200上。 一种实施方案, PSC 207直接可以作为软件版权保护设备; 另一种实施 方案, PSC 207不作为软件版权保护设备,需要把 PSC 207与计算机 200 相连, 通过下面的步骤将软件的被保护部分 PPSW转移到 SPD 100中: 步骤 604:计算机设备 200运行 SSA程序,由 SSA 208调用 SPA 201 提供的接口, 获取 SPD 100的设备证书 DCert2。
步骤 605: 8? 201向8 0 100发出消息, 请求该设备的设备证书 DCert2。
步骤 606: SPD 100向 SPA 201返回 DCert2。
步骤 607: SPA 201将 DCert2返回给 SSA 208。
步骤 608: SSA 208向 PSC 207发出请求转移软件被保护部分的消 息, 其中包括了 SPD 100的设备证书 DCert2。
步骤 609: PSC 207采用 SPCV过程验证 DCert2是否为合法的软件 保护证书; 如果是, 就先用自身的私钥对本设备中保存的 PPSW(encl) 进行解密, 得到 PPSW, 然后采用 STDM方法利用 DCert2中的公钥对 PPSW进行加密,得到加密的软件被保护部分 PPSW(enc2)。最后 PSC 207 将 PPSW(enc2)传送给 SSA 208。 同时将保存在本设备中的 PPSW(encl) 删除, 以确保 PPSW只授予用户一份。
步骤 610: SSA 208调用 SPA 201接口保存 PPSW(enc2)。 本步骤的 实现方式可以有两种, 一种是 SPA 201可以将 PPSW(enc2)保存在 SPD 100中, 即图 6中示出的方式; 另一种是将 PPSW(enc2)保存在计算机的 永久性存储器中, 该方式未在图 6中示出。
3、 软件版权保护设备的 API接口和通讯协议
为了实现 SPD设备的通用性, SPA模块需要对上层应用程序提供一 组标准的 API接口, 同时 SPA与 SPD之间也需要制定一套标准化的通 讯协议。 SPA、 SPD和应用层之间的协议框架如图 7所示。
SPA为上层软件提供的完整的 API应该包含两部分内容:
( 1 ) PPSW调用接口 (PPSW Calling Interface, PSCI ), 是上层应 用程序调用 PPSW程序功能的软件接口。 ( 2 ) PPSW管理接口 (PPSW Management Interface, PSMI ), 是 管理和维护 PPSW所需要的软件接口。
SPA与 SPD之间的通讯协议也应该包括两部分内容:
( 1 ) PPSW调用协议( PPSW Calling Protocol, PSCP ), 是 SPA调 用 SPD上的 PPSW功能的通讯协议。
( 2 ) PPSW管理协议( PPSW Management Protocol, PSMP ), 是 为了管理 PPSW, SPA与 SPD之间的交互协议。
PSCI部分的接口和 PSCP部分的通讯协议在目前已有的技术方案中 已有体现, 本发明将不再详细阐述。 本发明主要对 PSMI部分的程序接 口和 PSMP部分的通讯协议进行描述:
( 1 ) PSMI接口
本文将采用 C语言函数的形式来描述软件接口。但采用其它形式(编 程语言、 表格、 文字)描述的软件接口, 只要在接口功能、 接口的调用 方法和所使用的参数等方面与本发明所提供的接口相似, 则应该被认为 与本发明所述的接口相同。另夕卜,本发明只提供了实现主要功能的接口, 在具体实现过程中可能会增加其它辅助性的接口。
接口 1、 获取 SPD的设备证书
函数名为: int SPA_GetCertificatefrmSPD( int IDevHandle, unsigned char *pucDCert, unsigned int *pulLen)
函数功能:由应用程序调用此接口获取指定 SPD设备上的设备证书 输入参数:
IDevHandle: 标识所访问 SPD的设备句柄。 句柄是由计算机系统 给不同设备分配的标识符, 在计算机系统内可以唯一标识某个设备。
输出参数:
pucDCert: 指向承载 SPD设备证书的内存块的指针。 pulLen: 参数 pucDCert中有效数据的长度, 以字节为单位。
返回值:
1 : 获取成功
0: 获取失败
接口 2、 保存 PPSW到 SPD
函数名为: int SPA_SavePPSWtoSPD(int IDevHandle, char *szAppID, usigned char *pucPPSW, unsigned int *pulLen)
函数功能:由上层应用调用此接口,向 SPD保存某应用程序的 PPSW 部分的软件。
输入参数:
IDevHandle: 标识所访问 SPD的设备句柄。
szAppID: PPSW所属软件的标识字符串, 以 0结尾。
pucPPSW: 指向承载 PPSW代码的内存块的指针。
pulLen: 参数 pucPPS W中有效数据的长度, 以字节为单位。
输出参数: 无
返回值:
1 : 获取成功
0: 获取失败
接口 3、 请求转移 PPSW
函数名为: int SPA_ReqShiftPPSW(int IDevHandle, char *szAppID, unsigned char *pucDCert, unsigned int *pulCertLen, unsigned char * pucPPSW, unsigned int *pulPPSWLen)
函数功能: 由上层应用调用,请求 SPD将指定软件的 PPSW部分转 移出来。
输入参数: IDevHandle: 标识保存 PPSW的源 SPD的设备句柄。
szAppID: PPSW所属软件的标识字符串, 以 0结尾。
pucDCert: 指向承载目的 SPD证书的内存块的指针, 源 SPD用 此证书重新加密 PPSW。
pulCertLen: 参数 pucDCert中有效数据的长度, 以字节为单位。 输出参数:
pucPPSW: 指向从源 SPD中转移出的 PPSW代码的内存块的指 针。
pulPPSWLen: 转移出的 PPSW代码的数据长度, 以字节为单位。 返回值:
1 : 获取成功
0: 获取失败 接口 4、 准备升级证书
函数名为: int SPA_PreparetoUpgradeDCert(int IDevHandle, unsigned char *pucPubk2, unsigned int *pulPkLen, unsigned char *pucDCertl, unsigned int *pulCertLen)
函数功能: 由上层应用调用, 通知 SPD准备升级设备证书。 并获得 SPD设备当前使用的设备证书和新的设备公钥。
输入参数:
IDevHandle: 标识保存 PPSW的源 SPD的设备句柄。
输出参数:
pucPubk2: 指向承载新的设备公钥内存块的指针。
pulPkLen: 公钥内存块的长度, 以字节为单位。
pucDCert: 指向承载当前设备证书内存块的指针。 pulCertLen: 当前设备证书数据的长度, 以字节为单位。
返回值:
1 : 获取成功
0: 获取失败 接口 5、 升级设备证书
函数名为: int SPA_UpgradeCertificateOfSPD( int IDevHandle, unsigned char *pucDCert, unsigned int ulLen)
函数功能:由应用程序调用此接口升级指定 SPD设备上的设备证书 输入参数:
IDevHandle: 标识所访问 SPD的设备句柄。
pucDCert: 指向承载升级证书的内存块的指针。
ulLen: 参数 pucDCert中有效数据的长度, 以字节为单位。
返回值:
1 : 升级成功
0: 升级失败 接口 6、 升级 CA信任列表
函数名为: int SPA_UpgradeTcalOfSPD( int IDevHandle, unsigned char *pucTcal, unsigned int ulLen)
函数功能: 由应用程序调用此接口升级指定 SPD设备上的受信任 CA列表
输入参数:
IDevHandle: 标识所访问 SPD的设备句柄。
pucTcal: 指向承载最新 CA信任列表的内存块的指针。 ulLen: 参数 pucTcal中有效数据的长度, 以字节为单位。
返回值:
1: 升级成功
0: 升级失败
(2) PSMP协议
根据前述的软件发售流程和升级设备证书的流程, 可以确定 PSMP 通讯协议的消息内容。 为了能更好地突出协议的实质内容, 本发明在描 述协议消息时只定义了消息的功能和所包含的参数, 对具体的消息格式 不作说明。
1)请求 SPD设备证书的消息
功能: SPA向 SPD发出的获取设备设备证书的请求消息
参数: a)请求 SPD设备证书的命令。
2)返回 SPD设备证书的消息
功能: SPD向 SPA返回的携带设备证书的应答消息
参数: a)SPD的设备证书。 3)请求保存 PPSW到 SPD的消息
功能: SPA向 SPD发出的请求保存 PPSW的消息
参数: a)请求保存 PPSW的命令;
b) PPSW所属软件的标识;
c)承载 PPSW的数据。 4)保存 PPSW的应答
功能: SPD向 SPA返回的对保存 PPSW请求的应答消息 参数: a)保存成功还是失败的标志。 5)请求转移 PPSW的消息
功能: SPA向 SPD发出的请求转移 PPSW的消息
参数: a)请求转移 PPSW的命令;
b)要转移的 PPSW所属软件的标识;
c)另一个 SPD的设备证书。
6)转移 PPSW的应答
功能: SPD向 SPA返回的对转移 PPSW请求的应答消息 参数: a)重新加密过的 PPSW数据 7)请求准备升级设备证书的消息
功能: SPA向 SPD发出的请求准备升级设备证书的消息。
参数: a)请求准备升级设备证书的命令
8)对准备升级设备证书的应答
功能: SPD向 SPA返回的对准备升级设备证书请求的应答消息。 参数: a)当前设备的设备证书;
b)设备新生成密钥对的公钥。
9)请求保存新设备证书的消息
功能: SPA向 SPD发出的请求保存新设备证书的消息。 参数: a)请求保存新设备证书的命令;
b)从 CA申请下来的新的设备证书;
10)对保存新设备证书请求的应答
功能: SPD向 SPA返回的对保存新设备证书请求的应答消息 参数: a)保存新设备证书成功还是失败的标志。
11)请求升级设备证书的消息
功能: SPA向 SPD发出的请求升级设备证书的消息。
参数: a)请求升级设备证书的命令;
12)对升级设备证书的应答
功能: SPD向 SPA返回的对升级设备证书请求的应答消息 参数: a)升级设备证书成功还是失败的标志。
13)请求升级 CA信任列表的消息
功能: SPA向 SPD发出的请求升级 CA信任列表的消息。
参数: a)请求升级 CA信任列表的命令;
b)最新的 CA信任列表。
14)对 CA信任列表的应答
功能: SPD向 SPA返回的对升级 CA信任列表请求的应答消息 参数: a)升级 CA信任列表成功还是失败的标志。
4、 软件版权保护设备的管理维护问题
在上述主要方案之外, 本发明还需要考虑以下几个问题的解决: 4.1、 软件被保护部分的转移
用户如果想把 PPSW从一个 SPD中转移到另外一个 SPD中, 则 可以采用类似将 PPSW从 PSC转移到 SPD中的方法进行软件的转移。 这里关键之处有两点:
( 1 )源 SPD需要验证目的 SPD的设备证书是否是合法的软件保护 证书。
( 2 )源 SPD在向目的 SPD传送加了密的 PPSW的同时, 应该删除 掉保存在自己设备中的原 PPSW, 以保证同样的 PPSW仅有一份。
4.2、 证书升级
CA签发的证书一般都有一定的有效期, 过期后证书将被认为无 效。 所以 SPD 100需要提供证书升级的功能。 可以采用图 8所示的证书 升级流程。 图示说明:
( 1 ) CUA: Certificate Upgrading Agent, 证书升级代理。 是一个负 责升级设备证书的程序模块, 在与 SPD相连的计算机设备上运行。
( 2 ) SPA: Software Protection Agent, 软件保护代理模块。
( 3 ) SPD: Software Protection Device, 软件版权保护设备。
( 4 ) CA: Certificate Authority, 证书颁发机构服务器。 在这里是一 个互联网上的服务器, 代表受信任的第三方权威机构签发证书。 此服务 器可以由 SPD的生产厂家提供, 也可以由政府机构或运营商提供。
在 SPD中的设备证书过期之前,可以运行 CUA来升级 SPD中的设 备证书。 升级的过程如下:
步骤 801: CUA向 SPA发出准备升级证书的消息。
在 SPD连接到计算机设备时, CUA可以检测 SPD的设备证书的期 限, 判断其是否过期, 若过期则发出升级设备证书的提示信息, 该提示 信息显示在计算机设备的屏幕上, 用户根据该提示信息可以选择触发步 骤 801。 或者用户直接发出相应指令触发步骤 801。
步骤 802: SPA向 SPD发出准备升级证书的消息。
步骤 803: SPD接收到准备证书升级的消息后, 在首先生成一对新 的公钥 ( Pubk2 )和私钥(Prvk2 ) , 然后向 SPA返回应答消息, 在其中 包括刚生成的公钥 (Pubk2 )和目前正在使用的设备证书 DCertl。
步骤 804: SPA向 CUA返回 SPD对准备升级证书命令的应答, 主 要包括公钥 ( Pubk2 )和目前正在使用的设备证书 DCertl。
步骤 805: CUA向 CA发出升级设备证书的请求,其中包含了 Pubk2 和 DCertl。
步骤 806: CA接收到证书升级的请求后, 首先采用 SPCV过程验证 DCertl是否为合法的软件保护证书。 如果不合法, CA就拒绝签发新的 设备证书; 否则, 就生成一个新的软件保护证书 DCert2, 其中的公钥为 Pubk2, 并为之签名。 然后采用 STDM方法利用 DCertl中的公钥 Pubkl 对新生成的 DCert2进行加密, 得到 DCert2(enc), 再将其返回给 CUA。
步骤 807: CUA 向 SPA发出升级设备证书的命令, 其中包含了 DCert2(enc)。
步骤 808: SPA向 SPD发出保存新设备证书的请求, 其中包含了 DCert2(enc)。
步骤 809: SPD用本设备当前使用的私钥, 即与 DCertl 中的公钥 Pubkl相匹配的私钥 Prvkl , 对 DCert2(enc)进行解密, 得到新签发的设 备证书 DCert2;然后向 SPA返回对保存新设备证书 DCert2请求的应答。
步骤 810 (可选): 如果 PPSW采用 STDM方法加密后保存在计算 机的存储器中, 在更新设备证书的时候就需要对 PPSW重新加密。 在这 一步, SPA向 SPD发出更新 PPSW加密封装的请求, 其中包含的主要 内容就是 PPSW (encl) , 它被 Pubkl用 STDM方法加密。 然后执行下一 步骤 811。
如果 PPSW直接以明文方式保存在 SPD设备中,则不需要执行本步 骤, 直接执行步骤 812。
步骤 811 (可选): SPD采用 Prvkl对 PPSW(encl)进行解密, 得到 PPSW的明文, 然后用 Pubk2对 PPSW采用 STDM方法进行加密,得到 PPSW(enc2)。 之后, SPD将 PPSW(enc2)包含在应答消息中返回给 SPA , 由 SPA将 PPSW(enc2)保存在计算机本地的存储器中。
如果计算机上保存了多个被加密的 PPSW, SPA则需要多次重复步 骤 810-811 , 直到所有的 PPSW的加密封装被更新完毕, 才执行后续的 操作。
步骤 812: SPA向 SPD发出更新设备证书的请求。
步骤 813: SPD用 DCert2和 Prvk2替换目前设备中正在使用的证书 DCertl和私钥 Prvkl , 然后向 SPA返回应答消息。
步骤 814: SPA向 CUA返回升级设备证书的执行结果。
4.3、 CA信任列表的升级
在 SPD卖给用户后,该设备的生成厂家在后续的软件版权保护设 备可能会增加或减少所信任的 CA, 因而需要为以前出售过的 SPD更新 所信任的 CA列表。
SPD的生产厂商可以在 Internet上提供一个 TCAL服务器, 供升级 SPD的 CA信任列表之用。所提供的 CA信任列表文件要附上为 SPD所 信任 CA的数字签名。
SPD通过代理软件向 TCAL服务器发出请求, 获取最新的 CA信任 列表。 SPD利用设备中已有的 CA信任列表对其进行验证, 以确定要升 级的 CA信任列表文件的数字签名是正确的。 在验证通过后, SPD就可 以用新下载的列表替换原来的列表, 完成 CA信任列表的升级工作。 现有的软件版权保护技术中, 将软件的一部分代码用硬件单独存 储, 用户必须使用该硬件才能拥有软件的全部代码, 而由于不同软件之 间代码往往无法共用, 因此造成使用多个软件时就必须有多个软件版权 保护设备。 从以上实施例的描述可以看出, 本发明的软件版权保护设备 保存一对公钥和私钥, 公钥用来对软件被保护部分进行加密, 该加密过 程在软件发售中实施, 用户只能获得软件被保护部分的密文, 而该密文 只能通过唯一的软件版权保护设备中的私钥解密, 从而实现了对软件版 权的保护; 软件版权保护设备的公钥和私钥可以被多个软件所共用, 这 样多个软件可以共用同一个软件版权保护设备。
通过以上对实施方式的描述, 本领域的技术人员可以清楚地了解到 本发明可借助软件加必需的硬件平台的方式来实现, 当然也可以全部通 过硬件来实施,但很多情况下前者是更佳的实施方式。基于这样的理解, 本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产 品的形式体现出来, 该计算机软件产品可以存储在存储介质中, 如
ROM/RAM,磁碟、光盘等, 包括若干指令用以使得一台计算机设备(可 以是个人计算机, 服务器, 或者网络设备等)执行本发明各个实施例或 者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡 在本发明的精神和原则之内所作的任何修改、 等同替换和改进等, 均应 包含在本发明的保护范围之内。

Claims

权利要求书
1、 一种软件版权保护设备, 其特征在于, 包括:
外部接口, 用于与计算机设备进行交互;
密钥模块, 用于存储一对执行非对称加密算法的公钥和私钥, 所述 公钥以设备证书的形式保存; 根据来自计算机设备的请求, 将存储的设 备证书通过所述外部接口发送至计算机设备;
被保护软件调用模块, 用于实现计算机设备的软件主体部分通过所 述外部接口对被保护软件管理模块进行调用;
被保护软件管理模块, 用于通过所述外部接口接收来自计算机设备 的软件被保护部分的密文, 用所述密钥模块中存储的私钥对软件被保护 部分的密文进行解密, 执行解密后的软件被保护部分得到运行结果, 并 通过所述外部接口向所述计算机设备返回所述运行结果。
2、根据权利要求 1所述的软件版权保护设备, 其特征在于, 所述软 件版权保护设备进一步包括密钥生成模块, 用于生成相互对应的新公钥 和新私钥, 将所述新公钥发送至计算机设备, 将所述新私钥发送至密钥 模块;
密钥模块进一步用于通过外部接口接收来自计算机设备的新设备证 书的密文, 用当前存储的私钥解密所述新设备证书的密文, 得到新设备 证书, 用所述新设备证书替换已存储的设备证书, 并用来自密钥生成模 块的新私钥替换已存储的私钥。
3、根据权利要求 1或 2所述的软件版权保护设备, 其特征在于, 存 储区存储的内容进一步包括: 证书颁发机构 CA信任列表, 用于保存可 以信任 CA的名称及其对应的 CA公钥证书;
所述公钥以设备证书的形式保存为: 证书文件由 CA机构进行数字 签名并公开发布, 且证书中使用扩展属性表明此证书的用途是 "软件保 护,,。
4、 一种软件版权保护设备, 其特征在于, 包括:
外部接口, 用于与软件现场交易子系统或计算机设备进行交互; 密钥模块, 用于存储一对执行非对称加密算法的公钥和私钥, 所述 公钥以设备证书的形式保存; 将存储的设备证书通过所述外部接口发送 至软件现场交易子系统;
被保护软件调用模块, 用于实现计算机设备的软件主体部分通过所 述外部接口对被保护软件管理模块进行调用;
被保护软件管理模块, 用于通过所述外部接口接收来自软件现场交 易子系统的软件被保护部分的密文, 存储所述软件被保护部分的密文; 根据被保护软件调用模块的调用, 用所述密钥模块中存储的私钥对存储 的软件被保护部分的密文进行解密, 执行解密后的软件被保护部分得到 运行结果, 并通过所述外部接口向所述计算机设备返回所述运行结果。
5、 一种软件版权保护方法, 其特征在于, 该方法涉及如权利要求 1 所述的软件版权保护设备, 包括如下步骤:
将软件分成主体部分和被保护部分, 所述主体部分和被保护部分对 应相同的软件标识, 软件主体部分安装在计算机设备中;
计算机设备执行所述软件主体部分, 向软件版权保护设备获取设备 证书, 并向软件网络发售子系统发出携带所述设备证书的下载软件请 求;
软件网络发售子系统收到所述下载软件请求后, 检查所述设备证书 的合法性, 若检查通过, 则用所述设备证书中包含的公钥对软件被保护 部分进行加密得到软件被保护部分的密文, 并将所述软件被保护部分的 密文发送至所述计算机设备; 计算机设备运行软件主体部分, 并向所述软件版权保护设备发送调 用软件被保护部分的请求消息, 所述请求消息中包含软件标识;
软件版权保护设备用自身的私钥解密所述软件标识对应的软件被保 护部分密文, 执行解密后的软件被保护部分得到运行结果, 并向所述计 算机设备返回所述运行结果。
6、根据权利要求 5所述的方法, 其特征在于, 所述软件网络发售子 系统将所述软件被保护部分的密文发送至所述计算机设备之后, 进一步 包括:
将软件被保护部分的密文保存在所述软件版权保护设备中或保存在 计算机设备中。
7、根据权利要求 5所述的方法, 其特征在于, 所述软件版权保护设 备用自身的私钥解密软件被保护部分密文, 得到软件被保护部分的明文 的步骤包括:
计算机设备将软件被保护部分密文以及对称密钥 K的密文传输至软 件版权保护设备;
软件版权保护设备用自身的私钥对对称密钥 K的密文进行解密,得 到对称密钥 K;
软件版权保护设备用所述对称密钥 K解密软件被保护部分密文,得 到软件被保护部分的明文。
8、根据权利要求 5所述的方法, 其特征在于, 所述软件版权保护设 备用自身的私钥解密软件被保护部分密文, 得到软件被保护部分的明文 的步骤包括:
计算机设备将自身存储的软件被保护部分密文传输至软件版权保护 设备;
软件版权保护设备用自身的私钥解密软件被保护部分密文, 得到软 件被保护部分的明文。
9、根据权利要求 5所述的方法, 其特征在于, 所述检查所述设备证 书的合法性的步骤中包括:
检查设备证书扩展属性字段中是否有表示公钥是用于软件版权保护 的字段。
10、 根据权利要求 5所述的方法, 其特征在于, 所述计算机设备向 软件版权保护设备获取设备证书, 并向软件网络发售子系统发出携带所 述设备证书的下载软件请求的步骤之前, 进一步包括:
软件网络发售子系统生成包含软件标识和交易标识的令牌, 将此令 牌下发给计算机设备;
计算机设备向软件网络发售子系统发出下载软件主体部分的请求, 请求中包括所述令牌;
软件网络发售子系统根据令牌中的交易标识检查下载令牌的合法 性, 检查通过后, 根据令牌中的软件标识获取相应的软件主体部分, 并 向计算机设备下发所获取的软件主体部分。
11、根据权利要求 5至 10任一项所述的方法, 其特征在于, 该方法 进一步包括:
软件版权保护设备收到来自计算机设备的准备升级证书的消息, 生 成一对新公钥 Pubk2和私钥 Prvk2, 并将所述新公钥 Pubk2和当前正在 使用的原设备证书发送至计算机设备;
计算机设备通过互联网络向证书颁发机构服务器发出升级设备证书 的请求, 所述请求中包括所述新公钥 Pubk2和原设备证书;
证书颁发机构服务器验证所述原设备证书是否合法, 若是, 则生成 公钥为 Pubk2的新设备证书, 并用原设备证书的公钥对新设备证书进行 加密, 得到新设备证书的密文, 并将所述新设备证书的密文发送至计算 机设备;
计算机设备将所述新设备证书的密文发送至软件版权保护设备; 软件版权保护设备用本设备当前使用的原私钥对新设备证书的密文 进行解密, 得到新设备证书;
软件版权保护设备用原私钥对软件被保护部分的密文进行解密得到 软件被保护部分的明文, 再用新公钥 Pubk2对所述软件被保护部分的明 文进行加密;
软件保护版权设备用 Pubk2的设备证书和相应的私钥 Prvk2替换当 前正在使用的原设备证书和私钥。
12、 一种软件版权保护方法, 其特征在于, 该方法涉及如权利要求 4所述的软件版权保护设备, 包括如下步骤:
将软件分成主体部分和被保护部分, 所述主体部分和被保护部分对 应相同的软件标识, 软件主体部分安装在计算机设备中;
软件现场交易子系统向第一软件版权保护设备请求该设备的设备证 书 DCertl ; 第一软件版权保护设备将自身的设备证书 DCertl输入软件 现场交易子系统;
软件现场交易子系统验证 DCertl是否合法; 如果是, 利用设备证书 DCertl的公钥将软件被保护部分进行加密,将所得到的软件被保护部分 的密文传送给第一软件版权保护设备进行保存;
计算机设备运行软件主体部分, 并向所述第一软件版权保护设备发 送调用软件被保护部分的请求消息, 所述请求消息中包含软件标识; 第一软件版权保护设备用自身的私钥解密所述软件标识对应的软件 被保护部分密文, 执行解密后的软件被保护部分得到运行结果, 并向所 述计算机设备返回所述运行结果。
13、根据权利要求 12所述的方法, 其特征在于, 所述将所得到的软 件被保护部分的密文传送给第一软件版权保护设备进行保存之后, 进一 步包括:
计算机设备获取第二软件版权保护设备的设备证书 DCert2;
计算机设备向第一软件版权保护设备发出请求转移软件被保护部分 的消息的请求, 所述请求中包含所述设备证书 DCert2;
第一软件版权保护设备验证 DCert2是否合法,若是,用自身的私钥 对本地保存的软件被保护部分密文进行解密得到软件被保护部分的明 文,然后用设备证书 DCert2的公钥对软件被保护部分的明文加密,将本 次加密得到的软件被保护部分密文传送给计算机设备;
计算机设备保存所述软件被保护部分密文或计算机设备将所述软件 被保护部分密文发送至第二软件版权保护设备进行保存。
14、根据权利要求 13所述的方法, 其特征在于, 所述第一软件版权 保护设备将本次加密得到的软件被保护部分密文传送给计算机设备的 步骤进一步包括: 第一软件版权保护设备删除本地保存的软件被保护部 分的密文。
15、 根据权利要求 12至 14任一项所述的方法, 其特征在于, 该方 法进一步包括:
软件版权保护设备收到来自计算机设备的准备升级证书的消息, 生 成一对新公钥 Pubk2和私钥 Prvk2, 并将所述新公钥 Pubk2和当前正在 使用的原设备证书发送至计算机设备;
计算机设备通过互联网络向证书颁发机构服务器发出升级设备证书 的请求, 所述请求中包括所述新公钥 Pubk2和原设备证书;
证书颁发机构服务器验证所述原设备证书是否合法, 若是, 则生成 公钥为 Pubk2的新设备证书, 并用原设备证书的公钥对新设备证书进行 加密, 得到新设备证书的密文, 并将所述新设备证书的密文发送至计算 机设备;
计算机设备将所述新设备证书的密文发送至软件版权保护设备; 软件版权保护设备用本软件版权保护设备当前使用的原私钥对新设 备证书的密文进行解密, 得到新设备证书;
软件保护版权设备用 Pubk2的设备证书和相应的私钥 Prvk2替换当 前正在使用的原设备证书和私钥。
16、 一种软件版权保护系统, 包括软件网络发售子系统、 计算机设 备和软件版权保护设备, 其特征在于,
所述软件网络发售子系统用于分别存放软件主体部分和软件被保护 部分; 与计算机设备进行在线电子交易, 交易成功后, 将软件主体部分 发送至计算机设备, 并通过计算机设备的软件保护代理模块获取软件版 权保护设备的设备证书, 并用所述设备证书的公钥对软件被保护部分加 密, 将加密得到的软件被保护部分密文发送至计算机设备;
所述计算机设备包括:
软件主体部分模块, 用于运行软件主体部分, 并通过软件保护代理 模块向软件版权保护设备发出调用软件被保护部分的请求, 并通过软件 保护代理模块接收来自软件版权保护设备的软件被保护部分的运行结 果;
软件保护代理模块, 用于实现计算机设备与软件版权保护设备的通 信; 以及
软件下载代理, 用于与软件网络发售子系统进行在线的电子交易, 从软件版权保护设备获取设备证书, 将所述设备证书发送至软件网络发 售子系统, 并从所述软件网络发售子系统下载软件主体部分和软件被保 护部分的密文;
所述软件版权保护设备包括: 外部接口, 用于与计算机设备进行交互;
密钥模块, 用于存储一对执行非对称加密算法的公钥和私钥, 所述 公钥以设备证书的形式保存; 根据来自计算机设备的请求, 将存储的设 备证书通过所述外部接口发送至计算机设备;
被保护软件调用模块, 用于实现计算机设备的软件主体部分通过所 述外部接口对被保护软件管理模块进行调用;
被保护软件管理模块, 用于通过所述外部接口接收来自计算机设备 的软件被保护部分的密文, 用所述密钥模块中存储的私钥对软件被保护 部分的密文进行解密, 执行解密后的软件被保护部分得到运行结果, 并 通过所述外部接口向所述计算机设备返回所述运行结果。
17、根据权利要求 16所述的软件版权保护系统, 其特征在于, 所述 软件网络发售子系统包括:
软件数据库, 用于分别存储软件的主体部分和被保护部分; 软件电子交易模块,用于与计算机设备通过互联网络进行电子交易, 交易成功则向主体部分发售模块和被保护部分发售模块发送下载指示; 主体部分发售模块, 用于根据来自软件电子交易模块的下载指示, 将软件主体部分发送至计算机设备;
证书颁发机构信任列表, 用于保存可以信任的证书颁发机构的名称 和相应的 CA公钥证书;
被保护部分发售模块, 用于在收到来自软件电子交易模块的下载指 示后, 获取软件版权保护设备的设备证书, 并根据所述证书颁发机构信 验证通过后, 用所获取的设备证书的公钥对软件被保护部分加密, 将加 密得到的软件被保护部分密文发送至计算机设备。
18、根据权利要求 16或 17所述的软件版权保护系统,其特征在于, 软件版权保护系统进一步包括:
证书颁发机构服务器, 用于接收来自计算机设备的新公钥 Pubk2和 原设备证书,验证所述原设备证书是否合法,若是,则生成公钥为 Pubk2 的新设备证书, 并用原设备证书的公钥对新设备证书进行加密, 得到新 设备证书的密文, 并将所述新设备证书的密文发送至计算机设备;
所述计算机设备进一步包括: 接收来自软件版权保护设备的新公钥 Pubk2和目前正在使用的原设备证 升级证书的请求; 接收来自颁发机构服务器的新设备证书的密文, 将所 述新设备证书的密文发送至软件版权保护设备;
所述软件版权保护设备进一步包括密钥生成模块, 用于生成相互对 应的新公钥和新私钥, 将所述新公钥发送至计算机设备, 将所述新私钥 发送至密钥模块;
密钥模块进一步用于通过外部接口接收来自计算机设备的新设备证 书的密文, 用当前存储的私钥解密所述新设备证书的密文, 得到新设备 证书, 用所述新设备证书替换已存储的设备证书, 并用来自密钥生成模 块的新私钥替换已存储的私钥。
19、 一种软件版权保护系统, 包括软件现场交易子系统、 计算机设 备和软件版权保护设备, 其特征在于,
所述软件现场交易子系统用于存放软件被保护部分; 获取软件版权 保护设备的设备证书, 并用所述设备证书的公钥对软件被保护部分加 密, 将加密得到的软件被保护部分密文发送至软件版权保护设备;
所述计算机设备包括:
软件主体部分模块, 用于运行软件主体部分, 通过软件保护代理模 块向软件版权保护设备发出调用软件被保护部分的请求, 并通过软件保 护代理模块接收来自软件版权保护设备的软件被保护部分的运行结果; 以及
软件保护代理模块, 用于实现计算机设备与软件版权保护设备的通 信;
所述软件版权保护设备包括:
外部接口, 用于与软件现场交易子系统或计算机设备进行交互; 密钥模块, 用于存储一对执行非对称加密算法的公钥和私钥, 所述 公钥以设备证书的形式保存; 将存储的设备证书通过所述外部接口发送 至软件现场交易子系统;
被保护软件调用模块, 用于实现计算机设备的软件主体部分通过所 述外部接口对被保护软件管理模块进行调用;
被保护软件管理模块, 用于通过所述外部接口接收来自软件现场交 易子系统的软件被保护部分的密文, 存储所述软件被保护部分的密文; 根据被保护软件调用模块的调用, 用所述密钥模块中存储的私钥对存储 的软件被保护部分的密文进行解密, 执行解密后的软件被保护部分得到 运行结果, 并通过所述外部接口向所述计算机设备返回所述运行结果。
20、根据权利要求 19所述的软件版权保护系统, 其特征在于, 所述 软件现场交易子系统包括:
软件数据库, 用于存储软件被保护部分;
证书颁发机构信任列表, 用于保存可以信任的证书颁发机构 CA的 名称和相应的 CA公钥证书;
被保护部分的现场发售模块, 用于获取软件版权保护设备的设备证 书, 并根据证书颁发机构信任列表保存的 CA公钥证书对所获取的设备 证书的合法性进行验证, 验证通过后则用所述设备证书的公钥对软件被 保护部分加密, 将加密得到的软件被保护部分密文发送至软件版权保护 设备。
21、 根据权利要求 15至 20任一项所述的软件版权保护系统, 其特 征在于, 软件版权保护系统进一步包括:
证书颁发机构服务器, 用于接收来自计算机设备的新公钥 Pubk2和 原设备证书,验证所述原设备证书是否合法,若是,则生成公钥为 Pubk2 的新设备证书, 并用原设备证书的公钥对新设备证书进行加密, 得到新 设备证书的密文, 并将所述新设备证书的密文发送至计算机设备;
所述计算机设备进一步包括: 接收来自软件版权保护设备的新公钥 Pubk2和目前正在使用的原设备证 升级证书的请求; 接收来自颁发机构服务器的新设备证书的密文, 将所 述新设备证书的密文发送至软件版权保护设备;
所述软件版权保护设备进一步包括密钥生成模块, 用于生成相互对 应的新公钥和新私钥, 将所述新公钥发送至计算机设备, 将所述新私钥 发送至密钥模块;
密钥模块进一步用于通过外部接口接收来自计算机设备的新设备证 书的密文, 用当前存储的私钥解密所述新设备证书的密文, 得到新设备 证书, 用所述新设备证书替换已存储的设备证书, 并用来自密钥生成模 块的新私钥替换已存储的私钥。
PCT/CN2010/073385 2009-06-01 2010-05-31 一种软件版权保护方法、设备和系统 WO2010139258A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN 200910085813 CN101571900B (zh) 2009-06-01 2009-06-01 一种软件版权保护方法、设备和系统
CN200910085813.4 2009-06-01

Publications (1)

Publication Number Publication Date
WO2010139258A1 true WO2010139258A1 (zh) 2010-12-09

Family

ID=41231256

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2010/073385 WO2010139258A1 (zh) 2009-06-01 2010-05-31 一种软件版权保护方法、设备和系统

Country Status (2)

Country Link
CN (1) CN101571900B (zh)
WO (1) WO2010139258A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107688729A (zh) * 2017-07-27 2018-02-13 大唐高鸿信安(浙江)信息科技有限公司 基于可信主机的应用程序保护系统及方法
CN110414188A (zh) * 2018-04-27 2019-11-05 武汉梓金山科技有限公司 一种基于大数据的数据加密系统及方法
CN112579989A (zh) * 2020-12-23 2021-03-30 杭州安司源科技有限公司 网络服务软件反盗版方法
CN113434121A (zh) * 2021-06-29 2021-09-24 上海律信信息科技有限公司 一种基于加密算法的软件开发系统

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101571900B (zh) * 2009-06-01 2011-01-19 薛明 一种软件版权保护方法、设备和系统
CN102479091B (zh) * 2010-11-30 2015-06-10 深圳市金蝶友商电子商务服务有限公司 软件运行方法、装置及可移动存储介质
CN103218550B (zh) * 2013-03-20 2015-10-21 中国联合网络通信集团有限公司 软件安装方法、服务器和终端
CN105721154B (zh) * 2014-12-05 2020-02-18 航天信息股份有限公司 一种基于Android平台通讯接口的加密保护方法
CN105306717A (zh) * 2015-10-30 2016-02-03 南方科技大学 基于移动终端的医疗事件预警方法及装置
CN106991298B (zh) 2016-01-21 2021-02-02 斑马智行网络(香港)有限公司 应用程序对接口的访问方法、授权请求方法及装置
CN105787303B (zh) * 2016-03-22 2019-10-11 深圳森格瑞通信有限公司 一种嵌入式系统软件知识产权保护方法及保护系统
CN106055937B (zh) * 2016-05-25 2018-11-09 深圳创维数字技术有限公司 一种软件静态数据的加密方法及系统
CN108121898B (zh) * 2016-11-30 2022-08-05 西门子公司 一种程序保护方法和装置
CN108418833B (zh) * 2018-03-23 2022-01-07 中科创达软件股份有限公司 一种软件的管理方法、云端服务器和终端
CN109165484A (zh) * 2018-08-09 2019-01-08 深圳市正运动技术有限公司 一种pc软控制器软件版权许可方法及系统
CN110266789A (zh) * 2019-06-13 2019-09-20 四川长虹电器股份有限公司 一种提高Kubernetes的WEB能力的方法
CN110879875A (zh) * 2019-10-28 2020-03-13 华晟现代电子科技(香港)有限公司 硬件加密装置、嵌入式系统版权保护系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1749915A (zh) * 2005-10-19 2006-03-22 北京飞天诚信科技有限公司 从软件中提取部分代码至加密装置中的软件版权保护方法
CN101216873A (zh) * 2007-12-29 2008-07-09 北京深思洛克数据保护中心 基于加密锁的软件版权保护方法和系统及加密锁
CN101261666A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种通过加密可执行程序文件实现软件版权保护的方法
CN101571900A (zh) * 2009-06-01 2009-11-04 薛明 一种软件版权保护方法、设备和系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1324037A (zh) * 2000-05-11 2001-11-28 英业达集团(南京)电子技术有限公司 利用软件加密与解密的方法
CN100593788C (zh) * 2008-04-10 2010-03-10 北京深思洛克软件技术股份有限公司 一种通过加密数据文件实现软件保护的方法
CN101281575A (zh) * 2008-05-14 2008-10-08 北京深思洛克数据保护中心 一种软件保护方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1749915A (zh) * 2005-10-19 2006-03-22 北京飞天诚信科技有限公司 从软件中提取部分代码至加密装置中的软件版权保护方法
CN101216873A (zh) * 2007-12-29 2008-07-09 北京深思洛克数据保护中心 基于加密锁的软件版权保护方法和系统及加密锁
CN101261666A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种通过加密可执行程序文件实现软件版权保护的方法
CN101571900A (zh) * 2009-06-01 2009-11-04 薛明 一种软件版权保护方法、设备和系统

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107688729A (zh) * 2017-07-27 2018-02-13 大唐高鸿信安(浙江)信息科技有限公司 基于可信主机的应用程序保护系统及方法
CN110414188A (zh) * 2018-04-27 2019-11-05 武汉梓金山科技有限公司 一种基于大数据的数据加密系统及方法
CN112579989A (zh) * 2020-12-23 2021-03-30 杭州安司源科技有限公司 网络服务软件反盗版方法
CN112579989B (zh) * 2020-12-23 2022-06-24 杭州安司源科技有限公司 网络服务软件反盗版方法
CN113434121A (zh) * 2021-06-29 2021-09-24 上海律信信息科技有限公司 一种基于加密算法的软件开发系统

Also Published As

Publication number Publication date
CN101571900A (zh) 2009-11-04
CN101571900B (zh) 2011-01-19

Similar Documents

Publication Publication Date Title
WO2010139258A1 (zh) 一种软件版权保护方法、设备和系统
US7805375B2 (en) Digital license migration from first platform to second platform
US8065521B2 (en) Secure processor architecture for use with a digital rights management (DRM) system on a computing device
JP4278327B2 (ja) コンピュータ・プラットフォームおよびその運用方法
US8549606B2 (en) Device for protecting digital content, device for processing protected digital content, method for protecting digital content, method for processing protected digital content, storage medium storing program for protecting digital content, and storage medium storing program for processing protected digital content
EP1686504B1 (en) Flexible licensing architecture in content rights management systems
US7010808B1 (en) Binding digital content to a portable storage device or the like in a digital rights management (DRM) system
EP1477879B1 (en) Tying a digital license to a user and tying the user to multiple computing devices in a digital rights management (DRM) system
JP5572209B2 (ja) 電子チケット処理の方法及び装置
US20050091541A1 (en) Specifying security for an element by assigning a scaled value representative of the relative security thereof
US20050066187A1 (en) Encrypting a digital object on a key ID selected therefor
US20050097368A1 (en) Specifying security for an element by assigning a scaled value representative of the relative security thereof
TWI420339B (zh) 軟體授權系統及方法
WO2005112340A1 (en) Management of signing privileges for a cryptographic signing service
JP2003085321A (ja) コンテンツ利用権限管理システム、コンテンツ利用権限管理方法、および情報処理装置、並びにコンピュータ・プログラム
JP2006504309A (ja) 装置鍵
KR20080065661A (ko) 파일 시스템으로의 접근을 제어하기 위한 방법, 파일시스템에 사용하기 위한 관련 시스템, sim 카드 및컴퓨터 프로그램 제품
WO2010003328A1 (zh) 许可的处理方法及装置
WO2000021239A9 (en) Certificate handling for digital rights management system
US7770001B2 (en) Process and method to distribute software product keys electronically to manufacturing entities
US9129098B2 (en) Methods of protecting software programs from unauthorized use
US20150047001A1 (en) Application program execution device
TW200834371A (en) Computerized apparatus and method for version control and management
US20060015860A1 (en) System and method for storing attributes in a file for processing an operating system
US7568102B2 (en) System and method for authorizing the use of stored information in an operating system

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10782962

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10782962

Country of ref document: EP

Kind code of ref document: A1