首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们如何交叉验证设备是否正在做它应该做的事情?

我们如何交叉验证设备是否正在做它应该做的事情?
EN

Security用户
提问于 2019-10-15 17:53:15
回答 3查看 411关注 0票数 4

我们怎么知道任何设备都在做它应该做的事情?例如,Android是一个开源操作系统(暂时忽略google库),他们声称所有密码都只能存储在设备上。但是,如果他们将其存储在服务器上,而这段代码不是在开源版本中,而是只存在于预编译库中呢?我们如何检查实际的电话和开源版本中是否存在相同的代码?iPhones、路由器、台式机等其他设备也是如此。

此外,现在大多数制造商都启用了加密,这使得无法监视TCP/IP数据包上的实际内容。

我们总是可以删除现有的操作系统并安装开源版本,但这在所有情况下都是不可能的,因为在某些情况下,它可能真的很混乱,甚至可能需要很多人们通常没有的额外的东西。

因此,我的主要问题是如何验证开放源代码版本和预编译二进制文件中是否存在相同的代码?我可以想到逆向工程,但这将需要伟大的知识和技能,大多数人没有。

EN

回答 3

Security用户

回答已采纳

发布于 2019-10-15 17:58:16

在我的公司里有句谚语:

质量保证是确保某些东西能做它应该做的事情。安全保证是确保它只做它应该做的事情。

因此,不幸的是,我认为您的问题将导致您进行全面的安全审计或渗透测试,正如您所指出的,这需要大量的知识和技能,而大多数人并不具备这些知识和技能。

票数 6
EN

Security用户

发布于 2019-10-15 18:20:05

..。我们怎么知道任何设备都在做它应该做的事

我们没有,但这种缺乏绝对确定性的情况并不是IT安全所特有的。

如果你和你的朋友交谈,你不确定他们是否说出了(完全的)真相。如果你买了一些你不确定的东西,它是否有供应商声称的所有品质。

但这并不是说你只是盲目地希望一切都会好起来:你相信你的朋友是因为你迄今为止的美好经历,而且如果有人发现了谎言,他们会冒着失去你的友谊的风险。你比其他供应商更信任一些供应商,例如,因为值得信赖的朋友推荐这些产品,或者因为一些重要的品牌如果撒太多谎,就会有太多的松动。

你购买的设备也是如此。考虑到很多关于质量的谎言最终会被发现(比如内置后门,出卖你的隐私,.)各大品牌尽量不对你撒谎,因为他们有很多事情要做。对他们产品质量的信任是他们商业模式的一部分。与此相反,更便宜的品牌并没有太宽松。因此,它更有可能在这些廉价品牌的产品中发现缺陷、硬件和软件的质量差,甚至是后门。

我可以想到逆向工程,但这将需要伟大的知识和技能,大多数人没有。

对于大品牌来说,拥有足够技能的人会有一些业余时间(甚至可以得到报酬)来深入挖掘,这通常是足够的风险。而大品牌通常有更多的客户,甚至是一些愿意投资时间或金钱进行此类分析的客户,比如在商业或政府环境中使用此类设备。

另一方面,较便宜的品牌的曝光率较低,而且过于宽松,这意味着他们也不太在意。他们甚至可能将这种有限的风险和风险作为自己的商业价值:因为他们一开始就没有或只有很少的可信度,他们可以很容易地与不可信的公司或组织合作,而不会失去信誉。例如,这导致廉价的移动电话出现在预装广告软件或其他幼犬上。

我们如何交叉验证设备是否正在做它应该做的事情?

正如你自己已经发现的:对于一般人来说,这是不可能的。即使对专家来说,分析他们使用的每一种新设备也会花费太大的成本和时间。

归根结底,这取决于你对供应商的信任。和朋友们一样:这种信任很难(也可能是昂贵的)获得,但更容易失去。因此,大品牌试图保持他们难以获得的声誉,这使得你在他们的设备上遇到严重问题的可能性要小得多--至少与那些不太出名的廉价品牌相比。

票数 6
EN

Security用户

发布于 2019-10-26 19:54:00

实际上,您无法真正验证它是否是相同的代码。

如果您发现Android发送了一个密码(这在原始代码中不应该这样做),您可能可以探测到这是不一样的,但是检查它们的编译代码是否与已发布的密码相同是不可行的。

如果要验证程序X的二进制代码是编译发布的源代码Y的结果,那么您应该自己构建它。

因此,例如,您可以安装LineageOS而不是手机制造商的官方版本,但是您也需要信任他们的开发人员不会构建恶意程序。为了确保它与已发布的代码相对应,您需要自己编译它(这是可行的,但更多的工作),在具有可信编译器的受信任机器上编译它。

请注意,从Windows (甚至没有可用的源代码)到Linux和BSD,任何其他操作系统和程序都面临着同样的信任问题。这些免费*nix发行版通常避免程序二进制代码与所称的源代码不同的问题,它们是由发行版编译的(您需要信任它,但它只是一个您需要信任的实体),或者在某些情况下(例如,Gentoo)是用户自己构建的。

有些程序是以这样的方式设计的,即每个编译都产生相同的二进制(这称为可复制构建)。这将允许任何人验证结果是否是编译的结果。可悲的是,通常的情况是,构建是不可复制的,需要特殊的调整才能使编译器在每次编译中产生完全相同的二进制。

然后,你应该开始分析发布的源代码是否是恶意的.

尽管如此,您仍然会发现这些版本使用封闭驱动程序作为二进制文件,有些可能包含已经编译的二进制文件,等等。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/219641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档