本发明涉及信息安全领域,特别涉及一种软件数字许可转移方法及系统。
背景技术:
现有的对软件进行保护的方式一般是将软件数字许可授权给软件用户。其实现方式通常是由软件开发商往用户的硬件锁中签发软件数字许可。
对于一些安全要求和开发成本比较高的软件,软件数字许可的重要性不言而喻,基本上都是一套软件对应一套硬件锁。然而,针对于硬件锁的某些应用场景,比如某一个公司购买了一套成本很高的软件,该公司中手里有硬件锁的用户可以正常的使用该软件,但是跨地域的分公司员工想使用同一套软件的话就必须要先申请到硬件锁,相当不方便。而如果再为分公司购买一套软件成本又太高。
另外随着互联网的发展,出现了处于云端服务器的软件保护锁,通称为云锁。利用云锁的方式进行软件许可授权为软件用户提供了极大的便利,例如跨地域的分公司可以使用云锁来使用总公司购买的软件。不过,对于某些断网的情况,仍然需要使用硬件锁。
技术实现要素:
为了解决现有技术中的上述不便,本发明实施例提供了一种软件数字许可转移方法及系统,以方便用户对软件许可的使用并能够为用户降低使用软件产品的成本。
本发明实施例提供的软件数字许可转移方法,包括:s1、获取基于第一账户信息的数字许可转移请求,第一账户为在数字许可服务平台创建的用户账户;s2、根据所述数字许可转移请求,将包括与第一软件保护锁中的指定数字许可相关的数据的数据包发送给第二软件保护锁,所述第一软件保护锁与第二软件保护锁均与第一账户关联;s3、将所述第一软件保护锁中的所述指定数字许可删除或设置为不可用状态。
本发明实施例提供的软件数字许可转移系统,包括许可转移设备、第一软件锁和第二软件锁,其中许可转移设备包括:登录模块,配置为基于第一账户信息登录到在数字许可服务平台创建的第一账户;获取模块,配置为获取基于第一账户信息的数字许可转移请求;转移模块,配置为根据所述数字许可转移请求,将包括与第一软件保护锁中的指定数字许可相关的数据的数据包发送给第二软件保护锁;关联模块,配置为将所述第一软件保护锁与第二软件保护锁与第一账户关联;设置模块,配置为将所述第一软件保护锁中的所述指定数字许可删除或设置为不可用状态。
本发明实施例的软件数字许可转移方法和系统能够允许针对同一个软件产品的数字许可在同一个用户账户下的多个不同的软件保护锁之间转移,转移过程不需要借助于其他硬件设备,且转移许可的双方不需要处于同一地点,充分满足了当前对软件数字许可的使用需要,同时能够为用户降低使用软件产品的成本,提高用户体验。
附图说明
图1为本发明的软件数字许可转移方法的一个实施例的示意性流程图;
图2为图1所示实施例中步骤s2的一种实现方式的示意性流程图;
图3为本发明的软件数字许可转移方法中对硬件设备进行账户关联或解除关联的示意性流程图;
图4为本发明的软件数字许可转移系统的示意性框图。
具体实施方式
下面结合附图对本发明的实施例进行详细说明。
图1为本发明的软件数字许可转移方法的一个实施例的示意性流程图。
如图1所示,本实施例的软件数字许可转移方法包括:
s1、获取基于第一账户信息的数字许可转移请求,第一账户为在数字许可服务平台创建的用户账户;
本发明实施例的数字许可转移基于同一用户账户来进行。用户账户是软件用户预先在数字许可服务平台创建的账户,账户下可具有一个位于数字许可服务平台(服务器端)的云锁,软件开发商可向该用户账户为用户颁发软件数字许可,向账户颁发的数字许可安装在云锁中,用户需要使用软件开发商发布的激活数据包来激活所颁发的数字许可,激活之后的数字许可才能由用户在使用限制条件下使用。该账户可允许具有账户使用权的人员通过不同的终端登录使用云锁,但针对该账户下云锁内的同一软件数字许可,同一时间只允许一个终端设备登录账户进行使用。用户通过终端设备上的许可服务应用登录账户后,能查看到向该账户云锁颁发的软件数字许可并进行使用。在需要进行数字许可转移时,登录该账户后,可基于账户信息获得数字许可转移请求。
本发明实施例中,每个用户账户可拥有由平台生成并发放的专用的数字证书,平台例如可通过ras算法来生成证书。证书例如可用于数字许可转移请求或包括数字许可相关数据在内的数据包等的安全传送等用途。
s2、根据所述数字许可转移请求,将包括与第一软件保护锁中的指定数字许可相关的数据的数据包发送给第二软件保护锁,所述第一软件保护锁与第二软件保护锁均与第一账户关联;
根据本发明实施例,许可转移在已经与第一账户关联的软件保护锁之间才能进行。第一软件保护锁可以是云锁,则第二软件保护锁可以是硬件设备;反之亦可,即第一软件保护锁为硬件设备,第二软件保护锁为云锁。作为硬件设备的软件保护锁(后文称为硬件锁)需要预先关联至用户账户且只能关联到一个用户账户,但一个用户账户可以关联多个硬件锁,同时一个用户账户只关联有一个云锁。将硬件锁关联至账户后,账户中能够查看到所关联的硬件锁的关联信息,关联信息中例如可包括该硬件锁的标识信息或序列号等,如果用户不再需要某个硬件锁,可以将硬件锁的关联信息从账户中删除。
登录账户获得基于账户信息的数字许可转移请求后,可根据该转移请求的内容,将与作为转出方的第一软件保护锁中的指定数字许可相关的数据通过数据包的方式发送给作为转入方的第二软件保护锁。
与指定数字许可相关的数据可以例如为数字许可标识信息、数字许可状态信息、数字许可本体数据、数字许可期限数据等。当第二软件保护锁中不存在与指定数字许可相关的任何数据时,数据包中可包括数字许可本体数据,以使得第二软件保护锁中具有完整的数字许可数据。当第二软件保护锁中先前已转入过该指定数字许可,并且在上次将该指定数字许可相关数据的数据包发出后该指定数字许可仍存在于第二软件保护锁中,只是已如以下s3步骤那样已被设定为不可用状态,则向第二软件保护锁发送的上述数据包中可以不必包括数字许可本体数据,而仅包括数字许可相关数据,如期限数据、标识信息、状态信息等,并在确定数据包符合预定条件时,根据数据包中的许可相关数据对所存储的数字许可进行相应的设置并重置为可用状态。
s3、将所述第一软件保护锁中的所述指定数字许可删除或设置为不可用状态。
将包括指定数字许可的数据包发送给第二软件保护锁后,需要将第一软件保护锁内的该指定数字许可删除或设置为不可用状态,从而确保同一份软件数字许可在同一时间只在一个软件保护锁中处于有效状态。
本发明实施例使得软件数字许可能够并且只能够在同一个用户账户下不同的软件保护锁之间转移,解决了用户的同一软件数字许可只能在固定的软件保护锁中使用的问题,以及跨地域或离线使用时需要重复购置软件的问题。进行许可转移时只需要把软件保护锁与用户账户相关联,转移过程通过任一终端设备上的许可服务应用登录用户账户来进行,不需要借助于其他硬件设备,且转移许可的双方不需要处于同一地点,使得用户能够在不同地域以不同方式使用同一数字许可,充分满足了当前对软件数字许可的使用需要,同时能够为用户降低使用软件产品的成本。
图2为图1所示实施例中步骤s2的一种实现方式的示意性流程图。
如图2所示,本实施例的许可转移方法中,第一软件保护锁与第二软件保护锁均为硬件锁,则图1所示的s2步骤可具体包括:
s21、将所述数据包发送给与所述第一账户关联的云锁;
本实施例中,当需要在不同的硬件锁之间转移数字许可时,可以在通过终端设备上的许可服务应用登录用户账户后,通过许可服务应用生成统一格式的数据包,将账户关联的一个硬件锁中的指定数字许可通过数据包发送至账户关联的另一硬件锁中。具体实施时,可将作为转出方的硬件锁插接到终端设备上,则终端设备上的许可服务应用会识别到该硬件锁,并且显示该硬件锁的相关信息,包括待转移的指定数字许可的相关信息。通过许可服务应用先将包括指定数字许可的数据包发送给账户中的云锁,经由云锁将数据包发送给需要转入的硬件锁。
s22、从云锁将所述数据包发送给所述第二软件保护锁;
将数据包发送给云锁,将数字许可暂时转移至云锁中后,可仍以上述的统一格式将暂存在云锁中的该数字许可以数据包的方式发送给第二硬件锁。
s23、将所述指定数字许可从所述云锁中删除或在所述云锁中设定为不可用状态。
将暂存在云锁中的该数字许可发送给第二硬件锁后,可将从云锁中删除该数字许可,或者也可以将该数字许可保留在云锁中,只是将数字许可的状态设定为不可用。
通过本发明实施例,在软件保护锁之间转移时,包括数字许可的数据包可在安全的界限范围内进行传送,确保数据的安全。
图3为本发明的软件数字许可转移方法中对硬件设备进行账户关联或解除关联的示意性流程图。
如前文所提及的,本发明实施例包括了将硬件锁与用户账户关联或解除关联的步骤。如图3所示,关联或解除关联的过程可包括如下步骤:
s41、获得所述硬件设备的关联请求或解除关联请求;
用户通过终端设备上的许可服务应用登录账户后,可通过操作许可服务应用来获得连接至该终端设备的硬件锁的关联请求或解除关联请求,并将请求发送到数字许可服务平台中负责管理数字许可转移的模块。数字许可服务平台可采用例如ouath体系来管理用户账户。调用平台相关服务所需的token可在通过许可服务应用登录账户后获取。
s42、检查所述关联请求或解除关联请求是否符合预定条件;
关联请求或解除关联请求中例如可包括用于确保应答单次有效的随机数,可根据对该随机数的校验来确定关联请求或解除关联请求是否合法。
在本发明一个实施例中,关联请求或解除关联请求可以包括硬件锁的标识信息和用硬件锁的私钥对预定信息进行签名得到的签名数据。可通过请求中包括的硬件锁的标识信息确定与该硬件锁的私钥对应的公钥,用该公钥对请求中包括的签名数据进行验签来确定请求是否合法。
确定请求为合法请求后,可检查硬件锁的当前状态,例如确定硬件锁是否与终端设备物理连接或无线连接,即确定硬件锁是否处于与终端设备可进行数据交互的状态。
s43、当所述关联请求或解除关联请求符合预定条件时,向所述硬件设备返回响应数据,所述响应数据包括第一账户信息。
如果请求中的各项数据确定为合法状态,且硬件锁处于可数据交互的状态,则可以向硬件锁发送响应数据。响应数据中可包括账户信息以及请求中所包括的随机数。账户信息例如可以是作为账户的用户名的邮箱地址或其他形式的账户id以及账户类型等。对关联请求的响应数据中还可以包括账户证书,如前文所提及的,账户证书可用于数字许可转移请求或包括数字许可相关数据在内的数据包等的安全传送,例如可在数字许可转移请求或包括数字许可相关数据的数据包中包括第一软件保护锁利用该账户证书中的私钥进行签名获得的签名数据,以便接收方能够使用证书中的对应公钥进行验签,当然,除了使用账户证书这种方式来生成签名数据外,各硬件锁中也可以具有自己独立的私钥用于发出签名数据。对解除关联请求的响应数据中则不必包括账户证书。此外,响应数据中还可以包括硬件锁的标识信息和数字许可服务平台侧的签名数据以便硬件锁使用对应的公钥进行验签。
硬件锁接收到响应数据后,检查其中的各项数据是否合法,例如平台侧的签名数据是否能够验签成功、随机数是否验证成功等。如果确定响应数据中的各项数据合法,则根据所发送请求的类型,在硬件锁内部记录或删除账户信息,账户信息例如可以是作为账户的用户名的邮箱地址或其他形式的账户id以及账户类型等。响应数据处理完成后,可返回成功确认信息。
此外,本发明实施例中,当用户的账户信息发生变化时,例如账户属性、账户名或账户证书发生了变化,则可以将与账户关联的硬件锁插接到终端设备上,通过终端设备上的许可服务应用对硬件锁中的账户信息进行更新。
在本发明实施例中,在关联请求或解除关联请求中包括硬件锁的标识信息(如设备id)的情况下,当判定所述关联请求或解除关联请求符合预定条件时,可以在第一账户中添加或删除硬件锁的标识信息作为关联信息,如此能够便于对与第一账户管理的硬件锁进行管理。
在本发明一个实施例中,在确定要进行数字许可转移时,可先向第一软件保护锁发送许可状态获取请求,从第一软件保护锁获得关于指定数字许可的状态信息,当确定状态信息符合预定条件时才从所述第二软件保护锁获取所述数字许可转移请求。指定数字许可的状态信息可以包括例如数字许可的标识信息、数字许可的使用者的标识信息、数字许可对应软件的开发商的标识信息等有关数字许可的信息。预定条件例如可以包括第一软件保护锁中的指定数字许可是否处于有效状态,例如许可的有效期限是否过期、许可的限制次数是否已达到等。预定条件还可以包括指定数字许可是否允许转移,即是否禁用了对该数字许可的转移操作。
在本发明实施例中可使用专用的数据格式来传送包括数字许可相关数据的数据包。例如,数据包中可以包括用于验证合法客户端的标识信息、版本信息、转移操作状态信息等。转移操作状态信息可包括待转移状态、转移中状态、转移后状态、转移出错状态等。数据包在传输过程中可以采用二进制数组作为消息体。
在本发明一些实施例中,数字许可转移请求或包括数字许可相关数据的数据包中还可以包括数字许可转移方向信息,例如从硬件锁至云锁的转移方向,或从硬件锁到硬件锁的转移方向等,以便于追溯数字许可的转移历史。
在本发明实施例中,转移过程出现失败情况时,例如转移请求或数据包不符合预定条件时,可以向数字许可服务平台侧返回出错消息,根据出错消息确定是否调整指定数字许可的状态。例如,当数字许可转移失败时,可在作为转出方的软件保护锁中将指定数字许可的转移状态标记为转移失败,以便于追溯数字许可的转移历史。
图4为本发明的软件数字许可转移系统的示意性框图。
如图4所示,本实施例的软件数字许可转移系统包括许可转移设备20、第一软件锁11和第二软件锁12。许可转移设备20可以包括登录模块21、获取模块22、转移模块23、关联模块24和设置模块25。
登录模块21配置为基于第一账户信息登录到在数字许可服务平台创建的第一账户。关联模块24配置为将第一软件保护锁11与第二软件保护锁12与第一账户关联。
获取模块22配置为获取基于第一账户信息的数字许可转移请求,转移模块23配置为根据数字许可转移请求,将包括与第一软件保护锁11中的指定数字许可相关数据的数据包发送给第二软件保护锁12。
设置模块25配置为将第一软件保护锁11中的指定数字许可删除或设置为不可用状态。
本发明实施例的数字许可转移基于在数字许可服务平台创建的同一用户账户来进行,账户下可具有一个位于数字许可服务平台(服务器端)的云锁。该账户可允许具有账户使用权的人员通过不同的终端登录使用云锁,但针对该账户下云锁内的同一软件数字许可,同一时间只允许一个终端设备登录账户进行使用。
用户通过登录模块21登录账户后,能查看到向该账户云锁颁发的软件数字许可并进行使用。在进行许可转移前,需要先通过关联模块24将与许可转移相关的软件保护锁关联至账户。根据本发明实施例,许可转移在已经与第一账户关联的软件保护锁之间才能进行。第一软件保护锁11可以是云锁,则第二软件保护锁12可以是硬件设备;反之亦可,即第一软件保护锁11可以为硬件设备,第二软件保护锁12为云锁。
在要进行数字许可转移时,通过登录模块21登录该账户,可通过获取模块22基于账户信息获得数字许可转移请求,并通过转移模块23以发送数据包的方式进行许可转移。转移完成后,由设置模块25将第一软件保护锁11中的数字许可删除或设置为不可用状态。
本发明实施例使得软件数字许可能够并且只能够在同一个用户账户下不同的软件保护锁之间转移,转移过程通过任一终端设备上的许可服务应用登录用户账户来进行,不需要借助于其他硬件设备,且转移许可的双方不需要处于同一地点,使得用户能够在不同地域以不同方式使用同一数字许可,充分满足了当前对软件数字许可的使用需要,同时能够为用户降低使用软件产品的成本。
在本发明一个实施例中,第一软件保护锁11与第二软件保护锁12为作为硬件设备的硬件锁。在本实施例中,转移模块23可以配置为将数据包发送给与第一账户关联的云锁进行中转,再从云锁将该数据包发送给第二软件保护锁12。设置模块25进一步配置为将指定数字许可从云锁中删除或在所述云锁中设定为不可用状态。通过本发明实施例,在软件保护锁之间转移时,包括数字许可的数据包可在安全的界限范围内进行传送,确保数据的安全。
在本发明实施例中,对硬件锁进行与账户的关联或解除关联可通过获取模块22和关联模块24来执行。通过登录模块21登录账户后,可由获取模块22从硬件锁获得关联请求或解除关联请求,并由关联模块24检查关联请求或解除关联请求是否符合预定条件,当请求符合预定条件时,由关联模块24向该硬件锁返回响应数据,在响应数据中可包括第一账户信息。硬件锁接收到响应数据后,检查其中的各项数据是否合法,例如平台侧的签名数据是否能够验签成功、随机数是否验证成功等。如果确定响应数据中的各项数据合法,则根据所发送请求的类型,在硬件锁内部记录或删除账户信息,账户信息例如可以是作为账户的用户名的邮箱地址或其他形式的账户id以及账户类型等。
本发明实施例中,关联请求或解除关联请求中例如可包括用于确保应答单次有效的随机数,可根据对该随机数的校验来确定关联请求或解除关联请求是否合法。
本发明实施例中,关联请求或解除关联请求可以包括硬件锁的标识信息和用硬件锁的私钥对预定信息进行签名得到的签名数据。关联模块24可以配置为根据硬件锁的标识信息确定与该硬件锁的私钥对应的公钥,用该公钥对请求中包括的签名数据进行验签来确定请求是否合法。确定请求为合法请求后,关联模块24可检查硬件锁的当前状态,例如确定硬件锁是否与终端设备物理连接或无线连接,即确定硬件锁是否处于与终端设备可进行数据交互的状态。确定请求合法并且硬件锁处于预定状态时,关联模块24向该硬件锁返回响应数据。
在本发明一个实施例中,在关联请求或解除关联请求中包括硬件锁的标识信息的情况下,当判定关联请求或解除关联请求符合预定条件时,关联模块24可以在第一账户中添加或删除硬件锁的标识信息作为关联信息,如此能够便于对与第一账户管理的硬件锁进行管理。
在本发明一个实施例中,在确定要进行数字许可转移时,科由获取模块22先向第一软件保护锁发送许可状态获取请求,以从第一软件保护锁获得关于指定数字许可的状态信息,并配置为当状态信息符合预定条件时才从第二软件保护锁获取数字许可转移请求。指定数字许可的状态信息可以包括例如数字许可的标识信息、数字许可的使用者的标识信息、数字许可对应软件的开发商的标识信息等有关数字许可的信息。预定条件例如可以包括第一软件保护锁中的指定数字许可是否处于有效状态,例如许可的有效期限是否过期、许可的限制次数是否已达到等。预定条件还可以包括指定数字许可是否允许转移,即是否禁用了对该数字许可的转移操作。
以上对本发明的一些实施例进行了详细说明,但本发明不限于这些具体实施例,而是可以在不脱离本发明构思的情况下构建多个修改或变型的实施例,这些修改或变型都应包含在本发明要求保护的范围内。