软件安全的定义

信息安全 研究 术语 理论
2021-08-21 16:31:40

我正在寻找软件安全的理论定义。我需要在一篇文章中引用一些书。
大多数书籍已经开始假设用户知道那是什么,而且他们可能是对的。

我的问题是软件安全的最被接受的定义。

4个回答

Gary McGraw的定义

软件安全是设计软件的理念,使其在恶意攻击下继​​续正常运行

据我所知,没有普遍接受的定义。可信计算中的一些论文将“可信软件”定义为根据用户期望工作的软件。相当主观和易变。

也许您应该尝试不同的方法,并使用更普遍接受的术语安全工程作为开始。罗斯安德森的书安全工程应该包含某种定义,是一个很好的参考。然后说您将软件安全定义为安全工程(或应用于软件的安全工程)的软件部分。

根据 Jason Andress apud美国法律,在他的《信息安全基础》一书中,信息安全被定义为:

保护信息和信息系统免遭未经授权的访问、使用、披露、中断、修改或破坏

由于信息系统(软件)的存在是为了保存和操作信息,因此这可以很好地定义软件安全性。

我不确定是否有一个好的定义可以简单地“引用”。

例如,“TCP/IP”是什么意思?好吧,它代表“传输控制协议/互联网协议”。这是完全正确的,但同时也完全没有帮助。如果您不知道 TCP/IP 的开头是什么,那么扩展首字母缩写词对您没有帮助。

一个有用的定义是:黑客利用软件中的某些类型的错误侵入计算机;软件安全是摆脱这些错误的科学。

例如,黑客利用的一个常见错误是“缓冲区溢出”。它们的发生是因为保留了一定数量的内存来保存某些东西,但是黑客提供的超出了程序员的预期。例如,在保存用户名的数据库中,程序员可能会假设没有人会拥有超过 1000 个字母的名称。没错,他们不会——但这不会阻止黑客尝试输入那么长的假名,当他们这样做时,缓冲区溢出,黑客会覆盖内存的其他部分并控制系统。

我们知道为什么缓冲区溢出如此普遍。以 C/C++ 语言为例。早在 1970 年代,就开发了诸如“strcpy()”和“sprint()”之类的频繁重用代码,它们在内存中复制缓冲区而无需重复检查长度。因此,黑客只需搜索软件以查找这些代码片段的用途并找到这些错误。软件安全在黑客之前完成了这项工作,发现“strcpy()”的所有用途并删除它们。