01安全的本质:数据被窃取后,你能意识到问题来源吗?
安全的本质
数据被窃取后,你能意识到问题来源吗
安全是什么
当我们遇到某一个特定的攻击或者安全问题时,往往看到的都是表象的影响,而能否找到根本原因并进行修复,才是安全投入的关键。
任何应用最本质的东西其实都是数据。用户使用产品的过程,就是在和企业进行数据交换的过程。
从另一层面来说,安全的本质就是保护数据被合法的使用。安全基础的3个原则
机密性(confidentiality)、完整性(integrity)、可用性(Availability)
CIA三元组
机密性
确保数据只被授权的主体访问,不被任何未授权的主题访问。简单说就是“不可见”
例如,你不会允许陌生人查看你的个人隐私信息,但你肯能会允许父母、朋友查看部分信息。
针对机密性的攻击
直接针对技术进行破解。例如去破解加解密算法、去逆向混淆代码等等。经过长期的发展,这些保护技术普遍趋于成熟,安全性不断提高。有了前任的积累,在保护技术上其实不需要做太多投入,只需要采用最新的技术即可。
更多时候,面临的机密性攻击,其实是人为原因导致的疏忽,也就是错误使用访问控制机制或数据保护技术。例如,因为权限滥用,导致开发人员拥有敏感数据的无限制访问权限;因为弱密钥,导致加密被破解;甚至显示器上的数据被人窥探。所以说,当前机密性保护的要点是引导人去做正确的事情,避免这类看似低级、实则普遍的漏洞发生。
机密性强调的是数据的不可见,但这并不代表数据是正确的。比如,将一个true存成false,这就不是机密性要考虑的了,是完整性需要考虑的事情
完整性
确保数据只被授权的主体进行授权的修改,简单说就是不可改
所谓授权的修改,就是对主题可进行的操作进行进一步的限制。比如,只能追加数据的主题无法执行删除的操作。以个人隐私信息为例,法律允许学校或者公司在个人档案内追加信息,但不能做任何修改。又或者说,你自己发的朋友圈,不希望被其他人修改。
机密性和完整性是为了保障数据是安全的,而数据的最终目的是要能够被看到或者使用。所以,对于数据来说,可用性也是很重要的一个方面。
可用性
就是确保数据能够被授权的主题访问到。简单说就是可读
可用性来说开发会被安全首先考虑
可用性面临的具体挑战
1、 在运维层面上,有很多技术在为可用性提供支撑,例如机房建设(容灾等)
2、 在研发层面,如何降低响应延迟、如何处理海量数据、如何在峰值进行扩容等
3、 在攻击角度上,黑客也会对可用性发起攻击,例如DoS