Skip to content
安全问题

安全问题:加密资产和实体资产的对比

作者:维塔利克·布特林 2024年2月9日 原文链接

特别感谢 Hudson Jameson、OfficerCIA 和 samczsun 的反馈与审阅。

在过去的一周里,一篇文章在网上广为流传,讲述了一家公司损失了2500万美元的事件。一名财务工作人员被骗子冒充的首席财务官说服,通过银行电汇转账给了骗子。这起诈骗据称是通过一个非常逼真的深度伪造视频会议实施的。

深度伪造(即人工智能生成的虚假音频和视频)在加密货币领域和其他领域都越来越常见。在过去几个月里,我的深度伪造视频被用来宣传各种诈骗项目以及狗狗币。深度伪造的质量正在迅速提高:虽然2020年的深度伪造明显粗糙得令人尴尬,但最近几个月的深度伪造越来越难以识别了。熟悉我的人仍然可以识别出最近那个我推销狗狗币的视频是假的,因为视频中我说了"let's f***ing go",而我只会用"LFG"来表示"寻找组队"(looking for group),但那些只听过我几次声音的人很容易就会被骗过。

当我向安全专家提到上述2500万美元被盗事件时,他们一致认为这是企业运营安全在多个层面上的一个异常且令人尴尬的失败:标准做法是在批准任何接近这种规模的转账之前都需要多个层级的签署确认。但即便如此,事实仍然是到了2024年,一个人的音频甚至视频流已经不再是一种验证其身份的安全方式

这就引出了一个问题:什么才是安全的身份验证方式?

单纯依靠密码学方法并非解决之道

在各种情况下,能够安全地验证身份对各类人群都很重要:个人在恢复其社交恢复或多重签名钱包时、企业在批准商业交易时、个人在批准大额交易(如投资初创企业、购买房产、汇款)时(无论是加密资产还是法币),甚至家庭成员在紧急情况下需要相互认证时。因此,找到一个能在即将到来的深度伪造普及时代生存下来的良好解决方案非常重要。

在加密货币圈子里,我经常听到这样的回答:"你可以通过提供与你的 ENS/身份证明/公共 PGP 密钥关联的地址的密码学签名来验证自己的身份"。这个答案听起来很有吸引力。然而,它完全忽略了在签署交易时需要其他人参与的根本原因。假设你是一个拥有个人多重签名钱包的用户,你发起了一笔需要共同签名者批准的交易。在什么情况下他们会批准呢?那是在他们确信确实是你本人想要进行这笔转账时。如果是黑客窃取了你的密钥,或是绑架者,他们就不会批准。在企业环境中,通常会有更多层次的防护;但即便如此,攻击者可能不仅会在最终请求时冒充管理者,还可能在审批流程的早期阶段就进行冒充。他们甚至可能通过提供错误的地址来劫持正在进行的合法请求。

因此在许多情况下,如果其他签名者仅凭你用密钥签名就接受你的身份,这完全违背了整个目的:这会将整个合约变成一个 1-of-1 的多重签名,攻击者只需要获取你的单个密钥就能窃取资金!

这就引出了一个实际上比较合理的答案:安全问题

安全问题

假设有人给你发短信,声称是你的某个朋友。他们使用的是一个你从未见过的账号,并声称丢失了所有设备。你如何确定他们是否真的是他们所声称的那个人?

有一个显而易见的答案:询问一些只有他们才知道的生活细节。这些问题应该满足以下条件:

  1. 你知道答案
  2. 你认为他们会记得
  3. 互联网上找不到答案
  4. 难以被猜测
  5. 理想情况下,即使是入侵了企业和政府数据库的人也不知道答案

最自然的提问方式是询问共同经历。可能的例子包括:

  • 我们上次见面时,在哪家餐厅吃的晚餐,你点了什么菜?
  • 是我们哪个朋友开过关于某个古代政治家的玩笑?具体是哪个政治家?
  • 我们最近看过的哪部电影是你不喜欢的?
  • 你上周建议我和____聊聊,让他们帮助我们进行____研究?

最近有人用来验证我身份的真实安全问题示例。

你的问题越独特越好。那些恰好处于边缘地带,需要对方思考几秒钟甚至可能会忘记答案的问题是不错的选择:但如果你询问的人确实声称忘记了答案,一定要再问他们三个问题。询问"微观"细节(比如某人喜欢或不喜欢什么、具体的笑话等)通常比询问"宏观"细节要好,因为前者通常更难被第三方意外发现(例如,如果有人在 Instagram 上发布了一张晚餐照片,现代的大语言模型可能会快速捕捉到并实时提供位置信息)。如果你的问题可能被猜到(即只有少数几个合理的选项),那就通过增加另一个问题来提高熵值。

人们往往会因为安全措施枯燥乏味而停止执行,所以让安全问题变得有趣是很有必要的!这些问题可以成为回忆共同美好经历的方式。而且它们还可以成为真正去创造这些经历的动力。

安全问题的补充措施

没有任何单一的安全策略是完美的,因此最好是将多种技术组合在一起。

  • 预设暗号:当你们在一起时,有意识地约定一个共同的暗号,以便日后用来相互验证身份。
  • 甚至可以约定一个胁迫暗号:一个你可以自然地插入句子中,用来悄悄向对方传达你正在被胁迫或受到威胁的词语。这个词应该足够常见,使用时显得自然,但又要足够少见,以免你在日常对话中不小心用到。
  • 当有人向你发送以太坊地址时,要求他们通过多个渠道确认(例如:通过 Signal 和 Twitter 私信、公司网站,甚至是通过共同认识的人)
  • 防范中间人攻击:了解并注意 Signal 的"安全码"、Telegram 的表情符号等类似功能。
  • 每日限额和延迟:对重要且不可逆的操作简单地施加延迟。这可以在政策层面实现(预先与签名者约定等待数小时或数天后再签名),也可以在代码层面实现(在智能合约代码中设置限制和延迟)

一个潜在的复杂攻击场景,攻击者在审批流程的多个步骤中冒充高管和受助人。安全问题和延迟都能防范这种情况;最好两者都使用。

安全问题之所以好,是因为与许多其他由于不够人性化而失败的技术不同,安全问题是建立在人类天生擅长记忆的信息基础之上的。我多年来一直使用安全问题,这已经成为一个非常自然而不显得突兀的习惯,值得将其纳入你的工作流程中——作为其他安全防护层的补充。

需要注意的是,上述描述的"个人对个人"安全问题与"企业对个人"安全问题是完全不同的使用场景。比如当你因为去另一个国家旅行而导致信用卡第17次被停用时,你打电话给银行重新激活卡片,在经过40分钟令人烦躁的等候音乐之后,银行工作人员出现并询问你的姓名、生日,可能还会问你最近的三笔交易。个人知道答案的问题类型与企业知道答案的问题类型有很大的不同。因此,有必要将这两种情况分开来考虑。

每个人的情况都是独特的,因此你可能需要与不同的人进行身份验证时所共享的独特信息类型也各不相同。通常来说,让技术去适应人而不是让人去适应技术会更好。一个技术不需要完美才能发挥作用:理想的方法是同时叠加多种技术,并选择最适合你的技术。在深度伪造技术普及后的世界里,我们确实需要根据现在什么容易伪造、什么仍然难以伪造这个新现实来调整我们的策略,但只要我们这样做,保持安全仍然是完全可能的。

ETHStudy (An Ethereum Ecosystem Initiative)
Supported by Uweb(University of Web3)