CN112348674A - 一种区块链的交易数据存储与获取方法及装置 - Google Patents
一种区块链的交易数据存储与获取方法及装置 Download PDFInfo
- Publication number
- CN112348674A CN112348674A CN202011124901.3A CN202011124901A CN112348674A CN 112348674 A CN112348674 A CN 112348674A CN 202011124901 A CN202011124901 A CN 202011124901A CN 112348674 A CN112348674 A CN 112348674A
- Authority
- CN
- China
- Prior art keywords
- transaction
- key
- party
- symmetric key
- public key
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000013500 data storage Methods 0.000 title claims description 11
- 238000012545 processing Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 abstract description 8
- 230000007246 mechanism Effects 0.000 description 11
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000004888 barrier function Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- RWSOTUBLDIXVET-UHFFFAOYSA-N Dihydrogen sulfide Chemical compound S RWSOTUBLDIXVET-UHFFFAOYSA-N 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Development Economics (AREA)
- Computer Security & Cryptography (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种区块链的交易数据存储与获取方法及装置,其中方法为:第一交易方生成交易标识和交易数据;所述第一交易方获取所述交易标识对应的第一对称密匙;所述第一交易方根据所述第一对称密匙对所述交易数据加密,获得加密数据,并将所述加密数据提交给区块链,使得所述区块链对所述加密数据共识通过后,写入所述区块链。上述方法应用于金融科技(Fintech)时,避免了将交易数据的内容泄露给其它交易方,保证了交易数据的隐私安全。
Description
技术领域
本发明涉及金融科技(Fintech)领域中的区块链(blockchain)领域,尤其涉及一种区块链的交易数据存储与获取方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。区块链(blockchain)由于去中心化等优点,广泛运用在金融科技中。目前,各机构都拥有自身的交易系统,为了方便各机构之间的交易,各机构可以部署自身的区块链节点,形成各机构的区块链,从而打通各机构间的壁垒。
在目前区块链的方案中,由于区块链的固有特性,各机构的区块链节点都维护着同一个共享账本,那么一笔交易的交易数据上链后,不仅交易的相关双方机构能看到交易数据的明细,且链上的其它非该笔交易的相关机构也能看到交易数据的明细。因此,多机构使用同一个共享账本的情景下,交易数据上链后,不能保证交易数据的隐私安全,这是一个亟待解决的问题。
发明内容
本发明提供一种区块链的交易数据存储与获取方法及装置,解决了现有技术中交易数据上链后,不能保证交易数据的隐私安全的问题。
第一方面,本发明提供一种区块链的交易数据存储方法,包括:第一交易方生成交易标识和交易数据;所述第一交易方获取所述交易标识对应的第一对称密匙;所述第一对称密匙是基于第一私钥和第二公钥,按照预设对称密匙协商算法生成的;所述第一私钥是所述第一交易方针对所述交易标识生成的私钥;所述第二公钥是第二交易方针对所述交易标识生成的公钥;所述第一交易方根据所述第一对称密匙对所述交易数据加密,获得加密数据,并将所述加密数据提交给区块链,使得所述区块链对所述加密数据共识通过后,写入所述区块链;所述加密数据用于所述第二交易方根据第二对称密匙解密,获得所述交易数据;所述第二对称密匙是基于第二私钥和第一公钥,按照所述预设对称密匙协商算法生成的;所述第二私钥是所述第二交易方针对所述交易标识生成的私钥;所述第一公钥是第一交易方针对所述交易标识生成的公钥;所述第一对称密匙和所述第二对称密匙相同。
上述方法中,第一交易方生成交易标识和交易数据后,可以获取所述交易标识对应的第一对称密匙,并根据所述第一对称密匙对所述交易数据加密,获得加密数据并写入区块链,那么区块链中的交易数据只能由拥有相应对称密匙的交易方解密得到,而所述第一对称密匙和所述第二对称密匙是相同的,所述第一对称密匙和所述第二对称密匙只有第一交易方和第二交易方持有,而且第一交易方和第二交易方采用了私钥和公钥互相配合的方式,只通过自身的私钥和对方的公钥即可按照预设对称密匙协商算法生成相同的对称密匙,不需要泄露隐私信息,所述加密数据也可以用于所述第二交易方根据第二对称密匙解密,获得所述交易数据,从而所述交易数据只能由所述第一交易方和所述第二交易方共享,且避免了将交易数据的内容泄露给其它交易方,保证了交易数据的隐私安全。
可选的,所述第一交易方获取所述交易标识对应的第一对称密匙之前,还包括:所述第一交易方生成所述第一公钥和所述第一私钥;所述第一交易方将所述交易标识、所述第一公钥发送至所述第二交易方;所述第一交易方获取来自所述第二交易方的所述第二公钥;所述第一交易方根据所述第一私钥和所述第二公钥,按照所述预设对称密匙协商算法生成所述第一对称密匙。
上述方法中,第一交易方生成所述第一公钥和所述第一私钥后,将所述交易标识、所述第一公钥发送至所述第二交易方,从而让所述第二交易方获得用于生成所述第二对称密匙的所述第一公钥,且获取来自所述第二交易方的所述第二公钥,并生成所述第一称密匙,上述交互方式可以使得两个交易方获得相应对称密匙的公钥,且不泄露隐私。
可选的,所述第一私钥为小于预设素数的第一随机数;所述第二私钥为小于所述预设素数的第二随机数;所述预设对称密匙协商算法为基于所述预设素数的取模算法;所述第一公钥是基于预设整数和所述第一随机数,按照所述预设对称密匙协商算法生成的;所述第二公钥是基于所述预设整数和所述第二随机数,按照所述预设对称密匙协商算法生成的;所述预设整数为所述预设素数的原根。
上述方法中,通过在所述预设素数内随机取数,以及所述预设整数生成公私钥,更加难以破解,且通过原根的性质,可以生成相同的对称密匙,从而提供了一种隐私性较高且能生成相同的对称密匙的方法。
可选的,所述第一公钥具体按照以下方式生成:pk_A=a^r_A mod P;其中,pk_A为所述第一公钥,a为所述预设整数,^表示幂次方运算,r_A为所述第一随机数,mod表示取模运算,P为所述预设素数;所述第二公钥具体按照以下方式生成:pk_B=a^r_B mod P;其中,pk_B为所述第二公钥,r_B为所述第二随机数;所述第一对称密匙具体按照以下方式生成:K1=(pk_B)^r_A mod P;其中,K1为所述第一对称密匙;所述第二对称密匙具体按照以下方式生成:K2=(pk_A)^r_B mod P;其中,K2为所述第二对称密匙。
上述方式下,公钥均通过相同的所述预设整数以及所述预设素数生成,且通过幂运算可以极大地扩充数域,从而更加难以破解,并通过幂运算生成相同的对称密匙,增强了对称密匙的隐私性。
可选的,所述第一交易方按照以下方式生成所述交易数据:所述第一交易方构建Java对象,并设置所述Java对象的对象属性;所述第一交易方将所述Java对象转换为json字符串,将所述json字符串作为所述交易数据。
上述方式下,Java客户端是比较广泛运用的客户端,从而设置Java对象的对象属性可以直接与Java客户端兼容,而且交易数据需要持久化存储Java对象只能存在于Java环境中json字符串作为简洁高效的序列化信息Java对象转换为json字符串后可以持久化存储。
第二方面,本发明提供一种区块链的交易数据获取方法,包括:第二交易方获取交易标识;所述第二交易方从区块链获取所述交易标识对应的加密数据;所述加密数据是第一交易方根据第一对称密匙对交易数据加密得到的;所述第一对称密匙是基于第一私钥和第二公钥,按照预设对称密匙协商算法生成的;所述第一私钥是所述第一交易方针对所述交易标识生成的私钥;所述第二公钥是第二交易方针对所述交易标识生成的公钥;所述第二交易方获取所述交易标识对应的第二对称密匙;所述第二对称密匙是基于第二私钥和第一公钥,按照所述预设对称密匙协商算法生成的;所述第二私钥是所述第二交易方针对所述交易标识生成的私钥;所述第一公钥是第一交易方针对所述交易标识生成的公钥;所述第一对称密匙和所述第二对称密匙相同;所述第二交易方根据所述第二对称密匙对所述加密数据解密,获得所述交易数据。
上述方法中,第二交易方获取交易标识后,可以从区块链获取所述交易标识对应的加密数据以及所述交易标识对应的第二对称密匙,而所述第一对称密匙和所述第二对称密匙是相同的,所述第一对称密匙和所述第二对称密匙只有第一交易方和第二交易方持有,而且第一交易方和第二交易方采用了私钥和公钥互相配合的方式,只通过自身的私钥和对方的公钥即可按照预设对称密匙协商算法生成相同的对称密匙,不需要泄露隐私信息,从而所述第二交易方根据第二对称密匙解密,获得所述交易数据,从而所述交易数据只能由所述第一交易方和所述第二交易方共享,且避免了将交易数据的内容泄露给其它交易方,保证了交易数据的隐私安全。
可选的,所述第二交易方获取所述交易标识对应的第二对称密匙之前,还包括:所述第二交易方获取来自所述第一交易方的所述交易标识和所述第一公钥;所述第二交易方生成所述第二公钥和所述第二私钥;所述第二交易方根据所述第一公钥和所述第二私钥,按照所述预设对称密匙协商算法生成所述第二对称密匙;所述第二交易方将所述第二公钥发送至所述第一交易方。
上述方法中,所述第二交易方获取来自所述第一交易方的所述交易标识和所述第一公钥后,生成所述第二公钥和所述第二私钥,根据所述第一公钥和所述第二私钥,按照所述预设对称密匙协商算法生成所述第二对称密匙,将所述第二公钥发送至所述第一交易方,从而让所述第一交易方获得用于生成所述第一对称密匙的所述第二公钥,上述交互方式可以使得两个交易方获得相应对称密匙的公钥,且不泄露隐私。
第三方面,本发明提供一种区块链的交易数据存储装置,包括:生成模块,用于生成交易标识和交易数据;获取模块,用于获取所述交易标识对应的第一对称密匙;所述第一对称密匙是基于第一私钥和第二公钥,按照预设对称密匙协商算法生成的;所述第一私钥是第一交易方针对所述交易标识生成的私钥;所述第二公钥是第二交易方针对所述交易标识生成的公钥;处理模块,用于根据所述第一对称密匙对所述交易数据加密,获得加密数据,并将所述加密数据提交给区块链,使得所述区块链对所述加密数据共识通过后,写入所述区块链;所述加密数据用于所述第二交易方根据第二对称密匙解密,获得所述交易数据;所述第二对称密匙是基于第二私钥和第一公钥,按照所述预设对称密匙协商算法生成的;所述第二私钥是所述第二交易方针对所述交易标识生成的私钥;所述第一公钥是第一交易方针对所述交易标识生成的公钥;所述第一对称密匙和所述第二对称密匙相同。
可选的,在所述获取模块所述交易标识对应的第一对称密匙之前,所述生成模块还用于:生成所述第一公钥和所述第一私钥;将所述交易标识、所述第一公钥发送至所述第二交易方;所述获取模块还用于:获取来自所述第二交易方的所述第二公钥;所述生成模块还用于:根据所述第一私钥和所述第二公钥,按照所述预设对称密匙协商算法生成所述第一对称密匙。
可选的,所述第一私钥为小于预设素数的第一随机数;所述第二私钥为小于所述预设素数的第二随机数;所述预设对称密匙协商算法为基于所述预设素数的取模算法;所述第一公钥是基于预设整数和所述第一随机数,按照所述预设对称密匙协商算法生成的;所述第二公钥是基于所述预设整数和所述第二随机数,按照所述预设对称密匙协商算法生成的;所述预设整数为所述预设素数的原根。
可选的,所述生成模块具体用于:按照以下方式生成所述第一公钥:pk_A=a^r_Amod P;其中,pk_A为所述第一公钥,a为所述预设整数,^表示幂次方运算,r_A为所述第一随机数,mod表示取模运算,P为所述预设素数;按照以下方式生成所述第二公钥:pk_B=a^r_Bmod P;其中,pk_B为所述第二公钥,r_B为所述第二随机数;按照以下方式生成所述第一对称密匙:K1=(pk_B)^r_A mod P;其中,K1为所述第一对称密匙;按照以下方式生成所述第二对称密匙:K2=(pk_A)^r_B mod P;其中,K2为所述第二对称密匙。
可选的,所述生成模块具体用于:按照以下方式生成所述交易数据:构建Java对象,并设置所述Java对象的对象属性;将所述Java对象转换为json字符串,将所述json字符串作为所述交易数据。
上述第三方面及第三方面各个可选装置的有益效果,可以参考上述第一方面及第一方面各个可选方法的有益效果,这里不再赘述。
第四方面,本发明提供一种区块链的交易数据获取装置,包括:获取模块,用于获取交易标识;从区块链获取所述交易标识对应的加密数据;所述加密数据是第一交易方根据第一对称密匙对交易数据加密得到的;所述第一对称密匙是基于第一私钥和第二公钥,按照预设对称密匙协商算法生成的;所述第一私钥是所述第一交易方针对所述交易标识生成的私钥;所述第二公钥是第二交易方针对所述交易标识生成的公钥;以及用于获取所述交易标识对应的第二对称密匙;所述第二对称密匙是基于第二私钥和第一公钥,按照所述预设对称密匙协商算法生成的;所述第二私钥是所述第二交易方针对所述交易标识生成的私钥;所述第一公钥是第一交易方针对所述交易标识生成的公钥;所述第一对称密匙和所述第二对称密匙相同;处理模块,用于根据所述第二对称密匙对所述加密数据解密,获得所述交易数据。
可选的,在获取模块获取所述交易标识对应的第二对称密匙之前,所述获取模块还用于:获取来自所述第一交易方的所述交易标识和所述第一公钥;所述装置还包括生成模块,所述生成模块,用于生成所述第二公钥和所述第二私钥;根据所述第一公钥和所述第二私钥,按照所述预设对称密匙协商算法生成所述第二对称密匙;所述处理模块还用于:将所述第二公钥发送至所述第一交易方。
上述第四方面及第四方面各个可选装置的有益效果,可以参考上述第二方面及第二方面各个可选方法的有益效果,这里不再赘述。
第五方面,本发明提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面或第二方面各个可选的方法。
第六方面,本发明提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面或第二方面各个可选的方法。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种区块链的交易数据存储方法对应的流程示意图;
图2为本发明实施例提供的一种区块链的交易数据获取方法对应的流程示意图;
图3为本发明实施例提供的一种区块链的交易数据存储与获取方法对应的具体流程示意图;
图4为本发明实施例提供的一种区块链的交易数据存储装置的结构示意图;
图5为本发明实施例提供的一种区块链的交易数据获取装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在金融机构(银行机构、保险机构或证券机构)在进行业务(如银行的贷款业务、存款业务等)运转过程中,区块链(blockchain)由于去中心化等优点,广泛运用在金融科技中。各机构可以部署自身的区块链节点,形成各机构的区块链,从而打通各机构间的壁垒。但多机构使用同一个共享账本的情景下,交易数据上链后,不能保证交易数据的隐私安全。这种情况不符合银行等金融机构的需求,无法保证金融机构各项业务的高效运转。为此,本申请提供一种区块链的交易数据存储与获取方法。如图1所示,为本申请提供一种区块链的交易数据存储方法。
步骤101:第一交易方生成交易标识和交易数据。
步骤102:所述第一交易方获取所述交易标识对应的第一对称密匙。
步骤103:所述第一交易方根据所述第一对称密匙对所述交易数据加密,获得加密数据,并将所述加密数据提交给区块链,使得所述区块链对所述加密数据共识通过后,写入所述区块链。
步骤101~步骤102中,所述第一对称密匙是基于第一私钥和第二公钥,按照预设对称密匙协商算法生成的;所述第一私钥是所述第一交易方针对所述交易标识生成的私钥;所述第二公钥是第二交易方针对所述交易标识生成的公钥。所述加密数据用于所述第二交易方根据第二对称密匙解密,获得所述交易数据;所述第二对称密匙是基于第二私钥和第一公钥,按照所述预设对称密匙协商算法生成的;所述第二私钥是所述第二交易方针对所述交易标识生成的私钥;所述第一公钥是第一交易方针对所述交易标识生成的公钥;所述第一对称密匙和所述第二对称密匙相同。
需要说明的是,步骤101~步骤103一种所适用的场景为:多个交易方(或称为机构)相互之间需要交易,多个交易方共同部署了区块链平台,从而打通了交易方之间的壁垒。第一交易方和第二交易方为多个交易方中任意两个交易方,步骤101~步骤103中仅以第一交易方和第二交易方为例说明多个交易方之间的交互。
需要说明的是,每次有新交易时,伴随着新生成的交易标识,第一交易方都要针对所述交易标识生成一对公私钥,即第一私钥和第一公钥;第二交易方也会针对所述交易标识生成一对公私钥,即第二私钥和第二公钥。值得一提的是,所述第一对称密匙和所述第二对称密匙并不是可以随意生成就可以相同的,所述第一对称密匙和所述第二对称密匙生成过程中均需要特定的构造,遵循所述预设对称密匙协商算法生成才能相同。
在步骤102之前,所述第一交易方可以执行以下步骤:
所述第一交易方生成所述第一公钥和所述第一私钥;所述第一交易方将所述交易标识、所述第一公钥发送至所述第二交易方;所述第一交易方获取来自所述第二交易方的所述第二公钥;所述第一交易方根据所述第一私钥和所述第二公钥,按照所述预设对称密匙协商算法生成所述第一对称密匙。
显然,在上述步骤中,虽然第一交易方生成了第一私钥和第一公钥,但第一私钥仅自己持有,所述第一对称密匙,并且只将所述第一公钥发送给所述第二交易方,使得第二交易方能够获得第一公钥,用以生成所述第二对称密匙,在第一交易方获得第二公钥后,也能生成相同的第一对称密匙,从而实现了对称密匙的协商。
具体来说,所述预设对称密匙协商算法的可以有多种,一种可选实施方式如下:
所述第一私钥为小于预设素数的第一随机数;所述第二私钥为小于所述预设素数的第二随机数;所述预设对称密匙协商算法为基于所述预设素数的取模算法;所述第一公钥是基于预设整数和所述第一随机数,按照所述预设对称密匙协商算法生成的;所述第二公钥是基于所述预设整数和所述第二随机数,按照所述预设对称密匙协商算法生成的;所述预设整数为所述预设素数的原根。
需要说明的是P可以为大素数,如在2^128次方以上的大素数,更加难以破解。
具体来说,在上述实施方式中,所述第一公钥具体按照以下方式生成:
pk_A=a^r_A mod P;
其中,pk_A为所述第一公钥,a为所述预设整数,^表示幂次方运算,r_A为所述第一随机数,mod表示取模运算,P为所述预设素数;
所述第二公钥具体按照以下方式生成:
pk_B=a^r_B mod P;
其中,pk_B为所述第二公钥,r_B为所述第二随机数;
所述第一对称密匙具体按照以下方式生成:
K1=(pk_B)^r_A mod P;
其中,K1为所述第一对称密匙;
所述第二对称密匙具体按照以下方式生成:
K2=(pk_A)^r_B mod P;
其中,K2为所述第二对称密匙。
而所述预设对称密匙协商算法的取模运算还可以有多种,举例来说,通过预设的函数f,使得公私钥的运算结果做进一步的映射,如K2=f((pk_B)^r_A mod P),K1=f((pk_A)^r_B mod P),K1=K2仍然成立。
有两个全局公开的参数,一个素数P和一个整数a,a是P的一个原根;在第一交易方和第二交易方交换公钥之前,第一交易方选择一个随机数作为第一私钥r_A(r_A<P),并计算第一公钥pk_A=a^r_A mod P。第一交易方对r_A的值保密存放而使pk_A能被第二交易方公开获得。类似地,第二交易方选择一个私有的随机数作为第二私钥r_B<P,并计算第二公钥pk_B=a^r_B mod P。第二交易方对第二私钥r_B的值保密存放而使pk_B能被第一交易方公开获得。
第一对称密钥和第二对称密钥是相同的,证明如下:
K 1=(pk_B)^r_A mod P=(a^r_B mod P)^r_A mod P=(a^r_B)^r_A mod P(根据取模运算规则得到)=a^(r_B*r_A)mod P=(a^r_A)^r_B mod P=(a^r_A mod P)^r_Bmod P=(pk_A)^r_B mod P=K2。
因此相当于双方已经交换了一个相同的对称密钥。
进一步地,由于r_A和r_B是保密的,一个攻击方可以利用的参数只有P,a,pk_A和pk_B,所以攻击方被迫取离散对数来确定私钥。例如,若要获取第二交易方的r_B时,敌对方必须先计算pk_B=inda,prime(pk_B),即取离散对数运算。之后再通过第二交易方采用的同样方法计算其第二交易方的密钥是SecretKey。
需要说明的是,密钥交换算法的安全性依赖于这样一个事实:虽然计算以一个素数为模的指数相对容易,但计算离散对数却很困难.对于大的素数,计算出离散对数几乎是不可能的。举例来说,密钥交换基于素数P=97和97的一个原根a=5;A和B分别选择私有密钥r_A =36和r_B=58,两个交易方均计算其公开密钥pk_A=5^36=50mod 97pk_B=5^58=44mod 97在他们相互获取了公钥之后,各自通过计算得到双方共享的对称密钥如下:
即K=(pk_B)^r_A mod 97=44^36=75mod 97K=(pk_A)^r_B mod 97=50^58=75mod 97;但对于敌对方的攻击者而言,从50,44出发,攻击者要通过离散对数计算出75很不容易。
需要说明的是,上述具体生成公私钥以及对称密钥的方式还可以有多种,举例来说,再选择一个混淆整数b,用于做偏移,具体来说,可以如下:
具体来说,在上述实施方式中,所述第一公钥具体按照以下方式生成:
pk_A=(a^r_A+b)mod P;
其中,b为混淆整数;
所述第二公钥具体按照以下方式生成:
pk_B=(a^r_B+b)mod P;
其中,pk_B为所述第二公钥,r_B为所述第二随机数;
所述第一对称密匙具体按照以下方式生成:
K1=((pk_B)^r_A+b)mod P;
其中,K1为所述第一对称密匙;
所述第二对称密匙具体按照以下方式生成:
K2=((pk_A)^r_B+b)mod P;
其中,K2为所述第二对称密匙。
一种可选实施方式中,所述第一交易方构建Java对象,并设置所述Java对象的对象属性;所述第一交易方将所述Java对象转换为json字符串,将所述json字符串作为所述交易数据。
需要说明的是,如何设置Java对象的对象属性可以根据具体的业务信息来设置的,也可以根据预设的规则来设置。
如图2所示,为本申请提供一种区块链的交易数据获取方法。
步骤201:第二交易方获取交易标识;所述第二交易方从区块链获取所述交易标识对应的加密数据。
步骤202:所述第二交易方获取所述交易标识对应的第二对称密匙。
步骤203:所述第二交易方根据所述第二对称密匙对所述加密数据解密,获得所述交易数据。
步骤201~步骤203中,所述加密数据是第一交易方根据第一对称密匙对交易数据加密得到的;所述第一对称密匙是基于第一私钥和第二公钥,按照预设对称密匙协商算法生成的;所述第一私钥是所述第一交易方针对所述交易标识生成的私钥;所述第二公钥是第二交易方针对所述交易标识生成的公钥。所述第二对称密匙是基于第二私钥和第一公钥,按照所述预设对称密匙协商算法生成的;所述第二私钥是所述第二交易方针对所述交易标识生成的私钥;所述第一公钥是第一交易方针对所述交易标识生成的公钥;所述第一对称密匙和所述第二对称密匙相同。
一种可选实施方式中,步骤202之前,所述第二交易方可以执行以下步骤:
所述第二交易方获取来自所述第一交易方的所述交易标识和所述第一公钥;所述第二交易方生成所述第二公钥和所述第二私钥;所述第二交易方根据所述第一公钥和所述第二私钥,按照所述预设对称密匙协商算法生成所述第二对称密匙;所述第二交易方将所述第二公钥发送至所述第一交易方。
步骤101~步骤103或步骤201~步骤203的方式下,提供一种在多交易方使用共享账本的场景下,使任意一笔上链的交易数据明细只能被该交易的相关方查看,其它非交易相关方无权限查看,且整个过程都无任何密钥信息在网络的传输,杜绝密匙泄露的安全风险。
下面结合图3,详细描述本申请提供一种区块链的交易数据存储与获取方法。图3涉及到了第一交易方、第一区块链节点、第二交易方和第二区块链节点。举例来说,在多个保险机构所构成的区块链场景下,第一交易方为直保公司,第一区块链节点为直保公司在区块链中的区块链节点,第二交易方为再保公司,第二区块链节点为再保公司在区块链中的区块链节点。
步骤301:第一交易方生成交易标识、所述第一公钥和所述第一私钥,并将所述交易标识、所述第一公钥发送至所述第二交易方。
需要说明的是,第一交易方可以通过高级消息队列协议(Advanced MessageQueuing Protocol,AMOP)的请求体,将所述交易标识、所述第一公钥发送至所述第二交易方。
步骤302:所述第二交易方收到所述交易标识、所述第一公钥后,生成所述第二公钥和所述第二私钥,根据所述第一公钥和所述第二私钥,按照所述预设对称密匙协商算法生成所述第二对称密匙。
步骤303:所述第二交易方将所述第二对称密匙和所述交易标识存放到所述第二交易方的本地数据库中。
需要说明的是,具体实施中,可以将所述第二对称密匙通过base64编码为字符串,与交易标识一起存放到所述第二交易方的本地数据库,以维护所述交易标识与所述第二对称密匙的映射。
步骤304:所述第二交易方将所述第二公钥发送至所述第一交易方。
需要说明的是,所述第二交易方可以将所述第二公钥与交易表示包含在AMOP消息的响应体里发回所述第一交易方,因此,通过步骤301~步骤304中可以完成公钥的交互,为相同对称密匙的协商打下基础,且完全没有暴露任何私钥信息。
需要说明的是,步骤304中还可以将所述交易标识、所述第二公钥一同发送至所述第一交易方,使得所述第一交易方知晓所述第二公钥是针对所述交易标识生成的公钥。
步骤305:所述第一交易方获取来自所述第二交易方的所述第二公钥;所述第一交易方根据所述第一私钥和所述第二公钥,按照所述预设对称密匙协商算法生成所述第一对称密匙。
由于所述第一对称密匙和所述第二对称密匙是完全相同的,因此,此时所述第一交易方和所述第二交易方均持有了相同的对称密钥,对于第一交易方用所述第一对称密匙对所述交易数据加密得到的加密数据,所述第二交易方用所述第二对称密匙对所述加密数据解密可得到所述交易数据。反之,亦然。
步骤306:所述第一交易方将所述第一对称密匙和所述交易标识存放到所述第一交易方的本地数据库中。
需要说明的是,具体实施中,可以将所述第一对称密匙通过base64编码为字符串,与交易标识一起存放到所述第一交易方的本地数据库,以维护所述交易标识与所述第一对称密匙的映射。
步骤307:所述第一交易方构建Java对象,并设置所述Java对象的对象属性;所述第一交易方将所述Java对象转换为json字符串,将所述json字符串作为所述交易数据。
步骤308:所述第一交易方根据所述第一对称密匙对所述交易数据加密,获得加密数据,并将所述加密数据提交给区块链。
所述第一交易方可以通过调用智能合约,将所述加密数据提交给区块链,之后所述区块链对所述加密数据共识通过后,便写入所述区块链。
步骤309:所述加密数据在所述区块链成功上链后,所述第一交易方发送通知消息给所述第二交易方。
其中,所述通知消息中包括交易标识,所述通知消息指示所述交易标识对应的加密数据已经成功在所述区块链成功上链,需要说明的是,所述通知消息具体可以为AMOP消息。
步骤310:第二交易方获取通知消息,并从区块链获取所述交易标识对应的加密数据。
步骤311:获取所述交易标识对应的第二对称密匙,并根据所述第二对称密匙对所述加密数据解密,获得所述交易数据。
具体来说,第二交易方收到通知消息后,获取所述交易标识,并从所述第二交易方中本地数据库的映射表中取出对应的第二对称密匙,并调用智能合约的查询接口根据所述交易标识获取加密数据,然后用第二对称密匙对加密数据进行解密,得到明文的交易数据,此时交易数据为json字符串。第二交易方可以再将json字符串转化为java对象,并做接下来的业务处理。
需要说明的是,而因为对称密钥只在交易相关的两个交易方生成,所以任何其它链上交易方即使获取了交易ID,也只能查询到密文的加密数据,也无法解密得到明文的交易数据,且相关的两个交易方在整个密匙协商过程中,只交换了彼此的公钥信息,完全没有传输任何私钥相关信息,保证了整个方案的安全可靠。因此,本申请实施例提供的方案解决了多机构在使用同一个区块链共享账本时的隐私保护诉求,满足了交易在共享账本中只被交易相关双方能看到交易数据,其它机构无法获取任何交易信息。
如图4所示,本发明提供一种区块链的交易数据存储装置,包括:生成模块401,用于生成交易标识和交易数据;获取模块402,用于获取所述交易标识对应的第一对称密匙;所述第一对称密匙是基于第一私钥和第二公钥,按照预设对称密匙协商算法生成的;所述第一私钥是第一交易方针对所述交易标识生成的私钥;所述第二公钥是第二交易方针对所述交易标识生成的公钥;处理模块403,用于根据所述第一对称密匙对所述交易数据加密,获得加密数据,并将所述加密数据提交给区块链,使得所述区块链对所述加密数据共识通过后,写入所述区块链;所述加密数据用于所述第二交易方根据第二对称密匙解密,获得所述交易数据;所述第二对称密匙是基于第二私钥和第一公钥,按照所述预设对称密匙协商算法生成的;所述第二私钥是所述第二交易方针对所述交易标识生成的私钥;所述第一公钥是第一交易方针对所述交易标识生成的公钥;所述第一对称密匙和所述第二对称密匙相同。
可选的,在所述获取模块402所述交易标识对应的第一对称密匙之前,所述生成模块401还用于:生成所述第一公钥和所述第一私钥;将所述交易标识、所述第一公钥发送至所述第二交易方;所述获取模块402还用于:获取来自所述第二交易方的所述第二公钥;所述生成模块401还用于:根据所述第一私钥和所述第二公钥,按照所述预设对称密匙协商算法生成所述第一对称密匙。
可选的,所述第一私钥为小于预设素数的第一随机数;所述第二私钥为小于所述预设素数的第二随机数;所述预设对称密匙协商算法为基于所述预设素数的取模算法;所述第一公钥是基于预设整数和所述第一随机数,按照所述预设对称密匙协商算法生成的;所述第二公钥是基于所述预设整数和所述第二随机数,按照所述预设对称密匙协商算法生成的;所述预设整数为所述预设素数的原根。
可选的,所述生成模块401具体用于:按照以下方式生成所述第一公钥:pk_A=a^r_A mod P;其中,pk_A为所述第一公钥,a为所述预设整数,^表示幂次方运算,r_A为所述第一随机数,mod表示取模运算,P为所述预设素数;按照以下方式生成所述第二公钥:pk_B=a^r_B mod P;其中,pk_B为所述第二公钥,r_B为所述第二随机数;按照以下方式生成所述第一对称密匙:K1=(pk_B)^r_A mod P;其中,K1为所述第一对称密匙;按照以下方式生成所述第二对称密匙:K2=(pk_A)^r_B mod P;其中,K2为所述第二对称密匙。
可选的,所述生成模块401具体用于:按照以下方式生成所述交易数据:构建Java对象,并设置所述Java对象的对象属性;将所述Java对象转换为json字符串,将所述json字符串作为所述交易数据。
如图5所示,本发明提供一种区块链的交易数据获取装置,包括:获取模块501,用于获取交易标识;从区块链获取所述交易标识对应的加密数据;所述加密数据是第一交易方根据第一对称密匙对交易数据加密得到的;所述第一对称密匙是基于第一私钥和第二公钥,按照预设对称密匙协商算法生成的;所述第一私钥是所述第一交易方针对所述交易标识生成的私钥;所述第二公钥是第二交易方针对所述交易标识生成的公钥;以及用于获取所述交易标识对应的第二对称密匙;所述第二对称密匙是基于第二私钥和第一公钥,按照所述预设对称密匙协商算法生成的;所述第二私钥是所述第二交易方针对所述交易标识生成的私钥;所述第一公钥是第一交易方针对所述交易标识生成的公钥;所述第一对称密匙和所述第二对称密匙相同;处理模块502,用于根据所述第二对称密匙对所述加密数据解密,获得所述交易数据。
可选的,在获取模块501获取所述交易标识对应的第二对称密匙之前,所述获取模块501还用于:获取来自所述第一交易方的所述交易标识和所述第一公钥;所述装置还包括生成模块503,所述生成模块503,用于生成所述第二公钥和所述第二私钥;根据所述第一公钥和所述第二私钥,按照所述预设对称密匙协商算法生成所述第二对称密匙;所述处理模块502还用于:将所述第二公钥发送至所述第一交易方。
基于同一发明构思,本发明实施例还提供了一种计算机设备,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的区块链的交易数据存储或获取方法及任一可选方法被执行。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的区块链的交易数据存储或获取方法及任一可选方法被执行。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种区块链的交易数据存储方法,其特征在于,包括:
第一交易方生成交易标识和交易数据;
所述第一交易方获取所述交易标识对应的第一对称密匙;所述第一对称密匙是基于第一私钥和第二公钥,按照预设对称密匙协商算法生成的;所述第一私钥是所述第一交易方针对所述交易标识生成的私钥;所述第二公钥是第二交易方针对所述交易标识生成的公钥;
所述第一交易方根据所述第一对称密匙对所述交易数据加密,获得加密数据,并将所述加密数据提交给区块链,使得所述区块链对所述加密数据共识通过后,写入所述区块链;所述加密数据用于所述第二交易方根据第二对称密匙解密,获得所述交易数据;所述第二对称密匙是基于第二私钥和第一公钥,按照所述预设对称密匙协商算法生成的;所述第二私钥是所述第二交易方针对所述交易标识生成的私钥;所述第一公钥是第一交易方针对所述交易标识生成的公钥;所述第一对称密匙和所述第二对称密匙相同。
2.如权利要求1所述的方法,其特征在于,所述第一交易方获取所述交易标识对应的第一对称密匙之前,还包括:
所述第一交易方生成所述第一公钥和所述第一私钥;
所述第一交易方将所述交易标识、所述第一公钥发送至所述第二交易方;
所述第一交易方获取来自所述第二交易方的所述第二公钥;
所述第一交易方根据所述第一私钥和所述第二公钥,按照所述预设对称密匙协商算法生成所述第一对称密匙。
3.如权利要求1所述的方法,其特征在于,所述第一私钥为小于预设素数的第一随机数;所述第二私钥为小于所述预设素数的第二随机数;所述预设对称密匙协商算法为基于所述预设素数的取模算法;
所述第一公钥是基于预设整数和所述第一随机数,按照所述预设对称密匙协商算法生成的;所述第二公钥是基于所述预设整数和所述第二随机数,按照所述预设对称密匙协商算法生成的;所述预设整数为所述预设素数的原根。
4.如权利要求1所述的方法,其特征在于,所述第一公钥具体按照以下方式生成:
pk_A=a^r_A mod P;
其中,pk_A为所述第一公钥,a为所述预设整数,^表示幂次方运算,r_A为所述第一随机数,mod表示取模运算,P为所述预设素数;
所述第二公钥具体按照以下方式生成:
pk_B=a^r_B mod P;
其中,pk_B为所述第二公钥,r_B为所述第二随机数;
所述第一对称密匙具体按照以下方式生成:
K1=(pk_B)^r_A mod P;
其中,K1为所述第一对称密匙;
所述第二对称密匙具体按照以下方式生成:
K2=(pk_A)^r_B mod P;
其中,K2为所述第二对称密匙。
5.如权利要求1-4任一项所述的方法,其特征在于,所述第一交易方按照以下方式生成所述交易数据:
所述第一交易方构建Java对象,并设置所述Java对象的对象属性;
所述第一交易方将所述Java对象转换为json字符串,将所述json字符串作为所述交易数据。
6.一种区块链的交易数据获取方法,其特征在于,包括:
第二交易方获取交易标识;所述第二交易方从区块链获取所述交易标识对应的加密数据;所述加密数据是第一交易方根据第一对称密匙对交易数据加密得到的;所述第一对称密匙是基于第一私钥和第二公钥,按照预设对称密匙协商算法生成的;所述第一私钥是所述第一交易方针对所述交易标识生成的私钥;所述第二公钥是第二交易方针对所述交易标识生成的公钥;
所述第二交易方获取所述交易标识对应的第二对称密匙;所述第二对称密匙是基于第二私钥和第一公钥,按照所述预设对称密匙协商算法生成的;所述第二私钥是所述第二交易方针对所述交易标识生成的私钥;所述第一公钥是第一交易方针对所述交易标识生成的公钥;所述第一对称密匙和所述第二对称密匙相同;
所述第二交易方根据所述第二对称密匙对所述加密数据解密,获得所述交易数据。
7.如权利要求6所述的方法,其特征在于,所述第二交易方获取所述交易标识对应的第二对称密匙之前,还包括:
所述第二交易方获取来自所述第一交易方的所述交易标识和所述第一公钥;
所述第二交易方生成所述第二公钥和所述第二私钥;
所述第二交易方根据所述第一公钥和所述第二私钥,按照所述预设对称密匙协商算法生成所述第二对称密匙;
所述第二交易方将所述第二公钥发送至所述第一交易方。
8.一种区块链的交易数据存储装置,其特征在于,包括:
生成模块,用于生成交易标识和交易数据;
获取模块,用于获取所述交易标识对应的第一对称密匙;所述第一对称密匙是基于第一私钥和第二公钥,按照预设对称密匙协商算法生成的;所述第一私钥是第一交易方针对所述交易标识生成的私钥;所述第二公钥是第二交易方针对所述交易标识生成的公钥;
处理模块,用于根据所述第一对称密匙对所述交易数据加密,获得加密数据,并将所述加密数据提交给区块链,使得所述区块链对所述加密数据共识通过后,写入所述区块链;所述加密数据用于所述第二交易方根据第二对称密匙解密,获得所述交易数据;所述第二对称密匙是基于第二私钥和第一公钥,按照所述预设对称密匙协商算法生成的;所述第二私钥是所述第二交易方针对所述交易标识生成的私钥;所述第一公钥是第一交易方针对所述交易标识生成的公钥;所述第一对称密匙和所述第二对称密匙相同。
9.一种计算机设备,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至5或6至7中任意一项所述的方法被执行。
10.一种计算机可读存储介质,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至5或6至7中任意一项所述的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011124901.3A CN112348674A (zh) | 2020-10-20 | 2020-10-20 | 一种区块链的交易数据存储与获取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011124901.3A CN112348674A (zh) | 2020-10-20 | 2020-10-20 | 一种区块链的交易数据存储与获取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112348674A true CN112348674A (zh) | 2021-02-09 |
Family
ID=74358351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011124901.3A Pending CN112348674A (zh) | 2020-10-20 | 2020-10-20 | 一种区块链的交易数据存储与获取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112348674A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468570A (zh) * | 2021-07-15 | 2021-10-01 | 湖北央中巨石信息技术有限公司 | 基于智能合约的隐私数据共享方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108200079A (zh) * | 2018-01-19 | 2018-06-22 | 深圳四方精创资讯股份有限公司 | 基于对称和非对称混合加密的区块链隐私保护方法及装置 |
CN110335043A (zh) * | 2019-07-03 | 2019-10-15 | 中国银行股份有限公司 | 一种基于区块链系统的交易隐私保护方法、设备以及系统 |
CN111143885A (zh) * | 2020-04-02 | 2020-05-12 | 支付宝(杭州)信息技术有限公司 | 区块链交易处理方法及装置和区块链节点 |
-
2020
- 2020-10-20 CN CN202011124901.3A patent/CN112348674A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108200079A (zh) * | 2018-01-19 | 2018-06-22 | 深圳四方精创资讯股份有限公司 | 基于对称和非对称混合加密的区块链隐私保护方法及装置 |
CN110335043A (zh) * | 2019-07-03 | 2019-10-15 | 中国银行股份有限公司 | 一种基于区块链系统的交易隐私保护方法、设备以及系统 |
CN111143885A (zh) * | 2020-04-02 | 2020-05-12 | 支付宝(杭州)信息技术有限公司 | 区块链交易处理方法及装置和区块链节点 |
Non-Patent Citations (1)
Title |
---|
基思•M.马丁: "《人人可懂密码学 原书第2版》", 30 September 2020, 北京:机械工业出版社, pages: 251 - 254 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113468570A (zh) * | 2021-07-15 | 2021-10-01 | 湖北央中巨石信息技术有限公司 | 基于智能合约的隐私数据共享方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11621833B2 (en) | Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system | |
US11936774B2 (en) | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys | |
CN109284627B (zh) | 一种基于区块链智能合约的征信信誉方法及装置 | |
CN112950367B (zh) | 生成和执行智能合约交易的方法及装置 | |
CN111431713B (zh) | 一种私钥存储方法、装置和相关设备 | |
WO2020233235A1 (zh) | 一种区块链的数据验证方法和装置 | |
TWI807125B (zh) | 用以分配數位簽署資料之份額的電腦實施系統及方法 | |
CN103444128B (zh) | 密钥pv签名 | |
CN113674077A (zh) | 消费信贷风险防范方法、系统、设备及存储介质 | |
CN113393225B (zh) | 数字货币加密支付方法及系统 | |
CN115913513B (zh) | 支持隐私保护的分布式可信数据交易方法、系统及装置 | |
CN113344705B (zh) | 基于区块链的数据共享方法和系统 | |
CN112348674A (zh) | 一种区块链的交易数据存储与获取方法及装置 | |
CN112990904B (zh) | 基于区块链的转账方法、装置和电子设备 | |
TWI767682B (zh) | Ecqv衍生子憑證產生系統、方法及電腦可讀媒介 | |
CN116668033A (zh) | 文件传输方法、装置、服务器、存储介质和程序产品 | |
CN118332595A (zh) | 基于全同态加密的隐私集合求交集方法、系统及存储介质 | |
CN117708881A (zh) | 基于可重用混淆电路的跨机构黑名单共享方法及系统 | |
CN116911851A (zh) | 一种基于联盟链的棉花交易隐私保护方法及系统 | |
CN118316925A (zh) | 基于分布式节点的数据处理方法、装置、可读介质及设备 | |
CN108063666A (zh) | 云环境下的数据访问方法及系统、密钥服务器和访问终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |