# Is Argon2 “sequential memory hard”?

The Scrypt paper here defines memory-hard and sequential memory hard functions as follows:

Definition 1. A memory-hard algorithm on a Random Access Machine is an algorithm which uses $$S(n)$$ space and $$T(n)$$ operations, where $$S(n) \in \Omega (T(n)^{1-\epsilon})$$

Definition 2. A sequential memory-hard function is a function which

(a) can be computed by a memory-hard algorithm on a Random Access Machine in $$T(n)$$ operations; and
(b) cannot be computed on a Parallel Random Access Machine with $$S∗(n)$$ processors and $$S ∗(n)$$ space in expected time $$T∗(n)$$ where $$S∗(n)T∗(n) =\mathcal{O}(T(n)^{2-x})$$ for any $$x > 0$$.

Put another way, a sequential memory-hard function is one where not only the fastest sequential algorithm is memory-hard, but additionally where it is impossible for a parallel algorithm to asymptotically achieve a significantly lower cost. Since memory-hard algorithms asymptotically come close to using the most space possible given their running time, and memory is the computationally usable resource general-purpose computers have which is most expensive to reproduce in hardware8 , we believe that, for any given running time on a sequential general-purpose computer, functions which are sequential memory-hard come close to being the most expensive possible functions to compute in hardware.

However the specification for Argon2 refers only to 'memory hard' functions.

In the case of the password hashing, we suppose that the defender allocates certain amount of time (e.g., 1 second) per password and a certain number of CPU cores (e.g., 4 cores). Then he hashes the password using the maximum amount M of memory. This memory size translates to certain ASIC area A. The running ASIC time $$T$$ is determined by the length of the longest computational chain and by the ASIC memory latency. Therefore, we maximize the value $$AT$$. The other use cases follow a similar procedure. Suppose that an ASIC designer that wants to reduce the memory and thus the area wants to compute $$H$$ using $$αM$$ memory only for some $$α < 1$$. Using some tradeoff specific to $$H$$, he has to spend $$C(α)$$ times as much computation and his running time increases by at least the factor $$D(α)$$. Therefore, the maximum possible gain $$E$$ in the time-area product is:

$$E_{max} = max α \frac{1}{(αD(α)}$$ .

The hash function is called memory-hard if $$D(α) > 1/α$$ as $$α → 0$$.

Questions

1. Is Argon2 sequential memory hard per the specification set out in the Scrypt paper?
2. If not, why? Is it a case of different definitions or a completely different approach?
• Mybe I'm missing something, but, to me, it seems that Argon2 is very similar to $\text{ROMix}_H$ that's introduced in Scrypt's paper in page 6, which is later claimed to be sequential memory-hard by Theorem 1 in page 8. I didn't check the proofs in detail, but I feel Argon2 is of the same class of functions that falls under Theorem 1. Yet, Argon2's paper only calls itself "memory-hard". Something is inconsistent here (hopefully it is my understanding, so that I learn something new!). – caveman Jan 7 at 19:51