理论计算机科学与安全性有何关系?


11

当我想到不安全的软件时,我认为它“太有用了”并且可以被攻击者滥用。因此,从某种意义上说,保护软件安全是使软件使用率降低的过程。在理论计算机科学中,您无法与现实世界合作。那么,使用纯理论进行工作时是否存在安全方面的顾虑?还是硬币的另一面,理论计算机科学会影响被黑客入侵的现实世界吗?如果是这样,哪些安全主题被认为是理论上的?


9
提出的CS理论的观点是主观的且非常有争议,也不需要提出这个问题。这个问题似乎专门针对黑客,而黑客本身就是一个广泛的主题(涉及社会工程技术的所有方面),并且与“安全”的含义并不接近。由于这些原因,我投了反对票。但是,我觉得这个问题来自一个好地方,并且涉及到一些有趣的方面,因此我在下面回答了。
罗斯·斯尼德

Answers:


20

在某种意义上,您的直觉是“不安全”是由于“太有用”的软件引起的。关于“差异性隐私”的大量理论文献正在使您的直觉正式化。例如,请参见此处:research.microsoft.com/en-us/projects/databaseprivacy/dwork.pdf

ϵeϵ

0


14

通过多种方式:


老实说,我不相信您曾经发现过一个漏洞,修补了一段代码,甚至没有看到现实世界中漏洞的内部运作方式。
The Rook

8
我使用OllyDbg修补了我的gdi dll,以便在周二微软补丁之前修复(第二个)光标漏洞(显然没有源代码)。再次使用OllyDbg,我修补了一个封闭源代码模拟器,使其成为(神奇的)口袋妖怪竞赛的作弊证明。我在一个网络摄像头项目中找到了0day,并且在许多战争游戏(包括启用了ASLR和PaX的Blacksun)中得分都很高。我不会提到我做过的一些更邪恶的事情。为什么我有或没有有关系呢?请不要燃烧。
罗斯·斯尼德

13
@The Rook:如果您认为Ross的清单与软件安全性的实际实践关系不大,那就这么说。也许甚至举一些例子都是有帮助的,或者添加一个您自己的答案,详细说明TCS安全性研究与实际安全性实践之间的距离(我认为阅读起来非常有趣)。但是没有必要贬低罗斯。
约书亚·格罗霍



8

与其他答案不同,这与“在说某些东西“证明是安全的”时我们应该担心的事情”大相径庭,与在安全性中使用TCS的地方相反。因此,它在处理理论时解决了安全性问题的第一个问题。

正如黑客所说,理论结果通常与真实世界的安全性有关。Alfred Menezes和Neal Koblitz在他们的“ 另类看 ” 系列文章中提出了这样的论点,从理论上,科学上和精确度上都做了进一步的警告(警告:该网站对我来说似乎有点对抗性,但我认为质疑假设的基本思想非常重要)。他们指出了密码学标准假设中的弱点,即使在开创性论文中也是如此。

一些示例(引用/解释其站点上的一些点):

  1. 安全性定理是有条件的,它假定了某些数学问题的难解性。

  2. 通常,难解性假设是针对一个复杂且人为设计的问题:在某些情况下,该问题与安全性得到“证明”的协议的密码分析问题完全相同。

  3. 有时,证明的紧密度差距很大,但仍建议使用参数大小,就像证明是紧密的一样。在这种情况下,证明通常会给成功攻击的运行时间给出无用的下限。此外,渐近结果不一定为实际使用范围内的参数提供任何安全保证。

  4. 安全性定理使用某种安全性模型。某些攻击(尤其是旁通道攻击)很难建模,而已提出的模型严重不足。


6

定理证明已在某种程度上用于证明软件,硬件和协议的正确性。参见,例如,herehere

理论上已经使用(非)干扰的概念对数据以不希望的方式流经程序的问题(从而导致潜在的泄漏)进行了建模。在这里获取指针。


3

可确定性是编程语言研究中的核心问题。即,在构建仅接受满足某些特性的代码的编程语言上投入了大量的精力。典型的静态语言只能提供较弱的保证,例如如果某些方法不存在,则拒绝程序,但是可以想象该语言是否还会抛出程序,例如,不当使用互斥体,或试图读取超出存储区域末尾的内容。显而易见,可判定性问题很快出现(最简单的情况:指定编译器应仅接受终止程序),并且肯定存在效率方面的问题(ML类型检查器具有双指数情况)。

无论如何,PL研究社区对安全性非常感兴趣(您是否相信浏览器可以运行任意外来代码?!),他们的问题导致许多经典的CS理论问题。


任何适当的高级语言(请阅读:C [++]以外的语言)都无法使程序员控制内存访问,因此我认为此问题已解决。
拉斐尔

@Raphael:鉴于仍然有大量的软件是用C和C ++编写的,因此不能简单地认为已解决了该问题。此外,例如,针对Javascript的代码注入攻击的技术仍处于起步阶段。有很多事情要做。
戴夫·克拉克

1
某些环境忽略现有解决方案的事实(有时是有充分的理由)并不能使问题(在这里:访问禁止的内存地址)的解决程度降低。某些难于检查的事情可以通过适当的不变量轻易地绕开。例如,您可以要求程序员提供正式的终止证明(参见Isabelle / HOL)。
拉斐尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.