可信身份可以是中心化的,也可以是去中心化的,所以这里专门把可信、去中心二者并列。
中心化情况下,中心提供者无法自证清白,某些不诚实的中心提供者还会冒用用户身份作恶。
而且中心化逻辑下,中心保存了大量用户账号,中心需要承担非常高的安全压力。
比如服务器被入侵就导致了用户的安全问题。防火墙/是网络作为安全边界,可信身份/零信任架构是身份作为安全边界!
互联网行业,身份存在的目的是告诉特定服务提供方(比如支付宝)“我是谁”。这个意义上讲,任何可以告诉别人我是谁的标记性信息都可以叫做身份。
传统互联网行业最常用的身份措施就是用户名,密码是用来保证用户名不被伪造的。
去中心身份是指身份数据的保存由owner自己控制,流转/使用过程完全由owner自己控制的一套账户产生、使用的机制。
用户无需注册,身份信息自主产生,哪些人能使用自己的身份信息由用户自己控制,用户不用一遍遍注册和填写资料。而且可以很方便的与个人生物识别信息关联,用户不用记录自己的身份信息。不再担心密码丢失。
比如,具体用例可以是这样:
这个做法其实就是零信任架构的最基本过程,只不过传统零信任架构基于中心化实现,存在一些不好解决的问题(比如证书如何颁发,如何分发,如何确保设备可信性等等,还有中心化逻辑的服务器被入侵导致的身份泄露等问题)。
接下来说下更复杂的场景(比如满足监管、实名等需求)的实现方案:可信计算+去中心技术。
每个人的身份id可以自主选择和生成,这个id可以通过技术手段与具体的一个人的生物特征绑定。 用户请求服务时,只需要带上这个id信息,由服务提供方验证这个id有哪些服务内容权限。
传统登录总是会有个C/S或者B/S的交互过程,这个交互过程通常不附带任何业务数据和逻辑,纯“验身”,实际上我们只需要在每次需要敏感服务的同时、携带上验身数据就够了。任何能让服务提供者知道“你是谁”的方式都能满足传统“登录”的需求,所以登陆逻辑不需要单独存在。
发起服务请求时随服务一起附带身份信息,同时这些身份信息不需要也不允许服务提供方存储、看到,只允许服务提供方使用。
因为服务提供方不存储任何身份数据 不能看到身份数据,只能”用“身份数据,所以服务提供方无法泄露或者贩卖用户数据。然后这套系统需要满足哪些基本条件:
这个过程明显存在一个问题就是:如果你的指纹、面部三维数据泄露了,你总不能换指纹、换脸吧。所以,在身份领域一个基本原则就是:生物信息可以用,但是不允许看、不允许存、不允许流转。
目前的绝大多数企业是不去满足这点的(随着硬件安全设备的进步,这一点有改变,比如目前几乎所有手机的指纹器是不提供指纹图像数据的)。
前不久,某AI公司采集的人脸识别数据库就泄露了,而且是三维生物识别信息,简单说就是在某些情况下,用程序就可以直接冒充这些被泄露信息的人的身份的。
比如冒充机构或者组织的核心部门的门禁信息等等,这是个非常恐怖的事情。这也是我说的去中心身份需要满足这个条件的非常重要的原因。
一个具体的场景: 用户无网络时,因为某个紧急理由,需要授权第三方能使用自己的的身份信息。此时,传统方案里,基本就只能把一些敏感信息(比如密码等)通过第三方渠道告知需求者,这实际是不现实的。在可信计算环境下,可信计算对于非授权者可以认为是黑盒,只能看到我想让你看到的内容。
回到刚才这个例子,我在本地,通过手机计算出一个加密过的密钥,把这个加密密钥通过第三方渠道(比如人肉口口相传、纸介质等等)传送给请求者。请求者在他本地的黑盒环境中按照事先预定好的逻辑使用密钥并获得授权。
第一个是软件层面的。目前的区块链技术只是解决了身份可信、数据可信、行为可信。对于执行环境可信是不满足的,也就是我一旦需要解密数据,或者对数据做明文操作,运行环境的控制者是可以看到这些数据的。
这就引入第二个壁垒点:硬件层面的执行环境可信。 前面说过,硬件层面执行环境的可信主要几个解决方案:intel的SGX技术,arm的trustzone,以及其它第三方的TPM模块,他们各有优缺点。
对于SGX来说,其黑盒环境资源与外部不可信环境共用较多,攻击面比较大。 比如各种侧信道攻击,在GitHub上有相应实现。解决方案上,目前intel有发布过一些软件层面的补丁,部分缓解了这个问题,但仍然没有彻底解决。
不过好的一面是,目前的侧信道攻击所能获得的数据粒度仍然比较大,做不到很精细的程度。所以如果使用这个方案,需要根据侧信道攻击的原理及产生问题的原因(比如针对特定代码模式的处理),做一些针对性处理。SGX的优点在于,其可以运行多个黑盒环境且各个黑盒环境相互隔离,这一点讲,它的安全性和实用性是最好的。
ARM的trustzone环境从硬件架构上讲是安全性最好的。 Trustzone有独立的内存、缓存等资源,部分独立的CPU内部硬件资源,还有独立的操作系统“trustOS”。但是,其只有一个可信环境,不像SGX可以同时运行多个可信环境,这限制了它的应用面。同时,因为需要有trustOS的支持,这通常是由手机厂商提供的,所以trustOS的可用性及功能完备性取决于手机厂商的具体实现,这对于花样翻新的各种应用明显是满足不了这些应用的需求的。
关于其他第三方的TPM模块,他们更多被用于标准的密码存储与加解密计算。这里有个问题是,对于TPM模块,在我国目前的环境下,法律对其有合规性要求,所有TPM都必须得到国家密码局的认可,未得认可的TPM模块及其电子产品,在中国销售和使用都是违法的。这个点,它的风险在哪,我就不过多解读了,大家可以私下沟通。
以上说的都是两个方面的技术壁垒,一是如何解决区块链的可信执行环境问题,二是硬件方式的可信环境,各自仍然不完善,如何与现有软件技术结合的问题。这是整个去中心可信身份的最重要两个技术壁垒。
最后,我想针对可信黑盒,举个具体的使用流程,让大家知道如何在可信黑盒环境下,既使用了数据,又不会让使用者看到数据。
以征信信息为例,用户A和机构B都使用各自黑盒协商出一个密钥,这个密钥的公钥通过网络传输到对方。密钥算法基于大数分解难题或者椭圆曲线的对数难题,确保公钥无法推导出私钥。产生公私钥过程都在黑盒里执行,任何第三方(包括用户)都无法知道私钥内容。
机构B在拿到用户A的公钥后,在黑盒内推导出一个用于解密的密钥,这个密钥除了黑盒内的程序,任何第三方都无法得知。
机构B从以太坊、IPFS等位置取得加密过的数据,将加密数据输入黑盒环境,黑盒程序利用刚才的密钥解密出数据明文,并根据事先预定好的逻辑(由区块链确保逻辑是公开的、可接受的、未被篡改的,也就是行为可信),根据数据明文得出业务结果并告诉机构B。
这就是一个最简单的可信身份的应用过程。
作者:mccoysc
链接:https://www.jianshu.com/p/d0449c0f3d59
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。