首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何安全地知道用我的应用程序创建的文件是否来自另一台计算机?

如何安全地知道用我的应用程序创建的文件是否来自另一台计算机?
EN

Stack Overflow用户
提问于 2011-05-21 19:33:19
回答 1查看 157关注 0票数 1

当用户使用我的应用程序打开来自其计算机以外的源的文件时,您将如何实现向用户显示警告的功能?

这是Visual已经具有的特性:

我正在考虑将用户的一些系统信息作为哈希代码添加到文件中,但这并不安全,因为如果其他人能够访问“受害者”在其系统上创建的任何文件并查看系统ID哈希,然后创建一个文件并对其进行修改以包含此系统哈希,则该信息并不安全。

我的另一个选择是将文件的哈希与系统信息一起存储为单个哈希,并添加此哈希,而不是仅添加系统信息散列。这样,“黑客”就无法通过打开他的一个文件来找出“受害者”的系统哈希。

,我知道没有什么是100%安全的。我把它作为对每一个与安全问题有关的问题的第一次评论。但是,对于实现这样的功能,您有什么建议呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-03 21:39:50

我认为您的问题是:如何验证给定计算机的文件来源,即使该计算机被破坏了?

让我们看一下大致的大纲。

创建应用程序的

  • 。另一台计算机上的用户在他们的计算机上安装应用程序。用户生成文件。用户的计算机是compromised.
  • The,用户在application.

中打开一个文件

现在请回答以下问题:

我们所反对的是什么样的妥协?

面对彻底的妥协,没有解决办法。在一个完全的妥协中,对手可以修改任何应用程序或操作系统功能。

那么,我们可以针对哪些妥协呢?

一定有一些我们还可以信赖的功能。攻击者可能会危害您的应用程序,在这种情况下,您的应用程序所做的任何检查都是不可信任的。攻击者可能会危及操作系统。这是从操作系统妥协到应用程序妥协的一小步。因此,让我们假设攻击者没有破坏操作系统或应用程序。让我们假设攻击者能够修改系统上的任何文件,但包含可执行文件的文件和包含基本操作系统组件的文件除外。

我们如何鉴定原产地?

散列值(如SHA1和MD5 )用于验证完整性。文件上的哈希值只能告诉您,自创建哈希以来,该文件是否未经修改。它不能告诉你文件是从哪里来的。数字签名提供了对原产地的检查。数字签名告诉您,签名的数据起源于对用于签名邮件的密钥拥有控制权的人。

现在,如果要验证计算机上的文件是否来自该计算机,那么每台计算机都必须有一个不同的密钥来签名数字消息。

如果您在一台计算机上只有一份应用程序的副本,这是没有问题的。但是,当您有多个密钥时,您需要考虑密钥的生成和分发。密钥的生成和分配是一个非常困难的问题。数字签名需要一个公共私钥对。私钥必须受到保护,并且必须对每台计算机都是唯一的。在此之前,我们假定攻击者无法修改您的应用程序,但我认为,假定攻击者可以读取您的可执行文件是公平的。这个假设使您的可执行文件成为存储私钥的糟糕地方。你可以加密你的密钥,但你需要另一个密钥来解密你的密钥。这里有几个可能的答案:

signatures.

  • Use
  • 使用操作系统生成密钥并生成可信的网络签名和验证服务。
  • 记住你的钥匙。或者记忆用于加密密钥的密码或引脚。

只有当操作系统提供这些功能时,才能使用操作系统。这里的一个基本问题是,您如何知道每台计算机都有唯一的密钥?

网络服务器非常类似于操作系统,但您可以为服务器提供比个人计算机更大的保护。如果有足够的保护,您可以假设会检测到妥协,在这种情况下,它将停止签名和验证服务。它还为您提供了唯一密钥的保证,因为服务器将为应用程序的每个实例生成一个新的唯一密钥。

我想我们都很熟悉记忆密码和引脚的问题。这里的一个小变体是,您可以使用更短或更简单的密码来加密更大、更复杂的密钥。较短/更简单的密码的缺点是更容易强行解密较长/复杂的密钥。

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

https://stackoverflow.com/questions/6083984

复制
相关文章

相似问题

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