前面两篇介绍了CarBlock数据交易落地PoC的业务流程以及其中的一些和用户体验相关的问题,看起来好像挺复杂的。那么为什么会这么复杂呢?因为里面有好多和加密相关的地方。那么为什么要加密呢?今天我就介绍一下业务落地PoC里加密相关的一些事情。为此我特地和我们的工程副总裁颜卿再次学习和讨论了相关内容,非常感谢他给我准备了很多相关资料,下面我尽我最大的能力转述、整理说明清楚相关内容。
先说说为什么要加密?
第一,保证数据的完整性和安全性
我们做的是数据交易,车辆行驶驾驶相关数据的交易。对于数据卖家,他们的需求就是在我不出售的时候,别人不能看到我的数据。不然,能够看到的数据,我怎么确保你没有把我的数据挪作他用。对于数据买家,他们的需求就是要获得真实的数据,这个数据给我的时候不能被篡改。举个简单的例子,比如在UBI(Usage Based Insurance)保险业务里,保险公司看中的是车辆的真实数据,通过设备上传的行车数据(例如:行驶里程、时间、急转弯、急加速、急刹车),进而根据数据模型来推算出这个用户这辆车的保额。如果用户能够篡改这些数据,就能恶意骗保,保险公司会有很大损失,这样他们肯定不能接受。所以,他们也需要有一种底层逻辑来保证数据的完整性,保证数据产生后是不可能被篡改的。这也是这些业务的基础。
第二,做到真正的重新确权
在以往的中心化模型中,做的比较严谨的服务商/厂商也会加密数据,但是这些加密都是由服务商/厂商来做的。他们这种加密主要是确保:1、数据通道是安全的;2、数据本身是安全。但由于是中心化的,数据实际的所有权其实是“归属“于这些服务商/厂商。他们使用PKI的方式做加密和验证,所有秘钥都是中心化管理,无论是公钥还是私钥,他们其实都是有权限获得的。那么自然可以解开数据来为自己所用,甚至是拿这些数据去变现。虽然有各种法规来规定不能这么做,但是他们会通过你不会仔细阅读但会同意的用户协议来保证和保护他们在最大程度上利用你的数据。实际情况是,你对你的数据没有什么所有权,你甚至不知道自己的数据在哪里,也许你仅仅是有删除权,且你删除后,服务商/厂商后台到底删除没有你也不知道。而通过合理的加密,能够因为存储时由你加密,也就只能由你解开,所以你的数据就是你的。CarBlock采用后者加密模型,我们在数据产生的那刻,便用用户的公钥进行了加密,那么这个数据就只能用户自己用自己的私钥去解开了,从而通过技术的手段去把数据重新做了确权。
第三,保护用户隐私
在上面两条的讲述中,已经提到了第三方可以在未得到你授权的情况下看到你的数据,而且他们怎么使用你的数据你也不知道,这就是涉及到用户隐私问题,这也是最近一两年大家开始真正关注的问题。现在随着欧洲GDPR法案的发布,各国对于数据隐私保护也从关注落到实实在在的法案上,并相继推出自己国家的隐私法案,中国的隐私保护法案也在酝酿中,将在不久的将来推出。而通过更好的加密机制才能从根本上保护用户的隐私。
为了能够做到上面三点,合理的加密机制是比不可少的。那么这些加密机制到底是如何工作的呢?下面详细说说加密的工作原理。
再说说加密工作原理
第一,数据在产生时就非对称加密
这里采用的是非对称加密技术,这种加密技术是目前加密领域中应用比较广泛且安全性较高的一种加密方式。在CarBlock的生态中,用户一旦同意挖矿(贡献数据),那么他的数据就会用用户自己的公钥进行加密后上传,这就从数据源头开始保证,确保数据在出来的那刻就已经被安全的处理,防止泄露或者被篡改。因为只有用户自己的私钥才能解开加密数据,所以从根本上保证了数据完整性和安全性。
第二,数据在交易中被代理重加密
交易中采用的是代理重加密技术。代理重加密并不是新的技术,但是却是非常符合数据交易的模型,这里有两点:
1、代理重加密可轻松解决1对N的模型。
下面用加密领域常见的几个人Alice、Bob、Cathy来详细举例讲讲。在以往的安全通信模型中,如果Alice要把自己的数据安全的给到Bob的话,就需要拿到Bob的公钥,加密后传给Bob,Bob就可以用自己的私钥解开获得原始数据。但是,如果Alice还希望把数据给Cathy的话,那就得要同样拿到Cathy的公钥,做相同的事情。可以看到这种模式是1对1的。这样无疑增加了Alice的负担,因为她在加密之前还不得不把之前加密的数据进行解密。
而代理重加密就很好的解决了这个问题,CarBlock作为中间的代理,存储的是用户用自己的公钥加密后的数据。我们还是以Alice的这个例子来看,如果Bob作为买方,需要Alice的数据的话,那么Alice唯一要做的只是生成一个代理重加密的秘钥,对数据进行重加密后,给到Bob,Bob就能用自己的私钥解开。同样如果Cathy需要Alice的数据,那么对Alice的数据进行一次代理重加密即可。Alice无需解开原来已加密的数据,每次交易只是生成一份新的代理重加密数据。在这里,CarBlock充分利用了代理重加密1对N的特性来解决数据交易中的1对N的场景。
2.CarBlock在整个数据交易过程中是不会接触到原始数据的。
作为数据交易服务的提供方,无论从原则上还是从技术上都应该做到无法接触到用户原始的数据,这样就真正从底层实现了用户隐私保护,这个在数据交易中非常重要,因为如果不做到这点,那用户就会怀疑数据交易服务的提供商有没有自己留一份原始数据出售或挪作他用,用户的数据隐私也得不到彻底的保护。而使用代理重加密机制的话,数据在流转的过程中始终不会有机会被第三方解密,数据只有卖方或者买方通过自己的私钥才能解开,这样既保证了数据的完整性,又保证了数据的隐私性。
以上就是CarBlock数据交易在落地时的一些加密机制,这些加密机制更加详细的介绍在网上都能找到,我这里就不再说的那么细了。同时,网上也有很多开源的实现方式,大家也可以参考。
如果你对数据交易业务的数据加密还有什么问题,或者不一样的想法,欢迎留言评论。