具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书一个或多个实施例中的附图,对本说明书一个或多个实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是说明书一部分实施例,而不是全部的实施例。基于说明书一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书实施例方案保护的范围。
虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置、服务器或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理、服务器集群的实施环境)。
区块链中通常包括多个区块,区块是一种逻辑上的数据结构,可以用于存储区块链数据。这些区块链数据可以包括区块链中资金的流转、变动等操作产生的数据信息,通常在区块链中,一次资金的流转或一个资产的变动等可以称为一笔交易。本说明书一些实施例中所述的资产在区块链中可以包括以电子数据的形式存储于区块链上的货币、证券、贵金属等资产。例如一些应用提供的钱包功能,可以存放货币资产,可以使用钱包中的资产来购买产品或转账等。
区块链中的数据可以使用非对称加密来验证交易的合法性。所述的非对称加密通常包括公钥和私钥,公钥可以对外公布,私钥不对外公开,是区块链交易资产时用于验证交易的主要手段之一。交易方可以使用私钥对交易进行签名,验证者可以使用该交易方的公钥来验证签名。如果能通过验证,则可以说明该笔交易来自于这个公钥对应的私钥的真实拥有者,该笔交易是合法的,可以将该笔交易放入到区块链新的区块中。由上过程可以看出,私钥在区块链资产交易中起着非常重要的作用。在资产被多人共享时,资产涉及到多方的权益,本说明书提供的一个或多个实施例方案可以实现在资产交易时需要资产共享方共同参与,可以有效的保障区块链中共享资产操作的安全性。
具体的,本说明书以一个钱包应用的区块链交易为实施场景对本方案的实施过程进行说明。所述的钱包可以包括客户端或服务器一侧的应用,通常可以产生非对称密钥,计算出公钥地址,实现区块链资产交易。当确认一份新的资产或资产共享方发生变化,所述的钱包可以自动根据资产共享方的数量,利用资产对应的私钥,计算并生成与资产共享方数量相同的子密钥。这些子密钥可以分别发送给相应的资产共享方,可以使得每个资产共享方掌握一份子密钥。这些子密钥在可以资产交易需要原始私钥时还原出原始私钥,再利用还原出的私钥进行签名,发起交易。
当然,本说明书实施例方案中所述的共享对象并不一定限制为上述所述的电子货币的资产,所述的原密钥也不限于非对称加密中的私钥。所述的共享对象在其他实施场景中也可以包括相应类型的业务数据,如账单数据、用户数据、对外公开信息等,所述的原密钥也可以包括其他对数据进行加密的数据信息,例如字符串,甚至图像、声音、指纹等类型的密钥数据。下述实施例所述的由原密钥生成多个子密钥以及利用收到的子密钥还原出原密钥的处理也可以由区块链中的矿工来计算完成。所述的矿工一般指有足够计算能力的节点,可以收集多条交易记录装在一起,然后用矿工自己的密钥,尝试各种填充位进行加密,向全网广播这个区块,让其他节点知道区块链中一个新的区块产生了。
具体的一个实施例如图1所示,本说明书提供的一种密钥数据处理方法的一个实施例中,所述方法可以包括:
S0:获取区块链中共享对象的原密钥,确定原密钥的共享数量;
S2:使用预设算法对所述原密钥进行处理,生成所述共享数量个子密钥,所述子密钥用于在获得所述共享数量个子密钥时还原出所述原密钥。
在本实施例中,计算装置可以得到资产对应的原密钥的信息和所述资产被共享的数量信息。然后可以利用预先选取或设计的预设算法对所述原密钥进行计算处理,生成与所述资产被共享的数据相同个数的子密钥。本实施例实施场景中所述的共享对象可以包括钱包中的资产。所述的原密钥可以由本地钱包(服务器)生成,也可以包括接收的其他钱包(服务器)发送来的原密钥。本实施例中,由所述原密钥生成的多个子密钥中,每个子密钥无法单独进行交易的认证或者认证无法通过。所述的子密钥在由同一个原密钥生成的所有子密钥集齐的情况下可以还原出原密钥,如果缺少子密钥或任意一个子密钥不正确,则可以无法完成还原出原密钥或还原的原密钥不正确。
例如在本实施例应用场景中,一个区块链网络中可以包括多个节点,每个节点可以有自己的公钥和私钥。假设在一个节点中存在钱包应用,钱包为实施例所述的共享对象,该钱包的私钥为所述的原密钥。该钱包的私钥可以命名为S,该钱包的共享人数为2。则可以根据预先选取或设计的算法,基于私钥S生产2个子密钥S1和S2。其中,子密钥S1在钱包中不能进行交易的签名或签名无法通过验证,子密钥S2同样在钱包中不能进行交易的签名或签名无法通过验证。但可以根据所述子密钥S1和子密钥S2还原出原始私钥S。具体还原原始私钥S的方式可以根据生产所述子密钥时采用的所述预设算法来进行相应的计算,如与预设算法生成子密钥相反的逆向算法,当然也可以包括通过其他例如插值、子密钥相关性的算法,甚至结合第三方辅助数据来还原出原始密钥的实施方式。
进一步的,本说明书提供的所述方法的另一个实施例中,在生成与资产共享方数量相同的子密钥后,可以将所述子密钥展示给相应的资产共享方,使得每个资产共享方可以得到属于自己的子密钥。然后可以将原密钥销毁,例如从钱包(或者以及存储有原始私钥的存储单元)中彻底删除原始私钥。这样,任何一个资产共享方有自己的子密钥,都不会保存有原密钥,可以进一步保障密钥数据的安全性,防止某个资产共享方私自利用私钥进行资产交易。具体的,本说明书所述方法的另一个实施例如图2所示,还可以包括:
S4:将所述子密钥分别发送给相应的对象共享方;
S6:删除所述原密钥。
图2是本说明书提供的所述方法另一个实施例的方法流程示意图。在本实施例中,钱包生成自己的公钥和私钥后,可以根据不同的共享人数,利用私钥生成与共享人数相同数量的子密钥,然后可以将子密钥分别展示给资产共享方,然后销毁私钥。具体实施过程中,可以设置一个子密钥发送给一个资产共享方。当然,本说明书不排除其他的实施例中,一个资产共享方可以拥有两个或两个以上的子密钥,例如相互信任的资产共享方相互保存对方的子密钥。
一种实施方式中,所述的子密钥可以由所述钱包发送给所述对象共享方。其他的实施方式中,在所述钱包生成所述子密钥后,输出生成的多个子密钥,然后由其他处理方(例如专门设置的子密钥配发装置)将子密钥发送给对象共享方。在发送所述子密钥时,可以采用随机选取生成的子密钥发送,也可以根据一定的规则选择指定的子密钥发送给相应的对象共享方。
上述实施例中生成子密钥的预设算法可以包括多种实施方式。本说明书一个实施例提供了一种利用原密钥生成子密钥的预设算法,可以利用随机字符串结合原密钥进行运算处理,生成子密钥。具体的,本说明书所述方法的一个实施例中,所述的预设算法可以包括:
S20:利用随机生成的字符串对原密钥进行运算,生成所述原密钥对应的共享数量个子密钥。
所述的字符串可以包括数字、字母、符号等。钱包可以保存随机生成的这些字符串,可以用于后续还原出原密钥时使用。具体利用随机生成字符串与原密钥进行运算处理的方式可以预先进行设置,例如随机生成固定长度的字符串,将字符串的一个或多个字符按照一定顺序分别插入到原密钥中,生成子密钥,或者将字符串与原密钥进行对应位的数值相加等处理方式。本实施例中使用随机字符串来生成原密钥的子密钥,可以进一步保障生成的子密钥的安全性,进而提高原密钥的安全性。
本说明书所述方法的另一个实施例中,提供一种利用随机数、素数和取模运算的来生成子密钥的实施方案。具体的如图3所示,图3是本说明书提供的一种生成子密钥实施例的处理过程示意图,所述预设算法可以包括:
S200:当所述共享数量为(N+1)时,生成N个随机数Ri,Ri为第i个随机数,i∈[1,N];
S202:确定素数P,所述素数P至少大于所述原密钥的数值S、随机数Ri中的任意一个,Ri取值范围包括(0,P-1];
S204:计算(S+R1X+R2X2+R3X3+…+RNXN)后对P取模,X分别取值[1,N+1],得到(N+1)个子密钥,N≥1,X、N为整数。
一般的,在区块链使用的非对称密钥算法中,生成的私钥的长度通常为1024位或者2048位,因此,在一个实施场景具体的实施过程中,钱包可以预先存储大于1024或者2048位的部分已知素数,作为本实施例中钱包生成子密钥时的数据存储。假设私钥命名为S,钱包可以根据共享人数,取随机数Ri,然后再取一个长度大于私钥S或者大于随机数Ri的一个素数P,以满足子密钥计算条件。进一步,可以利用S+R1X+R2X2+R3X3+…+RNXN模P来分别生成各个子密钥。具体的一个示例可以如下所示:
1)、假如有两个人共享资产,则生成的子密钥可以分别为:
子密钥一:(S+R)模P;
子密钥二:(S+2R)模P。
2)、假设有三个人共享资产,则生成的子密钥可以分别为:
子密钥一:(S+R1+R2)模P;
子密钥二:(S+2R1+4R2)模P;
子密钥三:(S+3R1+9R2)模P。
以此类推,假设有(N+1)个人共享资产,需要生成(N+1)个子密钥,则可以利用(S+R1X+R2X2+R3X3+…+RNXN)对P取模,其中每个子密钥可以通X取值[1,N+1]计算得到。另一个示例中,利用上述方式计算四个人共享资产生成四个子密钥时的处理过程可以如下:
子密钥一:(S+R1+R2+R3)模P;
子密钥二:(S+2R1+4R2+8R3)模P;
子密钥三:(S+3R1+9R2+27R3)模P;
子密钥四:(S+4R1+16R2+64R3)模P。
本实施例提供的计算子密钥的预设算法,采用结合随机数、素数和取模运算的预定方式的处理,可以根据原密钥的共享数量自动生成所述共享数量的子密钥,并且由于采用了上述的子密钥生成方式,生成的子密钥保密性更强,降低被破解的风险,安全性更高。
本说明书提供的所述方法的另一种实施例中,不仅可以根据共享对象的原密钥生成相应的多个子密钥,还可以根据接收的子密钥进行还原原密钥的计算处理。具体的,本说明书提供的所述方法的另一个实施例中,所述方法还可以包括:
S80:接收输入的子密钥;
S82:在确定所述子密钥的数量与对应的原密钥的共享数量相同时,通过预定算法对所述共享数量的子密钥进行原密钥的还原计算处理,得到相应的原密钥。
当然,进一步的,还可以包括:
S84:利用所述还原计算处理后得到原密钥对所述共享对象进行操作。
图4是本说明书提供的所述方法另一种实施例的方法流程示意图。当需要原密钥进行资产操作时,原密钥的各个资产共享方可以输入自己的子密钥。由于子密钥分散到多个资产共享方,因此,本实施例中在接收到原密钥共享数量个子密钥时进行原密钥的还原计算处理。例如,钱包的私钥生成了三个子密钥,分别由三个钱包共享人保存。当需要进行钱包资金操作时,各个钱包共享人分别输入自己的子密钥。此时,钱包接收到三个子密钥时,可以利用该三个子密钥还原该钱包的私钥。如果钱包仅接收到一个或两个子密钥,或者多余三个子密钥,可以设置匹配到与该钱包的共享数量不相同,可以不执行原密钥的还原计算处理。
所述的根据子密钥还原原密钥的还原计算处理,可以结合生成子密钥的算法相应的设计还原的算法,或者可以结合子密钥特点通过一些特定的方式进行还原计算处理。例如,上述使用随机数、素数和取模运算生成子密钥的实施方式中,在本说明书的一个或多个进行原密钥还原计算处理的过程中,可以通过拉格朗日公式计算还原得到原始私钥S。
得到还原后的原密钥后,可以利用该密钥进行相应的共享对象的操作,例如对交易进行签名,确认该笔交易是由钱包合法的用户产生。进一步的,钱包可以将签名后的交易的信息广播到区块链网络,并存入到一个新的区块中。
上述实施例提供了一些利用随机字符串或者随机数、素数等生成子密钥的预设算法。本说明书的另一个实施例提供另一种根据原密钥生成相应数量子密钥的实施方式。在本实施例中,可以将原密钥与随时生成的长度相同的随机数逐个进行异或计算,最终得到一个数值,然后将该异或计算后得到的数值与这些随机数作为子密钥。具体的,本说明书提供的所述方法的另一个实施例中,所述的预设算法可以包括:
S210:生成(N-1)个随机数,所述随机数的二进制长度与所述原密钥对应的二进制长度相同,N为所述原密钥的共享数量;
S212:将所述原密钥逐个与所述(N-1)个随机数按位进行异或运算,得到异或子密钥;
S214:将所述异或子密钥与所述(N-1)个随机数作为输出的N个子密钥。
在本实施例方案中,如果共享对象可以预先生成(N-1)个随机数。随机数的长度可以与原密钥的长度相同,例如都是1024位或者2048位的二进制数。原密钥可以逐个与(N-1)随机数进行异或,最终得到一个数。将这个数与之前生成的(N-1)个随机数作为子密钥,每个对象共享方分配一个子密钥。
所述的逐个进行按为进行异或运算的处理方式,具体的一个示例中如图5所示,图5是本说明书所述方法提供的另一种生成子密钥的预设算法处理过程示意图。假设原密钥S的长度为1024位二进制,共享数量为4个。则可以先生成3个1024位的随机二进制。然后可以将原始密钥S与第一个随机数进行异或后得到R1,然后再将R1与第二随机数进行异或得到R2。最后将R2与第三个随机数进行异或得到R3,这个R3即本实施例中所述是异或子密钥。然后将R3与这3个1024位的随机二进制作为计算得到的4个子密钥。采用本实施例进行异或运算得到的各个子密钥,在需要还原出原密钥时可以将各个子密钥再次逆向异或运算。加密时使用异或运算,解密时异或运算的逆运算为再次异或,这样即可得到原密钥。使用本实施例提供的异或运算方式,不仅保障解密时需要集齐各个正确的子密钥,而且执行子密钥的异或即可快速得到原密钥,密钥还原计算更加简单,保障资产交易安全性的同时,大大提高了解密还原出原密钥的处理速度。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。具体的可以参照前述相关处理相关实施例的描述,在此不做一一赘述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书一个或多个实施例提供的一种密钥数据处理方法,可以根据资产、数据等共享对象的原始密钥共享的数量将原始密钥拆分成多个子密钥,生成的子密钥可以分别展示给相应的资产共享方。当需要进行共享对象的操作时,各个资产共享方可以分别提供自己的子密钥,然后可以利用该子密钥还原出原始密钥,再进行相应的签名、资产交易等操作。这样,利用本说明书实施例,当区块链中的资产被多人共享时,可以有效防止多人中的任何一人在其他人不知晓的情况下操作这份资产,保障了区块链中共享资产交易的安全性。
基于上述所述的用户密钥数据处理方法,本说明书一个或多个实施例还提供一种密钥数据处理装置。所述的装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。具体的,图6是本说明书提供的一种密钥数据处理装置实施例的模块结构示意图,如图6所示,所述装置可以包括:
原密钥信息模块101,可以用于获取区块链中共享对象的原密钥,确定原密钥的共享数量;
子密钥生成模块102,可以用于使用预设算法对所述原密钥进行处理,生成所述共享数量个子密钥,所述子密钥用于在获得所述共享数量个子密钥时还原出所述原密钥。
本实施例提供的一种密钥数据处理装置,可以根据资产、数据等共享对象的原始密钥共享的数量将原始密钥拆分成多个子密钥,不同的共享人各自掌握一份子密钥,使得一份资产被多人共享的同时保障资产的交易需要多人共同参与才能进行,可以有效防止资产共享方私自操作区块链上的交易数据,保障资产交易的安全性。
图7是本说明书提供的另一种密钥数据处理装置实施例的模块结构示意图。所述装置的另一个实施例中,所述装置还可以包括:
子密钥输出模块103,可以用于将所述子密钥分别发送给相应的对象共享方;
原密钥删除模块104,可以用于删除所述原密钥。
本实施例中,由所述原密钥生成的多个子密钥中,每个子密钥无法单独进行交易的认证或者认证无法通过。所述的子密钥在所有由同一个原密钥生成的子密钥集齐的情况下可以还原出原密钥。
在生成与资产共享方数量相同的子密钥后,可以将所述子密钥展示给相应的资产共享方,使得每个资产共享方可以得到属于自己的子密钥。然后可以将原密钥销毁,例如从钱包中彻底删除原始私钥。这样,任何一个资产共享方有自己的子密钥,都不会保存有原密钥,可以进一步保障密钥数据的安全性,防止某个资产共享方私自利用私钥进行资产交易。
所述装置的另一种实施例中,所述子密钥生成模块102中使用的预设算法可以包括:
利用随机生成的字符串对原密钥进行运算,生成所述原密钥对应的共享数量个子密钥。
本说明书所述装置的另一个实施例中,提供一种利用随机数、素数和取模运算的来生成子密钥的实施方案。图8是本说明书提供的所述装置中一个子密钥生成模块实施例的模块结构示意图。如图8所示,所述子密钥生成模块102可以包括:
随机数生成单元1021,可以用于当所述共享数量为(N+1)时,生成N个随机数Ri,Ri为第i个随机数,i∈[1,N];
素数选取单元1022,可以用于确定素数P,所述素数P至少大于所述原密钥的数值S、随机数Ri中的任意一个,Ri取值范围包括(0,P-1];
子密钥计算单元1023,可以用于计算(S+R1X+R2X2+R3X3+…+RNXN)后对P取模,X分别取值[1,N+1],得到(N+1)个子密钥,N≥1,X、N为整数。
本实施例提供的计算子密钥的预设算法,采用结合随机数、素数和取模运算的预定方式的处理,可以根据原密钥的共享数量自动生成所述共享数量的子密钥,并且由于采用了上述的子密钥生成方式,生成的子密钥保密性更强,降低被破解的风险,安全性更高。
本说明书提供的所述装置的另一种实施例中,不仅可以根据共享对象的原密钥生成相应的多个子密钥,还可以根据接收的子密钥进行还原原密钥的计算处理。图9是本说明书提供的另一种密钥数据处理装置实施例的模块结构示意图。如图9所示,所述装置还可以包括:
接收模块1051,可以用于接收输入的子密钥;
原密钥还原模块1052,可以用于在确定所述子密钥的数量与对应的原密钥的共享数量相同时,通过预定算法对所述共享数量的子密钥进行原密钥的还原计算处理,得到相应的原密钥。
图10是本说明书提供的所述装置中另一个子密钥生成模块实施例的模块结构示意图。如图10所示,所述子密钥生成模块102可以包括:
随机数生成单元20,可以用于生成(N-1)个随机数,所述随机数的二进制长度与所述原密钥对应的二进制长度相同,N为所述原密钥的共享数量;
异或计算单元21,可以用于将所述原密钥逐个与所述(N-1)个随机数按位进行异或运算,得到异或子密钥;
子密钥确定单元22,可以用于将所述异或子密钥与所述(N-1)个随机数作为输出的N个子密钥。
在本实施例中,可以将原密钥与随时生成的长度相同的随机数依次逐个进行异或计算,最终得到一个数值,然后将该异或计算后得到的数值与这些随机数作为子密钥。
使用本实施例提供的异或运算方式,不仅保障解密时需要集齐各个正确的子密钥,而且执行子密钥的异或即可快速得到原密钥,密钥还原计算更加简单,保障资产交易安全性的同时,大大提高了解密还原出原密钥的处理速度。
需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
上述所述的装置实施例,在实际的产品应用中可以根据实施环境或数据处理需求将各个模块或子模块进行合并或拆分。在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
图11是利用本说明书实施例的一个钱包应用的模块结构示意图,如图11所示,钱包的公私钥生成组件可以生成该钱包的公钥和私钥,素数存储组件和预先存储大于私钥长度的多个素数,随机数生成组件可以在每次需要生成子密钥时生成相应个数的随机数,子密钥计算单元则可以生成私钥对应的多个子密钥,并输出子密钥。输出的子密钥可以分配给相应的钱包共享方。在钱包上进行资产交易时,各个共享方输入子密钥,然后私钥还原计算组件可以根据相应的还原原密钥的算法计算得到原密钥,然后利用原密钥对交易进行签名、验证等。交易生成后,该笔交易可以广播到整个区块链网络中。
本说明书一个或多个实施例提供的一种密钥数据处理装置,可以根据资产、数据等共享对象的原始密钥共享的数量将原始密钥拆分成多个子密钥,生成的子密钥可以分别展示给相应的资产共享方。当需要进行共享对象的操作时,各个资产共享方可以分别提供自己的子密钥,然后可以利用该子密钥还原出原始密钥,再进行相应的签名、资产交易等操作。这样,利用本说明书实施例,当区块链中的资产被多人共享时,可以有效防止多人中的任何一人在其他人不知晓的情况下操作这份资产,保障了区块链中共享资产交易的安全性。
本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
本说明书实施例提供的上述用户密钥数据处理方法或装置可以在计算机中由处理器执行相应的程序指令来实现,如使用windows操作系统的c++语言在服务器端、基于Linux系统的服务器,或其他例如使用android、iOS系统程序设计语言在服务器系统终端实现,以及包括基于量子计算机的处理逻辑实现等。所述的程序指令可以存储在所述存储介质上。本说明书提供的一种密钥数据处理装置的另一种实施例中,可以包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现:
获取区块链中共享对象的原密钥,确定原密钥的共享数量;
使用预设算法对所述原密钥进行处理,生成所述共享数量个子密钥,所述子密钥用于在获得所述共享数量个子密钥时还原出所述原密钥。
需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式,例如处理器删除原密钥的数据,利用随机数、素数和取模运算的生成子密钥、朗格拉日公式还原原密钥、异或运算生成子密钥以及逆运算还原原密钥等的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
上述所述的方法或装置可以用于多种密钥数据处理的服务器中,例如前述所述钱包的后台服务器、区块链矿工节点的服务器、区块链节点的业务服务器等。所述的服务器可以包括单独的服务器,也可以包括分布式系统的服务器或者服务器集群的架构模式。具体的,本说明书提供一种服务器,如图12所示,可以包括至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现:
获取区块链中共享对象的原密钥,确定原密钥的共享数量;
使用预设算法对所述原密钥进行处理,生成所述共享数量个子密钥,所述子密钥用于在获得所述共享数量个子密钥时还原出所述原密钥。
需要说明的,上述所述的服务器根据方法或装置实施例的描述还可以包括其他的实施方式,例如删除原密钥的数据,利用随机数、素数和取模运算的生成子密钥、朗格拉日插值还原原密钥、异或运算生成子密钥以及逆运算还原原密钥等的实施方式。具体的实现方式可以参照相关方法或装置实施例的描述,在此不作一一赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书一个或多个实施例提供的一种密钥数据处理方法、装置及服务器,可以根据资产、数据等共享对象的原始密钥共享的数量将原始密钥拆分成多个子密钥,生成的子密钥可以分别展示给相应的资产共享方。当需要进行共享对象的操作时,各个资产共享方可以分别提供自己的子密钥,然后可以利用该子密钥还原出原始密钥,再进行相应的签名、资产交易等操作。这样,利用本说明书实施例,当区块链中的资产被多人共享时,可以有效防止多人中的任何一人在其他人不知晓的情况下操作这份资产,保障了区块链中共享资产交易的安全性。
尽管说明书实施例内容中提到利用随机数以及素数和取模运算生成子密钥、异或运算生成子密钥、利用拉格朗日公式还原原密钥、分配子密钥后销毁原密钥等之类的数据生成、定义、获取、交互、计算、判断等描述,但是,本说明书实施例并不局限于必须是符合行业通信标准、区块链数据规则、标准计算机数据处理和存储规则或本说明书一个或多个实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书实施例的可选实施方案范围之内。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。