《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Berty 是一个开放、安全、离线优先、点对点和零信任消息传递应用程序。
一般 React Native 要求
iOS 开发要求
安卓开发需求
Berty旨在用作日常消息传递应用程序。尽管如此,它的构建主要服务于以下用例:
Berty 协议带有一个通用但功能齐全的 SDK,允许开发人员编写对等应用程序。您可以只专注于您的应用程序的高级功能,我们将处理其余的(加密、身份、网络路由、组管理、帐户管理、设备管理、应用程序生命周期)。
Berty 协议的主要概念称为“组”,一个虚拟的地方,多个设备可以使用OrbitDB共享消息和元数据,它本身依赖于星际文件系统 ( IPFS )
得到它:
git clone https://github.com/berty/berty
Berty是一种匿名、安全的点对点协议,不需要互联网连接即可运行。
有一个使用高级密码学的协议和一个构建在该协议之上的信使应用程序。
用途:
ipfs-log 最初是为orbit-db - IPFS 上的分布式对等数据库创建的。该库旨在为 Go 中的 JavaScript 版本提供完全兼容的端口。
这段代码的大部分来自 JavaScript 的ipfs-log 库。
这个 repo 旨在为 Android、iOS 和 React-Native 提供包,允许人们在移动设备上运行和使用 IPFS 节点。它也是一个讨论在移动设备上运行 IPFS 的限制以找到解决方案和交流技巧的地方。
路线图
本文档提供了 Berty 协议的技术描述。Berty 协议提供同一帐户拥有的设备之间的安全通信、一对一对话中的联系人之间的通信以及多成员组中的多个用户之间的通信。本文将解释这些点如何以分布式和异步方式实现,无论是否使用 IPFS 和直接传输(如 BLE)访问互联网。它还将描述 Berty 协议如何为所有交换的消息提供端到端加密和完美的前向保密。
影响
Berty 将 IPFS 用于即时消息传递的特定目的。对等网络用于即时消息有两个主要优点:
然而,它也带来了一些技术限制:
集合点
集合点是对等网络上两个设备可以相遇的易失性地址。对等点可以在给定的集合点上注册他们的对等点 ID 和/或获取已注册对等点的列表。通过这种方式,例如,需要连接在一起以在对话中交换消息的对等方可以找到彼此。
对等点需要能够使用先前共享的秘密为给定的集合点自己生成相同的地址。
在 Berty 协议中,集合点的地址由两个值生成:
基于时间的令牌的生成遵循RFC 6238 的核心原则。
// golang
func rendezvousPoint(id, seed []byte, date time.Time) []byte {
buf := make([]byte, 32)
mac := hmac.New(sha256.New, seed)
binary.BigEndian.PutUint64(buf, uint64(date.Unix()))
mac.Write(buf)
sum := mac.Sum(nil)
rendezvousPoint := sha256.Sum256(append(id, sum...))
return rendezvousPoint[:]
}
Berty 协议中有两种类型的集合点:
—END—
开源协议:Apache-2.0, MIT
开源地址:https://github.com/berty/berty
留言与评论(共有 0 条评论) “” |