Operating system 我对一个计算机系统能有多大的信任?我如何衡量信任?

Operating system 我对一个计算机系统能有多大的信任?我如何衡量信任?,operating-system,reliability,Operating System,Reliability,我能对运行windows的标准计算机给予多少信任?我能确定它会以我编写的方式运行我的代码吗?我怎样才能确定,如果我声明像“intj=5;”这样的东西,j将始终是5?有没有办法衡量标准x86计算机系统中的信任度?有什么样的保护来确保j=5 我在考虑一些关键系统,在这些系统中,任何东西都不能被关闭,哪怕是一点点,而且所有东西都必须按照编写的方式运行 基本上没有。你应该阅读文章,并考虑重新评价你的信任观念。p> 基本上没有。你应该阅读文章,并考虑重新评价你的信任观念。p> 如果“哪怕是一个位元也无法关

我能对运行windows的标准计算机给予多少信任?我能确定它会以我编写的方式运行我的代码吗?我怎样才能确定,如果我声明像“intj=5;”这样的东西,j将始终是5?有没有办法衡量标准x86计算机系统中的信任度?有什么样的保护来确保j=5


我在考虑一些关键系统,在这些系统中,任何东西都不能被关闭,哪怕是一点点,而且所有东西都必须按照编写的方式运行

基本上没有。你应该阅读文章,并考虑重新评价你的信任观念。p> 基本上没有。你应该阅读文章,并考虑重新评价你的信任观念。p> 如果“哪怕是一个位元也无法关闭任何东西”,通常唯一的方法是使用三台计算机:

  • 所有设备都必须使用不同的硬件
  • 所有人都必须使用不同的操作系统;
  • 应用软件必须由不同的人编写
  • 应用程序必须使用不同的编译器编译
所有三台计算机都有相同的输入并计算输出。如果两个或多个输出相同,则接受该输出,否则将标记错误条件

您可能会看到,这种完整的系统从未在实践中使用过,尽管航空电子设备和类似的关键系统中使用了各种变体。

如果“一点也不能关闭任何东西”,通常唯一的方法是使用三台计算机:

  • 所有设备都必须使用不同的硬件
  • 所有人都必须使用不同的操作系统;
  • 应用软件必须由不同的人编写
  • 应用程序必须使用不同的编译器编译
所有三台计算机都有相同的输入并计算输出。如果两个或多个输出相同,则接受该输出,否则将标记错误条件


您可能会看到,这个完整的系统从未在实践中使用过,尽管在航空电子设备和类似的关键系统中使用了各种变体。

这是关于有人恶意修改您的代码以执行您没有编程的操作的可能性吗?还是因为随机错误可能会扰乱你的计算?在后一种情况下,您可能不必担心,因为现代计算机上的错误率约为1/10^17,即每个处理器每年不到一个错误率,即使这是无法忍受的,您也可以使用纠错算法将有效错误率降至接近零的水平(以需要更多时间进行给定计算为代价)

但是,如果你担心的是黑客,那就真的没有安全性的期望了。在计算机的物理控制中,原则上,有人可以修改它,让它做任何计算机可以做的事情。他们可以随意分解你的代码和修改汇编指令,如果他们愿意的话,来制作你的程序但是,在实践中,我们通常不担心这一点,因为我们大多数人都没有写任何值得努力去破解的东西。那些人,例如设计军用加密硬件或核导弹控制芯片的程序员,可能会求助于防篡改硬件,这使得修改非常困难代码。(尽管这些东西可能很贵)


你可能想看一本叫做“安全工程”的书作者Ross Anderson,描述了一些防篡改硬件,以及真正需要保护其代码的人如何做到这一点。

这是关于有人恶意修改您的代码以执行您没有编写程序来执行的操作的可能性吗?还是关于随机错误扰乱您的计算的可能性在后一种情况下,您可能不必担心,因为现代计算机上的错误率约为1/10^17,即每个处理器每年不到一个错误率,即使这是无法忍受的,您也可以使用纠错算法将有效错误率降至接近零的水平(以需要更多时间进行给定计算为代价)

但是,如果你担心的是黑客,那就真的没有安全性的期望了。在计算机的物理控制中,原则上,有人可以修改它,让它做任何计算机可以做的事情。他们可以随意分解你的代码和修改汇编指令,如果他们愿意的话,来制作你的程序但是,在实践中,我们通常不担心这一点,因为我们大多数人都没有写任何值得努力去破解的东西。那些人,例如设计军用加密硬件或核导弹控制芯片的程序员,可能会求助于防篡改硬件,这使得修改非常困难代码。(尽管这些东西可能很贵)

你可能想看看罗斯·安德森(Ross Anderson)写的一本名为《安全工程》(Security Engineering)的书,这本书描述了一些防篡改硬件,以及真正需要保护代码的人如何做到这一点。

像“j=5”这样简单的东西是绝对不可信的

有很多方法可以使您产生一个位错误:

  • CPU确实有勘误表
  • 硬盘驱动器在老化时可能会返回错误
  • 记忆可能被宇宙射线破坏
  • 系统中任何地方的连接松动/脏污等
  • 驱动程序不会损坏内存(包括代码页)
    • 像“j=5”这样简单的东西是绝对不可信的

      有很多方法可以使您产生一个位错误:

      • CPU确实有勘误表
      • 硬盘驱动器在老化时可能会返回错误
      • 记忆可能被宇宙射线破坏
      • 系统中任何地方的连接松动/脏污等
      • 驱动程序不损坏内存(包括代码页