大规模抗议活动中的网状消息传递:破解 Bridgefy
1. Bridgefy 通信基础
1.1 已知密钥握手
当双方已经知晓彼此的公钥时,仅需交换两条 BleHandshake 消息,且这两条消息都遵循图 1 中第一条消息的格式,其中 rq = 0。随后,加密的 AppHandShake 消息交换将照常进行。
1.2 握手条件
当两个设备进入通信范围时,握手协议会自动执行,且只有在握手完成后才能发送直接消息。只有处于物理范围内的客户端才能执行协议的 BleHandShake 部分。通过网状网络通信的设备根本不会执行握手,因此只有当它们已经从 Bridgefy 服务器获取了彼此的密钥,或者之前曾处于通信范围内时,才能交换消息。
1.3 通过 Bridgefy 服务器路由
用户首次安装应用程序时需要互联网连接,以便在 Bridgefy 服务器上进行注册。所有请求均通过 HTTPS 完成,相关 API 位于 me.bridgefy.backend.v3 包中。
注册时发送到服务器的信息由 BgfyUser 类建模,其中包含用户选择的名称、用户 ID、该用户屏蔽的用户列表,如果用户经过“验证”,还包括其电话号码。
此后,只要有互联网连接(无论用户是否经过验证),并且用户刷新应用程序,就会发起联系人请求。用户联系人的电话号码会上传到服务器,以获取也是 Bridgefy 用户的联系人列表。BgfyKeyApi 提供了从服务器存储和检索用户公钥的方法。
在线用户之间发送的消息比蓝牙消息形式更简单:BgfyMessage 实例包含发送者和接收者 ID、消息文本的 RSA 加密以及一些元数据,如时间戳和消息的送达/
Bridgefy安全漏洞分析
超级会员免费看
订阅专栏 解锁全文


被折叠的 条评论
为什么被折叠?



