運營交易所的安全挑戰 Part 0

Published on:

因为 2017 年区块链趋势兴起,明显的造富潮。所以造成很多人不是在买币的路上,就是在开交易所的路上。

即便到现在,还是会有人问我关于创业开交易所该具备哪些条件,对于开交易所跃跃欲试。

坦白说,我认为开交易所,需要天时地利人和。甚至是不只天时地利人和,还需要相当扎实深厚技术功底。

因为开交易所的难度可能是一般 FinTech 的几十倍不夸张。因为真不是开个站就会有人愿意存钱交易这么简单的事。更别说,果做起来,有人愿意存大量的钱在这里,那么站方又怎么保护这些资产?

之前一两个月,我曾经与安全厂商 Sqreen 合作发表了一篇关于交易所安全性的英文专访文章。

这次打算花更多时间,来专门写一篇有关于交易所安全性的专门文章。

什么是经营交易所技术上最挑战的部分?

若说 2018 年区块链行业最赚的行业是什么?我不会说是开交易所,甚至不会说是发币(除非立志狂印超多空气币杀韭菜)。我认为是当区块链黑客(入侵类型的那种)。

为什么呢?

这里列一些我看过业界的几种情况:

  1. 许多区块链资产持有者,资安意识匮乏,很容易因为一些小钱(比如空投或代开钱包)就把自己私钥交出去了(各种花式被拐)。
  2. 许多发币者,智能合约不是自己写的,而是由外包写的。所以一但币的合约出现问题,而且这个币已经上了交易所,加上(ETH)智能合约不能修改。很可能因为时间差问题,造成交易者与交易所的重大损失。
  3. 链本身机制不成熟,可能因为链本身的 0day 导致交易所被攻击。
  4. (EOS)的合约上链之后可以被修改,导致即使第一次看到的版本是可信的,只要 Owner 有心作恶。合约爱怎么改就怎么改,使用者与交易所不会马上察觉。
  5. 交易所的部分代码出现问题(可能交易下单引擎有 race condition),导致使用者可以自己印钱出来。转手提币到其他交易所直接变现逃逸。
  6. 使用者对于自己的密码保管不当,被撞库。或者交易所没有防恶意撞库。而且没有对提限等敏感操作设防,导致资产被偷走。

我还可以列出几十种曾经发生过的案例,限于篇幅写到这里。总而言之,大致上分成这几种类型:

  • 许多使用者,完全没有资安意识以及资安知识。但交易所必须在机制上做到即便使用者没有相关知识,就算遭受到恶意钓鱼,也不至于死伤惨重。
  • 交易所本身也是一个成长型 Startup,在一般 Startup,推出功能的速度是最被看重的。架构稳定与 Bug 优先权是次要的。除非有老练架构师在的交易所,否则团队写代码难以有资安优先的潜意识。而只要一个 Bug,可能就会让整个交易所的当季利润当场蒸发,甚至直接破产。
  • 交易所接入的数字资产,本身是(高度)不稳定且不成熟的开源软件。链与合约本身都有可能(一转眼变成)是恶意的。

所以,我才会说也许当一个区块链黑客(入侵型),可能远比开交易所来的划算。

那么,资安是经营交易所技术上最挑战的部分吗?我认为也不是。经营一个交易所要注意的部分非常的多。

  • 交易底層系統的設計
  • 促進交易系統與交易者活躍度的設計
  • 交易系統效能上的延展度與抗壓度
  • 如何選幣?(項目靠譜度,項目介接技術難度,項目後續維護性)
  • 風控系統的設計(如何降低用戶的損失,如何降低站方的損失,如何第一時間阻斷攻擊)
  • 內控系統的設計(如何分層管控內部存取敏感資訊,以及資產如何分散風險異地配置)

資安只是其中的一環。但這個項目卻是一失守,所有其他一切都變得不重要的一環。也是一般技術 Startup 最脆弱的一環。

  • 交易底层系统的设计
  • 促进交易系统与交易者活跃度的设计
  • 交易系统效能上的延展度与抗压度
  • 如何选币? (项目靠谱度,项目介接技术难度,项目后续维护性)
  • 风控系统的设计(如何降低用户的损失,如何降低站方的损失,如何第一时间阻断攻击)
  • 内控系统的设计(如何分层管控内部存取敏感资讯,以及资产如何分散风险异地配置)

资安只是其中的一环。但这个项目却是一失守,所有其他一切都变得不重要的一环。也是一般技术 Startup 最脆弱的一环。

如何建置高可靠的交易所?

这篇文章可能会很长,我打算拆成一个系列持续连载。主要会分成几个主题:

  • 如何保护使用者的资产(在教育层面以及系统机制层面)
  • 如何做风控
  • 如何做内控
  • 以资安为重点的编程架构设计
  • 与资安协力厂商的合作

运营交易所的安全挑战 系列文目錄