首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >缓存丢失在内存中扮演的角色是什么-硬密码散列?

缓存丢失在内存中扮演的角色是什么-硬密码散列?
EN

Cryptography用户
提问于 2017-04-20 22:37:15
回答 1查看 466关注 0票数 6

我尝试了argon2并构建了一个web应用程序。在浏览器中,我使用一个线程散列,内存不多。我想保护我的短长度输入数据免受平行蛮力攻击。

我理解,使用大内存(1GB或更高的内存)可以防止并行性,这是因为成本太高。我想支持移动和旧的浏览器,所以我使用16 or或32 or内存最大值。

我认为argon2索引函数产生了大量的缓存丢失,而随机访问共享内存和一个内核等待了很多。因此,并行性增加了缓存丢失计数,并减缓了哈希。我是平行的基准,但它不受影响,并行工作。

是因为我的基准测试错了,还是没有生成大量我认为的缓存缺失,或者缓存没有像处理那样影响到缓存?

缓存错过了内存硬度,因为等待核心可能比等待时间更快地计算丢失的内存,也就是时间-内存权衡?

edit1使用的内存与内存带宽和速度之间的关系是什么?

EN

回答 1

Cryptography用户

发布于 2017-04-20 23:54:48

我理解,使用大内存(1GB或更高的内存)可以防止并行性,这是因为成本太高。我想支持移动和旧的浏览器,所以我使用16 or或32 or内存最大值。

这是真的,但是对于大多数应用程序来说,32 is内存是相当安全的。

是因为我的基准测试错了,还是没有生成大量我认为的缓存缺失,或者缓存没有像处理那样影响到缓存?

密码破解的问题不仅仅是CPU可以执行的16个线程。CPU是一件相当复杂的事情,即使它不能缓存你抛给它的任何东西,它也有多个高速内存通道,容量可达if级,用于强大的服务器。

当每个人的电脑里都有成千上万的处理器时,问题就开始了。这是现在的情况与GPU。GPU利用大规模的并行性。这就做出了一些权衡,例如,每个线程都有很小的内存和没有缓存。常用的GPU编程技术要求下一次访问的数据更早地被获取,并保存在减少的空间中。这显然不可能发生在32 of表中,这进一步受到访问全局GPU内存的巨大性能成本的限制(您有成千上万的线程都在访问一些随机信息)。而且GPU中甚至没有足够的内存一次运行1000个线程。

or还试图通过快速使用大量内存来对抗所有预先制作的芯片,从而使其迅速崩溃:您不能仅仅投资于大量快速散列芯片,因为它们每一个芯片都需要兆字节或更多字节。

因此,如果您使用CPU运行基准测试,则预期它将运行此算法。毕竟,argon2是为了使其在多处理器CPU上高效运行,而不是在GPU或ASIC上运行。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/46765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档