作者 | 陈峻
审校 | 重楼
引言
在企业的日常运营中,数据泄漏在广义上是指未经授权或已被授权的人员,错误或恶意地访问、删除、修改或传输企业或个人数据,而引发的各种安全事件。除了系统自身软硬件错误、以及源自外部的攻击,由组织内部人员造成的数据泄漏,在频次和财务影响等方面都呈上升趋势。
根据最近的一份报告显示,全球60%的数据泄漏主要是由内部威胁造成,而且平均每年会给企业造成约1150万美元的损失。究其根源,内部威胁源于组织内部人员拥有对网络、应用、数据库授权访问权限,以及全面的背景知识。
困境
内部数据泄漏之所以难以被发现,主要在于内部攻击者有能力更改登录记录、操作日志,进而销毁证据。有时,一些内部攻击在发生数月后被发现时,已造成了巨大损失。同时,根据欧洲《通用数据保护条例(GDPR)》,数据控制者必须在发生数据泄漏时,及时通知数据保护机构和受影响的数据所有者。如果组织未能在一定时间内通报违规情况,则将面临高额的罚款。面对内外部的安全压力,企业亟待开发出一套能快速检测到数据泄漏的系统。
引入区块链
近年来,随着区块链技术的成熟,以及在数据安全方面的优势,业界已有专家提出并实现了利用智能合约和区块链网络构建的、满足GDPR的实时检测系统。下面,我们将以太坊区块链网络为例,介绍一个典型的数据泄漏检测模型。
首先,我们讨论一下检测过程所涉及到的实体。GDPR规定了典型的四种实体,即:数据控制者、数据所有者、数据保护机构和数据处理者。其中:
- 收集数据的实体被称为数据控制者,他们负责针对数据收集原因和目的决定处理的方式。
- 数据所有者是(个人)数据的属主。
- 数据保护机构是指导数据控制者履行职责的实体。
- 代表(代替)数据控制者实际处理数据的实体则被称为数据处理者或数据消费者。
为了说明问题,我们来看一个典型的医患场景。如下图所示,在获得数据所有者(患者)的同意后,其医疗数据将存储在区块链上。数据处理者(医生)可以通过向数据控制者发出请求,从患者数据库中获取所需的患者数据。数据控制者使用泄漏检测系统执行必要检测的任务,如患者同意验证和数据验证等。也就是说,该系统要求数据控制者在与数据处理者共享数据前,需检测数据库记录中的任何更改,并验证记录的真实性。
检测模型
该数据泄漏检测系统的目标是为数据控制者提供一个能够即时检测数据泄漏的自动化工具,以协助识别恶意活动,方便支持数据控制者对发现的个人数据泄漏事件进行详细分析,形成泄漏报告,进而在其进一步升级之前加以缓解。下面我们来看看该系统模型及其组成部分。
在上面的流程图中,我们可以获悉其详细流程为:
1. 数据保护机构指派一名数据控制者在其用户数据存储库中进行数据录入。数据控制者接受数据所有者的个人身份信息(PII),如:姓名、电子邮件、电话号码、年龄、地址和符合ERC-20标准的以太坊专用钱包地址。注意,所有这些信息都是必填项。作为提交方,数据所有者应前往数据控制者处进行注册,并口头提供这些信息。
2. 数据控制者收到PII数据后,会将这些详细信息输入一个由保护机构和数据控制者集中控制的、使用诸如Node.js和MySQL构建的专用应用程序(App1 Data Entry)中。
3. 该提交会创建一个“同意动态链接”,并将其发送到数据所有者的电子邮件或手机上。该链接提供一个名为“Dapp 2 Data Consent”的同意面板。
4. 数据所有者收到该链接后,便可以在页面上看到自己的详细信息。他们需要使用在注册时提交过的以太坊账户,来验证这些详细的信息。同时,数据所有者应使用符合以太坊标准的钱包签署此类信息。由于这些信息使用的是数据所有者的私人密钥进行签名,因此只有他们在钱包中选择了与提供给数据控制者的相同地址,才能完成签名操作。
5. “DAPP2 Data Consent”应用程序将此数据签名的哈希值,连同所有相关PII数据,以离链(off-chain)的方式发送到MySQL数据库中。保护机构的数据控制者会核实所有已获得了区块链网络同意的数据。
6. 同时,区块链网络为新的记录提供了一个唯一递增的标识主键和一个时间戳。
7. 该应用程序会创建一个新的交易数据包,并将其发送到以太坊区块链网络中。该交易包使用的是前面提到的整个新记录的详细信息,作为嵌入式字符串,以创建一个记录证明的SHA256哈希值。而该加密的SALT正是用户钱包的公共地址。
8. 为了在区块链网络上提交这笔新的交易,应用程序“App1 Data Entry”会去检索智能合约最新的版本地址。从技术上说,要获取最新的智能合约地址,就必须调用“主数据中继合约”。它恰好是“主数据合约”所有旧版本或最新版本的注册表。而由于智能合约是不可变的,因此我们无法更改任何现有的智能合约,而要想添加新的功能,我们就得创建一个新的合约。这就是为什么中继或注册模式可以协助规整出新的合约,而不必担心它们的地址问题。
9. 一旦应用程序收到最新且正确的“主数据合约”地址,它就会向名为 “AddRecordProof”的智能合约函数发送包含用户识别码(UID,即“记录主键”)、时间戳和SHA256哈希值(即记录证明)的交易数据包。该功能应受到严格的限制,只能由授权人(如:数据控制者)使用数据控制者的钱包密钥(如:公私钥对)进行加密调用。注意,功能性访问控制是在“安全层合约”中被定义的。它具有诸如:可拥有性和断路器等不同的安全功能。
10. “主数据合约”使用名为“数据存储层合约”的存储库合约,将这些数据存储在智能合约中。与其调用者相比,数据存储层的分离,赋予了在合约内添加或更改任何变量或结构的权限,因此它是一个独立的合约。由于其在部署之后不可能更改任何变量,因此使用动态数组创建的存储库将有助于控制更改。而在交易成功后,以太坊会生成一个新的“交易哈希值”。而保护机构必须支付gas费,才能记录这些数据。
11. 名为“App3 Data Breach Viewer(数据泄漏查看器)”的应用程序,专用于查看记录的真实性。它以网格视图来显示所有的用户记录,并带有“验证”按钮。该按钮在被点击时,会向名为“getRecordProof”的“主数据合约”函数发送请求,该函数使用新生成的SHA256哈希值,作为链外记录的标识符。同时,该函数会将“记录证明”的SHA256哈希值返回给应用程序。而且该记录在此前已由数据收集者注册过。
12. 该应用程序的后台会从MySQL数据库中检索那些离链的数据记录,并使用SHA256生成新的记录证明。注意,智能合约中的记录证明必须和离链记录相同,才能被视为有效。否则,该记录将被视为无效或被更改。
13. 那些被更改的记录将会被包含在通知中,发送给数据控制者。而被更改的数据库则可以通过数据中心的备份数据库予以复制,或被更新到其原始位置。
模型合规性
我们可以通过下表来了解该模型所满足的GDPR各项条款:
处理的合法性 | 由于数据所有者已同意处理其个人数据,且完全有权随时授予或撤销同意,因此数据的处理具有合法和透明性。 |
同意条件 | 满足。 |
透明的信息和交流 | 满足。 |
访问权 | 根据默认政策,任何人都不能更改数据控制者对其个人数据采取CRUD等活动的权限。 |
更正权 | 数据主体可以要求数据控制者予以更正。 |
知情权 | 在收集数据或获得同意之前,平台必先获取数据所有者的签名。 |
删除权 | 由于个人数据被离链存储,因此数据控制者可应数据所有者的要求删除数据。 |
限制处理权 | 数据所有者完全有权随时授予或撤销同意。 |
数据可携带权 | 满足。 |
泄漏通知 | 该系统将每条记录的证明都保存在网络中。据此,系统能检测到数据库记录的任何改动。 |
用途和存储限制 | 个人信息的收集只用于明确、合法和公开的目的。此外,数据的保留时间也仅限于对实现目标绝对必要的情况。 |
数据最小化 | 该模型只处理相关、适当、且仅限于预期结果所需的数据。 |
小结
通过重复利用区块链技术的优势,上述模型提出了一个满足GDPR的数据泄漏检测系统,实现了数据的完整性、机密性、访问控制、透明度、以及数据所有者与同意的真实性。我们下期见!
作者介绍
陈峻(Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验。