nostr 协议传递的所有消息都带有签名,也即都跟公钥有关。
原文作者:AurtrianAjian
原文来源:Twitter
“nostr” 是其全名的缩写,这个名字直译过来就是 “由转发器传递的速记和其它内容”。
其创始文档第一句是:“可以一举创建抗审查的全球 ‘社交’ 网络的极简开放协议”。
我更喜欢称之为 “完全基于公钥的,抗审查的消息传输协议”
怎么说呢?往下读。
@AurtrianAjian参与 nostr 协议的角色有两种:客户端(client)和转发器(relay,也可以理解为服务端)。彼此通信,但同类互不通信。 用户直接以公钥作为自己的身份,使用客户端向转发器 拉取/递送 消息:在递送消息时,用户加上签名以表明消息来自某个公钥;拉取消息时,使用公钥表示拉取该公钥发出的所有信息。
递送消息相当于 “发帖”;拉取消息则相当于 “关注” —— 社交网络的基本要素就实现了。 但是,我们已经有很多社交网络 协议/产品 了。nostr 到底有什么特殊的? 抗审查;极简;完全基于公钥。
抗审查: 客户端可以使用多个转发器。只要发帖者(被关注者)跟接收者(关注者)之间有共同的转发器,接收者就能收到帖子。 这种抗审查性的一个后果是,你的粉丝关系永远也不会丢(你的关注关系也不会丢,这是一体两面)。因为所有的身份都基于公钥,而关注的信息可以独立保存、不依附于某个转发器。
极简: 从上述架构中,你完全看不到转发器的经济激励。实际上 nostr 也没有规定转发器的义务:转发器可以存储所有消息,也可以只存储一部分,也可以定期删除。这些都是任意的。甚至在协议层也没有寻找用户的功能。 意思很简单:许多问题不必在协议层解决;nostr 不会是用户唯一可用的通讯手段。
完全基于公钥: nostr 协议传递的所有消息都带有签名,也即都跟公钥有关。 以身份为公钥,让用户的身份不必依赖于任何一个或多个服务端,彻彻底底地属于用户自己,也就是所谓的 “身份自主”;同时,直接使用公钥也使 nostr 协议有许多现成的密码学工具可用。
举个例子:nostr 协议还实现了端到端加密通信的功能(NIP-04),其原理就是 ECDH(基于椭圆曲线的密钥交换):通信的双方使用己方的私钥乘以对方的公钥,得出作为对称加密的密钥对消息加密;只要私钥不泄露,消息就是安全的。由于双方都是公钥,实现起来极为简单、直接。试用:sendstr.com
这就是为什么我把 nostr 称为 “基于公钥的消息传输协议”,因为整套协议就解决一个问题:怎么让一个公钥的消息发送出去、发给特定的人、发给某些人;其余东西都是次要的。有些特性已经可以做到了,还不能做到的,也显示有很大的挖掘空间。 这事重要吗?不重要吗?
非对称密码学(公钥密码学)的出现标志着现代密码学的诞生,也是我们今日的互联网的基础之一。许多保护隐私的、验证身份的技术,都离不开公钥(比如说:对称加密会有密钥递送问题,而基于公钥密码学的加密就没有这个问题)。 如果不使用公钥,这些技术跟用户就始终有一层隔膜。用了公钥,大门才能打开。
那么,是什么导致了用户鲜少直接使用公钥呢? 我自己认为问题可能有两个:一是公钥本身不是(不附带)通讯机制,不保证消息送达;二是女巫攻击问题,如果用户直接使用公钥,用户可以生成无数个公钥,提供服务的服务端要担心资源耗尽的问题。 我猜想第二方面的原因更加根本。
所以,在过去,我们要访问网站时,往往需要填写邮箱,甚至需要填手机号,直接利用(同时嵌进了)暴力机器(手机号直接关联个人真实信息和实时位置)。究其原因,不外乎是上面两者。 但是,比特币和闪电网络的出现让抗女巫机制出现了革命性的变化;nostr 的出现,则向 “基于公钥的通讯” 发起了冲击。
根据上面的描述,你或许会想起许多东西:曾经尝试用以太坊的地址(公钥)作为通信身份的 Status;许许多多的分布式存储或利用分布式存储来实现某种特性的项目;号称要建立去中心化身份的项目 …… 在你知道的项目中,哪一个比 nostr 更加简洁?哪一个比 nostr 更加彻底、坚决?
没有比公钥本身更加去中心化的身份,它等同于身份的自主;把公钥圈养在一个有限的空间里,是没有意义的。 数据的自主存储是韧性最强的存储。 没有比任意路径更灵活的传输。 Nostr:基于公钥的、极简的、抗审查的信息传输协议。
要了解 Nostr,请看这个 Github 库的 readme(创始文档)以及其中的 NIP(“nostr 的实现可能性”,非常简洁):https://t.co/sT8nxbjRTH