读软件开发安全之道:概念、设计与实施02经典原则

2024-08-17  本文已影响0人  躺柒
读软件开发安全之道:概率、设计与实施02经典原则.png

1. CIA原则

1.1. 软件安全都构建在信息安全的三大基本原则之上,即机密性(confidentiality)、完整性(integrity)和可用性(availability)

1.2. 双方交换的数据

1.3. 授权是CIA各项原则中都固有的元素,它规定数据只能由合法的人员进行访问、修改,数据可用性也只能交由合法人员进行管理

1.4. 机密性和完整性定义为防止未经授权地泄露或篡改信息的行为原则

1.5. 可用性则会受到授权管理员的控制

1.6. 它们只有作为一个整体时才能有效地保护数据资产

2. 机密性

2.1. 不会泄露信息

2.2. 只允许已授权的数据访问

2.3. 维护机密性意味着按照一种仅授权者可读的方式来保护隐私信息

2.4. 必须认真判断哪些信息属于隐私信息

2.5. 机密性泄露也有一个频谱

2.6. 去匿名化(denonymization)或者重标识(reidentification)

3. 完整性

3.1. 准确维护数据

3.2. 不允许未经授权的数据修改或者删除

3.3. 完整性就是指数据的真实性和准确性,其宗旨是防止数据被随意删改

3.4. 除了通过技术手段防止数据遭到未经授权的篡改,一份准确的数据来源记录(包括最初数据源,以及之后授权的数据源变更)也是相当重要、强大的完整性保障

3.5. 保存重要数据的版本并且记录它们的来源,这本身就是防止篡改攻击的典型手段

3.6. 执行增量备份是一种理想的攻击预防手段,因为增量数据保存简单,同时又以一系列快照的形式翔实地记录了哪些数据执行过变更,以及它们在何时执行过变更

3.7. 篡改包括很多不同的方式,并不一定是修改存储设备当中的数据

3.8. 虽然永久丢失的数据也属于不可用的数据,但是这类数据一般会被认为属于完整性受到彻底破坏的情况

4. 可用性

4.1. 保障数据的可用性

4.2. 不允许出现严重延迟或者未经授权的数据访问关闭

4.3. 针对可用性的攻击是网络世界无法回避的现实问题,也是最难防御的攻击方式之一

4.4. 攻击者向服务器发送过量的数据,通过看似合法的手段占用海量服务资源,导致服务资源耗竭

4.5. 匿名的拒绝服务(Denial of Service,DoS)攻击(一般都是为了索取赎金)几乎可以威胁到一切互联网服务,所以防御这类攻击是非常艰巨的挑战

4.6. 攻击者创建的恶意请求可以触发错误,导致崩溃或者无限循环,最终破坏服务器的服务

4.7. 其他的攻击方式可以导致应用的存储、计算或者通信出现超载,或者使用破坏缓存有效性的模式,这些都可以导致相当严重的问题

5. 黄金标准

5.1. gold standard

5.2. 如果CIA是安全系统的目标,那么黄金标准描述的就是达到这个目标的方式

5.3. Aurum是黄金的意思,因此黄金的化学符号就是Au

5.4. 主体是指一切通过了可靠认证的实体,包括一个人、一家企业或单位、一个政府实体,以及一个应用、服务、设备或者其他有权执行操作的对象

5.5. 认证(authentication)

5.6. 授权(authorization)

5.7. 审计(auditing)

5.8. 黄金标准充当的是一种实现机制,旨在对CIA提供保护

5.9. 安全设计方案应该明确地把认证和授权这两者分开,因为把认证和授权结合在一起往往会导致混乱

6. 认证

6.1. 认证的目的是,根据能够证明主体真实身份的证书,测试该主体的真实身份与其所声称的身份是否一致

6.2. 认证服务也可能会使用一种更强形式的证书,譬如数字签名或者挑战码

6.3. 数字签名是一种更加理想的认证形式,因为数字签名可以让主体在不泄露密码的情况下证明自己掌握密钥

6.4. 证书提供的认证信息

6.5. 你的所知之事可能泄露,你的所有之物可能失窃,你的所处之地有很多方法可以加以操纵,就连你的自身属性都有可能被伪造(甚至如果遭到盗用,我们连修改都很困难)

6.6. 用户使用两项认证要素总比使用一项认证要素要好

6.7. 只要条件允许,我们就应该依靠现成、可靠的认证服务,而不应该动辄“自力更生”

6.8. 认证的过程应该包括对证书进行校验,并给出认证通过或者认证失败的响应消息

6.9. 安全绑定认证实体后可以用两种基本方式进行入侵

7. 授权

7.1. 各类系统会通过业务逻辑、访问控制列表或者其他正式的访问策略来实现授权功能

7.2. 匿名授权(即不进行认证的授权)适用的场合可以说寥寥无几

7.3. 应该通过一项单一的要素来实施授权,不要让授权代码散布在整个代码库中,否则这会是运维和审计人员的一场噩梦

7.4. 授权机制远比传统操作系统提供的简单读/写访问控制要细致得多

7.5. 对于某些数据来说,只读访问的访问级别依然过高,密码就属于这类数据

8. 审计

8.1. 为了让组织机构能够对系统的行为进行审计,系统必须基于所有对运维安全至关重要的信息生成一份可靠的日志

8.2. 审计日志也同样必须能够抗篡改

8.3. 网络中总是会发生这样或那样的事件,认证和授权策略的漏洞也总是难免的

8.4. 在工作中,当授权主体做出与人们信任相悖的行为时,审计信息可以帮助人们规避由此带来的风险

8.5. 如果处理得当,审计日志可以为日常检测、系统性能级别评测、错误和可疑行为检测带来巨大帮助,也可以在事件发生后用于判断攻击实际发生的时间和评估攻击带来的损失

8.6. 系统也必须有能力阻止人们通过篡改日志来掩饰那些恶意的操作

8.7. 不可抵赖性(non-repudiability)是审计日志的一项重要的属性

8.8. 应该遵循Goldilocks原则,即日志记录的数量和规模应当适宜

9. 隐私

9.1. 安全和隐私的边界很难清晰地界定,它们既紧密相关又大不相同

9.2. 为了尊重人们的数字信息隐私,我们必须考虑其他人为因素

9.3. 保护隐私殊非易事,明智的做法是让使用数据的行为尽可能透明

9.4. 收集信息必须拥有明确的目标,保留信息必须保证信息确有价值

9.5. 人是操作几乎所有数字系统的主体,虽然操作的方式不一而足

9.6. 人们必须明确表达出自己对隐私问题的关注

9.7. 当用户的期望和实际的隐私策略相脱节时,或者当用户违反了明确的安全策略时,隐私问题就会暴露出来

上一篇 下一篇

猜你喜欢

热点阅读