Ente Locker 共享功能完全指南:端到端加密下的用户共享、公开链接与 Ente Paste
2026/9/20 10:23:53 网站建设 项目流程

Ente Locker 共享功能完全指南:端到端加密下的用户共享、公开链接与 Ente Paste

【免费下载链接】ente💚 End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente

本指南系统讲解 Ente Locker 的全部共享能力:与 Ente 用户安全共享集合(端到端加密)、通过公开链接与任何人(包括非 Ente 用户)分享集合与单个条目,以及使用 Ente Paste 快速分享一次性敏感文本。读完本文,你将掌握三种共享方式的适用场景、完整操作流程、密钥流转与安全边界,并能在真实使用中做出正确的共享决策。

共享的三种方式总览

Ente Locker 的所有共享数据都保持端到端加密(E2EE)。数据在设备上加密后才上传到 Ente 服务器,服务器与第三方都无法读取明文内容。围绕这一原则,Locker 提供了三种互补的共享途径:

共享方式目标对象是否需要对方注册 Ente典型场景
与 Ente 用户共享集合拥有 Ente 账号的人家庭成员、可信协作者之间的私密共享
集合公开链接任意人在浏览器中分享一组条目的只读视图
条目公开链接任意人把某个具体文档单独发给不使用 Ente 的人
Ente Paste任意人一次性、24 小时自毁的短文本传递

在开始之前,需要先理解 Locker 的共享粒度模型:与 Ente 用户共享的最小单位是"集合"(Collection),而不是单个条目。若想与某个 Ente 用户共享单个条目,需先把条目放入某个集合,再共享整个集合;而公开链接则同时支持条目级与集合级两种粒度。

与 Ente 用户共享集合

工作原理

当您把一个集合共享给另一位 Ente 用户时,底层发生的流程是:

  1. 您的设备使用对方的公钥加密共享密钥;
  2. 只有对方的设备能够解密这些密钥;
  3. 对方在自己的 Locker 应用中收到共享集合;
  4. Ente 服务器全程无法接触解密后的内容。

这个流程在 Locker 的共享界面中有直接的源码对应。在 share_collection_bottom_sheet.dart 中,所有者通过"添加邮箱"入口(addEmail)发起共享,随后界面会展示所有参与者的列表(_buildShareesList),每个参与者显示其邮箱、头像以及角色徽标,并在人数超过 4 人时自动出现滚动条——这与文档所述"查看谁有访问权限"的功能一一对应。

共享一个集合

  1. 打开要共享的集合;
  2. 点击共享按钮;
  3. 选择Share with Ente user
  4. 输入对方的 Ente 邮箱地址;
  5. 点击Share

共享成功后,该集合中的所有条目都会一并共享给对方。

管理共享集合

查看谁有访问权限:打开已共享的集合 → 点击共享按钮 → 查看访问者列表。共享底部弹窗(ShareCollectionBottomSheet)的标题即"共享集合"(shareCollection),其"已共享给"(sharedWith)区块就是访问者列表的具体实现。

移除访问权限:打开集合 → 点击共享按钮 → 点击对方邮箱右侧的三个点 → 选择Remove access→ 确认移除。

接收共享集合

当别人共享集合给您时:

  1. 您会收到通知;
  2. 共享集合出现在您的Shared with me(与我共享)分区中;
  3. 点击即可查看共享的条目。

通过公开链接分享集合与条目

工作原理

公开链接(Public Links)让您可以把单个条目或整个集合分享给任何人,对方无需 Ente 账号,直接在浏览器中打开即可查看。其安全模型的核心是:

  1. 创建链接时生成一个包含解密密钥的唯一 URL;
  2. 任何持有链接的人都能在浏览器中查看内容;
  3. 密钥位于 URL 的 fragment(#之后)部分,永远不会发送给 Ente 服务器
  4. 查看内容不需要任何 Ente 账号。

这一点在源码中有直接佐证。在 collections_service.dart 的getPublicUrl方法中,公开 URL 由服务端生成的url与 Base58 编码后的集合密钥拼接而成:

String getPublicUrl(Collection c) { final PublicURL url = c.publicURLs.firstOrNull!; final Uri publicUrl = Uri.parse(url.url); final cKey = getCollectionKey(c.id); final String collectionKey = Base58Encode(cKey); final String urlValue = "${publicUrl.toString()}#$collectionKey"; return urlValue; }

密钥被编码进#后的 fragment,浏览器不会把 fragment 随请求发送到服务器,从而实现了"链接在手、密钥在手"的模型。

公开链接的可配置属性

公开链接并不只是一个裸 URL。在 Locker 的PublicURL数据模型中(见 public_url.dart),每个链接都携带一组服务端可配置的属性:

属性类型默认值含义
urlString-链接地址
deviceLimitint-允许访问的设备数上限
validTillint0过期时间戳(微秒),0 表示永不过期
enableDownloadbooltrue是否允许查看者下载内容
enableCollectboolfalse是否允许向该链接投递/收集内容
enableJoinboolfalse是否允许通过链接加入集合
passwordEnabledboolfalse链接是否受密码保护
nonce/opsLimit/memLimitString? / int? / int?null密码加密时的密钥派生参数

其中hasExpiryisExpired两个 getter 表明:当validTill非零时链接存在过期时间,过期后(validTill早于当前时间)链接即失效。管理链接的界面(ManageSharedLinkWidget,见 manage_links_widget.dart)还提供了链接过期时间与设备数上限的选择器,说明链接并非一次性创建就固定不变,而是可以持续管理。

创建公开链接

为单个条目创建

  1. 长按要分享的条目;
  2. 点击共享按钮;
  3. 点击Share link
  4. 复制并分享链接。

为集合创建

  1. 打开要分享的集合;
  2. 点击共享按钮;
  3. 点击Share link
  4. 复制并分享链接。

在共享底部弹窗的源码中,所有者操作区(_buildOwnerActions)会根据集合是否已有公开链接来切换按钮文案:没有链接时显示"创建链接"(linkLabel),已存在链接时显示"管理链接"(manageLink)。创建成功后立即把完整 URL(含 fragment 密钥)交给系统分享面板:

Future<void> _createAndSharePublicLink() async { final result = await CollectionActions.enableUrl(context, widget.collection); if (result && mounted) { setState(() {}); if (_hasPublicLink) { final url = CollectionService.instance.getPublicUrl(widget.collection); await shareText(url, context: context); } } }

另外值得注意的是,_buildOwnerActions中公开链接入口仅对非"未分类"(uncategorized)类型的集合显示——未分类集合不提供公开链接。

删除公开链接

删除条目的链接

  1. 长按条目;
  2. 点击共享按钮;
  3. 点击Delete link
  4. 确认删除。

删除集合的链接

  1. 打开集合;
  2. 点击共享按钮;
  3. 点击Delete link
  4. 确认删除。

删除后,链接立即失效,任何人都无法再访问。

用 Ente Paste 分享敏感短文本

当您需要把一段敏感文本快速交给他人、又不希望留下持久副本时,Locker 会引导您使用 Ente Paste:

  • 文本在浏览器中完成加密,Ente 只见过密文;
  • 链接在被读取一次后自动销毁,或在24 小时后过期,先到先失效;
  • 每次分享都是一次性链接,非常适合密码、验证码、临时凭据等场景。

Locker 的定位是"存储"(storage),Paste 的定位是"传输"(transit)——两者配合使用。完整的 Paste 使用说明参见 Ente Paste 介绍 与 发送你的第一条 Paste,其加密原理见 加密如何工作,常见问题见 Ente Paste FAQ。

内容共享能力对照表

不同内容类型支持的共享方式各有不同,官方给出的对照关系如下:

内容与 Ente 用户共享公开链接共享Ente Paste
集合(Collections)
条目(Items)
文本(Text)

据此可以总结出选择原则:想与其他 Ente 用户共享,请先把条目组织进集合再共享集合;想与任何人(包括非 Ente 用户)共享条目或集合,请创建公开链接;想共享一段短文本,请使用 Ente Paste。

安全模型与注意事项

与 Ente 用户共享:密钥按账号单独加密

共享给另一位 Ente 用户时,解密密钥会专门为对方的账号加密,只有对方的设备可以解密查看内容。Ente 员工、被入侵的服务器、中间人攻击者都无法读取明文。

公开链接:密钥在 URL 中,链接即权限

公开链接把解密密钥内嵌在 URL 中(位于 fragment),这意味着:

  • 任何拿到链接的人都能查看内容,链接可以被随意转发;
  • 无法追踪"谁"查看了链接——Ente 为保护隐私不追踪查看者身份,只能告知有多少设备访问过该链接;
  • 如果通过公开链接分享了密码等敏感信息,请务必在使用后删除链接;
  • 链接不用时应及时删除。

撤销与生命周期

  • 当您移除某个 Ente 用户的访问权限后,对方立即失去查看能力,内容从其 Locker 中消失;
  • 删除公开链接后,链接立即失效;公开链接的撤销与用户权限的撤销相互独立,需要分别处理;
  • 更新已共享条目时,接收方下次打开即可看到最新内容,但不会收到更新通知;公开链接的查看者下次访问时看到的也是当前版本;
  • 若您删除一个已共享的集合:作为所有者,集合会从所有共享用户的账号中移除;作为查看者,您只是把自己从共享集合中移除,所有者与其他用户不受影响;
  • 如果所有者删除账号,其所有共享集合将对共享用户不可访问。需要持续访问时,应提前请所有者转移所有权,或自行保存重要条目的副本。

相关阅读

  • 与用户共享集合的详细教程
  • 公开链接的详细教程
  • 共享 FAQ:涵盖加密如何工作、能否查看访问者、如何撤销访问等高频问题
  • 加密原理:XChaCha20/XSalsa20 + Poly1305 + Argon2id 的底层实现
  • Ente Paste 文档:一次性文本共享的完整说明

【免费下载链接】ente💚 End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询