跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
非小号百科
搜索
搜索
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“
Scrypt
”(章节)
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
== 概述 == Scrypt 需要使用大量记忆体的原因来自于产生大量伪随机性(英语:pseudorandom)资料作为算法计算的基础。一旦这些资料被产生后,算法将会以伪随机性的顺序读取这些资料产生结果。因此最直接的实做方式将会需要大量记忆体将这些资料储存在记忆体内供算法计算。 另外一方面,由于伪随机性资料是透过算法产生,在实做上也可以在需要存取时再计算以降低记忆体使用量。但由于计算成本很高,这个实做方法将大幅降低算法的速度。 这就是scrypt设计时考虑到的时空权衡,攻击者可以使用后者的方法但计算速度很慢,或是用前者的方法但因记忆体成本而难以大规模平行化。 基于密码的密钥派生函数(密码基 KDF)通常设计为计算密集型的,以便计算过程需要相对较长的时间(例如几百毫秒)。合法用户每次操作(例如身份验证)只需执行一次该函数,因此所需的时间可以忽略不计。然而,暴力破解攻击可能需要执行数十亿次操作,在这种情况下,所需的时间变得显著,并且理想情况下,应该是禁止性的。 之前的基于密码的 KDF(例如 RSA 实验室的流行 PBKDF2)资源需求相对较低,这意味着它们不需要复杂的硬件或大量内存来执行。因此,它们可以轻松且廉价地在硬件中实现(例如在 ASIC 或甚至 FPGA 上)。这使得攻击者可以利用足够的资源,通过在硬件中构建数百甚至数千个该算法的实现,并让每个实现搜索密钥空间的不同子集,从而发起大规模并行攻击。这种方法通过可用实现的数量将完成暴力破解攻击所需的时间分摊,可能将其缩短到合理的时间范围。 scrypt 函数的设计旨在通过提高算法的资源需求来阻碍这种攻击。具体而言,该算法设计为使用大量内存,相较于其他基于密码的 KDF,使硬件实现的大小和成本大大增加,从而限制了攻击者在给定财务资源的情况下可以使用的并行性。
摘要:
请注意,所有对非小号百科的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
非小号百科:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
开关有限宽度模式