开篇
安全原则三剑客
1、机密性
2、完整性
3、可用性
黄金法则
1、身份识别和认证
2、授权
3、审计和问责
总结
开篇
当你所在的企业内网被入侵,数据被窃取之后,你也许能知道,是某个业务漏洞导致黑客能够进入内网,但你是否意识到,数据安全保护机制上同样产生了问题?类似这样的问题有很多,当我们遇到一个特定的攻击和安全问题时,往往看到的都是表象,而能否找到根本原因并进行修复,才是安全投入的关键。
任何应用最本质的东西其实都是数据。用户使用产品的过程,就是在和企业进行数据交换的过程。比如,用户使用微博,或是将数据写入到微博(发微博、评论、点赞等),或是从微博中获取数据(刷feed、热门流)。用户使用支付宝进行交易时,则是将资产以数据的形式进行转移。
因此,从更高的层面来说,安全的本质就是保护数据被合法地使用。怎么才叫“被合法地使用”呢,今天我们就来聊聊安全领域内的最为基础的数据保护三原则,以及应对安全问题的通用方法论。
安全原则三剑客
机密性(confidentiality)、完整性(integrity)、可用性(availability),我们简称为CIA三元组,是安全领域内最基础也是最重要的基本原则。理论上来说,一个完整的安全保障体系,应该充分考虑到所有的CIA原则。当然实际应用中,会根据实际需求和实施成本在这三个方向上的投入做取舍,在评判一个企业的安全水平时,也会分别从这三个方向进行考量。
1、机密性
机密性用一句话来说就是,确保数据只被授权的主体访问,不被任何未授权的主体访问。简单用一个词总结就是“不可见”。
举个例子,你不会允许陌生人查看你的个人隐私信息,但你可能会允许父母、朋友查看部分信息。再比如微信朋友圈,你可以允许好友查看三天内的数据,但不允许好友查看三天前的数据。
首先你需要注意,机密性的一个前提是明确授权规则,也就是明确每一项数据可以被什么样的主体访问。在这个问题上,最安全的方法一定是,当每一次主体访问某一项数据时,都由相关负责人对该次行为进行审批。但这样肯定是无法落地的,因为互联网每天都有亿万次的数据访问行为在发生。
因此,在安全领域我们提出了很多访问控制机制,对数据和访问主体打上标签或者分类,并制定相应的访问控制规则去自动进行授权。另外,数据的存储、传输和处理过程也需要受到应有的保护。这些保护技术包括:加密、隔离、混淆、隐藏等。
那么,针对机密性的攻击,都有哪些形式呢?
有的会直接针对保护技术进行破解。比如,去破解加解密算法、去逆向混淆代码等等。经过长期的发展,这些保护技术都普遍趋于成熟,安全性也在不断地提高,所以在保护技术上,其实不需要做太多投入,采用最新的技术即可。
更多的时候,我们面临的机密性攻击,其实是人为原因导致的疏忽,也就是错误使用访问控制机制或数据保护技术。比如,因为权限滥用,导致开发人员拥有敏感数据的无限制访问权限;因为弱密钥,导致加密被破解;甚至显示器上的数据被别有用心的人窥探。所以,当前机密性保护的要点是引导人去做正确的事情,避免这类人为疏忽导致的漏洞发生。
2、完整性
完整性就是确保数据只被授权的主体进行授权的修改,简单来说,就是“不可改”。
所谓“授权的修改”,就是对主体可进行的操作进行进一步的限制。比如,只能追加数据的主体无法执行删除的操作。
在授权方面,机密性中提到的访问控制机制同样适用。除此之外,完整性会更加强调对修改行为的日志记录,并有合适的监督机制进行审计。
在保护技术方面,只要是利用加密、签名等技术,使得数据的完整性变得可验证。
针对完整性的攻击也和机密性一样,更多的是由于人为原因导致的疏忽。除了黑客本身对数据的恶意篡改,已授权的主体也可能对数据完整性产生破坏,比如员工意外地删除数据、程序bug导致错误数据被写入。
3、可用性
可用性就是确保数据能够被授权的主体访问到,简单来说,就是“可读”。
但事实上,可用性往往没有被划分到安全的责任中去,因为对大多数企业来说,开发是最受到重视的,而开发会比安全首先去考虑可用性的问题。
举个例子,面对高峰期的集中用户访问,如何保障用户能够正常地获取数据(双11购物或者DDoS攻击等),你可以看到大量的研发人员对这个问题进行探讨和分析,但这其实都属于安全在可用性上的考量范围。
具体来说,可用性会面临哪些挑战呢?
在运维层面上,有很多技术在为可用性提供支撑,比如,在基础设施上的机房建设(如何在断电、高温、火灾情况下保护设备)、异地多活,以及服务中的备份、资源冗余等;
在研发层面上,如何降低响应延迟、处理海量数据、峰值扩容等,这些问题都是在可用性上的挑战;
在攻击角度上,黑客也会对可用性发起攻击,比如常见的DDoS攻击。
通常来说,在企业发展的不同阶段,CIA的优先级是不同的,而列好CIA的优先级是我们理解安全问题、定义安全需求、建设安全体系首先要做的事情。
黄金法则
毫无疑问,不同的应用、不同的模块会受到不同的安全威胁,当然,我们面对这些威胁也会有不同的解决方案。但万变不离其宗,正如安全威胁都是针对CIA三元组产生的攻击一样,安全解决方案在根本思路上也是相同的,黄金法则就是解决安全问题的一种通用思路。
黄金法则主要包括三部分:认证(Authentication)、授权(Authorization)、审计(Audit)。这三个单词的前两个字母都是Au,所以被称为黄金法则。
有人还会给黄金法则加上问责(Accounting),组成“4A法则”;有的会加上身份识别(Identification),组成”IAAAA法则“,而黄金法则则将识别和认证、审计和问责归纳到了一起,更加强调这两两之间的协同性质。
黄金法则的三部分其实是一种串联的关系,它描述的其实是用户在使用应用过程中的生命周期:先进性登录、再进行操作、最后留下记录。
1、身份识别和认证
认证其实包括两个部分:身份识别和认证。
身份识别其实就是在问”你是谁“,你会回答”你是你“。身份认证则会问”你是你吗“,那你要证明”你是你“这个回答是合法的。
身份识别强调的是主体如何声明自己的身份,而身份认证强调的是,主体如何证明自己所声明的身份是合法的。比如说,当你在使用用户名和密码登录的过程中,用户名起到身份识别的作用,而密码起到身份认证的作用。当你用指纹、人脸或者门卡进行登入的过程中,这些过程其实同时包含了身份识别和认证。
通常来说,不管你以什么形式进行登入,在身份识别的过程中,这些形式最终都需要落地成唯一的身份id。在你后续的操作中,身份id都会始终跟随会话,记录在日志中。这也是后续授权、审计和问责的基础。
依据具体的认证场景,对安全等级、易用性等的综合考量,认证形式可以大致分为三种,按照认证强度从弱到强排序,分别是:
你知道什么(密码、密保问题等);
你拥有什么(门禁卡、安全令牌等);
你是什么(生物特征,指纹、人脸、虹膜等);
通过将多种类型的认证进行组合,可以形成多因素认证机制,进一步加强认证强度。比如,在登录过程中,很多应用在输入完账号密码后,让你进行手机验证,这其实就是结合了”你知道什么“和”你拥有什么“的双因素认证。
可信的身份认证是建立安全保障的第一步,如果身份认证被破解,则后续的保护或者补救措施都无法起到太多的效果。
2、授权
在系统或者应用中,我们的操作都会受到一定的限制。比如,某些文件不可读,某些数据不可修改,这就是授权机制。
在安全领域中,也有很多成熟的授权策略,如自主访问控制、Role-BAC、强制访问策略等。
3、审计和问责
当你在授权下完成操作后,安全需要检查一下”你做了什么“,这个检查的过程就是审计。
当发现了你做了某些异常操作时,安全还会提供你做了这些操作的”证据“,让你无法抵赖,这个过程就是问责。
审计和问责通常也是共同出现的一个过程,因为它们都需要共同的基础:日志。所谓审计,就是通过日志还原出用户的操作历史,从而判断是否出现违规的操作。而问责则是通过日志的完整性,来确保日志还原出来的操作时可信的。如果一份日志可以被人任意的篡改,那我们基于这份日志去进行审计,即使发现违规操作,也无法证明违规操作确实发生了,只能是白费工夫。
不要狭义地去理解黄金法则的每个模块。认证不仅是账号密码登录,也可以是生物特征识别或者证书等形式;授权不只是基于规则的访问控制,基于内容和会话也是授权的一部分;审计也不只是简单的翻日志,很多机器学习、异常检测算法都能运用到审计中来。
总结
毫不夸张地说,所有的安全保护措施或者工具,都是在黄金法则的一个或者多个模块中进行工作的。安全是严格遵守”木桶原理“的领域,只专注于一个方向必然无法产出最优的结果。因此,我们一定要积极寻找短板,全面发展。
© 版权声明
THE END