正文
区块链有一个分布式数据库,数据复制在许多节点上,在数据方面几乎没有隐私。数据库(账本)系统使用梅克尔树(Merkle Trees)来实现。账本是不可变的。区块链可以是公有的,私有的或混合的。它的一个有趣特征是矿工的概念,我将其简单地描述为由跨节点共识驱动的系统验证机制。 区块链会给出一个复杂的数学题,需要解决这个问题才能获得一个在分布式账本上发布的密钥。这要处理很多东西。
现在,安全工程师总是在问:“我的HTTP Verb、URL、JSON body、API密钥或授权页眉在哪里?” “我可以验证用户或代理的可信任域名在哪里?” “如何生成令牌以呈现给应用程序进行身份验证和授权?”
区块链实施
要覆盖的第一个盲点是:区块链的技术实现不能保护API。
区块链要求要有某种形式的数字身份才能发布账本。区块链交易由哈希值标识。只需将SHA2哈希程序应用于交易所有者的公钥来创建哈希。对于安全工程师来说,这是非常简单的做法。这是一个有趣的想法,创建交易的用户的身份可以被掩蔽到一个虚拟身份中,一个抽象的哈希公钥虚拟池中。如果区块链应用程序映射虚拟标识,那么就可以创建人们所信任的用户社区。
要覆盖的第二个盲点是:区块链要求有某种形式的数字身份,这种身份不会阻止应用程序创建抽象的虚拟数字身份。
了解到你可以创建公共或私有用户的虚拟社区这一事实可以使人对API安全性有所期待。区块链可以提供身份识别服务,还有一些额外的认证服务。如果你可以将身份虚拟池映射到区块链交易上,并应用带外机制来确保身份验证,则可以为REST API使用生成轻量级令牌。生成的令牌将提供身份、身份验证和角色授权,如Java Web令牌。
简单地说,对于REST API,你需要一个安全保证,例如令牌。区块链可以允许从业者对用户进行分组并验证身份,然后可以生成API使用所需的令牌。记住,这是个宏大的目标,这个抽象模型中的一些复杂细节可以不予考虑。
当前的安全情况
目前存在的问题是区块链没有授权的概念。所以再次回到我们之前的讨论,区块链不能保护API。然而,API安全性具有潜力,也许区块链世界的某个团队正在开发帮助Web API从业者的应用程序和产品。现在,我们所要做的是观察市场,静静等待。
要做的工作还有很多,区块链社区在继续改变、扩大和适应。未来是不可预测的,但如果你敢想,那么就可以用区块链来支持安全的信任模型,并最终实现安全的REST API。
本文仅代表作者个人观点,不代表区块链铅笔的立场,不构成投资建议,内容仅供参考。