Talisman 的安全模型

iSeven
We Are Talisman 中文
Oct 13, 2022

作者:Warp Lizard , Talisman首席工程师

我们的安全模型概述

加密货币钱包的主要工作是安全地存储您的私钥,并允许您使用它们签署交易。通常情况下,密钥以加密的形式存储在磁盘上,钱包应用程序需要一个密码来解密使用。不同的钱包在这方面的机制略有不同。在 Polkadot.js 中 — Talisman 最初基于它,并且仍然使用其中的许多组件 — — 需要密码来解密(或“解锁”)密钥,然后密钥会在扩展程序的内存中存储一段时间,直到它被自动锁定。当一个新账户被创建时,用户需要输入一个密码来首次加密。这意味着每个密钥对都有可能用不同的密码进行加密。

Talisman采取了一个稍微不同的方法。尽管我们仍然使用与 Polkadot.js 相同的密钥环库 — 它要求每个密钥对都有单独的密码保护 — 但我们更倾向于让用户有一个单一的密码来访问他们所有的账户,并减少需要输入密码的次数。为了实现这一目标,扩展程序需要将密码本身存储在内存中,以便可以使用相同的密码创建新帐户。当您登录 Talisman 时,会通过尝试解密其中一个加密帐户来检查您的密码,如果有效,则被存储在浏览器内存中的扩展沙盒中,直到您锁定钱包或自动锁定计时器到期。密码永远不会写入磁盘。当您批准交易时,您的密钥将使用存储的密码解锁,用于签名,然后立即再次锁定。与 Polkadot.js 不同,这消除了每次签署交易时输入密码的需要。

关于助记词?

当您登录 Talisman 并创建新钱包时,会为您创建一组助记词并存储在扩展程序的本地存储中。如果您通过导入助记词进行登录,它将存储在同一位置。在存储之前,这些数据会使用您的密码作为加密密钥进行加密。当您要导出助记词时,我们会要求您再次输入密码作为额外的安全措施,然后才能解锁助记词词组。

它安全吗?

像所有安全设计决策一样,在安全性和便利性之间存在着权衡。将密码存储在扩展的内存中意味着,当扩展被解锁时,有权限进入您的电脑的高级攻击者有可能转储扩展程序的内存并找到密码。Polkadot.js 也存在类似的漏洞,不过在这种情况下,攻击者只能访问任何解锁账户的私钥。

为了缓解这个漏洞,Talisman最近实施了一个自动锁定功能,它可以从扩展程序的内存中清除密码。因为我们喜欢让用户控制他们的安全选择,所以默认情况下没有启用这个功能。但是,我们建议用户启用此设置。在不久的将来,我们还将推出另一项安全改进,即在将密码存储在扩展的内存中之前,我们将对密码进行哈希处理。虽然仍然可以通过相同的方法检索散列密码,但它可以通过使密码在转储的内存数据中更难识别来降低风险,同时也减少了在其他服务中使用的密码被泄露的影响。

在我们提供尽可能最好的工具的同时,我们也期望并鼓励用户对自己的安全负责,因为我们知道没有一个系统是完美的。出于这个原因,我们鼓励用户遵循最佳做法,例如:

  • 使用一个强大的密码
  • 启用自动锁定计时器
  • 在其他人可能访问您的计算机的任何情况下手动锁定扩展程序
  • 确保您的密码和助记词没有记录在其他任何地方
  • 确保您的计算机没有恶意软件

外部数据记录

Talisman 在选择加入的基础上使用外部服务进行错误记录和用户分析。错误日志记录是使用Sentry进行的,这样我们就能知道我们的软件何时出现了错误,并能追踪出错的原因。对于用户分析,我们使用Posthog。用户分析使我们能够跟踪哪些功能正在被使用,以及如何使用,以便我们能够响应用户的需求,确保我们正在开发最好的产品。当您加入 Talisman 时,您可以选择加入或退出这些服务,之后在使用扩展程序时,您可以在设置里的“Security and Privacy”部分单独选择加入或退出。如果您选择退出这两种形式的跟踪,Talisman 将不会执行任何跟踪 — — 选择退出确实意味着选择退出。

我们使用的两种服务都已设置为获取所需信息所需的绝对最低配置。我们特别小心地确保不会通过这些服务泄露任何个人身份信息或敏感安全信息,方法在应用程序本身仔细实施的同时,也在后台启用数据清除器,以确保如果任何敏感数据被意外发送,它将不会被记录。我们感谢我们的用户希望协助我们开发最好的钱包,并相信我们在这样做时尊重他们的隐私,并且大多数新用户确实选择加入跟踪。

我们对 Slope黑客事件的回应

2022 年初,一个名为 Slope 的 Solana 钱包遭到黑客攻击,用户的资金被抽走。该漏洞利用 Slope 将私钥记录到 Sentry 错误跟踪服务(@zellic_io在这里提供了很好的分析),这与我们用于跟踪应用程序错误的服务相同。虽然我们已经为 Sentry 配置了一种非常简单且具有隐私意识的方法,但我们通过完成对 Sentry 实施的内部审计来回应这一消息。我们发现没有任何敏感信息被记录到Sentry,并且我们确保Sentry的错误跟踪没有出现在我们应用程序的任何可能记录敏感数据的部分。我们还在 Sentry 后端设置了额外的数据清理器,并通过手动尝试将敏感数据发送到 Sentry 服务来测试它们。如果您仍然对向Sentry记录数据感到不舒服,您可以在扩展设置中选择退出,但我们希望您保持此设置处于打开状态,以便我们可以继续跟踪错误并使我们的钱包变得更好。

关于Talisman

Talisman 是一个 web3 钱包,可以解锁 Polkadot 和 Ethereum 中的大量应用程序。Talisman 浏览器扩展允许您安全地存储、发送和接收资产。使用它可以连接到整个Polkadot和Parachains生态的应用程序。

Talisman 是非托管的、经过审计的、支持 Ledger 设备并且还与以太坊兼容,允许用户存储、管理并与Polkadot 和以太坊 dapps进行交易。

Download | Webapp | Twitter | Discord | Youtube | Reddit | Telegram

--

--