资讯详情

资讯详情

Ente Paste 一次性加密文本分享实战指南:从创建、分享到打开完整流程

Ente Paste 一次性加密文本分享实战指南从创建、分享到打开完整流程【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/enteEnte Paste 是 Ente 云端到端加密云服务仓库项目名为 ente中用于分享短敏感文本的 Web 应用输入最多 4,000 字符的文本浏览器本地加密后仅上传密文生成一个一次性、24 小时自毁的链接。本指南将带你完整走一遍发送方与接收方两侧的完整流程创建 paste、可选密码保护、三种链接分享方式复制 / 系统分享面板 / QR 码以及接收方打开、解密与常见报错的处理。读完本文你将能独立完成一条敏感信息的端到端加密传递并理解其背后的加密与一次性消费原理。Paste 是什么设计定位与使用场景Ente Paste 是一个 Web 应用入口为 paste.ente.com专门用于分享短小敏感文本——例如 API Key、恢复码、服务器密码、配置片段或临时私密笔记且不希望在聊天记录或邮件里留下副本。核心特性无需账号创建和打开 paste 都是匿名的没有登录流程文本专用不支持二进制数据或文件仅支持纯文本4,000 字符上限输入框左下角的计数器实时显示已用字符数一次性打开第一个成功打开链接的人读到文本后paste 即被销毁24 小时自毁即使无人打开创建 24 小时后服务端也会删除密文。从仓库代码可以验证这些限制是硬性的MAX_PASTE_CHARS 4000定义于 web/apps/paste/src/paste.ts#L4-L5且注释明确指出复制该常量以避免加载整个 WASM。如果文本超过限制前端会直接映射到text_too_long错误提示 Paste is limited to 4000 characters见 web/apps/paste/src/paste.ts#L7-L11。典型使用场景包括一次性密钥交接API Key、恢复码、应用密码、签名密钥、团队之间的连接串或短配置片段交接、不希望被聊天记录永久保留的简短说明以及一切贴进聊天框就会后悔的内容。如果需要相同类型的密钥进行持久存储官方文档建议改用 Ente Lockerdocs/docs/locker/——Paste 定位是传输中for transit而非存储。创建一条 Paste发送方操作步骤打开 paste.ente.com。点击文本框并输入内容。左下角计数器显示已用字符数上限 4,000接近上限时会高亮提示。可选点击计数器旁的锁形图标开启密码保护详见下文密码保护章节。点击发送按钮输入框右下角的箭头图标。若开启了密码保护在弹出的对话框中输入两次密码然后点击Create。创建完成后页面会显示你的一次性链接one-time link。官方文档中有一条关键提示docs/docs/paste/getting-started.md文本在任何网络请求离开浏览器之前就已本地加密。Ente 的服务器永远不会看到明文或解密密钥。从源码看前端创建流程由useCreatePaste钩子实现web/apps/paste/src/use-paste.ts#L21-L54它调用 WASM 客户端的create(window.location.origin, inputText, password)方法返回的对象包含url与passwordRequired两个字段失败时通过createPasteErrorMessage将底层错误映射为人类可读提示。加密逻辑本身位于 Rust 实现的PasteClient来自ente-paste-wasm包前端只负责调用。密码保护Password protection密码保护的 paste 要求接收方在解密文本前输入密码。关键特性密码不存储在 Ente 服务器上也不嵌入链接中密码与链接分开传输通常走不同渠道。适用场景希望链接与读取所需的秘密存放在不同位置。例如链接发邮件密码发 Signal或通过电话口头念出密码。开启方式发送前点击字符计数器旁的锁形图标图标从打开变为关闭。点击发送后Ente 会提示输入密码输入两次相同密码并点击Create。密码如何增强安全性普通 paste 由 URL fragment 中的12 字符随机 key保护。任何拿到完整链接的人都能解密此时链接本身就是秘密。密码保护的 paste 将秘密一分为二链接中的 12 字符 fragment通过独立渠道传输的密码。只截获链接的攻击者无法解密还需拿到密码。为了抵抗离线暴力猜测Ente 使用 Argon2id。服务端对 KDF 成本参数的校验可以从源码直接验证在 server/ente/paste.go#L9-L19 中定义了pasteKdfMemLimitInteractive 64 MBops2与pasteKdfMemLimitModerate 256 MBops3两档参数validPasteCostParams函数server/ente/paste.go#L63-L66要求请求中的kdfMemLimit/kdfOpsLimit必须严格等于这两档之一否则拒绝创建请求返回 invalid key derivation parameters。也就是说服务端只接受交互档或中等档两种 KDF 参数组合防止客户端任意调低成本参数削弱安全性。如何选择密码使用接收方尚不知道的密码避免攻击者攻破你们共用的某个账号后直接拿到密码通过与链接不同的渠道发送密码密码只在24 小时有效期内有意义——到期后密文已被删除密码便保护不了任何东西。[!NOTE] 如果忘记密码paste 无法恢复。Ente 没有任何办法重置它。密码是解密密钥的一部分从未发送给服务器。何时不需要密码保护普通 Paste 链接本身已是端到端加密。密码保护只有在不完全信任发送链接的渠道时才带来额外价值如果你通过 Signal 发给一个人并立即删除消息密码保护通常属于多余如果你把链接贴在其他人可能在目标接收人打开前看到的地方群聊线程、工单评论、多收件人邮件密码保护能实质性地提高门槛。分享链接的三种方式创建完成后页面上的链接卡片提供三种分享方式docs/docs/paste/getting-started.md 中 Share the link 章节复制Copy点击Copy将链接放入剪贴板按钮下方出现 Copied to clipboard. 确认文字约 1 秒后淡出。这是跨设备最可靠的方式适合粘贴到聊天、邮件或终端中。分享Share点击Share调用操作系统的分享面板与浏览器中分享网页时相同的选择器。在手机上适合将链接直接交给 Signal、Messages 等应用中的指定联系人。在不支持 Web Share API 的设备或浏览器上Share 会自动回退为复制到剪贴板且不报错。QR 码点击 QR 图标显示可扫描的二维码。QR 编码的是完整链接含 key fragment手机扫码后直接进入 paste 页面。适合把链接递给身边人而无需打字或发消息例如把凭据从笔记本电脑传到同事手机桌面端QR 显示为右下角的浮动卡片移动端QR 在居中的对话框中打开再次点击 QR 图标或关闭对话框即可收起。QR 的生成完全发生在浏览器内——仅仅因为显示了二维码链接包括解密密钥的任何信息都不会离开你的设备。前端实现可参考 web/apps/paste/src/components/PasteQrCode.tsx。一次性打开确认Open One-Time Link链接卡片上的链接本身也可点击但打开即消耗 paste。为防止误操作在创建页点击自己的链接会弹出Open One-Time Link?确认对话框含两个按钮Copy link将链接复制到剪贴板并关闭对话框——用于你条件反射般点击了链接的情况Open Link在新标签页实际打开 paste 并消耗它。该确认仅出现在发送方的创建页。从其他位置跟进链接的接收方会直接打开 paste。打开一条 Paste接收方流程当接收方打开链接时docs/docs/paste/getting-started.md 中 Open a paste 章节接收方浏览器从 Ente 获取密文浏览器从 URL fragment#之后的部分取出解密密钥在本地解密文本。解密期间显示 Opening secure paste... Decrypting in your browser.解密后的文本出现在只读文本框中附带Copy按钮Ente 服务器删除该 paste文本下方显示 This paste has been removed from Ente servers.。若 paste 启用了密码保护接收方在第 1 步之前会看到Enter paste password提示输入密码后点击Open paste。只有正确密码才能解密成功输错可在同一标签页内重试。前端消费流程由useConsumePaste钩子实现web/apps/paste/src/use-paste.ts#L56-L129页面加载后自动调用 WASM 的open(window.location.href)若返回passwordRequired则弹出密码框之后通过submitPassword(password)完成解密。密码错误时对应incorrect_password命名错误界面显示 Incorrect paste password。常见问题与报错处理报错信息含义处理方式This paste has expired or was already opened.链接已被他人消费或 24 小时窗口已过无法恢复创建一条新 pasteIncorrect paste password仅密码保护密码未产生正确的密钥同一标签页内重试若页面已关闭或刷新请发送方新建 pasteMissing key in URL / Invalid key in URL#之后的 fragment 缺失或格式错误通常是分享时链接被截断请发送方重新发送完整链接尽量复制粘贴而非手动重打Paste is unavailable链接被疑似链接预览 bot 或爬虫的工具打开或请求并非来自 paste.ente.com直接在普通浏览器标签页中打开链接错误页上的Create new paste按钮可带你回到创建流程。这些错误信息与源码中的错误映射一一对应web/apps/paste/src/paste.ts#L13-L24missing_key、invalid_key、key_mismatch、invalid_access_token等内部错误名分别映射为上述提示兜底信息为 Paste is unavailable。服务端同样对访问令牌做了校验server/ente/paste.go#L73-L89令牌必须是 632 位的字母数字组合否则返回 invalid access token。背后原理链接格式与一次性消费链接格式https://paste.ente.com/access-token#key-fragmentaccess token用于在 Ente 服务器上定位密文服务端据此找到 ciphertextkey fragment携带解密密钥位于#之后属于 URL fragment——浏览器从不把 fragment 部分发给服务器因此 Ente 无法看到密钥。对于密码保护的 pastefragment 会加上p-前缀使消费页面知道在尝试解密前应先弹出密码输入框。创建时的加密步骤官方文档docs/docs/paste/features/security.md描述的创建流程为浏览器生成全新的256 位随机密钥paste key用于加密文本本身使用 libsodium 的secretstreamAPI即 XChaCha20-Poly1305 认证加密对文本加密浏览器生成 12 字符随机fragment secret将存在于 URL 中使用 Argon2id内存困难型密码哈希从 fragment secret 派生密钥加密密钥KEK采用交互档参数密码保护场景下Argon2id 的输入会结合 fragment secret 与发送方输入的密码并使用中等档参数使用 libsodium 的secretboxXSalsa20-Poly1305用 KEK 加密 paste key浏览器上传至 Ente加密文本、加密后的 paste key、Argon2id salt 与 ops/memory 参数。明文、paste key、fragment secret 与密码从不发送。服务端随后返回 access token页面拼接出完整链接密码保护时加p-前缀。服务端收到的请求结构可由CreatePasteRequest验证server/ente/paste.go#L21-L61包含encryptedData、decryptionHeader、encryptedPasteKey、encryptedPasteKeyNonce、kdfNonce、kdfMemLimit、kdfOpsLimit七个字段全部必填且对密文长度、header 长度≤128 字节、加密密钥长度≤256 字节、nonce 长度≤128 字节、KDF salt16 字节与成本参数做了严格校验。这印证了服务器只看到密文与 KDF 参数的设计。打开时的解密步骤浏览器解析 URL fragment若以p-开头显示密码输入框等待输入浏览器用 access token 向服务器请求密文。服务器在返回密文的同一步删除 paste因此每条 paste 只能被提供一次浏览器使用随密文存储的 salt 与参数在本地重新对 fragment secret以及密码若适用执行 Argon2id得到与创建时相同的 KEK用 KEK 解密加密的 paste key得到原始 paste key用 paste key 解密文本。密码错误时第 3 步产生错误的 KEK第 4 步认证标签校验失败页面显示 Incorrect paste password。页面在内存中保留加密 paste因此可在同一标签页重试若页面关闭或刷新发送方需新建 paste。服务器存储了什么服务器只能看到密文与 KDF 参数加密文本及其secretstreamheader加密的 paste key 及其 nonceArgon2id salt 与创建时使用的 ops/memory 参数。没有 fragment secret密码保护场景还需密码以上任何一项都无法还原成明文这两者只存在于接收方的浏览器中。一次性消费如何被强制保证一次性消费由服务端强制而非浏览器侧消费前消费页面会先发一个guard 请求要求服务器签发一个与 access token 和接收方浏览器绑定的短期签名 cookie之后才发起真正的消费请求该请求必须同时携带自定义头X-Paste-Consume: 1与匹配的 guard cookie消费调用在返回密文的同一数据库事务中删除 paste因此一条 paste 永远不会被返回两次。若链接从未被打开Ente 会在创建 24 小时后删除 paste。预览 bot 防护聊天应用、搜索引擎与浏览器常会主动抓取 URL 生成预览或预热缓存。对一次性链接而言自动化抓取会在真人读取前消耗掉 paste。Ente Paste 在服务端识别并拒绝这些请求携带Purpose: prefetch、Sec-Purpose: prefetch或Sec-Purpose: prerender的请求被视为预览尝试User-Agent 包含bot、crawler、spider、preview、slackbot、discordbot、whatsappbot、telegrambot、twitterbot、facebookexternalhit、linkedinbot、skypeuripreview、googlebot等 token 的请求同样被视为预览尝试。这些请求只会收到通用的 Paste is unavailable 响应paste 保持完整等待真正的接收人。自定义头X-Paste-Consume是额外防线即使请求不匹配已知预览 bot 特征只要未携带该头也无法消费 paste只有 Paste Web 应用会发送该头因此典型的curl、wget或浏览器预取几乎不可能意外消耗 paste。信任模型与边界Paste 链接的保密性取决于你发送它的渠道任何看到完整链接含 fragment的人都能打开 paste。Paste 防御的威胁包括恶意或被攻陷的 Ente 服务器只能看到密文接收方与 Ente 之间的被动网络监听者TLS 保护传输且 URL fragment 本就不会出现在请求中自动抓取链接的预览 bot 与爬虫长期暴露每条 paste 无论是否被打开都会在 24 小时内自毁。Paste不防御的威胁接收人打开前把链接转发给第三方接收方设备上打开后对明文的截图、滚动记录或复制任一侧浏览器被攻陷例如恶意扩展可在明文显示时读取。当发送链接的渠道本身可能被攻陷例如长期聊天线程或邮件链官方文档建议启用密码保护使链接本身不足以打开 paste。自托管与配置Ente Paste 可以自托管Paste 的服务端端点属于MuseumEnte 的主后端Web 应用端点通过museum.yaml中的apps.public-paste配置。示例配置位于 server/config/example.yaml#L49默认值为public-paste: http://localhost:3008。仓库内还提供了 server/docs/quickstart.md、server/docs/docker.md 与 server/compose.yaml 等运维文档可参考 docs/docs/self-hosting/ 目录下的安装与配置说明。常见问答速查需要账号吗不需要。创建与打开都是匿名的Paste 没有登录流程。paste 能存活多久到 Ente 向浏览器提供密文为止或创建 24 小时后二者先到者为准。一旦被消费密文即被删除且无法找回。能打开两次吗不能每条 paste 只能被提供一次。更精确地说普通链接在首次打开时被消费密码保护链接在接收方首次输入密码时即使输错即被消费。能编辑或删除吗没有编辑/删除界面。最接近删除的做法是亲自打开链接消耗它否则 24 小时后自动销毁。字符上限每条 4,000 字符输入框左下角计数器实时显示。能粘贴二进制或文件吗不能Paste 仅支持文本。文件与持久密钥请使用 Ente Locker。误点自己的链接怎么办在创建页点击会弹出 Open One-Time Link? 确认并提供 Copy link 选项若在别处如聊天记录里点开paste 已消耗只能新建。聊天里链接会显示预览吗不会这是有意设计——预览抓取会提前消耗 paste。Ente Paste 会识别预览 bot 并返回 Paste is unavailable 而不消耗 paste。忘记密码怎么办无法恢复密码是解密密钥的一部分且从未发送给 Ente。延伸阅读Paste 加密工作原理Paste 链接背后的密码学保证Ente Paste 介绍Paste 是什么、如何工作、适用场景与限制Ente Paste FAQ常见问题与出错时的处理Web 前端实现创建与消费的核心 React 钩子服务端实现请求校验、KDF 参数白名单与数据模型。【免费下载链接】ente End-to-end encrypted cloud for everything.项目地址: https://gitcode.com/GitHub_Trending/en/ente创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →