如何在你的web3项目中安全管理私钥?

122 阅读2分钟

前言

在web3行业,我始终坚信一个观点:如果你的产品不够安全,那么它就一定会出现问题。从业7年,看到很多案例,链,跨链桥,defi,很多刚入行的团队都在不断重蹈覆辙,直到黯然离场。如果你相信行业的长期价值并且做长期事业,那就不能忽略安全的作用。很多黑客团队,也许正在等着你的资金池不断壮大,然后一把薅光。尤其是EX团队,要重视这个问题。

如何解决?

  1. 专门微服务管理(私钥不能共享给其他微服务)
  2. 除了https外,还要记得加密传输。(不要迷信https,特别是内部微服务之间通常是明文传输, 当黑客打入内部, 这层保障形同虚设)
  3. 其他微服务与私钥管理服务之间的交互需要加密和授权。不能有public接口。
  4. 对任何人严防死守,包括团队内部。设计的原则应该是除了管理员,任何人都无法以任何方式获取私钥, 包括内部开发者。
  5. 尽可能避免网络接触
  6. 分片管理(把私钥分成多个部分, 存储在不同地方),避免被一网打尽
  7. 不要让私钥暴露在log中
  8. TEE技术与传统技术结合 (TEE技术让安全连网成为可能)
  9. 原则上,这个负责签名的钱包应该只存有少量代币,资金池的资产要放到多签钱包之中,按需转给热钱包(负责对交易进行签名的钱包)。

注意

以上技术只是极大降低了私钥被发现的可能性, 实际上,资产安全还涉及到业务的设计。假如你业务存在问题,传给私钥管理服务器一个危险的转账指令,那你的资产安全还是无法得到保障。但是这些问题,通过传统业务的手段就可以排查。你首先应该保证自己的私钥无法被发现,这就是你安全系统的核心设计。