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

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

Info

Publication number
CN101571900B
CN101571900B CN 200910085813 CN200910085813A CN101571900B CN 101571900 B CN101571900 B CN 101571900B CN 200910085813 CN200910085813 CN 200910085813 CN 200910085813 A CN200910085813 A CN 200910085813A CN 101571900 B CN101571900 B CN 101571900B
Authority
CN
China
Prior art keywords
software
equipment
certificate
copyright protection
protected
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN 200910085813
Other languages
English (en)
Other versions
CN101571900A (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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN 200910085813 priority Critical patent/CN101571900B/zh
Publication of CN101571900A publication Critical patent/CN101571900A/zh
Priority to PCT/CN2010/073385 priority patent/WO2010139258A1/zh
Application granted granted Critical
Publication of CN101571900B publication Critical patent/CN101571900B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

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)

Abstract

本发明公开了一种软件版权保护设备,该软件版权保护设备存储区存储的内容包括:一对执行非对称加密算法的公钥和私钥;被保护软件调用模块,用于实现外部设备的软件主体部分通过所述外部接口对被保护软件管理模块进行调用;被保护软件管理模块,用于对软件被保护部分进行管理和维护,包括用所述私钥对软件被保护部分的密文进行解密以及运行软件被保护部分的明文,并通过所述外部接口对外发送运行结果。本发明还公开了一种软件版权保护方法和系统。本发明方案在保证软件的使用必须经过合法授权的前提下,实现多个软件共用同一个软件版权保护设备,提高了使用的便利性。

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的计算资源也是一种浪费。 
发明内容
有鉴于此,本发明的目的在于,提出一种软件版权保护方法、设备和系统,在保证软件的使用必须经过合法授权的前提下,实现多个软件共用同一个软件版权保护设备,提高了使用的便利性。 
本发明实施例提出一种软件版权保护设备,包括外部接口,用于与计算机设备进行交互; 
存储区,用于存储一对执行非对称加密算法的公钥和私钥,所述公钥以设备证书的形式保存;根据来自计算机设备的请求,将存储的设备证书通过所述外部接口发送至计算机设备; 
被保护软件调用模块,用于实现计算机设备的软件主体部分通过所述外部接口对被保护软件管理模块进行调用; 
被保护软件管理模块,用于通过所述外部接口接收来自计算机设备的软件被保护部分的密文,用所述存储区中存储的私钥对软件被保护部分的密文进行解密,执行解密后的软件被保护部分得到运行结果,并通过所述外部接口向所述计算机设备返回所述运行结果。 
本发明实施例还提出另一种软件版权保护设备,包括: 
外部接口,用于与软件现场交易子系统或计算机设备进行交互; 
存储区,用于存储一对执行非对称加密算法的公钥和私钥,所述公钥以设备证书的形式保存;将存储的设备证书通过所述外部接口发送至软件现场交易子系统; 
被保护软件调用模块,用于实现计算机设备的软件主体部分通过所述外部接口对被保护软件管理模块进行调用; 
被保护软件管理模块,用于通过所述外部接口接收来自软件现场交易子系统的软件被保护部分的密文,存储所述软件被保护部分的密文;根据被保护软件调用模块的调用,用所述存储区中存储的私钥对存储的软件被保护部分的密 文进行解密,执行解密后的软件被保护部分得到运行结果,并通过所述外部接口向所述计算机设备返回所述运行结果。 
本发明实施例还提出一种软件版权保护方法,包括如下步骤: 
将软件分成主体部分和被保护部分,所述主体部分和被保护部分对应相同的软件标识,软件主体部分安装在计算计设备中; 
计算机设备执行所述软件主体部分,向软件版权保护设备获取设备证书,并向软件网络发售子系统发出携带所述设备证书的下载软件请求; 
软件网络发售子系统收到所述下载软件请求后,检查所述设备证书的合法性,若检查通过,则用所述设备证书中包含的公钥对软件被保护部分进行加密得到软件被保护部分的密文,并将所述软件被保护部分的密文发送至所述计算机设备; 
计算机设备运行软件主体部分,并向所述软件版权保护设备发送调用软件被保护部分的请求消息,所述请求消息中包含软件标识; 
软件版权保护设备用自身的私钥解密所述软件标识对应的软件被保护部分密文,执行解密后的软件被保护部分得到运行结果,并向所述计算机设备返回所述运行结果。 
本发明实施例还提出另一种软件版权保护方法,包括如下步骤: 
将软件分成主体部分和被保护部分,所述主体部分和被保护部分对应相同的软件标识,软件主体部分安装在计算计设备中; 
软件现场交易子系统向第一软件版权保护设备请求该设备的设备证书DCert1;第一软件版权保护设备将自身的设备证书DCert1输入软件现场交易子系统; 
软件现场交易子系统验证DCert1是否合法;如果是,利用设备证书DCert1的公钥将软件被保护部分进行加密,将所得到的软件被保护部分的密文传送给第一软件版权保护设备进行保存; 
计算机设备运行软件主体部分,并向所述第一软件版权保护设备发送调用 软件被保护部分的请求消息,所述请求消息中包含软件标识; 
第一软件版权保护设备用自身的私钥解密所述软件标识对应的软件被保护部分密文,执行解密后的软件被保护部分得到运行结果,并向所述计算机设备返回所述运行结果。 
本发明实施例还提出一种软件版权保护系统,包括软件网络发售子系统、计算机设备和软件版权保护设备, 
所述软件网络发售子系统用于分别存放软件主体部分和软件被保护部分;与计算机设备进行在线电子交易,交易成功后,将软件主体部分发送至计算机设备,并通过计算机设备的软件保护代理模块获取软件版权保护设备的设备证书,并用所述设备证书的公钥对软件被保护部分加密,将加密得到的软件被保护部分密文发送至计算机设备; 
所述计算机设备包括: 
软件主体部分模块,用于运行软件主体部分,并通过软件保护代理模块向软件版权保护设备发出调用软件被保护部分的请求,并通过软件保护代理模块接收来自软件版权保护设备的软件被保护部分的运行结果; 
软件保护代理模块,用于实现计算机设备与软件版权保护设备的通信;以及 
软件下载代理,用于与软件网络发售子系统进行在线的电子交易,从软件版权保护设备获取设备证书,将所述设备证书发送至软件网络发售子系统,并从所述软件网络发售子系统下载软件主体部分和软件被保护部分的密文; 
所述软件版权保护设备包括: 
外部接口,用于与计算机设备进行交互; 
存储区,用于存储一对执行非对称加密算法的公钥和私钥,所述公钥以设备证书的形式保存;根据来自计算机设备的请求,将存储的设备证书通过所述外部接口发送至计算机设备; 
被保护软件调用模块,用于实现计算机设备的软件主体部分通过所述外部 接口对被保护软件管理模块进行调用; 
被保护软件管理模块,用于通过所述外部接口接收来自计算机设备的软件被保护部分的密文,用所述存储区中存储的私钥对软件被保护部分的密文进行解密,执行解密后的软件被保护部分得到运行结果,并通过所述外部接口向所述计算机设备返回所述运行结果。 
本发明实施例还提出另一种软件版权保护系统,包括软件现场交易子系统、计算机设备和软件版权保护设备, 
所述软件现场交易子系统用于存放软件被保护部分;获取软件版权保护设备的设备证书,并用所述设备证书的公钥对软件被保护部分加密,将加密得到的软件被保护部分密文发送至软件版权保护设备; 
所述计算机设备包括: 
软件主体部分模块,用于运行软件主体部分,通过软件保护代理模块向软件版权保护设备发出调用软件被保护部分的请求,并通过软件保护代理模块接收来自软件版权保护设备的软件被保护部分的运行结果;以及 
软件保护代理模块,用于实现计算机设备与软件版权保护设备的通信; 
所述软件版权保护设备包括: 
外部接口,用于与软件现场交易子系统或计算机设备进行交互; 
存储区,用于存储一对执行非对称加密算法的公钥和私钥,所述公钥以设备证书的形式保存;将存储的设备证书通过所述外部接口发送至软件现场交易子系统; 
被保护软件调用模块,用于实现计算机设备的软件主体部分通过所述外部接口对被保护软件管理模块进行调用; 
从以上技术方案可以看出,软件版权保护设备保存一对公钥和私钥,公钥用来对软件被保护部分进行加密,用户只能获得软件被保护部分的密文,而该密文只能通过唯一的软件版权保护设备中的私钥解密,从而实现了对软件版权的保护;多个软件的被保护部分可以使用同一个软件版权保护设备的公钥进行加密,这样多个软件可以共用同一个软件版权保护设备。 
附图说明
图1为本发明实施例提出的软件版权保护设备的结构框图; 
图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标准(Public Key Infrastructure Certificate and Certificate Revocation List(CRL)Profile,RFC5280)进行扩展,在证书的扩展属性(Extended Key Usage)中增加一个新的密钥用途:软件保护。具体的属性值需要由标准组织来确定,本文用“id-kp-softwareProtection”表示这个属性值。 
生产软件版权保护设备的厂家必须保证与软件保护证书中的公钥相对应的私钥被安全地放置于软件版权保护设备中,该私钥一旦被放入软件版权保护设备就无法再从设备外部读取,软件版权保护设备也不提供读取私钥的软硬件接口,该私钥在软件版权保护设备之外也不应存在备份。生产厂家应通过对软硬件的精心设计来落实这些要求。这条约定已在目前的业界已普遍得到实施,如用于证书认证的USB智能卡就必须符合上述约定。假如,为了提高软件版权保护设备的公信度,可以让受信任的第三方来向软件版权保护设备存放证书和私钥。 
CA信任列表112:为了使软件版权保护设备能够信任与之通讯的对方,生产厂家可以在软件版权保护设备中预置一个CA信任列表。用此列表中的CA证书来验证通讯对方的证书是否合法。 
CA信任列表中不但有CA的名称,还有相应的公钥证书,以便对他人提供的证书进行验证。表1给出了CA列表的格式的一种示例: 
  CA名称   CA的公钥证书
  CA1   CA1-PK-Cert文件
  CA2   CA2-PK-Cert文件
  ...   ...
[0091]  表1CA信任列表 
被保护软件模块(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表示某种对称加密算法中使用的对称密钥,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的设备证书,并根据证书颁发机构信任列表307中保存的CA公钥证书对所获取的设备证书的合法性进行验证,验证通过后,用所获取的设备证书的公钥对软件被保护部分加密,将加密得到的软件被保护部分密文发送至计算机设备。 
(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,在里面只存放了被保 护部分软件(PPSW)402,而无需存放MPSW 401。 
(3)CA信任列表(Trusted CA List,TCAL)405,包括CA的名称和相应的CA公钥证书,其形式可以如表1所示。 
(4)被保护部分的现场发售模块(Protected Part Market Distribution Module,PP-MDM)404,用于获取PSC207设备证书,获取方式可以是从PSC207的接口直接读取,或者通过人工输入的方式。根据TCAL 405中保存的CA公钥证书列表对所述设备证书的合法性进行验证,验证通过后,用所述设备证书的公钥对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向SPA201返回DCert文件。 
步骤510:SPA201向SDA206返回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请求该设备的设备证书DCert1。具体可以是将PSC 207通过有线或无线的方式连接软件现场交易子系统205,PP-MDM 404通过连接的有线或无线接口向PSC 207发出该请求。 
步骤602:PSC 207向PP-MDM 404返回所请求的证书DCert1。 
步骤603:PP-MDM 404采用SPCV过程验证DCert1是否为合法的软件保护证书;如果是,就采用STDM方法利用证书DCert1的公钥将PPSW进行加密,得到加密后的密文PPSW(enc1),然后将其传送给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:SPA 201向SPD 100发出消息,请求该设备的设备证书DCert2。 
步骤606:SPD 100向SPA201返回DCert2。 
步骤607:SPA 201将DCert2返回给SSA 208。 
步骤608:SSA208向PSC 207发出请求转移软件被保护部分的消息,其中包括了SPD 100的设备证书DCert2。 
步骤609:PSC 207采用SPCV过程验证DCert2是否为合法的软件保护证书;如果是,就先用自身的私钥对本设备中保存的PPSW(enc1)进行解密,得到PPSW,然后采用STDM方法利用DCert2中的公钥对PPSW进行加密,得到加密的软件被保护部分PPSW(enc2)。最后PSC 207将PPSW(enc2)传送给SSA208。同时将保存在本设备中的PPSW(enc1)删除,以确保PPSW只授予用户一份。 
步骤610:SSA 208调用SPA 201接口保存PPSW(enc2)。本步骤的实现方式可以有两种,一种是SPA201可以将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 lDevHandle,unsigned char  *pucDCert,unsigned int *pulLen) 
函数功能:由应用程序调用此接口获取指定SPD设备上的设备证书输入参数: 
lDevHandle:标识所访问SPD的设备句柄。句柄是由计算机系统给不同设备分配的标识符,在计算机系统内可以唯一标识某个设备。 
输出参数: 
pucDCert:指向承载SPD设备证书的内存块的指针。 
pulLen:参数pucDCert中有效数据的长度,以字节为单位。 
返回值: 
1:获取成功 
0:获取失败 
接口2、保存PPSW到SPD 
函数名为:int SPA SavePPSWtoSPD(int lDevHandle,char*szAppID,usigned char*pucPPSW,unsigned int*pulLen) 
函数功能:由上层应用调用此接口,向SPD保存某应用程序的PPSW部分的软件。 
输入参数: 
lDevHandle:标识所访问SPD的设备句柄。 
szAppID:PPSW所属软件的标识字符串,以0结尾。 
pucPPSW:指向承载PPSW代码的内存块的指针。 
pulLen:参数pucPPSW中有效数据的长度,以字节为单位。 
输出参数:无 
返回值: 
1:获取成功 
0:获取失败 
接口3、请求转移PPSW 
函数名为:int SPA_ReqShiftPPSW(int lDevHandle,char*szAppID,unsigned char*pucDCert,unsigned int*pulCertLen,unsigned char*pucPPSW,unsigned int  *pulPPSWLen) 
函数功能:由上层应用调用,请求SPD将指定软件的PPSW部分转移出来。 
输入参数: 
lDevHandle:标识保存PPSW的源SPD的设备句柄。 
szAppID:PPSW所属软件的标识字符串,以0结尾。 
pucDCert:指向承载目的SPD证书的内存块的指针,源SPD用此证书重新加密PPSW。 
pulCertLen:参数pucDCert中有效数据的长度,以字节为单位。 
输出参数: 
pucPPSW:指向从源SPD中转移出的PPSW代码的内存块的指针。 
pulPPSWLen:转移出的PPSW代码的数据长度,以字节为单位。 
返回值: 
1:获取成功 
0:获取失败 
接口4、准备升级证书 
函数名为:int SPA_PreparetoUpgradeDCert(int lDevHandle,unsigned char  *pucPubk2,unsigned int*pulPkLen,unsigned char*pucDCert 1,unsigned int  *pulCertLen) 
函数功能:由上层应用调用,通知SPD准备升级设备证书。并获得SPD设备当前使用的设备证书和新的设备公钥。 
输入参数: 
lDevHandle:标识保存PPSW的源SPD的设备句柄。 
输出参数: 
pucPubk2:指向承载新的设备公钥内存块的指针。 
pulPkLen:公钥内存块的长度,以字节为单位。 
pucDCert:指向承载当前设备证书内存块的指针。 
pulCertLen:当前设备证书数据的长度,以字节为单位。 
返回值: 
1:获取成功 
0:获取失败 
接口5、升级设备证书 
函数名为:int SPA UpgradeCertificateOfSPD(int lDevHandle,unsigned char  *pucDCert,unsigned int ulLen) 
函数功能:由应用程序调用此接口升级指定SPD设备上的设备证书 
输入参数: 
lDevHandle:标识所访问SPD的设备句柄。 
pucDCert:指向承载升级证书的内存块的指针。 
ulLen:参数pucDCert中有效数据的长度,以字节为单位。 
返回值: 
1:升级成功 
0:升级失败 
接口6、升级CA信任列表 
函数名为:int SPA UpgradeTcalOfSPD(int lDevHandle,unsigned char  *pucTcal,unsigned int ulLen) 
函数功能:由应用程序调用此接口升级指定SPD设备上的受信任CA列表输入参数: 
lDevHandle:标识所访问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)和目前正在使用的设备证书DCert1。 
步骤804:SPA向CUA返回SPD对准备升级证书命令的应答,主要包括公钥(Pubk2)和目前正在使用的设备证书DCert1。 
步骤805:CUA向CA发出升级设备证书的请求,其中包含了Pubk2和DCert1。 
步骤806:CA接收到证书升级的请求后,首先采用SPCV过程验证DCert1是否为合法的软件保护证书。如果不合法,CA就拒绝签发新的设备证书;否则,就生成一个新的软件保护证书DCert2,其中的公钥为Pubk2,并为之签名。然后采用STDM方法利用DCert1中的公钥Pubk1对新生成的DCert2进行加密,得到DCert2(enc),再将其返回给CUA。 
步骤807:CUA向SPA发出升级设备证书的命令,其中包含了DCert2(enc)。 
步骤808:SPA向SPD发出保存新设备证书的请求,其中包含了DCert2(enc)。 
步骤809:SPD用本设备当前使用的私钥,即与DCert1中的公钥Pubk1相匹配的私钥Prvk1,对DCert2(enc)进行解密,得到新签发的设备证书DCert2;然后向SPA返回对保存新设备证书DCert2请求的应答。 
步骤810(可选):如果PPSW采用STDM方法加密后保存在计算机的存储器中,在更新设备证书的时候就需要对PPSW重新加密。在这一步,SPA向SPD发出更新PPSW加密封装的请求,其中包含的主要内容就是PPSW(enc1),它被Pubk1用STDM方法加密。然后执行下一步骤811。 
如果PPSW直接以明文方式保存在SPD设备中,则不需要执行本步骤,直接执行步骤812。 
步骤811(可选):SPD采用Prvk1对PPSW(enc1)进行解密,得到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替换目前设备中正在使用的证书DCert1和私钥Prvk1,然后向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 (20)

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.一种软件版权保护方法,其特征在于,该方法涉及如权利要求4所述的软件版权保护设备,包括如下步骤:
将软件分成主体部分和被保护部分,所述主体部分和被保护部分对应相同的软件标识,软件主体部分安装在计算计设备中;
软件现场交易子系统向第一软件版权保护设备请求该设备的设备证书DCert1;第一软件版权保护设备将自身的设备证书DCert1输入软件现场交易子系统;
软件现场交易子系统验证DCert1是否合法;如果是,利用设备证书DCert1的公钥将软件被保护部分进行加密,将所得到的软件被保护部分的密文传送给第一软件版权保护设备进行保存;
计算机设备运行软件主体部分,并向所述第一软件版权保护设备发送调用软件被保护部分的请求消息,所述请求消息中包含软件标识;
第一软件版权保护设备用自身的私钥解密所述软件标识对应的软件被保护部分密文,执行解密后的软件被保护部分得到运行结果,并向所述计算机设备返回所述运行结果。
12.根据权利要求11所述的方法,其特征在于,所述将所得到的软件被保护部分的密文传送给第一软件版权保护设备进行保存之后,进一步包括:
计算机设备获取第二软件版权保护设备的设备证书DCert2;
计算机设备向第一软件版权保护设备发出请求转移软件被保护部分的消息的请求,所述请求中包含所述设备证书DCert2;
第一软件版权保护设备验证DCert2是否合法,若是,用自身的私钥对本地保存的软件被保护部分密文进行解密得到软件被保护部分的明文,然后用设备证书DCert2的公钥对软件被保护部分的明文加密,将本次加密得到的软件被保护部分密文传送给计算机设备;
计算机设备保存所述软件被保护部分密文或计算机设备将所述软件被保护部分密文发送至第二软件版权保护设备。
13.根据权利要求12所述的方法,其特征在于,所述第一软件版权保护设备将本次加密得到的软件被保护部分密文传送给计算机设备的步骤进一步包括:第一软件版权保护设备删除本地保存的软件被保护部分的密文。
14.根据权利要求11至13任一项所述的方法,其特征在于,该方法进一步包括:
软件版权保护设备收到来自计算机设备的准备升级证书的消息,生成一对新公钥Pubk2和私钥Prvk2,并将所述新公钥Pubk2和当前正在使用的原设备证书发送至计算机设备;
计算机设备通过互联网络向证书颁发机构服务器发出升级设备证书的请求,所述请求中包括所述新公钥Pubk2和原设备证书;
证书颁发机构服务器验证所述原设备证书是否合法,若是,则生成公钥为Pubk2的新设备证书,并用原设备证书的公钥对新设备证书进行加密,得到新设备证书的密文,并将所述新设备证书的密文发送至计算机设备;
计算机设备将所述新设备证书的密文发送至软件版权保护设备;
软件版权保护设备用本软件版权保护设备当前使用的原私钥对新设备证书的密文进行解密,得到新设备证书;
软件保护版权设备用Pubk2的设备证书和相应的私钥Prvk2替换当前正在使用的原设备证书和私钥。
15.一种软件版权保护系统,包括软件网络发售子系统、计算机设备和软件版权保护设备,其特征在于,
所述软件网络发售子系统用于分别存放软件主体部分和软件被保护部分;与计算机设备进行在线电子交易,交易成功后,将软件主体部分发送至计算机设备,并通过计算机设备的软件保护代理模块获取软件版权保护设备的设备证书,并用所述设备证书的公钥对软件被保护部分加密,将加密得到的软件被保护部分密文发送至计算机设备;
所述计算机设备包括:
软件主体部分模块,用于运行软件主体部分,并通过软件保护代理模块向软件版权保护设备发出调用软件被保护部分的请求,并通过软件保护代理模块接收来自软件版权保护设备的软件被保护部分的运行结果;
软件保护代理模块,用于实现计算机设备与软件版权保护设备的通信;以及
软件下载代理,用于与软件网络发售子系统进行在线的电子交易,从软件版权保护设备获取设备证书,将所述设备证书发送至软件网络发售子系统,并从所述软件网络发售子系统下载软件主体部分和软件被保护部分的密文;
所述软件版权保护设备包括:
外部接口,用于与计算机设备进行交互;
存储区,用于存储一对执行非对称加密算法的公钥和私钥,所述公钥以设备证书的形式保存;根据来自计算机设备的请求,将存储的设备证书通过所述外部接口发送至计算机设备;
被保护软件调用模块,用于实现计算机设备的软件主体部分通过所述外部接口对被保护软件管理模块进行调用;
被保护软件管理模块,用于通过所述外部接口接收来自计算机设备的软件被保护部分的密文,用所述存储区中存储的私钥对软件被保护部分的密文进行解密,执行解密后的软件被保护部分得到运行结果,并通过所述外部接口向所述计算机设备返回所述运行结果。
16.根据权利要求15所述的软件版权保护系统,其特征在于,所述软件网络发售子系统包括:
软件数据库,用于分别存储软件的主体部分和被保护部分;
软件电子交易模块,用于与计算机设备通过互联网络进行电子交易,交易成功则向主体部分发售模块和被保护部分发售模块发送下载指示;
主体部分发售模块,用于根据来自软件电子交易模块的下载指示,将软件主体部分发送至计算机设备;
证书颁发机构信任列表,用于保存可以信任的证书颁发机构的名称和相应的CA公钥证书;
被保护部分发售模块,用于在收到来自软件电子交易模块的下载指示后,获取软件版权保护设备的设备证书,并根据所述证书颁发机构信任列表中保存的CA公钥证书对所获取的设备证书的合法性进行验证,验证通过后,用所获取的设备证书的公钥对软件被保护部分加密,将加密得到的软件被保护部分密文发送至计算机设备。
17.根据权利要求15或16所述的软件版权保护系统,其特征在于,软件版权保护系统进一步包括:
证书颁发机构服务器,用于接收来自计算机设备的新公钥Pubk2和原设备证书,验证所述原设备证书是否合法,若是,则生成公钥为Pubk2的新设备证书,并用原设备证书的公钥对新设备证书进行加密,得到新设备证书的密文,并将所述新设备证书的密文发送至计算机设备;
所述计算机设备进一步包括:
证书升级代理,用于向软件版权保护设备发送准备升级证书的命令,接收来自软件版权保护设备的新公钥Pubk2和目前正在使用的原设备证书,向证书颁发机构服务器发送包含所述新公钥Pubk2和原设备证书的升级证书的请求;接收来自颁发机构服务器的新设备证书的密文,将所述新设备证书的密文发送至软件版权保护设备;
所述软件版权保护设备进一步包括密钥生成模块,用于生成相互对应的新公钥和新私钥;
存储区进一步用于通过外部接口接收来自计算机设备的新设备证书的密文,用当前存储的私钥解密所述新设备证书的密文,得到新设备证书,用所述新设备证书替换已存储的设备证书,并用来自密钥生成模块的新私钥替换已存储的私钥。
18.一种软件版权保护系统,包括软件现场交易子系统、计算机设备和软件版权保护设备,其特征在于,
所述软件现场交易子系统用于存放软件被保护部分;获取软件版权保护设备的设备证书,并用所述设备证书的公钥对软件被保护部分加密,将加密得到的软件被保护部分密文发送至软件版权保护设备;
所述计算机设备包括:
软件主体部分模块,用于运行软件主体部分,通过软件保护代理模块向软件版权保护设备发出调用软件被保护部分的请求,并通过软件保护代理模块接收来自软件版权保护设备的软件被保护部分的运行结果;以及
软件保护代理模块,用于实现计算机设备与软件版权保护设备的通信;
所述软件版权保护设备包括:
外部接口,用于与软件现场交易子系统或计算机设备进行交互;
存储区,用于存储一对执行非对称加密算法的公钥和私钥,所述公钥以设备证书的形式保存;将存储的设备证书通过所述外部接口发送至软件现场交易子系统;
被保护软件调用模块,用于实现计算机设备的软件主体部分通过所述外部接口对被保护软件管理模块进行调用;
被保护软件管理模块,用于通过所述外部接口接收来自软件现场交易子系统的软件被保护部分的密文,存储所述软件被保护部分的密文;根据被保护软件调用模块的调用,用所述存储区中存储的私钥对存储的软件被保护部分的密文进行解密,执行解密后的软件被保护部分得到运行结果,并通过所述外部接口向所述计算机设备返回所述运行结果。
19.根据权利要求18所述的软件版权保护系统,其特征在于,所述软件现场交易子系统包括:
软件数据库,用于存储软件被保护部分;
证书颁发机构信任列表,用于保存可以信任的证书颁发机构CA的名称和相应的CA公钥证书;
被保护部分的现场发售模块,用于获取软件版权保护设备的设备证书,并根据证书颁发机构信任列表保存的CA公钥证书对所获取的设备证书的合法性进行验证,验证通过后则用所述设备证书的公钥对软件被保护部分加密,将加密得到的软件被保护部分密文发送至软件版权保护设备。
20.根据权利要求18至19任一项所述的软件版权保护系统,其特征在于,软件版权保护系统进一步包括:
证书颁发机构服务器,用于接收来自计算机设备的新公钥Pubk2和原设备证书,验证所述原设备证书是否合法,若是,则生成公钥为Pubk2的新设备证书,并用原设备证书的公钥对新设备证书进行加密,得到新设备证书的密文,并将所述新设备证书的密文发送至计算机设备;
所述计算机设备进一步包括:
证书升级代理,用于向软件版权保护设备发送准备升级证书的命令,接收来自软件版权保护设备的新公钥Pubk2和目前正在使用的原设备证书,向证书颁发机构服务器发送包含所述新公钥Pubk2和原设备证书的升级证书的请求;接收来自颁发机构服务器的新设备证书的密文,将所述新设备证书的密文发送至软件版权保护设备;
所述软件版权保护设备进一步包括密钥生成模块,用于生成相互对应的新公钥和新私钥;
存储区进一步用于通过外部接口接收来自计算机设备的新设备证书的密文,用当前存储的私钥解密所述新设备证书的密文,得到新设备证书,用所述新设备证书替换已存储的设备证书,并用来自密钥生成模块的新私钥替换已存储的私钥。
CN 200910085813 2009-06-01 2009-06-01 一种软件版权保护方法、设备和系统 Expired - Fee Related CN101571900B (zh)

Priority Applications (2)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
CN101571900A CN101571900A (zh) 2009-11-04
CN101571900B true CN101571900B (zh) 2011-01-19

Family

ID=41231256

Family Applications (1)

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

Country Status (2)

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

Families Citing this family (17)

* 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 西门子公司 一种程序保护方法和装置
CN107688729B (zh) * 2017-07-27 2020-11-27 大唐高鸿信安(浙江)信息科技有限公司 基于可信主机的应用程序保护系统及方法
CN108418833B (zh) * 2018-03-23 2022-01-07 中科创达软件股份有限公司 一种软件的管理方法、云端服务器和终端
CN110414188A (zh) * 2018-04-27 2019-11-05 武汉梓金山科技有限公司 一种基于大数据的数据加密系统及方法
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 华晟现代电子科技(香港)有限公司 硬件加密装置、嵌入式系统版权保护系统及方法
CN112579989B (zh) * 2020-12-23 2022-06-24 杭州安司源科技有限公司 网络服务软件反盗版方法
CN113434121A (zh) * 2021-06-29 2021-09-24 上海律信信息科技有限公司 一种基于加密算法的软件开发系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1324037A (zh) * 2000-05-11 2001-11-28 英业达集团(南京)电子技术有限公司 利用软件加密与解密的方法
CN101216873A (zh) * 2007-12-29 2008-07-09 北京深思洛克数据保护中心 基于加密锁的软件版权保护方法和系统及加密锁
CN101261665A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种通过加密数据文件实现软件保护的方法
CN101281575A (zh) * 2008-05-14 2008-10-08 北京深思洛克数据保护中心 一种软件保护方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100346255C (zh) * 2005-10-19 2007-10-31 北京飞天诚信科技有限公司 提取部分代码至加密装置中的软件版权保护方法
CN101261666B (zh) * 2008-04-10 2010-07-21 北京深思洛克软件技术股份有限公司 一种通过加密可执行程序文件实现软件版权保护的方法
CN101571900B (zh) * 2009-06-01 2011-01-19 薛明 一种软件版权保护方法、设备和系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1324037A (zh) * 2000-05-11 2001-11-28 英业达集团(南京)电子技术有限公司 利用软件加密与解密的方法
CN101216873A (zh) * 2007-12-29 2008-07-09 北京深思洛克数据保护中心 基于加密锁的软件版权保护方法和系统及加密锁
CN101261665A (zh) * 2008-04-10 2008-09-10 北京深思洛克数据保护中心 一种通过加密数据文件实现软件保护的方法
CN101281575A (zh) * 2008-05-14 2008-10-08 北京深思洛克数据保护中心 一种软件保护方法

Also Published As

Publication number Publication date
WO2010139258A1 (zh) 2010-12-09
CN101571900A (zh) 2009-11-04

Similar Documents

Publication Publication Date Title
CN101571900B (zh) 一种软件版权保护方法、设备和系统
EP3618394B1 (en) Data sharing method, client, server, computing device, and storage medium
US7496756B2 (en) Content usage-right management system and management method
US6959382B1 (en) Digital signature service
US8495383B2 (en) Method for the secure storing of program state data in an electronic device
US7676430B2 (en) System and method for installing a remote credit card authorization on a system with a TCPA complaint chipset
CN104471581B (zh) 利用媒体安全控制器保护媒体项目
JP2004528632A (ja) プログラマブル携帯データ記憶媒体用プログラムの分散生成方法およびシステム
JP2001216198A (ja) 利用許可証発行装置および方法
JPWO2008117550A1 (ja) ソフトウェアicカードシステム、管理サーバ、端末、サービス提供サーバ、サービス提供方法及びプログラム
CN111476573B (zh) 一种账户数据处理方法、装置、设备及存储介质
CN105162607A (zh) 一种支付账单凭证的认证方法及系统
KR100947119B1 (ko) 인증서 검증 방법, 인증서 관리 방법 및 이를 수행하는단말
CN115423457A (zh) 基于区块链的跨境金融支付结算方法及系统
KR101438104B1 (ko) 인증서를 클라우드 저장소 서버가 관리하는 방법
JP2004171367A (ja) 回路動作シミュレーション装置、回路動作シミュレーション方法、回路動作シミュレーションプログラム、および回路情報復号化プログラム
JP2011077650A (ja) コンテンツのダウンロード管理サーバ、管理方法、管理システムおよび携帯端末機
US7058804B1 (en) Data storing system, issuing apparatus, data providing apparatus and computer readable medium storing data storing program
US20230283466A1 (en) Content protection system
JP2004140636A (ja) 電子文書の署名委任システム、署名委任サーバ及び署名委任プログラム
KR20050091114A (ko) 쿠폰을 이용한 컨텐츠 제공 방법 및 시스템
KR101710950B1 (ko) 암호키 배포 방법, 그를 이용한 카드리더 모듈 및 암호키 배포 시스템
JP6901373B2 (ja) ユーザ管理装置、ユーザ管理システム
JP2011248792A (ja) 端末データ管理システム
US20050055313A1 (en) Method for distributing software

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110119

Termination date: 20130601