因为dMHF是数据依赖型的,所以它比iMHF在密码学上具有更强的memory-hard特性。但是dMHF有一个问题,就是容易受到缓存时序等侧通道攻击。 也就是说只要使用的内存变小,那么内存和时间的乘积就要比之前的要大,对于这样的函数,我们就叫做memory-hard函数。 memory-hard在MHF中的应用 考虑MHF中的memory-hard的应用,需要在计算密码hash之前,通过内存准备一些初始数据,这些初始化的工作就是memory-hard的本质。 本文已收录于 http://www.flydean.com/memory-hard/ 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
Scrypt (Memory-Hard algorithm) Scrypt 也是一种 password-base KDF 算法,比起 PBKDF2 需要消耗更多的资源,从而有效防止了专有硬件 ASIC/
内容简介:MHF(Memory-hard functions)是一种函数,它的评测成本受存储成本所控制。在硬件设备(如FPGAs、ASICs)上对MHF进行评测,成本不比在x86设备上便宜。
它利用了有向无环图DAG同时实现了Memory-Hard Function内存计算困难但易于验证Memory-easy verification的特性(我们知道这是哈希算法的重要特性之一)。 Memory-Hard Function 直接翻译过来是内存困难函数,这是为了地址矿机而诞生的一种思想。 DAG Ethash的POW是memory-hard,支持矿机抵御。这意味着POW计算需要选择一个固定的依赖于nonce值和块头的资源的子集。 这个资源(大约1G大小)就是DAG!
这类算法的核心是Memory-Hard型函数,该函数将挖矿流程锁定在以内存为衡量标准的硬件性能,让多核平行处理发挥不出来,降低了硬件的运算优势,从而使得挖矿的效率与内存的性能正相关,以保证平等挖矿,当初它诞生的主要原因其实就是为了抵制矿机
作为一个memory-hard的算法,一个很重要的工作就是构建初始内存。接下来,我们看一下如何构建初始内存空间。
作为一个memory-hard的算法,一个很重要的工作就是构建初始内存。接下来,我们看一下如何构建初始内存空间。
CryptoNight算法开宗明义地写明, 运算主体是Memory-Hard Loop, 而不是Computation-Hard Loop. 每个循环都要在内存中检索.