区块链有一个核心的特征, 这个特征是链上数据保持公开和透明。但是因为存在大量业务数据, 这些数据没有办法直接放在区块链上面, 所以只能存储在链下环境里。因此, 对链下数据进行加密操作就成为保护隐私以及满足合规要求的一个关键步骤。如果处理不好这个问题, 那么就意味着数据处于完全裸奔的状态。
链下数据加密怎么做
核心思路是非常明确的, 具体来说就是数据不能以明文的形式直接保存到存储介质中, 而是必须经过处理, 使用对称加密技术里的 AES-256 进行加密, 或者使用非对称加密技术里的 Ed25519 进行加密, 然后在确认完成加密操作之后, 再把加密后的内容写入数据库。
等到需要上链的时候, 只会把密文的哈希摘要存放到链上, 参与验证的一方在拿到信息后只需要对哈希值进行比对就可以了, 这样做就能确认数据并没有被篡改过, 但是同时也无法还原出数据的原始内容。
密钥管理这个事儿, 确实是真正的难点所在。在实际的项目开发过程里面, 密钥通常被托管在多方安全计算节点或者是硬件安全模块里面, 这样做是为了避免发生单点的泄露情况。
有些方案还会引入门限签名的机制, 这种方式要求必须所有的子密钥都齐备了, 才能够进行解密的动作, 哪怕只是任何一个单一的节点发生了丢失的情况, 也都并不是什么致命的问题。
链下加密方案怎么选
要看一看大家对于数据敏感度有多高的把握, 以及具体的业务场景是怎么样的。比如在金融行业或者是医疗卫生行业这种对数据特别敏感的场合里, 比较合适去采用同态加密或者安全多方计算这种技术。
用这些技术的话, 数据在整个处理的过程中, 始终是处于不解密的状态, 就可以直接完成各种运算。如果是那些普通的、常见的业务情况, 那么使用 AES 算法配合 HSM 硬件模块就已经完全可以满足需求了, 这样做的好处是所需投入的成本比前面提到的那些高级方案要低得多。
除此之外, 大家还务必盯着那个和链子进行打交道的那个效率情况。要是老是去读那个存在线下的数据的话, 那个交易确认得出来的速度就会被拖慢了。对于那些特别热乎一点的数据, 咱们就直接放在内存里面去用, 然后再去做个增量哈希然后提到链上去。
而那些冷冰冰的数据, 就定个时间定期把它搞成堆, 一块块地打包封装起来, 变成那个叫做 Merkle 根的东西以后再去提交到链上走。这么一番读写分开处理的操作下来之后, 性能这块儿能够变好许多许多的。

相比于一味地去罗列那些让人听不懂的技术名词, 把加密粒度选对以及把密钥的策略定好, 这一点是重要得多的事情。在你把这个东西真正落地部署之前的时候, 一定得先把数据的流动情况彻底搞清楚, 然后再去决定应该在哪一个层次上面进行加密, 以及具体是由谁来负责管理密钥的问题。
转载请注明出处:imtoken,如有疑问,请联系()。
本文地址:https://m.zmdyd.cn/gwimqb/10823.html
