关于区块链数据应不应该加上密码,这个事情我已经纠结了整整两年的时间。从去年项目遭到了拖库事件之后, 我才想明白了一件事情: 密码它不是万能的东西, 但是不进行保护就赤裸裸地暴露在那里这种情况是万万不能发生的。
区块链数据要加密码吗
答案是, 在链上不用搞加密, 但在链下必须得用。好多人都分不清这两个层面的差别。区块链的分布式账本, 它是靠着哈希值还有共识机制, 来保证数据不可被篡改。如果你在链上的数据里, 再套上一道AES这种加密手段的话, 反而会把可验证性给破坏了。
但是呀, 你节点里的私钥、用户的KYC资料, 还有商家后台那边的交易流水, 这些全都是在链下保存着的。一旦你的服务器遭到攻击, 那就相当于裸奔, 没有任何保护。我去年就遭遇了这种情况, 被盗走的是这部分数据。
在具体的实践过程里面, 我们通常给下层的组件建议使用AES-256这个算法来处理字段的加密操作。至于私钥的管理方式, 一般会选择走MPC这个多方计算的路子。最后这一点要注意, 千万不要把上面的这些都乱塞进一个单一的配置文件里去了。
区块链数据加密值不值得
说白了, 关键就在于对数据有没有足够的敏感度。假如是一个发币项目, 它只需把代币总量和转账记录保存在链上, 而在链下方面即使是个空壳结构, 只要通过加密私钥或者使用MPC门限技术来搞定安全问题就可以了。
可是如果你打算去做DeFi借贷业务, 或者需要存放用户的实名信息, 那么千万不能在加密预算上节省开支, 应该至少做到对各个字段进行加密处理并且加上访问控制措施。至少做字段级加密加访问控制。

我曾经看到过有一个团队, 为了节省仅仅两万块钱的服务器费用, 竟然做出了把数据库以明文形式存放在公有云这样危险的事情, 后来在三个月之后, 他们因为收到一封钓鱼邮件, 导致整个系统的账户和资料被对方彻底掌控。
现在就应该立即把安全防线设置好, 坚决要把漏洞堵上, 而不要等到事故发生的那一天再来考虑怎么进行补救工作。现在就该锁上, 别等出事再补。
