安全问题的本质是信任的问题,并是一个持续的过程。
安全三要素
Confidentiality:机密性-----要求保护数据内容不能泄密
Integrity:完整性-----要求保护数据内容的完整,没有被篡改
Availability :可用性----要求保护资源是“随需而得”
如何实施安全评估
资产等级划分、威胁分析、风险分析、确认解决方案,这个实施过程是层层递进的,前后之间有因果关系。
资产登记划分:该项是所有工作基础,明确目标是什么,要保护什么;
威胁分析 :就是把所有的威胁都找出来(常用头脑风暴法)
可能造成危害的来源称为威胁(Threat)
互联网安全的核心问题,是数据安全的问题
威胁 | 定义 | 对应的安全属性 |
Spoofing(伪装) | 冒充他人身份 | 认证 |
Tampering(篡改) | 修改数据或代码 | 完整性 |
Repudiation(抵赖) | 否认做过的事情 | 不可抵赖性 |
InformationDisclosure(信息泄露) | 机密信息泄露 | 机密性 |
Denial of Service (拒绝服务) | 拒绝服务 | 可用性 |
Elevation of Privilege(提升权限) | 未经授权获得许可 | 授权 |
风险分析:
可能出现的损失称为风险(Risk)
Risk = Probability * Damage Potential
y影响风险高低的因素,除了造成损失大小外,还需要考虑到发生的可能性。
安全评估的产出物,就是安全解决方案
二、在设计安全方案时,最基本也是最重要的原则就是“Secure by Default”。
Secure by Default:即“最小权限原则” -----牢记的总则
要求系统只授予主体必要的权限,而不要过度授权,这样能有效地减少系统、网络、应用、数据库出错的机会
Defense in Depth (纵深防御)----- 更全面、更正确地看待问题
要在各个不同层面、不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体
在解决根本问题的地方实施针对性的安全方案
XSS---真正产生危害的场景是在用户的浏览器上,或者说服务器端输出的HTML页面,被注入了恶意代码
数据与代码分离原则-----从漏洞成因看问题
缓冲区溢出-------程序在栈或者栈中,将用户数据当做代码执行,混淆了代码与数据的边界,从而导致安全问题的发生
不可预测性原则-----从克服攻击方法的角度看问题
能够有效地对抗基于篡改、伪造的攻击
微软对抗缓冲区等内存攻击:使用ASLR并在它的控制下,一个程序每次启动时,其进程的栈基址都不相同,具有一定的随机性
实现往往需要用到加密算法、随机数算法、哈希算法。
互联网本来是安全的,自从有了研究安全的人,就变的不安全了
所有程序本来没有漏洞,只有功能,但当一些功能被用于破坏,造成损失时,也就是成了漏洞