Eotalk 是由 Eolink 和各合作方一起发起的泛技术聊天活动,每期我们会邀请一些技术圈内的大牛聊聊天,聊一下关于技术、创业工作、投融资等热点话题。
本期 Eotalk 我们来聊聊安全。最近网络安全事故频发,比如前段时间的公民数据泄露、美的受到攻击勒索千万等事件。我们邀请到 奇安信 负责数据安全的子公司技术负责人---简川力,一起来聊聊怎么安全地开放数据、使用数据、使用接口等等。
刘昊臻: 我们 Eolink 在跟用户沟通时发现, API 开放数据的需求是非常旺盛的。从企业希望搭建数字中台快速通过内部 API 搭建应用,到银行和政府希望通过开放 API 促进企业间合作的效率,如今 API 开放无处不在。
川力,你所了解到 API 开放的场景有哪些呢?
简川力: 政府单位可能会跟银行合作,银行就会用到政府的数据。以前可能直接去采或者直接去拿,这种方式都是不规范或违规的,现在基本上是不允许了。所以,一般中间会做一些服务,通过模型、通过 API、或者通过一些其他的方式给银行开放,银行就可以拿到这些数据,比如咱们贷款相关的、你的征信数据或者你的社保数据之类的,这是一类场景。
还有一类,在公安里面其实也会有类似的情况。公安跟公安内部,其中有一些部门,比如说像刑侦部门或者网安部门,数据是非常保密的,不能因为你也是公安内部其他部门的人,就让你直接来去访问,因此要留痕、审计之类,就需要用 API 去做开放。
刘昊臻: 你讲的两个场景,其实我们都有遇到过。数据开放它经过了好几个阶段,以前最早的时候,我们可能直接连数据库,给你一个相对安全的账号,或者很多年前会要求必须带 U 盘或者是硬盘,去现场拷数据才能带走。这种方式效率是很低的,同时它其实并不安全。
第二个,后期出现了远程调用,它其实也是在数据库的基础上做的远程调用。就安全性而言,很多鉴权和操作过程的监控等方面都做得不是很好。现在比较常见的做法,其实是通过 API 的方式去开放接口。像银行跟政府之间、一些企业跟供应商之间、企业与合作企业之间,有些时候是企业内部的敏感数据,不好直接开放,就可以通过接口来控制哪些供应商或哪些合作方,它能够各自用哪些数据、用哪些字段、用什么访问方式、有效期等等。
包括像刚刚聊到的公安部门,我们也有一些类似的客户。因为公安内部很多部门之间,它会通过一个类似于叫 API 的开放平台,或叫能力开放平台,所有系统的东西都在上面。如果要用的话需要先申请,审批通过之后才能调用。其实 API 的开放和调用已经是非常普及的场景了。
现在我们再去看所谓的 API 开放,怎么样去把接口开放出来,它可能不是一个很难的事情。最简单的就是后面是一些微服务,前面搭一个网关。但即使如此还是会有很多数据泄露的问题。像银行或政府,他们其实还是会对于数据开放上有很多深度的要求的。
川力,在你们所接触到的场景里面,大家会在 API 开放过程中面临什么样的挑战呢?
简川力: 现在大家可能说的比较多的是,API 服务申请个权限、限制一下时间段,或者限制一些字段数据。但是像国家的数据,安全保护好以后还要分类分级,有数据安全的治理规范。而且有些数据跟国家机密还有关系,不只是影响社会关系这么简单,所以他们的要求就更高了。
用户通过 API 访问了数据,虽然通过了鉴权,但是没有办法限制二次分发,或者再去做一次倒卖。他们更希望数据不出去,并且还能够给别人提供 API 的服务或者是数据的服务,所以现在多了一些隐私计算等新的解决方案。
很多时候不管是银行、企业,还是政府单位,他们更多想的是在我的可控环境里面用数据,用完了只是把结果拿走,而不是把我的数据拿到你那去做计算。
刘昊臻: 就是你可以拿结果,或者在不拿数据的情况下,去把你想要的结果给算出来。
简川力: 没错。其实开放 API 给别人,他真正去用 API 无非也就是要在它的应用上去用你的数据。不管是做机器学习、深度学习,或者是去做一些加减乘除、规则匹配,实际上它的过程也是这样子的。只不过现在可能更多的希望可以把这个过程再提前,能够在小范围将数据保存起来,这是最好的。
刘昊臻: 刚刚聊到隐私计算,对于一般开发者的应用场景下,大家可能比较少接触这个概念或者没有听过这个词,能否把隐私计算再展开讲讲?什么场景下面会用的比较多?
简川力: 其实这个概念很早就有了,但是在这个过程之中可能有很多不同的实现方式。比如我可以通过加密算法,把数据加密然后再做加密计算,这是其中一种方式。
还有就是我可以用差分隐私算法把数据查出来,可能它中间插入的一些值,让数据跟原来的不一样,但是让它跟我的原始数据的分布保持一致。
还有就是我们知道的联邦学习,比如在 2018 年以前,上海有很多的黑产专卖数据,银行什么的都去买这些数据,拿着这些个人数据去做风控的提升,或者贷款信用的提升,一些保险行业可能也会去买这些数据。
但是现在不可以这样做了。这些数据被归还到了上海大数据局,上海大数据是事业单位,是不可能卖数据的。这个时候,如果银行要用这些数据,又不能直接给,你单独运用他的数据是不行的,你还得结合自己的数据去做,两个还不能够数据交互,只能去做计算的交互。
目前比较多的使用方式是用同态加密做安全多方计算,还有就是联邦学习,我们只是交互中间的一些参数去优化我的算法,不要去交互真实的数据。
刘昊臻: 我知道川力在做数据沙箱这个产品,数据沙箱它跟你刚刚所讲的隐私计算有什么关系吗?它主是解决什么样的场景呢?
简川力: 其实我们要解决的跟刚才提到的问题一样,只不过形式不同。
一种形式是,我的数据在我自己企业内部,有个客户 A 他想用我的数据,那你就到我这里来。你跑到我的线下来,跑到我的机房里面,黑屋子我给你关起来,你用完了,拿走什么东西,我再去给你做审核。
沙箱解决的就是你可以不需要高成本地跑到线下来,通过沙箱就可以远程去做你自己的数据开发。最后呢,我们自动给你的结果,包括你要带走的东西做一些审核和保护,然后你再带走,甚至可能我连结果都不让你带走。这时再把你的应用单独变成一个 API 服务,由你的外部去调用。通过这两个步骤,就形成了一个新型的 API 服务方式:我开放给你,而不是我给一个数据,相当于你把你的程序也放到我这里来,跑完了把结果带走。
还有一种就是多方的情况,两方要同时去做计算,两方的数据也要同时去使用,这是沙箱所解决的问题。沙箱有一个天然的比较好的点,比如安全多方计算,它主要是用同态加密去做,计算量很大、对算力要求非常高,可能实际你真正去落地的时候,会发现很难。联邦计算在中间也会有一些梯度攻击的问题,可能通过中间的参数把数据给翻译出来了。那么沙箱就是在这两个的基础上做了更进一步的改善。
刘昊臻: 沙箱它其实是一个比较大的解决方案还是一个标准的产品?
简川力: 在我们的定义里,它就是一个标准的系统。举个例子,企业 A 或者是政府 A,它可能有一堆社保数据,它想把社保数据开放给别人,开放出来给第三方去用,给当地的政府创造一些政绩,或者让它的数据能够体现价值。
其实政府的数据在前两年已经做了很好的规划,做完规划以后,下一步就是你的数据要对社会产生价值,同时大家又要做好保护,你不开放给别人,别人用不了,随便开放又不行。所以沙箱就变成了一个标准的东西,可以装在客户的环境下面,去给到大家去使用。
为什么我们叫交易沙箱呢?其实在这个过程中,我们可以对使用方的情况做一些审计或者做一些控制等,慢慢的你会发现当它做的足够大的时候,它会变成一个类似于交易的平台。这时我卖给你的可能就不是数据了,而是我把数据开放给你,你可以去用,用完了把你的结果带走。
刘昊臻: 明白。就是说,数据沙箱其实有点像是一个提供了比较安全的运算的环境,你可以在这个沙箱里面去跑你的执行过程的算法,但是它的数据,其实一直都在这个沙箱环境里面,最后你只是把你算出来结果拿走而已。
简川力: 没错。数据本身最开始准确来讲,是在客户的环境里面。而我们的沙箱分为两方面:一方面是给用户去调试的,另一方面是给用户最终去运行计算的。
我们整个沙箱是不包含这些数据的,真正的数据在客户侧,比如说客户的数据可能在大数据平台或者是数据库里面,沙箱只是在计算的时候去远程访问这个数据,把它做一些转化,等到它算完以后,沙箱就会被销毁。所以整个数据在沙箱里面是不会有保存的,并且在这个计算的过程之中,用户可能有一些恶意的操作,我就把数据通过网络传走,沙箱都是做好了严格控制的,就是把这都关闭了,他要带走也不行。
刘昊臻: 我有个疑问,我们假设 A、B 两方。比如 B 他说我想要算个东西,我有自己的算法程序,这个程序是在 B 的环境远程从 A 拿数据处理呢,还是要装在 A 的沙箱里面运行?
简川力: 好问题!这是现在沙箱的一个难点。我们的计算实际上,最好是要放在刚才你说的 A 方的,可以远程去调用,但是对于 A 方来说,可能他不太放心,因此还是要求把 B 的程序放在 A 的沙箱里。难点在于我们沙箱如何更好适配所有的程序,比如能支持 B 方程序的环境,现在的沙箱大部分的难点都是这样,需要适配一个全面的执行环境。
目前业内更多的是用远程桌面的方式去支持,其他的都不行。包括刚才我们提到的联邦学习,它实际上是要去改造你的程序的,你要根据它的内容去改造。在安全多方计算里面,也是一样的,你需要用到安全多方计算里面的代码。
刘昊臻: 世界是平衡的,你想方便就没那么安全,想安全就要想办法必须得做点改造。
刘昊臻: 我之前听说你们为了解决数据通过 API 开放时判断内容是否包含敏感数据的问题,做了一个开源产品叫 OpenDLP,给大家介绍一下吧~
简川力: OpenDLP 是我们从开发沙箱过程之中提取出来的一个比较关键的组件,或者说一个比较通用的组件。
很多时候,不管是在公安、政府单位,还是比较大的企业,比如银行,它新的系统可能还好,但会有一些数据在旧的系统上,这些旧的系统数据根本没有标注,完全不知道这数据是什么含义,根本不知道有哪些是敏感的,也就没法开放或者关联。
OpenDLP 就是用来识别哪些数据是敏感的,如果是敏感的话,我们至少会给你一个提示,说你这个东西可能不能拿去开放了,要做好后续的保障,这是 OpenDLP 的第一个功能:在开放之前,会对你的数据做扫描。
最后形成 API 要开放出去了,那么 API 它在访问和返回的时候,会有两种情况:一种是请求,一种是响应。OpenDLP 会在请求之前对你访问的这些字段做判断,看看这些东西是不是已经涉及到敏感,如果已经涉及到敏感,那我就会告诉你开放的东西是不正确的,这是第一步。
第二步是等到真的出去了,再对这个数据做一次扫描,通过用户的自定义和我们自己内置的一些基本规则去帮他识别,如果是敏感的,那就直接不返回了。
刘昊臻: 听上去有很多细节难点,因为这个敏感数据可能存在各种地方,像 API 里面就有多种数据格式,还有文档、视频音频等。
简川力: 是的。现在的敏感数据很多都在文本里,比如一篇文章,他可能在里面插入的几个这种名字、身份证号或手机号,你让人去看可能真的很难看出来。
文本是属于结构化的数据,现在这种扫描大部分是利用到 NLP 的方式,告诉你这有个手机号,它的上下文是什么,它可能是个敏感的数据,需要经过一道人的工序的判断。
可能还有一些加密怎么扫都扫不出来,这也是我们沙箱现在要解决的一个技术难点。比如我们会根据程序的语法,和生成的结果内容去做比较,看看你是不是有做一些恶意的操作,如果是恶意操作就是有问题的。
刘昊臻: 传统的模式其实有点像是正则匹配,识别率准确率不是那么高。现在的话,比较智能一些了。就是根据上下文,根据它的甚至可能代码的角度,去判断它数据是否经过加密。
简川力: OpenDLP 的第一个版本针对的是刚才提到的结构化数据分析。
刘昊臻: 明白。OpenDLP 它的部署和使用的门槛高吗?
简川力: 我们开发是直接用到 Python 去做的,开发或者是使用都比较容易,欢迎大家试用和反馈。
刘昊臻: Eolink 本身有很强的 API 管理和自动化测试功能,是不是也能够帮助用户在测试 API 的过程中判断一下返回的内容里面到底有没有敏感数据,作为安全测试的一个辅助手段,我觉得应该是比较好的一个场景。
简川力: 是的。其实这是一个单独跟 API 开放去做结合的一个点,就是刚才你提到的,查完以后的结果去做一个审核,Eolink 也是我们首要的合作方。
落到咱们的 API 定义上面会更好的去做结合,比如我定义的名字叫 name,name 的翻译是姓名,那我就知道姓名肯定是个敏感的东西,你就不能够用它去开放了。就算你真的要去开放,你也不能用这一个字段名,你得用别的字段名。这也是我觉得可以跟敏感数据去做结合的点。
刘昊臻: 明白,期待我们接下来的合作。
今天我们聊了很多东西,川力讲得非常好,现在的 API 开放其实已经不是我们大家基本概念里面单纯的接一个东西,做个鉴权就把它放出来,更加关键是在于你结果开放之后,你怎么样去保证你的数据在真正应用的过程中的安全。这里讲到隐私计算、数据沙箱怎么样保证我们的数据在不出我们的企业的范围就能完成整个计算过程,而调用方只能拿到他们所想要的安全、没有敏感信息的结果。
川力他们在做 OpenDLP,我们也非常期待接下来我们 Eolink 的开源产品或者 SaaS 产品与OpenDLP结合,让我们的用户能更加全面的去做 API 的治理。
感谢川力,也感谢各位对 Eolink 的支持!我们下期再见~
Eotalk 往期推荐 ⭐⭐⭐⭐⭐:
【Eotalk Vol.03】结合 API & DaaS,让使用数据更方便|Tapdata CEO TJ 唐建法