最近得益于区块链在金融领域的火爆效应,Crypto-based currency&transaction改变了金融圈原本“数字货币=数字游戏”的印象,密码学货币不再只是数字货币,它还被赋予了“防篡改、去中心”的特性,但是本质上这些事务都是数据治理问题,只不过从原本的“服务级别”的访问权限校验转入了“数据级别”的完整性校验。其实密码学不只可以在金融业务方面做出贡献,在其他一系列数据治理难题中,我们也可以借鉴其中的一些思路。
下面让我们来回顾一些常见的数据治理问题,以及我们如何使用密码学来解决这些问题。
数据私密性
私密性(Confidentiality),数据作为企业的重要财产已经得到足够的重视,同时作为业务必须的原料又不得不分发到终端。我们既要做好必要的安全防护工作,同时也希望尽可能地灵活管理访问权限,在需要的时候能及时地送达业务场景中消化。
这个防护工作的目的也就是保护数据的私密性。通常有两种方式保障,授权与加密,随着数据量级的增长,私密性变得越来越细粒度。如何划分授权与加密这两种有着明确区分的方案往往被大家混淆,甚至不少开发人员认为授权是加密的一种。
常见的授权(Authorization),包含了验证(Authentication)与访问控制(Access Control)两个部分,验证是指用户或者业务模块通过一个私密的凭证来确保身份,它可以是一个密码,可以是一类数字签名(包括证书),也可以使用相对复杂的双向动态授权协议。
验证后的访问控制则是将数据权限更细粒度地拆分,提供一次性或者短暂性的访问权限,Token作为一个权证只能用来访问其对应权限下的数据,可以防止私密数据过量泄露。而目前一些新的方法中,权证分发本身被改善成了一个数字签名的过程,通过完全的非对称密码系统,让数据提供方原本需要保存的Token,转变为只需要验证访问请求所携带的数字签名就可以获知权限的Certificate/Signature,例如Hyperledger区块链平台就采用这种方式,分别签发Enrollment Certificate和Transaction Certificate为不同的业务场景提供不同的数据访问权限。
授权方案的发展历经了几个阶段(如上图),虽然和出现时间并没有太大关系,TLS早就定义了第三种形式作为分发证书链的模式,我们可以看到在第二种方案中,通过采用token的授权,使得细粒度的授权分发可以和验证分离开来。而第三种方案则更进一步,让双方不需要再传输存储授权凭证,而且整个授权过程可以是一次性的,而不会影响到数据访问。
随着高阶密码学原语的引入,我们甚至可以在验证授权的过程中为用户的访问提供隐私保护,例如通过Dual Receiver Encryption配合Ring Signature可以实现匿名组策略等效果。
加密(Encryption),往往是较为耗时和受限制的数据治理手段,尤其是非对称加密算法,只能针对少量的数据集执行,而对称加密又存在交换秘钥、存储管理秘钥时的隐患。因此作为保护数据私密性的***手段,我们应该尽量避免滥用误用,常见的误用场景包括试图通过在客户端加密Token来防止用户篡改数据访问权限、试图用加密应用代码的方式保护数据、试图仅依靠对称加密分发数据等等。
常见的加密确保私密性,常常是基于“数据被盗”或者“数据集必须存放在用户端”的假设,“数据被盗”决定了每个数据池都有必要对基础设施进行预防,例如对硬盘加密、选择安全的通信信道和协议、避免秘钥泄露、避免系统人为操作、避免内网服务对外开放、减少私有网络的威胁等等。而“数据集必须存放在用户端”则需要考虑到恶意软件、逆向工程、暴力破解可能造成的数据损失。
数据完整性
完整性(Integrity),说到区块链的一大卖点就是不可篡改,通过确定交易双方身份的Signature、交易顺序的Merkel Hash tree、Block前向完整性(Forward integrity)Hash,三者(如图)组成了一套完整的分布式账本链条,其中每一条、每一页的交易记录之间、页与页之间都由密码学原语保护。这样的一种数据结构设计,为区块链带来了更灵活的去中心结算方案。
将区块链解构之后,我们也可以灵活地将这些密码学原语用于保障常规数据的完整性,尤其可以应对B2B场景下,企业联盟之间的数据共享信任问题,通过完整性校验,可以实现竞争关系下的同业数据融合;通过数字签名,可以为如票据交易、款项去处之类的数据审计提供证据。
大数据分析提高了对数据真实性的要求,密码学提供的完整性校验方案,可以为外来数据治理提供额外的保障。同时由于密码学原语位于设施的底层,因而这一系列的验证审计操作都可以自动化执行,而不需要额外的人力来管理校对。
数据可用性
可用性(Availablity),在数据治理中是一个非常困难的话题,我们可以将数据副本分发到业务微服务中缓存,也可以采用分布式的存储方式,这些都是为了解决单点故障、减少大量数据同步的时间开销,其中Hash Table作为最常见的检索方式,可以同时保障数据的完整性和可用性,数据池可以使用分块的方式将数据分散存储,同时使用Hash来计算出摘要以供后续的检索,通过额外的加密手段,甚至可以实现对等节点的全量和增量数据同步,而不必担心数据的私密泄露。
DynamoDB采用了这种Hash一致性算法,“均匀”地管理数据分片(如图)。Bittorrent网络采用Hashtable来寻找目标文件。Spark-mllib也使用了Hash来进行词频统计,达到数据分治的效果,避免了维护全局term-to-index map的麻烦。
此外,加密后的数据由于可读性问题,很难再做重用,而常见的保护用户敏感信息,并且同时保护数据分析可读性的方法,在微软和苹果等公司都有所尝试,称为Differential privacy(如图),数据分析师在提取数据时,Privacy Guard评估Query Privacy impact,为反馈的数据加上噪音,例如可以使用Hash替换掉真实信息,只保留数据“特征”,减少用户隐私泄露的风险,同时又能保留数据的分析价值。
重返焦点
如果说数据湖是每个企业的金库,那么数据治理的安全措施就是用于搭起金库壁垒的一砖一瓦,每个安全措施之间的紧密粘合都依托于完善和牢固的密码学设计,随着“安全无小事,商场入战场”的警钟不断敲响,从基础设施建设上对数据治理的不断规范化和标准化呼声越来越高,密码学重回技术焦点的日子应该不会太远。