这说,f_n是很难记忆的,如果,对于任何空间S和时间T,S\cdot T \in \Omega(n^2)。
我的问题:
发布于 2021-09-02 02:15:55
这篇文章讨论了其中的许多问题。在这种情况下,“对手”是一些算法,它可以使用比我们预期的更少的资源来评估f_n。
这个定义有多好?所以,我想这个定义不够紧,不能告诉我们哪个内存硬的KDF一定会更好?
诚然,n^2/1000与1000n^2有很大的不同,但是这个定义对于具有这两个难度级别的内存硬函数会很满意。在本文编写时,大多数候选内存硬函数的渐近性比\Theta(n^2)差得多.因此,这个定义非常有效地排除了许多不好的候选人。一旦你有很多候选人满足这个渐近定义,那么你就可以开始担心常数因素了。
有更好的记忆硬度定义吗?
是的,这个定义只考虑最坏的空间使用情况S。假设f_n是一个函数,它确实需要n内存单元来计算--如果在某个时刻不保存n内存单元,就无法计算f_n。这并不排除只在很短的时间内需要n内存单位的可能性。换句话说,可能有一个用于f_n的算法,其内存使用时间图如下所示:

(从列奥·雷津在氪星上的幻灯片拍摄的图片)
如果该算法具有最大的空间利用率n且同时使用n时间,则其ST-复杂度为\Omega(n^2).复杂性就像这张图片中蓝色边框矩形的区域。
但是这种记忆硬度的测量掩盖了一些问题。假设一个对手想要在许多不同的输入上评估f_n,并且它聪明地将这些评估安排如下:

此策略可用于评估示例f_n在n上的不同输入,只需使用O(n)时间和O(n)总内存!因此,用于计算函数n时间的总“ST成本”为O(n^2),这意味着每个实例的摊销成本仅为O(n)。
对函数的记忆硬度进行分类的一个更好的方法是测量曲线下的面积,而不是包围框的面积。这确实是在后续工作中提出的,在那里,内存硬度度量被称为“累积内存复杂性”。
https://crypto.stackexchange.com/questions/93837
复制相似问题