究竟什么能拦下一笔交易

·阅读 6 分钟·作者:SSP Editorial Team
SSP Academy 封面:究竟什么能拦下一笔交易

究竟什么能拦下一笔交易

每一家保管产品都有一页功能清单:白名单、支出限额、时间锁、审批流程、IP 限制。它们都是真实的,也都有用。但它们并不是同一类东西,而把它们当作可以互换,正是组织最终得到一个比营销所暗示的更弱的安全模型的方式。

有一个问题能把它们干净地分开:如果系统中的每一个软件都出错或怀有敌意,这项控制还能站得住吗?

对这份清单中的绝大多数,答案是否。对其中恰好一项,答案是是。本文讲的就是如何把它们分辨开来。

三层,而不是一层

从有人想要转移资金,到资金真的转移,SSP Enterprise 之间有三道彼此不同的屏障。它们以不同方式失效,而知道哪一道是哪一道,正是全部要义。

三层屏障立于一次请求与一笔已结算交易之间

这些层不是按有用程度排序的,而是按「击穿它需要什么」排序的。

第 1 层:协调层

这就是策略引擎,绝大多数功能都住在这里。SSP Enterprise 支持地址白名单、目的地类型限制、对超过金额阈值的交易施加延迟的时间锁、超过一定金额需管理员批准的规则,以及对组织访问的 IP 限制。策略模板给出合理的预设,随后它们会落地为真实且可编辑的规则。

这些东西做的是真正的工作。白名单让一个打错的地址根本无法成为一项提案。时间锁给财务团队一扇窗口去察觉哪里不对。批准规则把一笔大额转账从一个人的下午,变成两个人的对话。

它们不是的东西,是保管层的强制。 这些规则住在 SSP 的软件里,由 SSP 的服务器来评估。它们不是金库地址的一部分,而区块链从未听说过它们。若策略引擎被绕过——因为一个 bug、一台被攻破的服务器,或一个怀有敌意的运营方——这些规则根本不会生效。

我们把这点说明白,因为另一种做法更糟。一个相信自己的白名单就是保管保证的团队,会据此设定它的阈值,而这恰恰是把一次可以挺过去的事故变成挺不过去的那种错误。

第 2 层:你的设备

第二道屏障是每位签名人手中的那对设备,它在一个重要方面比第一道更强:它连 SSP 也不信任。

当一项提案抵达签名人时,他的设备会在本地解码交易的原始字节,并把结果与正在显示的内容比对。收款方、金额、代币——从字节中读出,而不是取自服务器的描述。在 Solana 上,这一比对是显式且不留情面的:若解码出的字节与所显示的内容相矛盾,签名会被硬性阻止而不是仅仅发出警告,因为此处的不符指向的是正在进行的攻击,而非渲染故障。

设备还对手续费偿还施加自己独立的上限。relay 提出费用;无论 relay 如何声称,钱包都会拒绝签署高于代码中写死的最大值的费用,这就为任何经由费用通道的抽干设定了边界,哪怕 relay 完全怀有敌意。模拟也在批准之前运行,把提案放在当前链状态上执行,好让复核界面能显示这笔交易实际会做什么;这项能力随交易模拟与风险提示一同到来。

这一层能击败一台被攻破的服务器。它击败不了的,是一台被攻破的设备,或一位不读就批准的签名人。它同样需要签名人的两台设备,这正是每位签名人 2-of-2 之所以重要的原因:第 2 层的强度取决于两台设备中较弱的那一台,而它们被刻意选为不同种类的硬件。

第 3 层:链

第三道屏障,是在其他一切都已失效之后,唯一还站得住的那一道。

金库的地址由签名人集合与批准阈值派生而来。一笔没有携带所需数量有效签名的交易,不是一笔被拒绝的交易——它是一笔无效的交易。网络上的每个节点都会独立地得出相同结论,而无论对 SSP 基础设施的访问权有多大,都改变不了这道算术。

这正是为什么阈值是创建金库时最值得深思的那个数字,也是为什么它此后无法编辑。创建你的第一个企业金库讲的是操作机制;2-of-2、2-of-3 与 m-of-n 的比较讲的是如何挑选这个数字。

每一层在哪里失效

把失效模式并排列出来,设计工作就变得显而易见。

情形协调层你的设备
签名人打错了一个地址拦住若他阅读则拦住毫不在意
签名人被钓鱼而批准若不在白名单则拦住显示真相;他仍可能批准毫不在意
SSP 的 relay 被攻破失效顶住——字节在本地解码顶住
SSP 的策略引擎有 bug失效顶住顶住
某位签名人的笔记本被攻破并非为此设计部分——手机仍在核对顶住
攻击者掌握的签名人少于 M 位并非为此设计顶住顶住
攻击者掌握 M 位或更多签名人失效失效失效

最后一行是这个模型诚实的底部。多签防的是你的签名人中的少数被攻破。它防不住多数,而任何产品若声称相反,都是在撒谎。这正是为什么阈值与你签名人的独立性,比任何功能清单都更要紧。

这对你如何搭建意味着什么

设计金库时,要让它仅凭第 3 层就是安全的。 选择阈值与签名人集合时,就当策略引擎不存在。如果这样得出的答案让你不安,解法是换一个阈值或换一批签名人——而不是加更多策略。

然后再为策略擅长的事情添加策略。 白名单抓人为错误。时间锁买来反应时间。批准规则为大额金额创造第二双眼睛。它们是流程改进,也确实减少事故;只是它们并不是挡在攻击者与你金库之间的那样东西。

让你的签名人真正彼此独立。 同一台笔记本上、同一栋楼里、用同一套恢复安排的两位签名人,更接近一位签名人而不是两位。第 3 层的强度,来自同时攻破 M 个不同的人、M 套不同设备对的难度。

让签名人真的去读复核界面。 第 2 层是唯一能抓住「看起来合法但其实是错的」提案的屏障,而它只有在有人真的去关注设备所解码出的内容时才起作用。在创建金库时演练一次来回,能在毫无风险时把这个习惯建立起来。

向其他保管服务商问同一个问题。 无论你是否使用 SSP,这套框架都是可迁移的:对功能页上的每一项控制,都去问它能否在供应商自己的软件出错时依然成立。答案往往很有启发,而一个回答清晰的供应商,正在告诉你一些关于他们如何思考的好事。

关于一套多密钥配置在实践中被架空的种种方式,多签的失效模式以及 SSP 如何缓解逐一走过,而SSP Enterprise:面向团队的多签金库则是各部分如何拼合的总览。

分享本文

相关文章