我可以对一台运行windows的标准计算机寄予多少信任?我能确定它会以我编写的方式运行我的代码吗?我怎么能确定如果我声明"int j= 5;“这样的东西,j总是为5呢?有没有一种方法来衡量标准x86计算机系统中的信任?有哪些保护措施可以确保j= 5?
我考虑的是关键系统,在这些系统中,任何东西都不能出错,甚至一点都不能出错,所有东西都必须完全按照编写的方式运行。
发布于 2009-04-08 23:20:07
如果“任何东西都不能差一位”,通常唯一的方法是有三台计算机:
所有这三台计算机都有相同的输入,并计算输出。如果两个或多个输出相同,则接受该输出,否则将标记错误条件。
你可能会看到,这个完整的系统从来没有在实践中使用过,尽管在航空电子设备和类似的关键系统中使用了各种变体。
发布于 2009-04-08 23:28:50
这是关于某人恶意修改你的代码来做一些你没有编程的事情的可能性吗?或者是关于随机错误扰乱你的计算的可能性?在后一种情况下,您可能不必担心,因为现代计算机上的错误率大约是1/ 10^17 -这不到每个处理器每年1个错误率,如果这是无法容忍的,您可以使用纠错算法将有效错误率降低到您想要的接近零(代价是需要更多的时间来执行给定的计算)。
如果你担心的是黑客...真的没有任何对安全性的期望。原则上,对计算机进行物理控制的人可以对其进行修改,以做任何可以由计算机完成的事情。如果他们愿意,他们可以随意反汇编你的代码和修改汇编指令,让你的程序按照他们想要的方式运行。然而,在实践中,我们通常不会担心这一点,因为我们中的大多数人都没有写出任何值得费力修改的东西。那些人,例如设计军用加密硬件或核导弹控制芯片的程序员,可以求助于防篡改硬件,这使得修改代码变得极其困难。(不过,这些东西可能很贵)
你可能想看看Ross Anderson写的一本名为"Security Engineering“的书,书中描述了一些防篡改的硬件,以及那些真正需要保护代码的人是如何做到这一点的。
发布于 2009-04-08 23:17:48
从本质上说,没有。你应该阅读this的文章,并考虑重新评估你的信任概念。:-)
https://stackoverflow.com/questions/732244
复制相似问题