基于密钥派生算法的链上匿名通信方法和系统

文档序号:30583915发布日期:2022-06-29 14:31阅读:124来源:国知局
基于密钥派生算法的链上匿名通信方法和系统

1.本发明涉及通信技术领域,尤其涉及一种基于密钥派生算法的链 上匿名通信方法和系统。


背景技术:

2.随着互联网的发展,各类业务隐私保护的需求日益凸显。在一个 不可信的网络环境中,如今普遍存在的端到端加密可以通过加密隧道 等方式防止恶意攻击者非法获取通信双方的通信内容,却无法防止所 有信息的泄露,比如发送方和接收方的ip地址、通信双方交互频率 等。为了增强客户端的隐私安全,对通信双方身份和ip隐藏,实现 会话中一次一密的匿名通信尤为重要。
3.区块链网络是一种点对点分布式网络,节点之间通过中继转发的 方式进行通信,此时,传统网络中通过窃听网络流量发现客户端之间 通信关系的方法就不再适用。而且,区块链技术支持匿名交易,地址 本身和客户端身份信息无关。为匿名通信提供了新的思路。然而,匿 名通信的地址派生原则是,地址仅通信双方可知,其他实体看来是随 机变化的。区块链虽然可以做到一次一地址,但是这种地址派生是无 规律的,或者并不能被其他人知晓,因而不满足上述规则。这就需要 双方协商出通信所需要的会话密钥。
4.当前主流的密钥分配方法有基于对称密码体制的密钥分配、混合 密码体制密钥分配以及diffie-hellman(dh)密钥交换。其中基于对 称密码体质的密钥分配基本原理是:通信双方会事先由密钥分发中心 (key distribution center,kdc)手工分配一个固定的主密钥,之后 任一方想得到用于通信的会话密钥,都需在主密钥加密保护下向 kdc申请,之后再以kdc为中介用会话密钥进行加密通信。混合密 码体制分配密钥相对于对称密钥体制,最为突出的特征是:两两客户 端之间无需事先手工分配一个主密钥,而是采用公钥密码体制,用对 方公开的公钥加密并发送给对方新的对称密钥,对方收到后再用自己 的私钥解密得到对称密钥,在正式会话时再使用新密钥进行对称加密 通信。该机制使得客户端只需要维持较少的密钥关系,而且公钥能被 分配而无需机密性保护,因此更加方便高效。dh密钥分配方案主要 利用了计算离散对数的困难性,其主要特征是双方客户端无需再对待 发送的密钥进行加密处理,而是各自随机产生一个数,并用dh算法 单向计算出相应的值发送给对方,双方便可以由随机数和收到的数值 得到相同的结果作为对称的会话密钥,而敌手即使截获双方发送的信 息也无法复原出该密钥。
5.上述现有技术除了难以解决需不断协商密钥的问题,还存在一些 其他的不足,比如,上述方案更多只适用于对称密钥分配,如果想要 实时分享非对称密码中的公钥,则过程会更加繁琐。


技术实现要素:

6.本发明提供一种基于密钥派生算法的链上匿名通信方法和系统, 用以解决现有技术中需要不断协商密钥的和适用范围局限的缺陷,实 现依次获取种子密钥和适用于非
对称密码中的情形。
7.第一方面,本发明提供一种基于密钥派生算法的链上匿名通信方 法,应用于区块链网络中任意两个拥有初始密钥的节点,基于密钥衍 生算法,将消息加密上链,以去中心化的区块链作为中继,实现节点 到区块链再到节点的消息安全传输的过程,所述方法包括:
8.在第一客户端和第二客户端向认证中心进行身份认证通过后,所 述认证中心生成所述第一客户端对应的第一初始私钥、第一初始公钥, 以及生成所述第二客户端对应的第二初始私钥、第二初始公钥;
9.所述第一客户端根据第一初始公钥确定第一初始地址,第二客户 端根据第二初始公钥确定第二初始地址;所述第一客户端和所述第二 客户端根据所述第一初始私钥、第一初始公钥、第一初始地址、第二 初始私钥、第二初始公钥和第二初始地址完成链上好友确认和种子密 钥的生成;
10.所述第一客户端根据所述第一初始私钥、所述第二初始公钥、所 述种子密钥和通信时间戳确定第一派生私钥、第二派生公钥和第二派 生地址;
11.所述第二客户端根据所述第二初始私钥、所述第一初始公钥、所 述种子密钥和所述通信时间戳确定第二派生私钥、第一派生公钥和第 一派生地址;
12.所述第一客户端和所述第二客户端根据所述第一派生私钥、所述 第一派生公钥、所述第一派生地址、所述第二派生私钥、所述第二派 生公钥和所述第二派生地址完成所述第一客户端和所述第二客户端 之间消息的匿名发送。
13.进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述认证中心生成所述第一客户端对应的第一初始私钥和 第一初始公钥,具体包括:
14.初始化第一客户端生成第一基础信息;
15.所述第一客户端将所述第一基础信息和第一认证请求发送给引 导节点,以使所述引导节点将所述第一基础信息和第一所述认证请求 转发给认证中心;
16.所述认证中心根据拜占庭容错算法确定相应的第一主节点及从 节点,以使所述第一主节点根据所述认证请求对所述第一基础信息进 行验证,通过后,所述主节点为所述第一客户端生成包含第一初始私 钥、第一初始公钥的证书,并广播,从节点验证证书并记录。
17.进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述认证中心生成所述第二客户端对应的第二初始私钥和 第二初始公钥,具体包括:初始化第二客户端生成第二基础信息;
18.所述第二客户端将所述第二基础信息和第二认证请求发送给引 导节点,以使所述引导节点将所述第二基础信息和第二所述认证请求 转发给认证中心;
19.所述认证中心根据拜占庭容错算法确定相应的第二主节点及从 节点,以使所述第二主节点根据所述认证请求对所述第二基础信息进 行验证通过后,所述主节点为所述第二客户端生成包含第二初始私钥、 第二初始公钥的证书,并广播,从节点验证证书并记录。
20.进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述第一客户端和所述第二客户端根据所述第一初始私钥、 第一初始公钥、第一初始地址、第
二初始私钥、第二初始公钥和第二 初始地址完成链上好友确认和种子密钥的生成,具体包括:
21.所述第一客户端预先获知第二初始公钥和第二初始地址,确定申 请消息;根据所述第二初始公钥对所述申请消息和所述第一初始公钥 进行加密得到第一加密信息;根据所述第一初始私钥对所述第一加密 信息的摘要进行数字签名,得到第一数字签名;将所述第一加密信息、 所述第一数字签名和所述第二初始地址通过服务链广播给所述第二 客户端;
22.所述第二客户端根据所述第二初始地址接收所述第一加密信息、 所述第一数字签名;根据所述第二初始私钥对所述第一加密信息进行 解密得到所述请求信息和所述第一初始公钥;根据所述初始公钥对所 述第一数字签名进行验证,在确定所述第一客户端的身份之后,对所 述申请信息进行回答,生成答复信息;若所述答复信息为同意,则选 取第一种子密钥,并根据所述第一初始公钥对所述同意的答复信息、 所述第一种子密钥和所述第二初始公钥进行加密得到第二加密信息; 根据所述第二初始私钥对所述第二加密信息的摘要进行数字签名得 到第二数字签名;将所述第二加密信息、所述第二数字签名和预先获 知的所述第一初始地址通过所述服务链广播给所述第一客户端;
23.所述第一客户端根据所述第一初始地址接收所述第二加密信息 和所述第二数字签名;根据所述第一初始私钥对所述第二加密信息进 行解密得到所述答复信息、所述第一种子密钥和所述第二初始公钥; 根据所述第二初始公钥对所述第二数字签名进行验证,在确定所述第 二客户端的身份和所述答复信息的内容为同意之后,选取第二种子密 钥;将所述第一种子密钥和所述第二种子密钥合并为完整的种子密钥, 并将所述种子密钥记录到与所述第二客户端对应的信息中;根据所述 第二初始公钥对所述第二种子密钥和所述第一初始公钥进行加密得 到第三加密信息;根据所述第一初始私钥对所述第三加密信息的摘要 进行数字签名得到第三数字签名;将所述第三数字签名、所述第三加 密信息和所述第二初始地址通过所述服务链广播给所述第二客户端;
24.所述第二客户端根据所述第二初始地址接收所述第三加密信息 和所述第三数字签名;根据所述第二初始私钥对所述第三加密信息进 行解密得到第二种子密钥和所述第一初始公钥;根据所述第一初始公 钥对所述第三数字签名进行验证,在确定所述第一客户端的身份之后, 将所述第一种子密钥和所述第二种子密钥合并为所述种子密钥,并将 所述种子密钥,记录到与所述第一客户端对应的信息中,并发送确认 信息至所述第一客户端,完成好友确认和种子密钥协商。
25.进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,若所述答复信息为不同意,则根据所述第一初始公钥对所 述不同意的答复信息、所述第二初始公钥进行加密得到第四加密信息; 根据所述第二初始私钥对所述第四加密信息的摘要进行数字签名,得 到第四数字签名;将所述第四加密信息、所述第四数字签名和预先获 知的所述第一初始地址通过所述服务链广播给所述第一客户端;
26.所述第一客户端根据所述第一初始地址接收所述第四加密信息 和所述第四数字签名;根据所述第一初始私钥对所述第四加密信息进 行解密得到所述答复信息和所述第二初始公钥;根据所述初始公钥对 所述第四数字签名进行解密认证,在确定所述第二客户端的身份且所 述答复信息为不同意之后,停止操作。
27.进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述第一客户端根据所述第一初始私钥、所述第二初始公 钥、所述种子密钥和通信时间戳确定第一派生私钥、第二派生公钥和 第二派生地址,具体包括:
28.将所述第一客户端与所述第二客户端通信时对应的最新的区块 上链的时间作为通信时间戳;
29.根据所述通信时间戳对所述种子密钥进行第一哈希处理,得到对 应的哈希结果;
30.根据所述哈希结果和所述第一初始私钥确定第一派生私钥;
31.根据所述哈希结果和所述第二初始公钥确定第二派生公钥;
32.根据所述第二派生公钥进行第二哈希运算得到对应的第二派生 地址。
33.进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述第二客户端根据所述第二初始私钥、所述第一初始公 钥、所述种子密钥和所述通信时间戳确定第二派生私钥、第一派生公 钥和第一派生地址,具体包括:
34.根据所述哈希结果和所述第二初始私钥确定第二派生私钥;
35.根据所述哈希结果和所述第一初始公钥确定第一派生公钥;
36.根据所述第一派生公钥进行所述第二哈希运算得到对应的第一 派生地址。
37.进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述第一客户端和所述第二客户端根据所述第一派生私钥、 所述第一派生公钥、所述第二派生私钥、所述第二派生公钥和所述第 二派生地址完成所述第一客户端向所述第二客户端的消息的匿名发 送,具体包括:
38.当所述第一客户端向所述第二客户端发送消息时:
39.确定所述第一客户端与所述第二客户端之间通信的消息类型;
40.若所述消息类型为字符串类型的第一短消息,则所述第一客户端 根据所述第二派生公钥对所述短消息进行加密得到第一加密数据;根 据所述第一派生私钥对所述第一加密数据的摘要进行数字签名得到 第一发送数字签名;将所述第一发送数字签名、所述第一加密数据和 所述第二派生地址通过所述服务链发送给所述第二客户端;
41.所述第二客户端根据所述第二派生地址获取所述第一发送数字 签名和所述第一加密数据;根据所述第二派生密钥对所述第一加密数 据进行解密得到所述第一短消息;根据所述第一派生公钥对所述第一 发送数字签名进行验证,验证通过后,确认接收所述第一短消息;
42.若所述消息类型为第一长文件消息,则获取所述种子密钥的对称 密钥,并根据所述对称密钥对所述第一长文件消息进行加密后上传星 际文件系统并获取第一索引;
43.所述第一客户端根据所述第二派生公钥对所述第一索引进行加 密得到第二加密数据;根据所述第一派生私钥对所述第二加密数据的 摘要进行数字签名得到第二发送数字签名;将所述第二发送数字签名、 所述第二加密数据和所述第二派生地址通过所述服务链发送给所述 第二客户端;
44.所述第二客户端根据所述第二派生地址获取所述第二发送数字 签名和所述第二加密数据;根据所述第二派生密钥对所述第二加密数 据进行解密得到所述第一索引;根据所述第一派生公钥对所述第二发 送数字签名进行验证,验证通过后,确认接收所述索引,并根据所述 索引获取所述第一长文件消息。
45.进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述第一客户端和所述第二客户端根据所述第一派生私钥、 所述第一派生公钥、所述第二派生私钥、所述第二派生公钥和所述第 一派生地址完成所述第二客户端向所述第一客户端的消息的匿名发 送,具体包括:
46.当所述第二客户端向所述第一客户端发送消息时:
47.确定所述第二客户端与所述第一客户端之间通信的消息类型;
48.若所述消息类型为字符串类型的第二短消息,则所述第二客户端 根据所述第一派生公钥对所述短消息进行加密得到第三加密数据;根 据所述第二派生私钥对所述第三加密数据的摘要进行数字签名得到 第三发送数字签名;将所述第三发送数字签名、所述第三加密数据和 所述第一派生地址通过所述服务链发送给所述第一客户端;
49.所述第一客户端根据所述第一派生地址获取所述第三发送数字 签名和所述第三加密数据;根据所述第一派生密钥对所述第三加密数 据进行解密得到所述第二短消息;根据所述第二派生公钥对所述第三 发送数字签名进行验证,验证通过后,确认接收所述第二短消息;
50.若所述消息类型为第二长文件消息,则获取所述种子密钥的所述 对称密钥,并根据所述对称密钥对所述第二长文件消息进行加密后上 传所述星际文件系统并获取第二索引;
51.所述第二客户端根据所述第一派生公钥对所述第二索引进行加 密得到第四加密数据;根据所述第二派生私钥对所述第四加密数据的 摘要进行数字签名得到第四发送数字签名;将所述第四发送数字签名、 所述第四加密数据和所述第一派生地址通过所述服务链发送给所述 第一客户端;
52.所述第一客户端根据所述第一派生地址获取所述第四发送数字 签名和所述第四加密数据;根据所述第一派生密钥对所述第四加密数 据进行解密得到所述索引;根据所述第二派生公钥对所述第四发送数 字签名进行验证,验证通过后,确认接收所述第二索引,并根据所述 第二索引获取所述第二长文件消息。
53.第二方面,本发明提供一种基于密钥派生算法的链上匿名通信系 统,应用于区块链网络中任意两个拥有初始密钥的节点,基于密钥衍 生算法,将消息加密上链,以去中心化的区块链作为中继,实现节点 到区块链再到节点的消息安全传输的过程,所述系统包括:第一客户 端、第二客户端和认证中心;
54.所述认证中心用于在第一客户端和第二客户端向认证中心进行 身份认证通过后,认证中心主节点生成所述第一客户端对应的包含第 一初始私钥和第一初始公钥的证书,以及生成所述第二客户端对应的 包含第二初始私钥和第二初始公钥;
55.所述第一客户端根据第一初始公钥确定第一初始地址,第二客户 端根据第二初始公钥确定第二初始地址;所述第一客户端和所述第二 客户端共同用于根据所述第一初始私钥、第一初始公钥、第一初始地 址、第二初始私钥、第二初始公钥和第二初始地址完成好友确认和种 子密钥的生成;
56.所述第一客户端还用于根据所述第一初始私钥、所述第二初始公 钥、所述种子密钥和通信时间戳确定第一派生私钥、第二派生公钥和 第二派生地址;
57.所述第二客户端还用于根据所述第二初始私钥、所述第一初始公 钥、所述种子密
钥和所述通信时间戳确定第二派生私钥、第一派生公 钥和第一派生地址;
58.所述第一客户端和所述第二客户端还共同用于根据所述第一派 生私钥、所述第一派生公钥、所述第一派生地址、所述第二派生私钥、 所述第二派生公钥和所述第二派生地址完成所述第一客户端和所述 第二客户端之间消息的匿名发送。
59.本发明提供的一种基于密钥派生算法的链上匿名通信方法和系 统,应用于区块链网络中任意两个拥有初始密钥的节点,基于密钥衍 生算法,将消息加密上链,以去中心化的区块链作为中继,实现节点 到区块链再到节点的消息安全传输的过程,通过在第一客户端和第二 客户端向认证中心进行身份认证通过后,所述认证中心生成所述第一 客户端对应的第一初始私钥、第一初始公钥,以及生成所述第二客户 端对应的第二初始私钥、第二初始公钥;所述第一客户端根据第一初 始公钥确定第一初始地址,第二客户端根据第二初始公钥确定第二初 始地址;所述第一客户端和所述第二客户端根据所述第一初始私钥、 第一初始公钥、第一初始地址、第二初始私钥、第二初始公钥和第二 初始地址完成链上好友确认和种子密钥的生成;所述第一客户端根据 所述第一初始私钥、所述第二初始公钥、所述种子密钥和通信时间戳 确定第一派生私钥、第二派生公钥和第二派生地址;所述第二客户端 根据所述第二初始私钥、所述第一初始公钥、所述种子密钥和所述通 信时间戳确定第二派生私钥、第一派生公钥和第一派生地址;所述第 一客户端和所述第二客户端根据所述第一派生私钥、所述第一派生公 钥、所述第一派生地址、所述第二派生私钥、所述第二派生公钥和所 述第二派生地址完成所述第一客户端和所述第二客户端之间消息的 匿名发送。本发明通过上述方法实现无需密钥协商分发的一次一密一 地址的匿名通信方案。
附图说明
60.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实 施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见 地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术 人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得 其他的附图。
61.图1是本发明提供的基于密钥派生算法的链上匿名通信方法的 流程示意图之一;
62.图2是本发明提供的基于密钥派生算法的链上匿名通信系统的 结构示意图;图3是本发明提供的基于密钥派生算法的链上匿名通信系统的 整体示意图。
具体实施方式
63.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发 明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然, 所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提 下所获得的所有其他实施例,都属于本发明保护的范围。
64.下面结合图1-图2描述本发明的本发明提供一种基于密钥派生 算法的链上匿名通信方法,应用于区块链网络中任意两个拥有初始密 钥的节点,基于密钥衍生算法,将消息加密上链,以去中心化的区块 链作为中继,实现节点到区块链再到节点的消息安全传输的过程,所 述方法包括:
65.步骤100:在第一客户端和第二客户端向认证中心进行身份认证 通过后,所述认
证中心生成所述第一客户端对应的第一初始私钥、第 一初始公钥,以及生成所述第二客户端对应的第二初始私钥、第二初 始公钥;包括:
66.具体地,为了实现认证中心ca(certificate authority)节点可控, 引入安全中心的概念,安全中心是线下的一个组织或者部门的多个节 点,由其承担分布式ca的功能,他们拥有自己的ca证书,包含节 点的密钥对、序列号等基础信息;
67.ca节点入网时需要持有ca证书,引导节点上线时在程序中内 置了安全中心的公钥组,通过非对称验证算法校验证书真实性,只有 通过校验的节点才被允许入网。
68.任一客户端在加入区块链网络时首先向认证中心ca发送其身份 信息,分布式ca网络为其生成一个公私钥对并提供身份证书ecert, 此证书为长期证书。客户端由公钥经单向哈希映射出初始地址,私钥、 公钥和地址是不可更改的初始三元组,其中公钥和地址作为具有通信 资格的参与方可预先获知身份标识。
69.步骤200:所述第一客户端根据第一初始公钥确定第一初始地址, 第二客户端根据第二初始公钥确定第二初始地址;所述第一客户端和 所述第二客户端根据所述第一初始私钥、第一初始公钥、第一初始地 址、第二初始私钥、第二初始公钥和第二初始地址完成链上好友确认 和种子密钥的生成;
70.具体地,首先,第一客户端根据第一初始公钥进行计算确定第一 初始地址,第二客户顿根据第二初始公钥确定第二初始地址。即客户 端对公钥k进行协定的哈希运算即现有的地址算法得到地址address, 第一客户端(申请方)获取想要通信的消息接收方及第二客户端的真 实身份对应的第二初始公钥、第二初始地址。然后根据第一初始私钥 对申请信息进行加密,然后将加密信息和第一初始公钥、第二初始公 钥、第二初始地址向第二客户端发送进行申请添加好友。
71.第二客户端(接收方)接收到申请信息之后,确定是否同意,如 果同意则生成随机第一种子密钥x1,并根据第一初始公钥和第一初始 地址等将回复信息和第一种子密钥发送给第一客户端。
72.第一客户端在接收到所述第一种子密钥之后,随机生成第二种子 密钥x2,并将所述第二种子密钥根据一初始私钥、第一初始公钥、第 二初始公钥、第二初始地址等发送给第二客户端。
73.第二客户端接收到第二种子密钥之后将第一种子密钥和第二种 子密钥合并成种子密钥x,并反馈收到信息给第一客户端。
74.经过上述几次通信之后,第一客户端和第二客户端之间建立起好 友联系,同时,完后了种子密钥的生成。
75.步骤300:所述第一客户端根据所述第一初始私钥、所述第二初 始公钥、所述种子密钥和通信时间戳确定第一派生私钥、第二派生公 钥和第二派生地址;
76.具体地,根据区块链固定时间生成区块的特性,可将第i个区块 上链时间ti设为通信的时间戳(从ti到下个区块上链t
i+1
前的消息都会 被打包到该区块上),并作为参数对种子密钥x作哈希处理得到 xi=hash1(x||hash2(x,ti)),实现每次通信时xi的离散化,从而生成 不同的派生公钥ki和对应的派生地址信息,第三者无法解析通信双方 身份,达到一次一密一地址的效果。
77.第一客户端获取好友第二客户端的初始公钥kb、共享的种子密钥 x、以及最新的
通信区块时间戳ti,先派生出该时间戳下自己的派生 私钥k
ai
=ka*hash1(x||hash2(x,ti))mod n,然后派生出好友第二 客户端的派生公钥k
bi
=hash1(x||hash2(x,ti))kb和派生地址 address
bi

78.步骤400:所述第二客户端根据所述第二初始私钥、所述第一初 始公钥、所述种子密钥和所述通信时间戳确定第二派生私钥、第一派 生公钥和第一派生地址;
79.具体地,同上。第二客户端获取好友第一客户端的初始公钥ka、 共享的种子密钥x、以及最新的通信区块时间戳ti,先派生出该时间 戳下自己的派生私钥k
bi
=kb*hash1(x||hash2(x,ti))mod n,然后 派生出好友第一客户端的派生公钥 k
ai
=(hash1(x||hash2(x,ti)))ka和派生地址address
ai

80.步骤500:所述第一客户端和所述第二客户端根据所述第一派生 私钥、所述第一派生公钥、所述第一派生地址、所述第二派生私钥、 所述第二派生公钥和所述第二派生地址完成所述第一客户端和所述 第二客户端之间消息的匿名发送。
81.具体地,好友双方记录种子密钥信息,同时维护一个对方的派生 信息表,随固定时间戳更新,包含基于种子密钥经过派生算法运算得 到的一段时间内对方会话公钥、会话地址等;
82.发送消息时,发送方首先计算自己的派生公私钥对、对方的派生 信息以及衍生的数据加密密钥。对消息进行加密并广播至服务链端;
83.服务链广播该密文。进而,消息接收方比对密文附带的会话地址, 判断是否为某个好友消息,如果是则利用其相应派生密钥解密验证, 消息接收完成。
84.本发明提供的一种基于密钥派生算法的链上匿名通信方法,应用 于区块链网络中任意两个拥有初始密钥的节点,基于密钥衍生算法, 将消息加密上链,以去中心化的区块链作为中继,实现节点到区块链 再到节点的消息安全传输的过程,通过在第一客户端和第二客户端向 认证中心进行身份认证通过后,所述认证中心生成所述第一客户端对 应的第一初始私钥、第一初始公钥,以及生成所述第二客户端对应的 第二初始私钥、第二初始公钥;所述第一客户端根据第一初始公钥确 定第一初始地址,第二客户端根据第二初始公钥确定第二初始地址; 所述第一客户端和所述第二客户端根据所述第一初始私钥、第一初始 公钥、第一初始地址、第二初始私钥、第二初始公钥和第二初始地址 完成链上好友确认和种子密钥的生成;所述第一客户端根据所述第一 初始私钥、所述第二初始公钥、所述种子密钥和通信时间戳确定第一 派生私钥、第二派生公钥和第二派生地址;所述第二客户端根据所述 第二初始私钥、所述第一初始公钥、所述种子密钥和所述通信时间戳 确定第二派生私钥、第一派生公钥和第一派生地址;所述第一客户端 和所述第二客户端根据所述第一派生私钥、所述第一派生公钥、所述 第一派生地址、所述第二派生私钥、所述第二派生公钥和所述第二派 生地址完成所述第一客户端和所述第二客户端之间消息的匿名发送。 本发明通过上述方法实现无需密钥协商分发的一次一密一地址的匿 名通信方案。
85.进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述认证中心生成所述第一客户端对应的第一初始私钥和 第一初始公钥,具体包括:
86.初始化第一客户端生成第一基础信息;
87.所述第一客户端将所述第一基础信息和第一认证请求发送给第 一引导节点,以使所述第一引导节点将所述第一基础信息和第一所述 认证请求转发给认证中心;
88.所述认证中心根据拜占庭容错算法确定相应的第一主节点,以使 所述第一主节点根据所述认证请求对所述第一基础信息进行验证通 过后,所述认证中心向所述第一客户端生成第一初始私钥、第一初始 公钥。
89.具体地,参考图2所示,客户端节点加密并发送基础信息至引导 节点,引导节点向认证中心转发ca证书申请请求,分布式ca基于 实用拜占庭容错(practical byzantine fault tolerance,pbft)算法选 取主节点及从节点,主节点验证基础信息,生成证书并广播,从节点 验证证书并记录,客户端获得入网证书,以初始公钥、私钥、地址三 元组作为身份标识。
90.即客户端在加入网络时,向分布式ca发送身份证书申请请求, 分布式ca基于pbft算法选取主节点,由主节点验证身份信息并生 成ecert证书,ca使用随机数产生器生成一个256bit的随机数 k∈[1,n]作为其私钥,并基于椭圆曲线加密(elliptic curvecryptography,ecc)循环群映射得到新的点k作为公钥,并为其生 成包含身份信息及公钥的证书;然后向从节点广播客户端验证成功消 息,并将客户端证书信息记录上链,从节点同样对客户端身份进行验 证,成功则将证书信息记录上链。最后客户端对公钥k进行协定的哈 希运算即现有的地址算法得到地址address,初始私钥、公钥和地址 一经生成便不可更改,其中公钥和地址可作为公开的身份标识。
[0091]
进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述认证中心生成所述第二客户端对应的第二初始私钥、 第二初始公钥和第二初始地址,具体包括:初始化第二客户端生成第 二基础信息;
[0092]
所述第二客户端将所述第二基础信息和第二认证请求发送给第 二引导节点,以使所述第二引导节点将所述第二基础信息和第二所述 认证请求转发给认证中心;
[0093]
所述认证中心根据拜占庭容错算法确定相应的第二主节点,以使 所述第二主节点根据所述认证请求对所述第二基础信息进行验证通 过后,所述认证中心向所述第二客户端生成第二初始私钥和第二初始 公钥。
[0094]
具体地,同上述实施例。
[0095]
进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述第一客户端和所述第二客户端根据所述第一初始私钥、 第一初始公钥、第一初始地址、第二初始私钥、第二初始公钥和第二 初始地址完成好友确认和种子密钥的生成,具体包括:
[0096]
所述第一客户端确定申请消息;根据所述第二初始公钥对所述申 请消息和所述第一初始公钥进行加密得到第一加密信息;根据所述第 一初始私钥对所述第一加密信息的摘要进行数字签名,得到第一数字 签名;将所述第一加密信息、所述第一数字签名和预先获知的所述第 二初始地址通过服务链广播给所述第二客户端;
[0097]
所述第二客户端根据所述第二初始地址接收所述第一加密信息、 所述第一数字签名;根据所述第二初始私钥对所述第一加密信息进行 解密得到所述请求信息和所述第一初始公钥;根据所述初始公钥对所 述第一数字签名进行解密认证,在确定所述第一客户端的身份之后, 对所述申请信息进行回答,生成答复信息;若所述答复信息为同意, 则选取第一种子密钥,并根据所述第一初始公钥对所述同意的答复信 息、所述第一种子密钥和所述第二初始公钥进行加密得到第二加密信 息;根据所述第二初始私钥对所述第二加密信息的摘要进行数字签名 得到第二数字签名;将所述第二加密信息、所述第二数字签名和
预先 获知的所述第一初始地址通过所述服务链广播给所述第一客户端;
[0098]
所述第一客户端根据所述第一初始地址接收所述第二加密信息 和所述第二数字签名;根据所述第一初始私钥对所述第二加密信息进 行解密得到所述答复信息、所述第一种子密钥和所述第二初始公钥; 根据所述第二初始公钥对所述第二数字签名进行解密认证,在确定所 述第二客户端的身份和所述答复信息的内容为同意之后,选取第二种 子密钥;将所述第一种子密钥和所述第二种子密钥合并为完整的种子 密钥,并将所述种子密钥记录到与所述第二客户端对应的信息中;根 据所述第二初始公钥对所述第二种子密钥和所述第一初始公钥进行 加密得到第三加密信息;根据所述第一初始私钥对所述第三加密信息 的摘要进行数值签名得到第三数字签名;将所述第三数字签名、所述 第三加密信息和所述第二初始地址通过所述服务链广播给所述第二 客户端;
[0099]
所述第二客户端根据所述第二初始地址接收所述第三加密信息 和所述第三数字签名;根据所述第二初始私钥对所述第三加密信息进 行解密得到第二种子密钥和所述第一初始公钥;根据所述第一初始公 钥对所述第三数字签名进行解密认证,在确定所述第一客户端的身份 之后,将所述第一种子密钥和所述第二种子密钥合并为所述种子密钥, 并将所述种子密钥,将所述种子密钥记录到与所述第一客户端对应的 信息中,并发送确认信息至所述第一客户端。
[0100]
具体地,两个客户端a和b,两者的账户标识(id)、初始私钥、 初始公钥和初始地址分别为a、ka、ka、addra与b、kb、kb、addrb,以a 为申请方,b为接收方对三次握手过程描述如下:
[0101]
申请方a线下获取到被申请方b的初始身份、第二初始公钥和 第二初始地址信息,用b的第二初始公钥对包含申请消息、第一身份 ida和第一初始公钥ka的构成的消息msg1进行加密,用私钥ka对消息 的摘要数字签名得到sig1。将上述内容使用短期交易tcert证书上的 匿名身份进行签名,连同addrb上传至服务链,记为“握手1”。服务 链验证基于短期匿名身份的签名,通过后进行消息广播;
[0102]
b接收到a发送的接收方为addrb的申请消息“握手1”,解密并 验证基于入网身份ka的签名的正确性,然后选择是否同意申请。如果 同意,选取第一种子密钥xb连同第二身份idb、和第一初始公钥ka一 起作为消息msg2使用a的第一初始公钥加密,并对摘要使用第二初 始私钥kb签名,连同addra上传至服务链,记为“握手2”。服务链验 证基于短期匿名身份的签名,通过后进行消息广播;
[0103]
a收到b发送的地址为addra的回复消息“握手2”,同上验证签 名是否正确,然后用其第一初始私钥解密得到xb,并选取第二种子密 钥xa,然后用b的第二初始公钥加密,同上发送消息“握手3”至服 务链。同时,将b添加到好友列表,将xa、xb合并成完整的种子密 钥x,记录到好友b的信息里;
[0104]
b收到a发送的地址为addrb的回复消息“握手3”,同上验证签 名是否正确,通过验证,则解密得到xa,并将xa、xb合并成完整的种 子密钥x,记录到好友a的信息里;
[0105]
这样双方的协商种子密钥过程完成,另外接收申请方b在完成最 后一次握手后会自动用正式通信的方式向a发送一条确认消息,告 知a加好友完成可以开始通信,而a也会一直监听这条消息,收到 后双方就都可以正式进行派生密钥通信了。
[0106]
进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,若所
述答复信息为不同意,则根据所述第一初始公钥对所 述不同意的答复信息、所述第二初始公钥进行加密得到第四加密信息; 根据所述第二初始私钥对所述第四加密信息的摘要进行数字签名,得 到第四数值签名;将所述第四加密信息、所述第四数字签名和预先获 知的所述第一初始地址通过所述服务链广播给所述第一客户端;
[0107]
所述第一客户端根据所述第一初始地址接收所述第四加密信息 和所述第四数字签名;根据所述第一初始私钥对所述第四加密信息进 行解密得到所述答复信息和所述第二初始公钥;根据所述初始公钥对 所述第四数字签名进行解密认证,在确定所述第二客户端的身份且所 述答复信息为不同意之后,停止操作。
[0108]
具体地,根据上述实施例记载,若答复消息内容为不同意,则第 一客户端在接收到该答复消息,并在确认发送者身份之后,即确定所 述答复消息来自与该发送者即自己发送请求的对象之后,则停止操作, 即终止建立好友操作。
[0109]
进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述第一客户端根据所述第一初始私钥、所述第二初始公 钥、所述种子密钥和通信时间戳确定第一派生私钥、第二派生公钥和 第二派生地址,具体包括:
[0110]
将所述第一客户端与所述第二客户端通信时对应的最新的区块 上链的时间作为通信时间戳;
[0111]
根据所述通信时间戳对所述种子密钥进行第一哈希处理,得到对 应的哈希结果;
[0112]
根据所述哈希结果和所述第一初始私钥确定第一派生私钥;
[0113]
根据所述哈希结果和所述第二初始公钥确定第二派生公钥;
[0114]
根据所述第二派生公钥进行第二哈希运算得到对应的第二派生 地址。
[0115]
具体地,ecc密码学公钥k由私钥k对基点g做循环群内的点倍积 运算单向映射得出,给定一椭圆曲线e
p
(a,b)和其上一基点g,阶数为 n,提供私钥k∈(0,n-1),有
[0116]
k=kg
ꢀꢀꢀꢀ
(1)
[0117]
在此基础上,以公钥k为e
p
(a,b)的基点,选取另一个随机数 x∈(0,n-1),也可以单向映射得到新的公钥k

,根据循环群性质有k

=xk=x*kg=(kx mod n)g
ꢀꢀ
(2)
[0118]
因此,好友a和b可以共同保密一个随机数x,各自在不知道对 方初始私钥k的前提下就可以派生出对方的新公钥k

,且对第三方保 密;用于签名和解密的新私钥k

=kx mod n对除自身外的客户端保 密。此时,客户端以临时派生公钥向认证中心请求匿名证书tcert即 可。
[0119]
客户端a获取好友客户端b的第二初始公钥kb、共享的种子密 钥x、以及最新的通信区块时间戳ti,先派生出该时间戳下自己的第 一派生私钥k
ai
=ka*hash1(x||hash2(x,ti))mod n,然后派生出好 友b的第二派生公钥k
bi
=hash1(x||hash2(x,ti))kb和第二派生地 址address
bi

[0120]
进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述第二客户端根据所述第二初始私钥、所述第一初始公 钥、所述种子密钥和所述通信时间戳确定第二派生私钥、第一派生公 钥和第一派生地址,具体包括:
[0121]
根据所述哈希结果和所述第二初始私钥确定第二派生私钥;
[0122]
根据所述哈希结果和所述第一初始公钥确定第一派生公钥;
[0123]
根据所述第一派生公钥进行所述第二哈希运算得到对应的第一 派生地址。
[0124]
具体地,参见上述实施例。
[0125]
进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述第一客户端和所述第二客户端根据所述第一派生私钥、 所述第一派生公钥、所述第二派生私钥、所述第二派生公钥和所述第 二派生地址完成所述第一客户端向所述第二客户端的消息的匿名发 送,具体包括:
[0126]
当所述第一客户端向所述第二客户端发送消息时:
[0127]
确定所述第一客户端与所述第二客户端之间通信的消息类型;
[0128]
若所述消息类型为字符串类型的第一短消息,则所述第一客户端 根据所述第二派生公钥对所述短消息进行加密得到第一加密数据;根 据所述第一派生私钥对所述第一加密数据的摘要进行数字签名得到 第一发送数字签名;将所述第一发送数字签名、所述第一加密数据和 所述第二派生地址通过所述服务链发送给所述第二客户端;
[0129]
所述第二客户端根据所述第二派生地址获取所述第一发送数字 签名和所述第一加密数据;根据所述第二初始密钥对所述第一加密数 据进行解密得到所述第一短消息;根据所述第一派生公钥对所述第一 发送数字签名进行解密认证,认证通过后,确认接收所述第一短消息;
[0130]
若所述消息类型为第一长文件消息,则获取所述种子密钥的对称 密钥,并根据所述对称密钥对所述第一长文件消息进行加密后上传星 际文件系统并获取第一索引;
[0131]
所述第一客户端根据所述第二派生公钥对所述第一索引进行加 密得到第二加密数据;根据所述第一派生私钥对所述第二加密数据的 摘要进行数字签名得到第二发送数字签名;将所述第二发送数字签名、 所述第二加密数据和所述第二派生地址通过所述服务链发送给所述 第二客户端;
[0132]
所述第二客户端根据所述第二派生地址获取所述第二发送数字 签名和所述第二加密数据;根据所述第二初始密钥对所述第二加密数 据进行解密得到所述第一索引;根据所述第一派生公钥对所述第二发 送数字签名进行解密认证,认证通过后,确认接收所述索引,并根据 所述索引获取所述第一长文件消息。
[0133]
具体地,客户端a获取好友b的初始公钥kb、共享的种子密钥x、 以及最新的通信区块时间戳ti,先派生出该时间戳下自己的第一派生 私钥k
ai
=ka*hash1(x||hash2(x,ti))mod n,然后派生出好友b的 第二派生公钥k
bi
=hash1(x||hash2(x,ti))kb和第二派生地址 address
bi

[0134]
区块链通信发送的消息类型主要有两类,一类为字符串类型的短 消息,一类为长文件消息。由于前者所占空间较小,传输更方便,使 用加密更安全、但加密速度相对较慢的椭圆曲线派生密钥算法得到的 公钥k
bi
来加密消息;而后者占空间较大,难以进行区块链上的传输, 而且加密也相对更困难,因此使用协商的种子密钥衍生的对称密钥x
′i来加密文件,并将文件上传到星际文件系统(ipfs)中得到占用字节 少的索引token,再用公钥密码算法使用k
bi
加密token上传至服务链。
[0135]
以短消息为例,a对明文使用k
bi
加密,连同收取方b第二派生 地址address
bi
,打包成消息msg,使用k
ai
对消息摘要生成签名并上 传至服务链,完成消息的匿名发送;
[0136]
收取消息:服务链完成对发送方临时交易证书的验证,客户端b 收取由服务链广播的消息,筛选出与自己派生地址对应的来自a的 消息msg,下载密文和消息签名,根据字
典缓存获取对应的自身第二 派生私钥k
bi
和好友a的第一派生公钥k
ai
,结合公钥密码体制下链上 消息传输的原理,解密并验证后完成消息的匿名收取;
[0137]
记录上链:服务链在完成广播后,会存储密文的相关记录,在消 息流量达到一定阈值或者一个通信时间戳后,运行共识机制将密文哈 希、发送时间、收取方会话地址(派生匿名地址)同步到区块链,用 于防篡改和回溯等。
[0138]
进一步,根据本发明提供的基于密钥派生算法的链上匿名通信方 法,其中,所述第一客户端和所述第二客户端根据所述第一派生私钥、 所述第一派生公钥、所述第二派生私钥、所述第二派生公钥和所述第 一派生地址完成所述第二客户端向所述第一客户端的消息的匿名发 送,具体包括:
[0139]
当所述第二客户端向所述第一客户端发送消息时:
[0140]
确定所述第二客户端与所述第一客户端之间通信的消息类型;
[0141]
若所述消息类型为字符串类型的第二短消息,则所述第二客户端 根据所述第一派生公钥对所述短消息进行加密得到第三加密数据;根 据所述第二派生私钥对所述第三加密数据的摘要进行数字签名得到 第三发送数字签名;将所述第三发送数字签名、所述第三加密数据和 所述第一派生地址通过所述服务链发送给所述第一客户端;
[0142]
所述第一客户端根据所述第一派生地址获取所述第三发送数字 签名和所述第三加密数据;根据所述第一初始密钥对所述第三加密数 据进行解密得到所述第二短消息;根据所述第二派生公钥对所述第三 发送数字签名进行解密认证,认证通过后,确认接收所述第二短消息;
[0143]
若所述消息类型为第二长文件消息,则获取所述种子密钥的所述 对称密钥,并根据所述对称密钥对所述第二长文件消息进行加密后上 传所述星际文件系统并获取第二索引;
[0144]
所述第二客户端根据所述第一派生公钥对所述第二索引进行加 密得到第四加密数据;根据所述第二派生私钥对所述第四加密数据的 摘要进行数字签名得到第四发送数字签名;将所述第四发送数字签名、 所述第四加密数据和所述第一派生地址通过所述服务链发送给所述 第一客户端;
[0145]
所述第一客户端根据所述第一派生地址获取所述第四发送数字 签名和所述第四加密数据;根据所述第一初始密钥对所述第四加密数 据进行解密得到所述索引;根据所述第二派生公钥对所述第四发送数 字签名进行解密认证,认证通过后,确认接收所述第二索引,并根据 所述第二索引获取所述第二长文件消息。
[0146]
具体地,参考上述实施例。
[0147]
结合图3所述,本发明提供一种基于密钥派生算法的链上匿名通 信系统,
[0148]
应用于区块链网络中任意两个拥有初始密钥的节点,基于密钥衍 生算法,将消息加密上链,以去中心化的区块链作为中继,实现节点 到区块链再到节点的消息安全传输的过程,所述系统包括:第一客户 端、第二客户端和认证中心;
[0149]
所述认证中心用于在第一客户端和第二客户端向认证中心进行 身份认证通过后,认证中心主节点生成所述第一客户端对应的包含第 一初始私钥和第一初始公钥的证书,以及生成所述第二客户端对应的 包含第二初始私钥和第二初始公钥;
[0150]
所述第一客户端根据第一初始公钥确定第一初始地址,第二客户 端根据第二初
始公钥确定第二初始地址;所述第一客户端和所述第二 客户端共同用于根据所述第一初始私钥、第一初始公钥、第一初始地 址、第二初始私钥、第二初始公钥和第二初始地址完成好友确认和种 子密钥的生成;
[0151]
所述第一客户端还用于根据所述第一初始私钥、所述第二初始公 钥、所述种子密钥和通信时间戳确定第一派生私钥、第二派生公钥和 第二派生地址;
[0152]
所述第二客户端还用于根据所述第二初始私钥、所述第一初始公 钥、所述种子密钥和所述通信时间戳确定第二派生私钥、第一派生公 钥和第一派生地址;
[0153]
所述第一客户端和所述第二客户端还共同用于根据所述第一派 生私钥、所述第一派生公钥、所述第一派生地址、所述第二派生私钥、 所述第二派生公钥和所述第二派生地址完成所述第一客户端和所述 第二客户端之间消息的匿名发送。
[0154]
由于本发明实施例提供的装置,可以用于执行上述实施例所述的 方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参 见上述实施例的介绍。
[0155]
本发明提供的一种基于密钥派生算法的链上匿名通信系统,应用 于区块链网络中任意两个拥有初始密钥的节点,基于密钥衍生算法, 将消息加密上链,以去中心化的区块链作为中继,实现节点到区块链 再到节点的消息安全传输的过程,通过在第一客户端和第二客户端向 认证中心进行身份认证通过后,所述认证中心生成所述第一客户端对 应的第一初始私钥、第一初始公钥,以及生成所述第二客户端对应的 第二初始私钥、第二初始公钥;所述第一客户端根据第一初始公钥确 定第一初始地址,第二客户端根据第二初始公钥确定第二初始地址; 所述第一客户端和所述第二客户端根据所述第一初始私钥、第一初始 公钥、第一初始地址、第二初始私钥、第二初始公钥和第二初始地址 完成链上好友确认和种子密钥的生成;所述第一客户端根据所述第一 初始私钥、所述第二初始公钥、所述种子密钥和通信时间戳确定第一 派生私钥、第二派生公钥和第二派生地址;所述第二客户端根据所述 第二初始私钥、所述第一初始公钥、所述种子密钥和所述通信时间戳 确定第二派生私钥、第一派生公钥和第一派生地址;所述第一客户端 和所述第二客户端根据所述第一派生私钥、所述第一派生公钥、所述 第一派生地址、所述第二派生私钥、所述第二派生公钥和所述第二派 生地址完成所述第一客户端和所述第二客户端之间消息的匿名发送。 本发明通过上述方法实现无需密钥协商分发的一次一密一地址的匿 名通信方案。
[0156]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而 非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领 域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技 术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修 改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方 案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1