Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

5
  • Why takes more time to fill memory than Argon2 is bad? at the end it is preventing the parallelization, right? Commented Sep 4, 2019 at 20:35
  • 2
    @kelalaka No. If you double the number of cores your computer has, you double the throughput of any code which does not depend on memory (besides the L1 cache, for which there is one per core). There is, however, a maximum amount of read/writes that can be done through a single RAM controller. So if you write a program that writes a lot of bytes per second then doubling the number of cores would, at some point, not double throughput. Since RAM takes so much space compared to CPU cores, it's better for crackers to minimize how many independent RAM units they need. Commented Sep 4, 2019 at 22:12
  • 2
    @kelalaka With current technology we can build small amounts of expensive, very fast memory (as with your PC's L1 cache) or very large amounts of cheap, slow memory (as with normal computer RAM). Say you can generate one block per n cores in the same time that it takes to update eight blocks of memory. If you built a 8 * n core computer then you could compute 8 hashes in parallel. By bringing the time it takes to generate a block compared to time to update a block closer to 1:1, it better limits how much parallelism you can get from a single chip, even if memory use is (too) low. Commented Sep 4, 2019 at 22:12
  • Some of these should definitely go into this nice answer. Commented Sep 4, 2019 at 22:14
  • 2
    @kelalaka Oh. There are multiple reasons and I could have lead with a simpler one. Every user of a password hash is going to have a maximum amount of time and maximum amount of RAM they can use. If available_ram >> write_speed * available_time, then it would be beneficial to increase write_speed because it would raise cracker's costs without forcing the defender to use more time or buy faster hardware. (The cracker's cost here comes from power consumption which, for volatile memory, is related to time * memory.) Commented Sep 4, 2019 at 22:43