searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

一种基于区块链的群组消息加密方法

2023-11-09 01:31:08
38
0

一、技术背景

        当前社交领域的即时通讯系统主要是基于中心化的服务器来提供服务,所有的用户消息都经过服务器进行中转,服务器还负责为离线用户存储离线消息。中心化即时通讯系统为用户提供了便利和稳定性,但也存在2个较为突出的缺点:1)单点故障:中心化即时通信系统依赖于中心化服务器,如果服务器出现故障,用户的通讯功能将受到影响;2)数据隐私和安全风险:用户的所有消息都经过中心服务器进行中转和存储,存在数据泄露的风险。


        针对中心化即时聊天系统的缺点,一些用户或组织选择使用基于区块链的去中心化、加密通讯系统。区块链即时通讯系统一般可简单采用非对称加密算法来实现一对一消息加密。但在群组消息加密上,若仍使用该方法,就需要对发送消息分别用所有群成员的公钥进行加密,存在大量的数据冗余,在区块链系统中需要较高的资源成本。因此,采用公共群组消息密钥,能有效解决群组消息冗余问题,但需在移除群成员时对群组密钥进行更新,否则该成员仍持有群组消息密钥而能解密、读取后续群组加密消息,未达到移除成员的目的。


        区块链的数据操作的存在公开透明性,任何对已知数据的操作都能被已移除的成员所感知,所以部分系统实现直接采用区块链链下传递群组消息密钥的方式来实现更新。该方法虽然仍保留用户消息的去中心化,但却使用中心化方法来传输重要的密钥信息,不但有违去中心化的初衷,且密钥更新存在安全风险、传输效率低。

 

        因此提出一种基于区块链的群组消息加密方法,通过区块链上的智能合约实现群组密钥的更新,支持添加和移除群成员,且所有数据存储在链上,具有去中心化、高效、安全的优点。

二、技术方案

        本技术方案是基于区块链的智能合约实现的。


        首先,在区块链上部署智能合约。该智能合约支持用户创建群组,创建群组时初始化群成员列表,并通过在智能合约上写入群主的群组消息密钥密文,将群主加入群成员列表。群组消息密钥明文为一随机数,每个群成员对应一份独立的群组消息密钥密文,使用该群成员的公钥对群组消息密钥明文进行加密生成,智能合约上存储的数据是用户公钥和群组消息密钥密文映射,存储的群组消息密钥密文信息还包括密钥类型,用于支持不同的加密方式。群主本地不存储该群组消息密钥明文和密文。可选的,群组消息密钥明文可使用非对称密钥对,则后续对群组消息的加解密操作相应使用非对称加密算法进行。


        当对用户的入群申请进行审核时,从区块链上读取群组消息密钥密文,并解密得到群组消息密钥明文。然后为该用户生成群组消息密文,并写入智能合约,加入群成员列表。可选的,对多个用户入群申请可实现一次性批量审核,减少链上数据交互。


        当移除群成员时,从智能合约中删除该成员群组消息密钥密文信息,即该用户被移除群成员列表。然后生成新的群组消息密钥密文,并获取所有群成员的公钥分别加密得到群组消息密钥密文,写入智能合约。群成员使用最新的群组消息密钥进行群消息加解密,而被移除的群成员则无法收发消息。可选的,用户可以在本地缓存所有群成员公钥信息。可选的,移除多个群成员时可使用一次性批量移除,减少链上数据交互。


        当用户发送群消息时,从区块链上读取自己的群组消息密钥密文,并解密得到群组消息密钥明文。然后使用该群组消息密钥明文对待发送消息进行加密,得到待发送消息密文,最后写入去智能合约。可选的,用户可以本地缓存群组消息密钥密文或明文,但需在接收到链上群组消息密钥密文更新事件时获取最新的数据,且需注意到群组消息密钥明文本地存储存在较大安全隐患。可选的,为解决群消息密文对区块链存储空间的占用,可不把群消息密文写入合约存储,而仅触发日志事件通知。可选的,可将群消息密文存储于其它去中心化存储中(如:IPFS),而在本区块链系统中使用群消息密文的ID进行关联。


        当用户接收群消息时,从区块链上读取自己的群组消息密钥密文,并解密得到群组消息密钥明文。然后使用该群组消息密钥明文对接收的群消息进行解密,得到群消息明文。可选的,用户可以本地缓存群组消息密钥密文或明文,但需在接收到链上群组消息密钥密文更新事件时获取最新的数据,且需注意群组消息密钥明文本地存储存在较大安全隐患。


        此外,群主也可以定期或不定期更新群组消息密钥,已减少群组消息密钥泄露的风险。

        在用户同智能合约进行交互时,智能合约会对用户的权限进行验证。权限控制除了保护智能合约的操作安全(如:解散群组)外,还可扩展实现一些附加功能,如:支持群主为群成员设置审核入群申请、移除成员、更新群组消息密钥的权限。

0条评论
0 / 1000
w****n
14文章数
1粉丝数
w****n
14 文章 | 1 粉丝
w****n
14文章数
1粉丝数
w****n
14 文章 | 1 粉丝
原创

一种基于区块链的群组消息加密方法

2023-11-09 01:31:08
38
0

一、技术背景

        当前社交领域的即时通讯系统主要是基于中心化的服务器来提供服务,所有的用户消息都经过服务器进行中转,服务器还负责为离线用户存储离线消息。中心化即时通讯系统为用户提供了便利和稳定性,但也存在2个较为突出的缺点:1)单点故障:中心化即时通信系统依赖于中心化服务器,如果服务器出现故障,用户的通讯功能将受到影响;2)数据隐私和安全风险:用户的所有消息都经过中心服务器进行中转和存储,存在数据泄露的风险。


        针对中心化即时聊天系统的缺点,一些用户或组织选择使用基于区块链的去中心化、加密通讯系统。区块链即时通讯系统一般可简单采用非对称加密算法来实现一对一消息加密。但在群组消息加密上,若仍使用该方法,就需要对发送消息分别用所有群成员的公钥进行加密,存在大量的数据冗余,在区块链系统中需要较高的资源成本。因此,采用公共群组消息密钥,能有效解决群组消息冗余问题,但需在移除群成员时对群组密钥进行更新,否则该成员仍持有群组消息密钥而能解密、读取后续群组加密消息,未达到移除成员的目的。


        区块链的数据操作的存在公开透明性,任何对已知数据的操作都能被已移除的成员所感知,所以部分系统实现直接采用区块链链下传递群组消息密钥的方式来实现更新。该方法虽然仍保留用户消息的去中心化,但却使用中心化方法来传输重要的密钥信息,不但有违去中心化的初衷,且密钥更新存在安全风险、传输效率低。

 

        因此提出一种基于区块链的群组消息加密方法,通过区块链上的智能合约实现群组密钥的更新,支持添加和移除群成员,且所有数据存储在链上,具有去中心化、高效、安全的优点。

二、技术方案

        本技术方案是基于区块链的智能合约实现的。


        首先,在区块链上部署智能合约。该智能合约支持用户创建群组,创建群组时初始化群成员列表,并通过在智能合约上写入群主的群组消息密钥密文,将群主加入群成员列表。群组消息密钥明文为一随机数,每个群成员对应一份独立的群组消息密钥密文,使用该群成员的公钥对群组消息密钥明文进行加密生成,智能合约上存储的数据是用户公钥和群组消息密钥密文映射,存储的群组消息密钥密文信息还包括密钥类型,用于支持不同的加密方式。群主本地不存储该群组消息密钥明文和密文。可选的,群组消息密钥明文可使用非对称密钥对,则后续对群组消息的加解密操作相应使用非对称加密算法进行。


        当对用户的入群申请进行审核时,从区块链上读取群组消息密钥密文,并解密得到群组消息密钥明文。然后为该用户生成群组消息密文,并写入智能合约,加入群成员列表。可选的,对多个用户入群申请可实现一次性批量审核,减少链上数据交互。


        当移除群成员时,从智能合约中删除该成员群组消息密钥密文信息,即该用户被移除群成员列表。然后生成新的群组消息密钥密文,并获取所有群成员的公钥分别加密得到群组消息密钥密文,写入智能合约。群成员使用最新的群组消息密钥进行群消息加解密,而被移除的群成员则无法收发消息。可选的,用户可以在本地缓存所有群成员公钥信息。可选的,移除多个群成员时可使用一次性批量移除,减少链上数据交互。


        当用户发送群消息时,从区块链上读取自己的群组消息密钥密文,并解密得到群组消息密钥明文。然后使用该群组消息密钥明文对待发送消息进行加密,得到待发送消息密文,最后写入去智能合约。可选的,用户可以本地缓存群组消息密钥密文或明文,但需在接收到链上群组消息密钥密文更新事件时获取最新的数据,且需注意到群组消息密钥明文本地存储存在较大安全隐患。可选的,为解决群消息密文对区块链存储空间的占用,可不把群消息密文写入合约存储,而仅触发日志事件通知。可选的,可将群消息密文存储于其它去中心化存储中(如:IPFS),而在本区块链系统中使用群消息密文的ID进行关联。


        当用户接收群消息时,从区块链上读取自己的群组消息密钥密文,并解密得到群组消息密钥明文。然后使用该群组消息密钥明文对接收的群消息进行解密,得到群消息明文。可选的,用户可以本地缓存群组消息密钥密文或明文,但需在接收到链上群组消息密钥密文更新事件时获取最新的数据,且需注意群组消息密钥明文本地存储存在较大安全隐患。


        此外,群主也可以定期或不定期更新群组消息密钥,已减少群组消息密钥泄露的风险。

        在用户同智能合约进行交互时,智能合约会对用户的权限进行验证。权限控制除了保护智能合约的操作安全(如:解散群组)外,还可扩展实现一些附加功能,如:支持群主为群成员设置审核入群申请、移除成员、更新群组消息密钥的权限。

文章来自个人专栏
区块链
5 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0