CIA 指 confidentiality(机密性)、integrity(完整性)和 availability(可用性)。
安全性和可靠性都与系统的CIA有关,但它们针对这些因素的考虑角度不同。两者之间的关键差异在于是否存在恶意的对手。可靠的系统一定不会出现违背机密性的问题,例如出错的聊天系统可能存在错发、乱码或丢失消息的情况。此外,安全的系统必须防止恶意访问、篡改或破坏机密数据。通过下面的例子来看看可靠性问题是如何导致安全问题的。
1. 机密性
在航空业中,一个明显的机密性问题是一键通按钮卡在了发声位置。在一些有据可查的案例中,卡住的麦克风按钮广播了飞行员之间的私人对话,这明显违反了机密性。在这种情况下,并不存在恶意攻击者,而是硬件可靠性缺陷导致设备在非飞行员预期的情况下传递了信息。
2. 完整性
数据完整性被破坏也不一定涉及攻击者。2015 年,Google 网站可靠性工程师注意到,端到端加密的完整性检查在一些数据块上出现了失败的情况。处理数据的某些机器存在无法纠正的内存错误,因此网站可靠性工程师决定改写程序,通过按位取反(0 和 1 互换)操作彻底检查计算每个数据版本的完整性,这样才能知道结果是否与原始完整性检查的值相匹配。事实证明,所有错误实际上都是按位取反导致的,后续网站可靠性工程师恢复了所有数据。有趣的是,这是一个在完整性故障中采用安全技术来恢复的实际案例。
3. 可用性
可用性显然既关乎可靠性,又关乎安全性。攻击者可能会利用系统漏洞,使系统停止运行或阻止已授权用户的使用。或者,攻击者可能会控制分布在世界各地的大量设备来发动经典的分布式拒绝服务(distributed denial-of-service, DDoS)攻击,利用这些设备向受害者发送大量请求。
摘取自周雨阳和刘志颖两位老师翻译的《Google系统架构解密:构建安全可靠的系统》
网友评论