【问题标题】:Does having access to an application that implements encryption and decryption make it easier to crack?访问实现加密和解密的应用程序是否更容易破解?
【发布时间】:2013-02-11 08:22:29
【问题描述】:

假设我有一个应用程序来读取和写入文件,这些文件受哈希保护(以检测篡改和损坏)并可选择使用用户密钥进行加密。应用程序必须包含已编译的代码来散列、加密和解密数据。

假设我们使用的是严格的算法,例如加盐和拉伸的 AES-256 和 SHA-256,事实上用户拥有已编译形式的应用程序(并且通过一些努力可能会计算出正在使用的算法)使其成为任何他们更容易破解加密,还是生成假哈希?

如果这实际上是一个严重的漏洞,有人会建议采取什么措施来减轻漏洞?

【问题讨论】:

  • 你是什么意思“编译代码散列”?您不会将代码编译为哈希,但您可以执行一些操作,例如从编译后的代码创建一个 md5sum 哈希。你是这个意思吗?哦,“编译形式的应用程序”是什么意思?你的意思是加密形式?
  • 可以重新设计在用户设备上运行的每个代码,否则机器无法运行该代码。但是,您可以使破解尽可能困难,但只要付出足够的努力,一切都可以破解。
  • 对不起@Eric,翻译迷路了。我的意思是:“应用程序自然需要包含计算数据哈希以及加密和解密数据所需的编译代码”。不,我不打算加密应用程序。 “编译形式的应用程序”是指安装在用户机器上的应用程序 EXE 和 DLL 文件。
  • 这个问题清楚地表明您并不真正了解安全性或密码学。在执行此任务之前,您可能需要更新您的知识。例如。您不能对哈希进行加盐或拉伸,您应该在配置上生成签名或可能的 MAC,而不是哈希。
  • @owlstead ummm .....我当然不明白一切(因此是 OQ)。我并不打算暗示我要使用盐哈希,也许我应该在句子中使用括号来明确评估的顺序。我认为 MAC 不适合我的应用程序,因为文件的接收者需要能够检测篡改,而不需要发送者向他们提供密钥。

标签: encryption hash aes sha cracking


【解决方案1】:

只有当应用程序本身存在严重缺陷时,应用程序源才会成为漏洞,例如

  • 正在使用security through obscurity 技术,
  • 在程序主体中嵌入秘密,
  • 在实施众所周知的算法时犯了一个错误,该算法会使实施受到攻击。

本质上,当攻击者知道其来源时,您的产品会变得更容易受到攻击,因为攻击者可以更容易地发现您的编码错误。但是,使您的应用程序可破解的是编码错误,而不是攻击者拥有您的源代码这一事实。

【讨论】:

  • 你是说宣布“我的应用程序使用XYZ123加密数据,并且我使用的源代码可以在...找到”不是漏洞,只要实现是健全的?跨度>
  • @rossmcm 假设您使用的实现是安全的,如果已知库是好的,这甚至可以阻止攻击者。无论如何,您必须信任您正在使用的实现,因为如果库在以后的某个时间变得容易受到攻击,那么您的应用程序也会受到攻击。
  • 反应很好。这样一个应用程序将面临的公众审查可能会突出和修复任何错误。所以,总而言之,自豪地广泛宣布这一点是一件很棒的事情。
猜你喜欢
  • 1970-01-01
  • 2016-03-31
  • 2023-03-11
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
相关资源
最近更新 更多