作者简介:肖文棣,OWASP中国广东分会负责人、网安加社区特聘专家,现任某外企安全架构师,负责应用安全设计、管理和评审等工作。
最近在和一些朋友讨论数据安全和隐私保护在企业中的实践,现在将讨论总结一下,希望对关注数据安全和隐私保护的朋友有所帮助。
数据安全和隐私保护的基础
数据安全的概念
数据安全,指的是采用必要措施确保数据处于有效保护和合法使用的状态,以及保障持续安全状态的能力。
数据安全应该保证数据生产、存储、传输、访问、使用和销毁数据全生命周期过程的安全,并保证数据处理过程的保密性、完整性和可用性。
数据安全包括两个维度,一个维度是数据本身的安全,主要是指采用现代密码算法对数据进行主动保护,如数据保密、数据完整性、双向强身份认证等。另一个维度是数据防护的安全,主要是采用现代信息存储手段对数据进行主动防护,如通过磁盘阵列、数据备份、异地容灾等手段保证数据的安全,数据安全是一种主动的保护措施,数据本身的安全必须基于可靠的加密算法与安全体系,主要是有对称算法与公开密钥密码体系两种。
隐私保护的概念
隐私保护这里有两个含义,一个是隐私本身的保护,一个是隐私权保护。
隐私是指个人不愿告人或者不方便告人的事情。隐私保护是指通过保护个人和组织的隐私,防止敏感信息被不当收集、使用、披露和破坏。
隐私权是指自然人享有的私人生活安宁和私人信息秘密依法受到保护,不被他人非法侵扰、收集、利用和公开的一种人格权。隐私权保护是指保证个人对其私人生活、个人信息和个人决策的控制权。
隐私权保护是一种法律保护,如果没有法律保护个人隐私,个人隐私保护就无法谈起。所以我们通常意义说的隐私保护实际上是隐私权保护。
数据安全和隐私保护的关系
数据安全是隐私保护的基石,没有数据安全,肯定就没有隐私保护。但是数据安全做好了,隐私保护也未必做好,所以要注意。
网上有高人总结了这几点,非常形象。
这几点描述的相同的意思,数据安全是基础,隐私保护是结果。数据安全远不是技术问题,隐私保护也不只是法律问题。
数据安全和隐私保护的重要性和挑战
数据安全和隐私保护非常重要,主要体现在这几个方面:
1. 保护个人隐私
数据泄露事件频繁发生,许多人的隐私泄露会给他们的生活带来很大的不便。数据安全和隐私保护可以保护个人隐私,防止个人数据的滥用和泄露。
2. 防止经济损失
黑客攻击和数据泄露可能导致企业和组织遭受重大的经济损失。数据安全和隐私保护可以避免这些风险。
3. 维护国家安全
在国家层面上,保护数据安全和隐私对于维护国家安全至关重要。
4. 促进经济发展
数据是新的生产要素,已经成为重要的资产和资源,是数字化时代的新粮食。数据安全是数字化时代粮食安全的基石,是经营和管理的基础。
数据保护和个人隐私要做好不容易,主要的风险和挑战有以下方面:
1. 技术发展带来的挑战
随着技术的发展,黑客和网络犯罪分子不断利用新的手段和漏洞来攻击数据。这使得保护数据隐私和安全变得越来越困难。新的数据收集和分析技术也让隐私保护变得更加复杂。
2. 法规和标准的不完善
各国和地区的数据保护法规不尽相同,企业在遵守法规的同时,还需要面临不同地区法规的调和问题。政府和监管部门的能力和资源有限,难以实时跟进技术发展的步伐。
3. 公众意识不强
许多人对数据隐私和安全的重要性缺乏足够的认识。他们可能会在不知情的情况下泄露自己的敏感信息,或者对那些收集、处理和存储数据的企业抱有过高的信任。这种缺乏警惕性可能使他们更容易成为数据泄露的受害者。
4. 大数据分析带来的用户隐私挑战
在大数据时代,想屏蔽外部数据商挖掘个人信息是不可能的。目前,各社交网站均不同程度地开放其用户所产生的实时数据,被一些数据提供商收集,还出现了一些监测数据的市场分析机构。通过人们在社交网站中写入的信息、智能手机显示的位置信息等多种数据组合,已经可以通过非常高的精度锁定个人,挖掘出个人信息体系,用户隐私安全问题堪忧。
数据安全和隐私保护的威胁建模
企业要做好数据安全和隐私保护的实践,那么就要将数据安全和隐私保护融入到软件生命周期中,其中非常重要的是做威胁建模。
威胁建模主要有两种方法,一种是升级版的STRIDE方法,也叫Advance STRIDE,将隐私保护纳入到STRIDE威胁建模方法中。另一种是LINDDUN方法,这个是专门做隐私保护的威胁建模的模型,强烈推荐LINDDUN方法。
ASTRIDE方法
STRIDE是从攻击者的角度,把威胁划分成6个类别,分别是Spooling(仿冒)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄露)、Dos(拒绝服务)和Elevation of privilege(权限提升)。
随着全球对隐私保护重视程度的加大,隐私安全也成了产品的一个重要威胁,因此STRIDE的6个威胁也添加了一项隐私(Privacy),也就变成了ASTRIDE,A代表Advanced。
ASTRIDE方法延续STRIDE方法的概念和逻辑,STRIDE方法会和安全三要素CIA以及安全三属性3A(认证Authentication,授权Authorization,审计Audit)进行连接,那么ASTRIDE方法加上了一个合法合规的属性。下面的表格进行了举例,大家可以参考:
威胁 | 安全属性 | 定义 | 举例 |
仿冒 (S) | 认证 | 冒充人或物 | 冒充其他用户账号 |
篡改 (T) | 完整性 | 修改数据或代码 | 修改订单信息 |
抵赖 (R) | 审计 | 不承认做过某行为 | 不承认修改行为 |
信息泄露(I) | 保密性 | 信息被泄露或窃取 | 用户信息被泄露 |
拒绝服务(D) | 可用性 | 消息资源、服务不可用 | DDOS导致服务不可用 |
权限提升(E) | 授权 | 未经授权获取、提升权限 | 普通用户提权为管理员 |
隐私 (P)* | 合法合规 | 隐私处理不合法合规 | 未经用户同意过分收集用户信息 |
从实际应用看,ASTRIDE模型有点牵强,并不是非常适用于数据安全和数据保护,只是对STRIDE依葫芦画瓢做了一个模仿扩展而已。
LINDDUN方法
LINDDUN是公认的隐私威胁建模框架,由隐私专家KU Leuven提出来。LINDDUN有专门的网站,具体网址是:https://linddun.org/
LINDDUN是七个隐私威胁的关键字母的缩写,具体是:
1. 可连接性 ( Linkability )
两个或更多利益相关项(IOI,如主题、信息、行动等)的可连接性允许攻击者充分区分这些相关项在系统中是否有关联。
2. 可识别性( Identifiability )
指攻击者可以充分识别与利益相关的主体,例如,信息的发送者。实质上,当涉及到一个主体及其属性时,可识别性是可连接性的一个特例。可识别性对匿名性和假名性都是一种威胁。
3. 不可否认性( Non-repudiation )
与STRIDE中的R(否认)相反,这是对隐私的一种威胁。抗抵赖性允许攻击者收集证据来反驳否认方的主张,并证明用户知道、做过或说过什么。
4. 可探测性( Detectability)
一个相关项的可探测性意味着攻击者可以充分区分这样一个项目是否存在。如果我们把信息视为利益相关项,这意味着信息是可以从随机噪音中充分辨别出来的。
5. 信息泄露( Information Disclosure)
将个人信息暴露给不应该接触到的人。
6. 内容无意识( Content Unawareness )
用户没有意识到给系统披露过多信息。用户要么提供了太多的信息,使攻击者能够轻易地检索到用户的身份,要么提供了不准确的信息,导致错误的决定或行动。
7. 政策或同意后不遵守(policy/consent Noncompliance )
尽管该系统向其用户显示其隐私政策。也不能保证该系统实际上遵守了政策。因此,用户的个人数据仍然可能泄露。
LINDDUN方法中涉及两个隐私的概念:硬隐私和软隐私。
硬隐私的数据保护目标是数据最小化,假设个人数据不会泄露给第三方,作为数据主体提供尽可能少的信息,并尽力减少对其他实体的信任。例如:用户自行对手机APP进行隐私权限管理。硬隐私表示数据主体对隐私有绝对控制权。
软隐私的数据保护目标是提供数据安全,并在特定的目的和同意下处理数据,通过政策、访问控制和审计等手段。例如:企业在用户数据使用中,通过技术手段保证全生命周期中的安全。软隐私基于数据主体已经失去了对数据的控制,不得不相信数据控制者的诚实和能力。
LINDDUN将7个威胁与硬隐私和软隐私进行连接。
硬隐私涉及可连接性、可识别性、不可否认性和可探测性等前四个隐私威胁LIND。
软隐私涉及信息泄漏、内容无意识、政策或者同意后不合规等后三个隐私威胁DUN。
基于LINDDUN这七种威胁,一般可以使用相关的威胁消减措施:
威胁 | 消减措施 |
可连接性(L) | 不使用唯一标识符连接各个系统 |
可识别性(I) | 使用匿名或者假名 |
不可否认性(N) | 检查日志的使用和边界,严格日志的使用 |
可探测性(D) | 防止数据的关联分析 |
信息泄露(D) | 最小数据原则 |
内容无意识(U) | 防止数据的关联分析 |
政策或同意后不合规(N) | 处理隐私数据前需要确保提醒和得到用户同意 |
对于这七种威胁的消减措施,我们需要认真分析,根据实际情况去处理。我们要了解威胁或者风险是无处不在的,对于风险的处置有四种方法,不是任何风险都可以消减的。风险的消减需要成本的,我们要衡量综合情况进行判断。
举个例子,可连接性要求不使用唯一标识符连接各个系统,这个在实际工作中比较困难的,所以对于类似的风险我们可能要接受风险或者寻找其他代替方案。
威胁建模工具的推荐
工欲善其事,必先利其器。我们要做好威胁建模,需要好的工具的辅助。这里有两款工具的推荐,一个是微软的Thread Modeling Tool,另外一个是OWASP Dragon,我个人非常推崇OWASP的Dragon,因为它更加体现了威胁建模的本质。
虽然STRIDE模型是微软提出来的,Threat Modeling Tool也适合STRIDE这个模型,但是微软Threat Modeling Tool只适合Windows平台,这个就是很大的不足。而且微软的Threat Modeling Tool和微软本身的功能过于绑定,它的数据流图也不是标准的,这样想单纯做一个数据流图就比较困难了。另外微软Threat Modeling Tool是只支持STRIDE这个模型,不支持LINDDUN模型。
反观OWASP Dragon,支持多平台,无论Windows、Mac、Linux都很好支持,它是基于Java的,所以兼容性很好。OWASP Dragon使用标准的数据流图,没有任何额外的附加绑定,非常纯粹。而且OWASP Dragon同时支持STRIDE和Dragon两个模型。
OWASP Dragon的官方网站是:https://owasp.org/www-project-threat-dragon/,大家有兴趣可以自己下载和安装,并且试用。
OWASP Threat Dragon是一种建模工具,用于创建威胁模型图,作为安全开发生命周期的一部分。Threat Dragon遵循威胁建模宣言的价值观和原则。它可用于记录可能的威胁并决定其缓解措施,以及提供威胁模型组件和威胁面的视觉指示。
OWASP Dragon的网站中介绍了威胁建模宣言,这个很有意思,如果你感兴趣可以去了解一下,对你进一步理解威胁建模很有帮助。威胁建模宣言的网址是:https://www.threatmodelingmanifesto.org/。
总结和感言
知易行难,做好数据安全和隐私保护并不是一件容易的事情。
首先我们企业内部要形成安全共识,就是安全是企业每个人的事情,而不仅仅是安全团队的事情,如果没有这个安全共识,数据安全和隐私保护很难做好。
其次要理解数据安全和隐私保护的关系,数据安全是基石,隐私保护是结果。我们讨论隐私保护,实际上说的是隐私权保护。如果我们产品涉及的国家和地区没有相关的隐私保护的法律,那么这种情况下谈隐私保护就没有太多意义。
关于隐私保护的风险评估很有意思:
隐私风险 = 国家/角色* 缺陷利用的技术条件 * 影响。
其中国家/角色指的就是产品发往的国家和产品自身所处的角色。不同国家对隐私的重视程度不同,不同产品角色所承担的法律风险不同。如果该国家和地区没有隐私保护的要求,那么该项为0,得到总体的隐私风险就是0,就是不需要考虑隐私保护。
最后数据安全和隐私保护要落实到软件生命周期中,最关键是在威胁建模中,我们要理解和学会使用LINDDUN,同时要学习用好工具,比如OWASP Dragon。
有句话和各位共勉:人人为我,我为人人。如果企业内部人人都齐心协议,各个部门通力合作,我们可以在最大限度地做好企业的数据安全和隐私保护,保障企业的权益。