我一直在阅读“什么是密码算法的白盒实现?”的问题。并导致了这篇简短的文章/问答,其中提到了问题2:

Q2:代码混淆与代码混淆有什么区别?具有不同安全性目标的
包括代码混淆和软件
防篡改。代码混淆的目的是防止(加密)算法的逆向工程,而软件防篡改的目的是防止代码的修改。但是,所有这些技术的共同点在于,必须使执行结果直接保持可执行状态。

现在,它显示了混淆和耐火性之间的差异,但没有说明白色之间的差异。盒密码和代码混淆。
所以我想我的问题是:这两个完全不同吗?还是代码混淆是实现白盒加密的一种方法?如果第二个是真的,还有其他方法可以实现吗?

#1 楼

正如您所怀疑的那样,白盒加密和模糊处理之间有着非常密切的关系。 (本能!)白盒加密基本上就是对加密实现进行混淆。

白盒加密是对加密代码的混淆。假设您采用AES实现,选择了一个随机AES密钥,然后将该AES密钥硬编码到代码中。显然,发布此代码将是不安全的,因为它将立即泄露AES密钥。如果我们能够以保留其功能但隐藏加密密钥的方式来混淆生成的代码,硬编码密钥以及所有密钥,那可能会很好。换句话说,结果应为混淆代码,该代码仍将计算相同的功能,但不再显示AES密钥。这正是“白盒加密”的功能,或者至少是它试图实现的功能。

因此,您可以将白盒加密视为一种专用的混淆方法,专为混淆非常特殊的代码。

更多背景知识。关于白盒加密,还有很多可以说的。例如,许多已发布的白盒加密方法已经被打破。白盒AES和白盒DES均已进行了加密分析,现在已知是不安全的。据我所知,随后发布的每种针对白盒密码的方法都被打破了,因此尚不清楚是否有可能安全地实现白盒密码的目标。

白盒密码学的杰出概述和介绍:

Marc Joye,《白盒密码学》。信息和网络安全,2008年。

评论


$ \ begingroup $
你是说白盒加密不是一种特定的方法,而是某种方法?还是有些密钥隐藏方法将被视为白盒加密,而有些则不会呢?
$ \ endgroup $
– MByD
11年8月12日在20:31

$ \ begingroup $
@MbyD,是的,这似乎是正确的。从广义上讲,白盒加密是一个目标(我们可能想要实现的安全概念)。也已经提出了一些用于实现该目标的方案/算法。我经常将“目标”和“方案”混为一谈,这部分是因为介绍该概念的原始论文既定义了总体目标,又提出了一些旨在实现该目标的方案。我怀疑我对目标以及旨在实现该目标的特定方案的草率使用“白盒密码”已引起混乱。对于那个很抱歉。
$ \ endgroup $
– D.W.
11年8月12日在22:15

$ \ begingroup $
顺便说一句,关于最后一个链接-这正是我的问题的出处...
$ \ endgroup $
– MByD
2011年8月14日在9:20

$ \ begingroup $
@ D.W。 -4.5年后。您的答案是否需要任何更新或状态基本保持不变?谢谢!
$ \ endgroup $
–尼尔·史密斯汀(Neil Smithline)
15年12月22日在20:25

$ \ begingroup $
@NeilSmithline,我写的所有内容似乎仍然有效。从那时起,在混淆方面当然有了新的成果和新的发展,但据我所知,没有什么会使我的答案无效。例如,您可能会喜欢阅读有关不可混淆的知识。
$ \ endgroup $
– D.W.
15年12月22日在20:37

#2 楼


白盒密码学旨在保护秘密密钥免于在软件实现中公开。


密码算法获取密钥和明文(加密模式) / ciphertext(解密模式)作为输入并输出密文/明文。
密码算法的白盒实现仅获取纯文本/密文作为输入并输出密文/明文。嵌入在算法中的密钥(合并在S-box或其他组件上)。

白盒密码术和AES实现是一种实现AES白盒实现的方法。

在代码混淆中,我们应该保护代码的某些部分。例如,为了保护算法,我们可以对算法或算法的某些关键特征进行加密。现在的查询是,我们如何保护加密密钥?因为如果有人拥有密钥就可以解密算法。白盒实现就是答案。

因此,代码混淆不是实现白盒加密的一种方法。白盒密码
用于代码混淆。

评论


$ \ begingroup $
感谢您的回答,在我完全理解要发表评论之前,我需要一些时间,请您重新输入最后一节的第一句话吗?我不清楚您在那说什么...谢谢!
$ \ endgroup $
– MByD
11年8月12日在20:10

$ \ begingroup $
对不起。我重新措辞了。
$ \ endgroup $
–ir01
11年8月13日在1:07

$ \ begingroup $
这个答案的第一段真的很好,但是最后一句话让我感到困惑
$ \ endgroup $
–laycat
15年1月19日在12:04

$ \ begingroup $
您是说代码混淆不是实现白盒加密的一种方法。这是因为在代码混淆中,键是否不需要嵌入功能中?
$ \ endgroup $
–laycat
2015年1月19日,12:25



#3 楼


白盒加密技术旨在保护软件
加密算法的实现以防止密钥恢复。

代码混淆旨在防止恶意软件的逆向工程
(加密)算法。


首先,混淆方法可分为工程(代码)混淆和加密混淆。

类似地,社区寻求解决方案在理论和实践上都达到白盒目标。这两种方式都与它们各自领域中的混淆技术有关。

一方面,从理论上讲,既没有WBC的可能性证明,也没有经过验证的安全性
构造。但是WBC似乎与加密混淆概念紧密相关,事实证明,对于虚拟黑匣子模型中的通用程序来说,加密混淆概念是不可能的。但是,似乎存在一种较弱的概念,称为“难以区分的混淆”(iO),并且已在文献中进行了广泛的研究。不幸的是,到目前为止,理论家还不喜欢WBC和iO。市场迫不及待地希望从学术方面获得结果,因此,许多秘密设计的“自制” WBC实现已部署在应用程序中,例如移动支付,密码保护和数字分发。这些所谓的WBC实现通常由破损的技术和一些代码混淆组成。但是有积极性和技能的攻击者总是可以用足够的时间来破坏它们。