买币
行情
现货
合约BTC
理财
活动中心
福利中心
更多
0 费狂欢节
MiMC 哈希: 什么是 MiMC 哈希? MiMC 哈希是一种密码学哈希结构,旨在零知识证明系统和其他算术电路环境中高效运行。 MiMC 是 Minimal Multiplicative Complexity(最小乘法复杂度)的缩写。 这个名称体现了其主要设计目标:与传统哈希函数相比,在电路中表示时尽可能减少乘法运算。 在加密领域,MiMC 哈希通常被视为一种适用于 SNARK、STARK、MPC 系统和注重隐私MiMC 哈希: 什么是 MiMC 哈希? MiMC 哈希是一种密码学哈希结构,旨在零知识证明系统和其他算术电路环境中高效运行。 MiMC 是 Minimal Multiplicative Complexity(最小乘法复杂度)的缩写。 这个名称体现了其主要设计目标:与传统哈希函数相比,在电路中表示时尽可能减少乘法运算。 在加密领域,MiMC 哈希通常被视为一种适用于 SNARK、STARK、MPC 系统和注重隐私

MiMC 哈希

2026/10/14 17:45
#Advanced
Humanity
H$0.05527-0.68%
SynFutures
F$0.003015-3.95%
PX
PX$0.0128--%
Partisia Blockchain
MPC$0.00951+9.05%
ZKsync
ZK$0.015009-8.21%

什么是 MiMC 哈希?

 

MiMC 哈希是一种密码学哈希结构,旨在零知识证明系统和其他算术电路环境中高效运行。

 

MiMC 是 Minimal Multiplicative Complexity(最小乘法复杂度)的缩写。

 

这个名称体现了其主要设计目标:与传统哈希函数相比,在电路中表示时尽可能减少乘法运算。

 

在加密领域,MiMC 哈希通常被视为一种适用于 SNARK、STARK、MPC 系统和注重隐私的区块链应用的 ZK 友好型哈希函数。

 

ASIACRYPT 2016 MiMC 论文记录将 MiMC 描述为一种具有较低乘法复杂度的分组密码和密码学哈希函数方案。

 

与 SHA-256 或 Keccak 不同,MiMC 的主要设计目标并非提高普通软件在 CPU 上的哈希速度。

 

它面向的是每个乘法约束都可能增加证明生成成本的环境。

 

这使 MiMC 对使用零知识证明、在不披露私有数据的情况下证明陈述的区块链系统尤为重要。

MiMC 哈希在加密领域的重要性

 

MiMC 哈希很重要,因为许多加密应用需要在零知识电路中使用哈希。

 

零知识电路可能需要证明用户知道某个秘密、拥有某个承诺、属于某棵 Merkle 树,或遵守某项智能合约规则,同时不公开隐藏的输入。

 

传统哈希函数在这些电路中可能成本很高,因为在许多有限域证明系统中,位运算并不容易高效处理。

 

MiMC 专为在有限域中自然运行而设计,而有限域是许多证明系统采用的数学环境。

 

MiMC 参考页面解释说,MiMC 是专为 SNARK 应用设计的一类分组密码和哈希函数。

 

这很有用,因为更低成本的哈希电路可以减少证明生成时间和证明成本,让隐私应用更具实用性。

 

MiMC 哈希推动了更广泛的 ZK 友好型哈希函数类别的发展。

 

即使后来选择了更新的 ZK 友好型哈希函数,MiMC 仍然重要,因为它发展时间较长、经过充分研究,并被广泛引用。

MiMC 哈希的工作原理

 

MiMC 哈希由有限域上的简单代数运算构成。

 

有限域是一种数学集合,其中的加法、减法、乘法和除法遵循严格的模运算规则。

 

其核心思路是利用轮常数和类似密钥的值,反复应用简单的幂函数。

 

MiMC 参考页面将核心组件描述为在有限域中计算的函数

f(x) = x^3
。

 

根据有限域和安全要求,部分实现会使用其他指数,例如

x^5
或
x^7
。

 

输入会经过多轮变换,使最终输出在不知道输入与输出之间内部关系的情况下,看起来具有不可预测性。

 

MiMC 作为哈希函数使用时,通常会嵌入海绵结构中。

 

海绵结构会将输入域元素吸收到内部状态中,再从该状态挤出输出域元素。

 

circomlib 的 MiMCSponge 电路使用海绵结构,将 MiMC-2n/n 实现为哈希函数。

MiMC 哈希与最小乘法复杂度

 

最小乘法复杂度是指该设计尝试减少表示函数所需的乘法运算次数。

 

这很重要,因为许多零知识证明系统会根据类似乘法的约束来衡量电路成本。

 

在普通编程环境中,位运算哈希函数可能速度快、实用性强。

 

但在 ZK 电路中,位运算可能成本很高,因为电路必须证明每项运算都正确。

 

MiMC 使用简单的代数幂映射,可以用较少的约束来表示。

 

MiMC 论文记录解释说,低乘法复杂度的设计初衷,源于 MPC、全同态加密和零知识证明等应用;在这些应用中,线性计算的成本相对较低。

 

简单来说,MiMC 试图缩小证明中成本高昂的部分。

 

这就是为什么 MiMC 被称为 ZK 友好型,而不仅仅是速度快。

MiMC 哈希与零知识证明

 

零知识证明允许一方向另一方证明某个陈述为真,而不披露该陈述背后的私有数据。

 

当陈述涉及承诺、Merkle 路径、空值符或隐藏账户数据时,可以在零知识证明中使用 MiMC 哈希。

 

2024 年的MiMC 加速研究论文 AMAZE将 MiMC 描述为一种成熟的 ZK 友好型哈希,其简单的代数结构适用于 ZKP 应用。

 

ZK 电路可以使用 MiMC 来证明某个秘密输入的哈希值与公开承诺相符。

 

它也可以用来证明某个叶子节点属于 Merkle 树,而不公开整条路径。

 

由于 MiMC 适合算术运算,与主要为位级软件性能设计的哈希函数相比,它可以减少约束数量。

 

较少的约束可以让证明生成更快、成本更低。

 

这对区块链系统尤其重要,因为证明时间和验证成本可能影响真实用户体验。

MiMC 哈希与 SNARK

 

SNARK 是一类零知识证明系统,通常会将计算表示为算术电路。

 

在许多 SNARK 场景中,与加法和常数运算相比,乘法约束成本更高。

 

ZK 友好型哈希函数研究文章解释说,在基于 R1CS 的 SNARK 场景中,成本取决于约束数量。

 

MiMC 的设计目标是降低约束数量。

 

因此,对于需要反复执行哈希的 SNARK 电路来说,MiMC 具有吸引力。

 

Merkle 树证明、隐私转账系统、凭证系统和匿名成员资格系统都经常需要重复执行哈希。

 

每次哈希节省少量成本,当电路需要执行数百或数千次哈希时,累计节省可能相当可观。

 

MiMC 对 SNARK 的价值在于,它采用了证明系统能够高效表示和处理的代数计算方式。

MiMC 哈希与 STARK

 

STARK 是另一类零知识证明系统,使用代数执行轨迹和多项式约束。

 

由于 MiMC 具有简单的代数轮结构,也会在 STARK 场景中被讨论。

 

MiMC 参考页面托管在一个更广泛的网站上,该网站介绍了适用于 SNARK、STARK 和 MPC 的对称密钥密码学。

 

在 STARK 风格的系统中,约束的次数和执行轨迹大小可能会显著影响性能。

 

与包含大量位运算的传统哈希函数相比,基于简单幂运算的轮函数可能更容易表示。

 

这并不意味着 MiMC 始终是 STARK 哈希的最佳选择。

 

这意味着 MiMC 属于面向代数化设计的密码学原语这一更广泛的类别。

 

开发者应根据证明系统、有限域、安全级别和实现成熟度选择哈希函数。

MiMC 哈希与有限域

 

MiMC 哈希在有限域中运行,而不是使用普通的无限整数。

 

有限域为电路提供一个固定的数学范围,其中的值会按照素数域或二进制域大小循环计算。

 

MiMC 参考页面指出,MiMC 运算在

GF(q)
中进行,其中
q = p
或
q = 2^n
。

 

这很重要,因为许多区块链证明系统使用与椭圆曲线相关的素数域。

 

MiMC 实现必须谨慎选择有限域参数。

 

轮函数使用的指数也必须适合该有限域,以确保映射具备预期的密码学特性。

 

在一个有限域中安全的 MiMC 设计,不应未经验证就直接用于另一个有限域。

 

有限域选择、指数选择、轮数和常数都属于安全设计的一部分。

MiMC 哈希与轮常数

 

轮常数是在 MiMC 置换或密码的各轮运算中加入的固定值。

 

它们有助于避免各轮过于对称或容易预测。

 

应以透明方式生成可靠的常数,让开发者和审计人员能够相信这些常数并非恶意选定。

 

许多实现会使用标准哈希函数,根据公开种子字符串生成常数。

 

ZK 友好型哈希函数研究文章指出,实现通常会根据

MiMC0
和
MiMC1
等字符串生成 MiMC 轮常数。

 

开发者应准确记录常数的生成方式。

 

审计人员应核实实现使用了预期常数,且顺序正确。

 

未记录的常数会让密码学实现更难以获得信任。

MiMC 哈希与海绵结构

 

海绵结构是通过置换构建哈希函数的一种常见方法。

 

它包含吸收阶段和挤出阶段。

 

在吸收阶段,输入值会混入内部状态的一部分。

 

在挤出阶段,系统会根据变换后的状态生成输出值。

 

ZK 友好型哈希研究文章解释说,MiMC 哈希基于海绵框架:消息块被吸收到状态的一部分中,再通过 MiMC 置换进行变换。

 

海绵结构很有用,因为它可以支持可变长度的输入和灵活的输出长度。

 

在加密电路中,这有助于将多个域元素哈希成一个承诺或摘要。

 

不过,速率、容量、有限域大小和轮数等海绵参数都必须谨慎选择。

MiMC 哈希与 SHA-256 的区别

 

MiMC 哈希和 SHA-256 都是密码学哈希函数,但它们针对不同的运行环境进行优化。

 

SHA-256 广泛用于传统软件、硬件和工作量证明系统。

 

MiMC 哈希则针对算术电路和有限域证明系统进行了优化。

 

由于 SHA-256 使用位运算、循环移位和布尔逻辑,在电路中实现时可能需要大量约束。

 

在许多 SNARK 环境中,MiMC 电路可能成本低得多,因为它的运算与有限域算术相匹配。

 

这并不意味着 MiMC 应该在所有场景中取代 SHA-256。

 

这意味着当哈希必须在 ZK 电路中得到证明时,MiMC 可能更合适。

 

对于普通的链下文件哈希,或需要广泛标准化兼容性的场景,传统哈希函数可能仍更合适。

MiMC 哈希与 Keccak 的区别

 

Keccak 在 Ethereum 风格的智能合约系统中被广泛用作通用哈希原语。

 

开发者通常会在需要于零知识电路中高效哈希时选择 MiMC。

 

在需要兼容现有地址、签名或合约逻辑时,Keccak 兼容性可能很有用。

 

在算术电路中证明隐藏数据之间的关系时,MiMC 的效率可能更有优势。

 

如果设计需要同时兼顾兼容性和高效证明,开发者可以在电路外使用 Keccak,在电路内使用 MiMC。

 

这种拆分必须经过谨慎设计,因为不同哈希函数会产生不同的承诺和信任假设。

 

用户不应认为 MiMC 摘要和 Keccak 摘要可以互换。

 

正确的选择取决于哈希的计算位置以及需要验证的内容。

MiMC 哈希与 Poseidon 的区别

 

MiMC 和 Poseidon 都是 ZK 友好型哈希函数。

 

MiMC 出现较早,具有重要的历史地位。

 

Poseidon 是更新的、面向代数化设计的哈希函数,在某些输入和证明系统中可能效率更高,因此常用于现代 ZK 系统。

 

ZK 友好型哈希函数研究文章将 MiMC 描述为首个 ZK 友好型哈希函数,并指出此后又提出了更新的 ZK 友好型哈希函数。

 

这并不意味着 MiMC 在所有情况下都已过时。

 

开发者应比较安全性分析、电路成本、库支持、审计历史、有限域兼容性和生态系统预期。

 

为了兼容已部署的承诺和 Merkle 根,现有协议可能会继续使用 MiMC。

 

新协议则可以在进行基准测试和审计评估后选择其他 ZK 友好型哈希函数。

MiMC 哈希在 Merkle 树中的应用

 

MiMC 哈希常用于零知识系统中的 Merkle 树。

 

Merkle 树会通过反复哈希节点对,将许多值压缩为一个根值。

 

用户可以通过展示 Merkle 路径,证明某个叶子节点属于这棵树。

 

在 ZK 电路中,用户可以证明路径有效,而不披露不必要的私有数据。

 

如果电路在树的每一层都使用普通的位运算密集型哈希函数,证明成本可能会很高。

 

使用 MiMC 可以降低每一步哈希的约束成本。

 

因此,MiMC 会出现在隐私、身份、投票和成员资格证明设计中。

 

Merkle 树安全性仍取决于哈希函数正确、树构造正确以及电路约束正确。

MiMC 哈希在承诺中的应用

 

承诺可以让用户锁定某个值,而不立即披露该值。

 

MiMC 哈希可以用秘密值和随机数生成承诺。

 

例如,协议可以将秘密票据值、所有者密钥和随机盐值哈希成公开承诺。

 

之后,用户可以在 ZK 电路中证明自己知道这些隐藏数据。

 

如果哈希函数和协议设计正确,公开承诺就不会泄露秘密输入。

 

这种模式在保护隐私的加密系统中很常见。

 

MiMC 的优势在于,可以在电路中高效检查承诺哈希。

 

承诺方案仍必须包含足够的随机性,以防止攻击者针对较小的秘密值进行猜测攻击。

MiMC 哈希在空值符中的应用

 

空值符是一种用于防止双重花费或重复领取的值,同时不会泄露原始秘密。

 

MiMC 哈希可以帮助根据秘密密钥、票据或身份值推导出空值符。

 

执行隐私操作时,协议可以发布空值符。

 

其他用户可以检查该空值符此前是否已出现。

 

零知识证明可以在不披露底层秘密的情况下,证明空值符是正确推导出来的。

 

这对隐私转账、隐私领取和匿名成员资格操作都很重要。

 

如果空值符哈希处理不正确,用户可能会发生双重花费或失去隐私。

 

MiMC 可以提高空值符检查效率,但仍需仔细审计完整的协议逻辑。

MiMC 哈希在智能合约中的应用

 

智能合约可以验证涉及 MiMC 哈希承诺或 Merkle 根的证明。

 

合约可能不会重新计算每个隐藏值,但可以验证由包含 MiMC 运算的电路生成的证明。

 

如果链上需要哈希处理,部分合约也可能直接实现 MiMC。

 

当合约需要采用有限域算术的 ZK 友好型哈希函数时,链上使用 MiMC 可能很有用。

 

不过,在智能合约中实现密码学存在风险,因为微小错误都可能破坏安全性。

 

条件允许时,开发者应优先使用经过审查和审计的库及实现。

 

还应确认链上函数与电路函数完全一致。

 

电路版 MiMC 和合约版 MiMC 不匹配,可能导致证明失败或产生安全漏洞。

MiMC 哈希与 Circom

 

Circom 是一种用于编写零知识证明算术电路的语言。

 

circomlib 代码库包含可复用的密码学原语电路模板和其他电路组件。

 

circomlib 包含 MiMCSponge 电路实现。

 

这很重要,因为许多 ZK 开发者会使用电路库,而不是从头编写每个原语。

 

使用库可以缩短开发时间,但不能免除审计的必要性。

 

开发者必须确保库版本、参数、约束和有限域与协议设计相符。

 

还应避免不经核实就照搬旧教程中的过时代码片段。

 

在 ZK 开发中,只有在完整电路中正确使用时,库函数才是安全的。

MiMC 哈希与约束不足的电路

 

约束不足的电路是指无法充分强制执行其声称要证明的计算过程的 ZK 电路。

 

这是在电路中使用 MiMC 或任何哈希函数时最严重的风险之一。

 

关于 MiMC 哈希约束漏洞的 ZK 审计教程介绍了一个案例:MiMC 哈希电路中缺少一项约束,因为代码使用了赋值运算符,而非约束运算符。

 

问题并非 MiMC 的数学设计必然存在缺陷。

 

问题在于电路未能约束输出,使其符合预期的哈希计算结果。

 

这一教训适用于所有 ZK 协议。

 

如果电路没有实际执行并约束哈希函数,再强的哈希函数也无法保护协议。

 

ZK 开发者应测试约束、进行审计,并在可行时使用形式化检查或基于属性的检查。

MiMC 哈希的安全属性

 

MiMC 哈希旨在根据选定参数提供碰撞抗性和原像抗性等密码学安全属性。

 

碰撞抗性是指难以找到两个不同输入,使它们产生相同的哈希输出。

 

原像抗性是指难以从哈希输出还原输入。

 

第二原像抗性是指难以找到另一个不同输入,使其哈希输出与已知输入相同。

 

这些属性取决于具体的 MiMC 变体、有限域、指数、轮数、常数和构造模式。

 

MiMC 参考页面称,根据其列出的分析,截至当时尚未发现针对完整轮数 MiMC-n/n 或 MiMC-p/p 的攻击,同时也指出某些 Feistel 分组密码变体存在相关问题。

 

除非有充分的密码学依据,否则开发者不应为了减少约束而降低轮数。

 

未经专家审查就更改参数,可能削弱安全性。

MiMC 哈希与轮数

 

轮数是指 MiMC 轮函数应用的次数。

 

增加轮数通常会提高抵抗密码分析的能力,但也会增加电路成本。

 

减少轮数可以提升性能,但可能降低安全性。

 

MiMC 参数通常根据有限域大小、指数、安全性分析和构造类型来选择。

 

circomlib 的 MiMCSponge 实现中包含注释,展示了针对特定素数域和指数选项的轮数计算方式。

 

这并不意味着所有 MiMC 实现都应不加判断地采用相同轮数。

 

轮数必须与具体的有限域、指数、构造方式和安全目标相匹配。

 

协议应记录其 MiMC 参数,以便审计人员和用户进行核实。

MiMC 哈希与指数

 

指数是指非线性轮函数所使用的幂,例如

x^3
、
x^5
或
x^7
。

 

MiMC 的原始设计通常以

x^3
为例进行说明。

 

某些有限域需要使用不同的指数,因为幂映射必须在该有限域中表现适当。

 

ZK 友好型哈希研究文章指出,在某些有限域选择下,

x^3
S 盒有时会替换为
x^5
或
x^7
。

 

在基于主流配对友好曲线有限域构建的电路中,这种情况很常见。

 

开发者不应将所有 MiMC 变体视为完全相同。

 

更改指数会改变密码学函数,也会改变所需的安全性分析。

 

实现兼容性取决于各处使用相同的指数和常数。

MiMC 哈希与域分离

 

域分离是指确保不会在不同协议用途之间以容易造成混淆的方式重复使用同一个哈希函数。

 

协议可能会将 MiMC 用于承诺、空值符、Merkle 节点和挑战值。

 

如果所有用途都使用相同的输入格式,且没有进行分离,就可能产生意外碰撞或协议混淆。

 

域分离可以采用固定前缀、标签、不同常数、不同密钥或结构化输入格式。

 

具体方法应与证明系统和有限域表示相匹配。

 

良好的域分离有助于简化协议审计。

 

它也能降低某个上下文中的值被危险地用于其他上下文的可能性。

 

MiMC 是一种原语;构建安全协议还需要对该原语周围的输入进行谨慎设计。

MiMC 哈希与有限域元素编码

 

MiMC 哈希通常接收有限域元素作为输入,而不是直接处理任意文本字符串。

 

这就需要考虑编码方式。

 

开发者必须决定如何将字节、地址、金额、标识符和公钥转换为有限域元素。

 

错误的编码可能造成歧义、截断、溢出或跨协议混淆。

 

例如,两个不同的字节数组不应意外映射到同一组有限域元素,除非协议设计本身允许这种情况。

 

在需要时,应对输入长度进行编码或以其他方式消除歧义。

 

所有实现都应统一字节序、填充方式、模数约简和有限域边界。

 

许多 MiMC 漏洞来自集成错误,而不是哈希的核心理念。

MiMC 哈希与性能

 

MiMC 哈希通过尽量减少成本高昂的乘法类运算,在算术电路中实现高效运行。

 

这可以减少证明生成时间和电路规模。

 

2024 年的 AMAZE 论文指出,SHA-2 等标准密码学哈希函数在 ZKP 场景中可能效率较低,而 ZK 友好型哈希函数则专为提高 ZKP 效率而设计。

 

同一论文提出了用于 ZK 应用的硬件优化 MiMC 实现,并报告称,在其测试环境下,这些实现的性能优于标准 CPU 实现。

 

这表明 MiMC 在当前 ZK 硬件和性能研究中仍然相关。

 

不过,性能应在实际目标系统中进行测量。

 

在某个证明系统中高效的哈希函数,在另一个系统中未必是最佳选择。

 

基准测试应包括证明者运行时间、验证者成本、约束数量、内存、实现成熟度和审计历史。

MiMC 哈希与审计要求

 

MiMC 哈希用于生产环境的加密系统时应经过审计。

 

审计人员应检查数学参数、电路约束、输入编码、域分离、实现语言和智能合约验证逻辑。

 

他们应确认电路输出受到约束,符合预期的 MiMC 计算结果。

 

他们应比较链下代码、电路代码和链上代码的测试向量。

 

他们应检查常数的生成和存储方式是否正确。

 

他们应审查轮数是否与有限域和指数相匹配。

 

他们应测试边界情况,例如零输入、最大有限域元素、重复输入和可变长度数据。

 

只有完整实现安全,密码学原语才是安全的。

MiMC 哈希与测试向量

 

测试向量是已知的输入和输出示例,用于验证实现是否按预期运行。

 

MiMC 实现应发布或包含适用于具体变体的测试向量。

 

测试向量有助于开发者对比电路实现、JavaScript 实现、Rust 实现、Solidity 实现或后端证明器实现。

 

如果两个实现对相同输入产生不同输出,至少有一个实现使用了不同参数或存在错误。

 

测试向量应包括普通输入、零输入、边界值和多输入海绵示例。

 

测试向量还应说明有限域、指数、轮数、常数、输入顺序、输出顺序和编码方式。

 

没有测试向量时,集成错误更难发现。

 

对于 ZK 系统,测试向量是基本工程规范的一部分。

MiMC 哈希与加密钱包安全

 

大多数加密货币用户不会直接接触 MiMC 哈希。

 

他们可能会使用依赖隐藏 ZK 电路中的 MiMC 的应用。

 

钱包可能只显示证明生成步骤、领取操作或隐私交易操作。

 

用户无需提供助记词或私钥,就可以了解 MiMC 或使用 ZK 应用。

 

FTC 加密诈骗指南提醒,诈骗者会利用虚假机会和加密货币付款请求窃取资金。

 

用户应警惕虚假的证明生成器、隐私工具和钱包客服页面。

 

正规的 ZK 应用不应要求用户披露钱包恢复短语。

 

MiMC 哈希是一种密码学工具,并不构成将钱包机密交给未知软件的理由。

MiMC 哈希与税务

 

MiMC 哈希本身不会产生应税事件。

 

它是软件和协议内部使用的一种密码学原语。

 

不过,使用 MiMC 的 ZK 应用所执行的交易可能涉及数字资产。

 

官方IRS 数字资产页面表示,数字资产交易可能需要申报,数字资产收入也可能需要纳税。

 

使用加密应用时,用户应保存转账、兑换、领取、奖励、手续费、时间戳、钱包地址和交易哈希等记录。

 

如果用户没有自行保存记录,注重隐私的工具可能会增加个人记账的难度。

 

用户不应认为零知识交易可以免除申报义务。

 

加密货币活动达到一定规模的用户应咨询合格的税务专业人士。

MiMC 哈希的优势

 

MiMC 哈希可以降低许多零知识电路中的哈希成本。

 

它使用简单的有限域算术,与 SNARK 风格的约束相匹配。

 

它具有明确的设计目标,专注于降低乘法复杂度。

 

它可以用于 Merkle 树、承诺、空值符和隐私成员资格证明。

 

自 ASIACRYPT 2016 论文发表以来,它一直受到研究。

 

它已在 ZK 电路库中得到实际实现。

 

它在当前 ZK 加速研究中仍具有相关性。

 

其主要优势是在哈希必须于算术电路中得到证明时,能够高效执行密码学哈希。

MiMC 哈希的风险与局限

 

MiMC 哈希并不是所有哈希函数的通用替代品。

 

与广泛使用的传统哈希函数相比,它在通用软件环境中的标准化程度较低。

 

它需要谨慎选择有限域、指数、轮数、常数和构造方式等参数。

 

如果开发者不了解目标有限域就照搬实现,可能导致不安全。

 

如果电路约束不足,也可能导致不安全。

 

如果链下和链上实现不完全匹配,同样可能导致不安全。

 

在某些现代证明系统中,它的效率可能不如较新的 ZK 友好型哈希函数。

 

最大的局限在于,MiMC 的安全性取决于是否正确使用,而不只是是否使用名为“MiMC”的算法。

如何评估加密项目中的 MiMC 哈希

 

首先确认项目使用的是哪个 MiMC 变体。

 

检查有限域、指数、轮数、常数、速率、容量和输出长度。

 

确认实现来自经过审查的库,还是项目的自定义代码。

 

查看是否有公开测试向量与电路及智能合约实现相匹配。

 

确认项目是否经过了解零知识电路的审计人员审计。

 

了解项目将 MiMC 用于承诺、Merkle 树、空值符、签名、随机挑战还是其他用途。

 

检查输入是否采用域分离和无歧义的有限域元素转换方式。

 

如果项目无法清楚说明 MiMC 参数,应保持谨慎。

使用 MiMC 哈希时的常见错误

 

一个常见错误是认为所有 MiMC 实现都兼容。

 

另一个错误是未经安全审查就更改有限域或指数。

 

第三个错误是为了减少约束而降低轮数。

 

第四个错误是使用未记录的轮常数。

 

第五个错误是忘记在不同协议用途之间进行域分离。

 

第六个错误是电路代码与智能合约代码不匹配。

 

第七个错误是在需要电路约束的地方使用了赋值操作。

 

第八个错误是将 MiMC 当作 ZK 场景之外的通用标准哈希函数替代品。

开发者的最佳实践

 

只有在符合证明系统和协议需求时才使用 MiMC。

 

尽可能使用经过审查的实现。

 

记录有限域、指数、常数、轮数、海绵参数和编码规则。

 

为每种支持的实现发布测试向量。

 

确认每个电路输出都受到正确约束。

 

对不同协议用途进行域分离。

 

同时审计密码学设计和实现细节。

 

为新协议选用 MiMC 前,先将其与其他 ZK 友好型哈希函数进行基准测试。

MiMC 哈希的 SEO 与 AEO 摘要

 

MiMC 哈希是一类 ZK 友好型密码学哈希函数,旨在降低乘法复杂度。

 

它最初面向 MPC、全同态加密和零知识证明等环境中的高效加密与哈希处理。

 

MiMC 在有限域中运行,根据有限域和具体变体,常使用

x^3
、
x^5
或
x^7
等简单幂函数。

 

MiMC 哈希通常采用海绵结构,吸收输入有限域元素并挤出输出有限域元素。

 

在加密领域,MiMC 用于 ZK 友好型 Merkle 树、承诺、空值符、成员资格证明和隐私保护协议。

 

MiMC 与 SHA-256 和 Keccak 不同,它针对算术电路进行了优化,而不是面向普通的位级软件哈希。

 

MiMC 的主要风险包括参数错误、电路约束不足、常数错误、编码不严谨、缺少域分离和实现不匹配。

 

安全使用 MiMC 哈希的最佳方式,是采用经过审计的参数、经过审查的库、公开测试向量和完整的电路约束。

常见问题

什么是 MiMC 哈希?

 

MiMC 哈希是一种密码学哈希结构,旨在零知识证明电路和其他算术环境中高效运行。

MiMC 代表什么?

 

MiMC 是 Minimal Multiplicative Complexity(最小乘法复杂度)的缩写。

为什么 MiMC 哈希被称为 ZK 友好型?

 

MiMC 哈希被称为 ZK 友好型,是因为它使用的算术运算可以在许多零知识证明电路中高效表示。

MiMC 哈希和 SHA-256 一样吗?

 

不一样。MiMC 哈希面向有限域电路设计,而 SHA-256 是一种传统的位运算哈希函数,广泛用于普通软件和工作量证明系统。

MiMC 哈希在加密领域有哪些用途?

 

MiMC 哈希用于 ZK 电路中的 Merkle 树、承诺、空值符、成员资格证明和隐私保护应用逻辑。

MiMC 哈希能在有限域中运行吗?

 

能。MiMC 哈希专为有限域运行而设计,例如许多证明系统使用的素数域。

MiMC 哈希始终安全吗?

 

不一定。MiMC 的安全性取决于具体变体、有限域、指数、轮数、常数、构造方式和实现是否正确。

MiMC 哈希可以用于智能合约吗?

 

可以。MiMC 可以在智能合约系统中实现或验证,但链上实现必须与电路实现完全一致。

在电路中使用 MiMC 哈希的主要风险是什么?

 

一个主要风险是电路约束不足,导致证明并未真正强制执行预期的 MiMC 哈希计算。

新的 ZK 项目都应该使用 MiMC 哈希吗?

 

不应该。新的 ZK 项目应将 MiMC 与其他 ZK 友好型哈希函数进行比较,并根据安全性、性能、有限域兼容性、库支持和审计需求作出选择。

结论

 

MiMC 哈希在零知识加密系统的发展历史和实践中,是一种重要的密码学原语。

 

它旨在通过减少乘法密集型运算,降低算术电路中的哈希成本。

 

因此,它可用于 SNARK、与 STARK 相关的设计、MPC 系统、承诺、Merkle 树、空值符和隐私成员资格证明。

 

MiMC 的优势来自其简单的有限域代数,以及对 ZK 效率的关注。

 

它的风险在于每个参数和实现细节都至关重要。

 

MiMC 实现必须正确选择有限域、指数、轮数、常数、海绵参数、输入编码和域分离方式。

 

使用 MiMC 的 ZK 电路也必须正确约束计算过程。

 

对用户而言,MiMC 通常是不可见的,因为它在应用的证明系统内部运行。

 

对开发者而言,MiMC 是一种强大的工具,但需要谨慎的工程实践和审计评估。

 

理解 MiMC 哈希的最佳方式,是将其视为一种专用的 ZK 友好型哈希函数:它可以帮助加密协议高效证明私有计算,但前提是准确实现其参数和电路约束。

您可能也喜欢

反恐融资(CTF)

反恐怖主义融资(CTF)是指旨在发现、预防和打击恐怖主义活动资金支持的法律、法规和活动。这包括监控和监管资金流动、在金融机构内部实施合规计划,以及执行旨在遏制恐怖主义融资的国际制裁和法规。 反恐融资在各领域的重要性 反恐融资在包括银行业、科技和国际贸易在内的各个领域都至关重要。在金融领域,强而有力的反恐融资措施可确保银行和其他金融机构不会被恐怖组织利用为其活动提供资金。这不仅有助于维护金融体系的完
2025/12/23 18:42

框架

在专业情境中,「框架」指的是一套结构化的指南、工具或实践,旨在支援专案、应用程式或系统的开发和实施。它提供了一种标准化的方法来解决复杂问题或实现特定目标,通常包含可根据具体需求进行调整和扩展的预先建置元件。 框架的关键特征 框架在软体开发、专案管理和数位行销等各个领域都至关重要。例如,在软体开发中,Angular、React 和 Django 等框架提供了开发人员用来高效建立高品质应用程式的程式库
2025/12/23 18:42

波动性爆发

「波动性爆发」是指金融市场、资产或指数的波动性突然显著增加,通常由不可预见的事件或市场情绪变化所驱动。这种突如其来的增加会导致价格大幅波动和交易量激增,从而影响投资者和交易者的风险和机会。 了解波动性爆发 波动性是衡量特定证券或市场指数收益分散程度的统计指标,显示资产价格在特定期间内的波动幅度。当这种波动超出正常水平时,就会发生波动性爆发,这通常是对意外新闻或经济事件的反应。这些事件可能包括地缘政
2025/12/23 18:42
回调还是机会?
回调还是机会?回调还是机会?
一边爆仓,一边扫货——24亿ETF资金在赌什么?