Encryption 访问实现加密和解密的应用程序是否会使破解更容易?

Encryption 访问实现加密和解密的应用程序是否会使破解更容易?,encryption,hash,aes,sha,cracking,Encryption,Hash,Aes,Sha,Cracking,假设我有一个应用程序,可以读取和写入受哈希保护的文件(用于检测篡改和损坏),还可以选择使用用户密钥进行加密。应用程序必须包含用于散列、加密和解密数据的编译代码 假设我们使用的是严格的算法,如salted and Stretching AES-256和SHA-256,那么用户将应用程序编译成编译的形式(并且经过一定的努力可能会得出所使用的算法)这一事实是否会让他们更容易破解加密,或者生成假哈希 如果这实际上是一个严重的漏洞,有人会建议采取什么措施来缓解该漏洞?只有当应用程序本身存在严重漏洞时,才会

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

假设我们使用的是严格的算法,如salted and Stretching AES-256和SHA-256,那么用户将应用程序编译成编译的形式(并且经过一定的努力可能会得出所使用的算法)这一事实是否会让他们更容易破解加密,或者生成假哈希


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

只有当应用程序本身存在严重漏洞时,才会出现漏洞,例如

  • 正在使用一种技术
  • 在程序主体中嵌入一个秘密
  • 在实现一个众所周知的算法时犯了一个错误,该算法使实现容易受到攻击

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

拥有应用程序源的唯一情况是存在漏洞,例如,应用程序本身存在严重缺陷

  • 正在使用一种技术
  • 在程序主体中嵌入一个秘密
  • 在实现一个众所周知的算法时犯了一个错误,该算法使实现容易受到攻击

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

什么是“编译代码以散列”?您不需要将代码编译成散列,但可以从编译后的代码中创建md5sum散列。这就是你的意思吗?哦,你说的“编译形式的应用程序”是什么意思?你说的是加密形式?用户设备上运行的每一个代码都可以重新设计,否则机器无法运行这些代码。不过,你可以尽可能地努力破解,但只要付出足够的努力,一切都可以破解。对不起@Eric,在翻译中迷失了方向。我的意思是:“应用程序自然需要包含计算数据散列、加密和解密数据所需的编译代码”。不,我不打算加密应用程序。我所说的“编译形式的应用程序”,是指安装在用户机器上的应用程序EXE和DLL文件。这个问题清楚地表明,您并不真正了解安全性或密码。在开始这项任务之前,你可能需要更新你的知识。例如,您不能对散列进行加密或拉伸,您应该在配置上生成签名或可能的MAC,而不是散列。@owlstead-ummm…..我当然不了解所有内容(因此OQ)。我并不是想暗示我要进行盐哈希,也许我应该在句子中使用括号来明确评估顺序。我认为MAC不适合我的应用程序,因为文件的接收者需要能够检测到篡改,而不需要发送者向他们提供密钥。你说的“编译代码进行哈希”是什么意思?您不需要将代码编译成散列,但可以从编译后的代码中创建md5sum散列。这就是你的意思吗?哦,你说的“编译形式的应用程序”是什么意思?你说的是加密形式?用户设备上运行的每一个代码都可以重新设计,否则机器无法运行这些代码。不过,你可以尽可能地努力破解,但只要付出足够的努力,一切都可以破解。对不起@Eric,在翻译中迷失了方向。我的意思是:“应用程序自然需要包含计算数据散列、加密和解密数据所需的编译代码”。不,我不打算加密应用程序。我所说的“编译形式的应用程序”,是指安装在用户机器上的应用程序EXE和DLL文件。这个问题清楚地表明,您并不真正了解安全性或密码。在开始这项任务之前,你可能需要更新你的知识。例如,您不能对散列进行加密或拉伸,您应该在配置上生成签名或可能的MAC,而不是散列。@owlstead-ummm…..我当然不了解所有内容(因此OQ)。我并不是想暗示我要进行盐哈希,也许我应该在句子中使用括号来明确评估顺序。我认为MAC不适合我的应用程序,因为文件的接收者需要能够检测到篡改,而不需要发送者向他们提供密钥。那么,你是说宣布“我的应用程序使用XYZ123加密数据,我使用的源代码可以在…找到”吗如果实现是可靠的,这不是一个漏洞吗?@rossmcm如果您使用的实现是安全的,这甚至可以阻止攻击者(如果已知库是好的)。无论如何,你都必须信任你正在使用的实现,因为如果库在以后某个时候被证明是易受攻击的,那么你的应用程序也是如此。非常好的响应。这样的应用程序将面临的公众审查可能会突出并修复任何错误。所以,总而言之,自豪而广泛地宣布这一点是一件好事。那么,你是说宣布“我的应用程序使用XYZ123加密数据,我使用的源代码可以在…找到”不是一个漏洞,只要实现是可靠的吗?@rossmcm假设