跳至内容
返回 Nymchat

知识库 与人交谈

抗量子加密

Nymchat 用户之间的私人消息和群聊可以加密,以便 即使量子计算机问世,今天记录它们对攻击者来说也没有什么好处。

它解决的问题

普通 Nostr 加密 — NIP-44, 这是什么 私人讯息群聊 建立在 - 有两半。那一半 实际上打乱文本(ChaCha20、HMAC-SHA256、HKDF)对于量子来说表现得很好 电脑。同意密钥的一半则不同意。

该关键协议是 secp256k1 上的椭圆曲线 Diffie-Hellman,与比特币使用的数学相同。 Shor 的算法彻底解决了这个问题。任何针对公钥运行它的人都可以恢复 私钥,以及该密钥产生的每个共享秘密。

现在收获,稍后解密

这并不是量子计算机出现时才出现的问题。对手足够多 存储可以记录加密流量 今天,坐在上面,多年后解密。 你现在发送的任何当时仍然重要的内容都已经暴露了。这就是具体的 攻击此功能失败。

它是如何运作的

Nymchat 将 NIP-44 消息格式完全保留在一边,它已经使用的关键协议是未受影响的;周围添加了第二个独立的协议,因此每条消息有两个关键交换,而不是一个:

  • 标准 secp256k1 ECDH,和以前一样;
  • ML-KEM-768,后量子算法 NIST 标准化为 FIPS 203。 它的安全性依赖于格子问题,而肖尔算法没有触及这一点。

两者是 混合,不混合该消息是通过NIP-44加密的,正如它一直一样,然后完成的加密文本在后量子层内第二次封闭 - ChaCha20-Poly1305,从ML-KEM共享秘密中加密。

像 X-Wing 或 Signal 的 PQXDH 这样的组合器将两个秘密混合成一个密钥,而不是 Nymchat。Nymchat 并非如此,原因更为实用,而不是加密:混合需要原始 ECDH 输出,浏览器扩展或远程签名器永远不会将其交付回来 - 它返回了一个完成的加密文本,这是持有密钥的整个点,应用程序无法到达它。

重要财产是相同的:结果是 至少像最强的一半一样强大如果网格加密结果比预期更弱,打破ML-KEM只会切断外层,并留下今天的NIP-44在底下。

每条消息都会进行新的后量子交换,因此恢复一条消息的密钥即可揭示 与其他人无关。

后量子的一半需要一个自己的钥匙,而这个钥匙来自哪里是决定整个东西是否值任何东西的。 不是 工作从你的 nsec一个打破经典的一半的量子计算机可以恢复你的 nsec 从你的公共密钥,以及任何从 nsec 通过一个发表的公式出来 - 两个锁由一个打破打开。 后量子代码 对于每个帐户,一次,从无公开值暴露的随机字节。 nympq1… 坐在你的旁边 nsec 它不是密码,不是第二次登录:它是你可以保存的关键材料,就像密码一样。 nsec.

没有什么可以打开的

这不是一个设置。后量子加密就是 Nymchat 与 Nymchat 对话的方式。 与普通加密一样,它与其他一切通信的方式也是如此。它自动适用于 与其他 Nymchat 用户的每条私人消息和群聊。

设置 › 隐私与安全显示它是否活跃,它目前可以访问多少个联系人,但仅作为信息 - 没有切换。

浏览器扩展(NIP-07)或远程签名器(NIP-46)的登录永远不会将您的身份密钥交给应用程序,这就是使用一个的整个点 - 它不需要。加密的两半保持分开:您的签名器完成了它一直做的部分,应用程序与您的恢复代码完成后量子部分,它直接持有。

您已经拥有的任何东西都没有受到影响. 您的历史记录中的每条消息都可在任何设备上读取,除了您的 nsec,就像以前一样,并保持这种方式为账户的生命。 nympq1… 恢复代码是从现在起写的量子抵抗材料:新消息,以及同步设置和档案。

因此,一个设备必须保持该代码,才能打开这些代码,现在添加一个设备需要一个额外的步骤。 nympq1… 它是每台设备一次,而不是每次登录一次。那步不是我们未能删除的摩擦:一个可能自行到达新设备的代码将不得不在普通消息中旅行,而这个消息正是攻击者这个功能存在于停止录制的原因。

该 app 会生成 nympq1… 代码为你,所以没有什么可选择,没有什么可发明。 查看或编辑 Nym 的详细信息然后 揭示这个 nym 的私钥和恢复代码它坐在你的下面。 nsec,同樣的顯示和複製按鈕. 你從不需要想到它,直到你添加第二個裝置的那一天。

与此同时,一个未链接的设备不会被锁定,它会继续阅读旧加密中所写的一切,并继续正常发送,一旦链接它,它就会回来,打开它以前无法读到的量子抵抗消息。

你的其他设备

第二個裝置需要兩件事:應用程式的最新版本,以及 nympq1… 一个较旧的构建继续工作 - 它没有被切断 - 但它无法读取当前的格式,所以当它仍然在帐户上时,您保留的副本会回到它可以的较旧的版本。

你和谁一起得到它

每个Nymchat客户端都会发布一个小型的签名,到期公告,并在拥有一个时包括其后量子密钥。为某人持有有效的公告是使应用程序使用更强的交换。

什么攻击者谁控制一个传递器 做是保留公告,所以发件人永远不会看到一个密钥,然后返回常规加密,这值得明确地说。 它对这些消息的后量子保护费用;它不能使一个不可读,它不能让你接受一个不是你的密钥。

这些公告持续一周,并在您使用应用程序时每天更新自己. 如果您远离应用程序更长时间,您的消息会消失,您会被读取作为一个普通的Nostr客户端一段时间:在那个差距中发送给您的消息以正常的方式加密,而不是以量子抵抗的方式。

其他人都像以前一样继续工作。 Bitchat 用户和任何其他我们的客户获得标准 NIP-17,不变. 当你向Nymchat以外的任何人发送消息时,没有什么会被打破。

后量子信息 取代 标准的而不是与它一起发送。 发送两者都是毫无意义的:攻击者只会破坏较弱的副本。

副本寄至 也获取它 - 您的其他设备读取的内容, 它背后的存档以及您的同步设置,它们以相同的方式传输并携带您的 对话列表、群组密钥和消息历史记录。将其中任何一个保留在旧的上 加密会使它们成为您存储的最弱的东西:任何破解的人都可以读取 今天的密码学,无论消息本身被多么仔细地密封。

保持 Bitchat 的可读性

Bitchat 无法读取 Nymchat 的消息格式,因此历史上 Nymchat 发送了第二份副本 以 Bitchat 格式向任何可能使用它的人发送的每条消息 — 对于某人来说 你从未收到过消息,指的是所有人。

上述公告使这种猜测变得不必要。如果有人发表了一篇文章,那么他们就是 运行 Nymchat,因此 Bitchat 副本将被删除,仅发送更强的消息。如果他们 没有,什么都没有改变:他们仍然接收两种格式,和以前一样,所以什么都没有 您发送的内容可能会变得不可读,因为应用程序对某人使用的客户端猜测错误。

与加密本身一样,这是自动的并且无需设置。

为什么不只是从公共活动中猜测

Nymchat 可以从公共渠道活动中推断出谁在运行什么,并且它会发现 人们早点。但这种推论有时是错误的,这里错误意味着 向某人发送一条消息,他们的应用程序无法打开,没有错误,也无需重试。已发表 公告有作者签名,无法伪造,所以用它来代替。

在群聊中

群组消息已针对每个成员单独加密,因此群组可以混合使用这两种类型 免费 - 客户支持的成员获得更强的加密,其余的获得 标准的,无论哪种方式,小组都可以正常工作。

因此,只有在以下情况下,群组消息才会被标记为抗量子的: 每一个 会员 就这样收到了。即使一份副本使用了标准交换,该副本也具有相同的 消息,因此整个消息仅受到其最弱副本的保护。该应用程序说 “对 10 个成员中的 8 个具有量子抗性”而不是四舍五入。

群聊也保留了他们的 轮换一次性钥匙,隐藏组中的成员 来自观看接力赛的任何人。这种保护不受影响并且完全按照原来的方式工作。

阅读徽章

每個私人訊息和群組訊息都帶有小小的訊息。 点击任何一个标记解释了它显示的内容。

标记意义
挂锁谁发送的——签名是否与声称的作者相符。
双方都持有自己的后量子代码,并且在这个消息的每一个副本上都使用了混合交换。
虚线盾牌部分量子抵抗 - 一个群组消息只有一些成员收到一个受保护的副本. 因为其他人携带相同的文本,将消息视为通常加密的整体。
跨越盾牌标准NIP-44加密 - 仍然是端到端加密的,今天除了参与者之外,仍然是不可读的。
无护盾不是加密的消息. 公共频道的帖子可以根据设计在传输器上读取,因此没有加密标记。

一个缺失的标记将是模糊的 - 它同样可能意味着 “不是量子抵抗”, “这个构建太老”,或 “指示器被打破” - 和一个无法区分的安全指示器与破坏的没有告诉你什么。

它坐在封锁旁边,而不是取代它,因为两者回答不同的问题,一个消息可以是没有另一个 - 量子抵抗但来自未经验证的发送者,或验证但传统加密。

更老的消息永久地保持打透盾牌。 在双方在量子抵抗构建之前发送的任何东西都与常规交换密封,并且加密文本已经存在于传输器上 - 它不能在事实之后重新密封。

它不做什么

这可以保护 内容 您的消息。它并不能使每一个部分 Nostr 是量子证明的,并且值得精确地了解其中的差异。

  • 签名仍然是 secp256k1。 Nostr 身份与 Schnorr 签署 相同的曲线。已经拥有一台可用量子计算机的对手可以伪造一个 实时签名并冒充某人。混合交换停止的是阅读 记录的流量——机密性,而不是身份验证。
  • 没有前瞻性秘密。 兩個鑰匙都是長壽的:NIP-44從您的鑰匙中得出它的鑰匙。 nsec,并且后量子层封装到你的背后的ML-KEM键。 nympq1… 每个消息都获得了新鲜的封装,所以一个消息的密钥不会打开下一个 - 但最终持有这些长期密钥的人可以读取他们所记录的一切,而不仅仅是接下来的。 截止消息 减少,这就是为什么这个功能的目的是收获-现在-解密-后来,而不是一个被抓住的密钥。
  • 元数据不变。 中继仍然看到事件被发送到 一把钥匙,以及大概的时间。这是由 礼品包装和一次性钥匙,不是由 这个。
  • 蓝牙网格不被覆盖。 传递过的信息 《Mesh》 旅行在一个噪音XX会话,这是强大的,当前加密,但一个经典的密钥交换 - 所以它不携带后量子层,即使在两个Nymchat用户之间。 标志反映了这一点:在网格上传递的消息没有被标记为量子抵抗。
  • 您的恢复代码是保留的第二件事。 它始于 nympq1 你会发现它在 你的Nym的细节在同一面板上,你的 nsec — 点击你的 nym,然后 “揭示这个 nym的私钥和恢复代码”。 nsec 它本身不会重建你的后量子密钥 - 这正是为什么它工作 - 所以如果没有设备持有该代码,而你没有它的副本,它被密封的东西不能再次打开。 nsec.
  • 它无法保护对方的行为。 收件人仍然可以截图, 复制或保留消息。

这与 Signal 在其后量子升级中采取的立场相同:修复密钥交换 现在,因为这是攻击者可以追溯操作的部分,并将签名视为 标准赶上时的单独问题。

检查工作

ML-KEM的实施正在对官方进行测试 测试 vector NIST 发布FIPS 203因此,它被对标准本身进行检查,而不仅仅是对自身进行检查。Web应用程序和移动应用程序还被保留在一组共享的测试向量中,这就是保证一个写的消息可以被另一个读取的。

两者都是 开源 根据 AGPL-3.0 和 Web 应用程序的构建是可复制的 - 参见 验证构建.

走得更深: 后量子密钥协议在Nymchat 关于 ML-KEM 密钥如何在没有目录的情况下分发的技术白皮书、结合这两个密钥交换的精确构造以及被拒绝的设计。