Hacker News 中文摘要

RSS订阅

使用密码密钥和Age加密文件 -- Encrypting Files with Passkeys and Age

文章摘要

Typage是一个基于TypeScript实现的age文件加密格式工具,支持Node.js、Deno、Bun和浏览器环境。它实现了原生age接收者、密码加密、ASCII编码,并支持自定义接收者接口。自0.2.3版本起,Typage支持使用passkeys和其他WebAuthn凭证进行对称加密,并通过age CLI插件在浏览器外使用硬件FIDO2安全密钥。Passkeys是一种基于WebAuthn的防钓鱼认证机制,可存储在平台认证器中,如iCloud钥匙串。

文章总结

文章《使用Passkeys和age加密文件》详细介绍了如何利用Passkeys和age工具进行文件加密,并探讨了其实现细节。以下是文章的主要内容总结:

  1. Typage工具介绍

    • Typage是一个TypeScript实现的age文件加密格式工具,支持Node.js、Deno、Bun和浏览器环境。
    • 它支持原生age接收者、密码加密、ASCII编码,并允许自定义接收者接口。
    • 从0.2.3版本开始,Typage支持通过Passkeys和其他WebAuthn凭证进行对称加密,并提供了一个age CLI插件,允许在浏览器外使用硬件FIDO2安全密钥。
  2. Passkeys加密机制

    • Passkeys是同步的、可发现的WebAuthn凭证,提供基于标准的防钓鱼认证机制。
    • 支持PRF(伪随机函数)扩展的凭证可以在登录时计算PRF,用于对称加密。
    • PRF扩展需要用户验证(如PIN或生物识别),并且每个凭证断言可以计算两个PRF,用于密钥轮换。
  3. fido2prf age格式

    • 定义了如何将随机文件密钥加密并编码到age文件的头部。
    • 使用PRF输出作为包装密钥,对文件密钥进行加密,确保每个文件都有其独特的PRF输入,增强了安全性。
    • 该格式具有每文件硬件绑定不可链接性两个重要特性。
  4. WebAuthn与Typage集成

    • Typage 0.2.3版本实现了WebAuthn API,支持Passkeys加密。
    • 通过age.webauthn.createCredential创建新Passkey,并使用age.webauthn.WebAuthnRecipientage.webauthn.WebAuthnIdentity进行加密和解密操作。
  5. 安全密钥与age-plugin-fido2prf

    • 支持在FIDO2硬件令牌上存储Passkeys,并通过age-plugin-fido2prf插件在CLI中使用这些密钥。
    • 插件与Typage安全密钥身份字符串互操作,支持对称加密。
  6. 图片展示

    • Image 1: login with a passkey screenshot
    • Image 2: a credential creation prompt
    • Image 3: a credential usage prompt
    • Image 4: A sunlit outdoor scene with a long, weathered wooden picnic table and three cats. One cat, black and white, is stretched out on the tabletop, while another calico cat is perched on the bench to the right, looking towards the third cat on the ground. Trees and bushes surround the area, and in the background, a house with a tiled roof is visible, along with distant green mountains under a clear blue sky.
  7. Geomys组织

    • Geomys是一个Go开源维护组织,由Smallstep、Ava Labs、Teleport、Tailscale和Sentry资助,确保开源项目的可持续性和可靠性。

文章通过详细的技术描述和代码示例,展示了如何利用Passkeys和age工具进行文件加密,并强调了其在安全性和易用性方面的优势。

评论总结

  1. 对Filippo的贡献的认可

    • 评论1:作者defraudbah赞扬Filippo在加密和Golang社区的杰出贡献,认为他推动了Golang在加密领域的普及。
      引用
      "If it wasn't for you who knows, maybe golang wasn't that popular in the fields where cryptography matters."
      “如果不是你,谁知道Golang在加密领域是否还会如此流行。”
  2. 关于Passkey和身份验证的讨论

    • 评论2:andrewmcwatters提出在没有访客登录功能的情况下,如何通过Passkey或魔法邮件链接共享登录信息的疑问。
      引用
      "How do you do it without the service implementing guest sign in as a feature?"
      “如果服务没有实现访客登录功能,你该怎么做?”
    • 评论3:mkw5053指出WebAuthn的PRF功能可以简化文件加密,但泄露的Passkey会导致大量文件需要重新加密,适用于备份但不适合生产环境。
      引用
      "leaked passkeys mean full rotation and bulk re-encryption of files."
      “泄露的Passkey意味着需要完全轮换和批量重新加密文件。”
  3. 对Safari不支持PRF的批评

    • 评论5:dariosalvi78表示期待PRF功能已久,但Safari不支持,影响了端到端加密的应用。
      引用
      "as usual, Safari doesn't support it."
      “一如既往,Safari不支持它。”
  4. Passkey在文件加密中的应用

    • 评论7:9dev认为Passkey可以用于客户端加密敏感文件,方便存储且无法窥探内容。
      引用
      "all with the convenience of passkeys!"
      “所有这一切都得益于Passkey的便利性!”
    • 评论8:wkat4242探讨Passkey是否可以作为“pass”工具的PGP后端替代方案,特别是在多平台支持方面。
      引用
      "I wonder if this can replace the PGP backend from 'pass'."
      “我想知道这是否可以替代‘pass’的PGP后端。”
  5. 对Linux包签名工具的期待

    • 评论9:phoronixrly希望看到除GnuPG之外的Linux包签名工具。
      引用
      "Now do one for signing Linux packages with ..."
      “现在为Linux包签名做一个工具吧,只要不是GnuPG就行……”