【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

Dropbox 是如何安全地存储用户密码的

  • 2016-12-25
  • 本文字数:970 字

    阅读完需:约 3 分钟

不久前,来自 Dropbox 的 Devdatta Akhawe 在官网博客上公开了Dropbox 为保护用户密码安全所采取的措施。

存储密码明文是一件很拙劣的事情,相信不会有人这么做的。早在1976 年,计算机行业就推行了单向散列机制,我们存储的是密码的散列值,而不是密码本身。这种方式虽然杜绝了密码被反向破解出明文,但却阻止不了不怀好意的人对其进行暴力破解。暴力破解虽然耗费时间,但被“猜”出密码是迟早的事。SHA 散列算法速度很快,一个商用CPU 每分钟可以算出几百万个SHA256 散列值,而有些GPU 群集每秒钟可以算出几十亿个

加密和破解是一场你追我赶的长期斗争。Dropbox 作为一个应用范围很广的云存储解决方案,他们又是如何保证用户的密码安全的呢?

Dropbox 的加密机制构建在三层加密基础之上,从里到外就像洋葱一样层层叠加。他们先是使用 SHA512 散列算法对明文密码进行散列,然后针对散列值进行 bcrypt 再散列。为什么在 bcrypt 之前要先做 SHA 散列呢?有些 bcrypt 实现会把散列值长度截至 72 字节,从而降低了密码的熵值,而有的则允许变长密码,这样容易受到 DoS 攻击。使用 SHA512 散列可以得到固定长度的 512 字节散列值,避免了上述的两个问题。

在 SHA 散列之后是 bcrypt 散列。bcrypt 散列算法是一种加盐(salt)散列算法,每个密码都有不同的“盐”,并且是分开存储的。bcrypt 速度比较慢,这样就很难通过硬件加速来加快破解速度。而且 bcrypt 散列使用了成本因子 10(每个因子相当于每一步计算需要耗费 100 毫秒的时间),这样就更是加大了暴力破解的难度。

经过 bcrypt 散列之后,散列值会再次经过 AES256 算法的加密,这次加密会使用到秘钥,也就是所谓的“胡椒粉”(pepper)。胡椒粉也是被单独存储的,所以就算密码被偷了,没有这些胡椒粉,那些不怀好意的人也拿它们没办法。

经过 SHA512、bcrypt 和 AES256 的三层加固,用户就可以高枕无忧了。不过之前说过,加密和破解是一场永不停止的战争,所以 Dropbox 在保护用户密码安全这项工作上永不停息。三层加固只是其中的一个环节,他们还部署了应对在线暴力破解的防护层。另外,他们还在积极地研究更多能够给用户的安全锦上添花的解决方案。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-12-25 18:002067
用户头像

发布了 322 篇内容, 共 133.7 次阅读, 收获喜欢 142 次。

关注

评论

发布
暂无评论
发现更多内容

Worktile 王涛的经营之道:7 年牵引式破局 | TGO 科技领袖三十人

李忠良

28天写作

第一章 总结

青葵

学习笔记2

认识产品经理-通过岗位模型了解自己的发展方向与空间20210119

WooBeyna

一文讲弄懂什么是vlan、三层交换机、网关、DNS、子网掩码、MAC地址

创业失败启示录|校园微生活之“极致宣传”

阿萌

28天写作 创业失败启示录 青城

产品训练营-第一课作业

释心

岗位模型差异

王一凡

作业1

YING꯭YING

28天瞎写的第二百二十三天:哎哟,我这爆脾气!

树上

28天写作

产品经理第0期训练营第一周作业提交

Krystal

产品经理训练营第一课作业

Jobs

产品经理训练营

Dreamed Job?

顾远山

作业 极客大学产品经理训练营 Job Model

第一章作业

Kalman

产品经理 产品经理训练营

产品 0 期 第一次作业

小C同学

产品经理 极客大学认识产品经理

第一周笔记

Ashley.

PM

作业一

清醒梦境

重学JS | 跨域的原因和解决方案

梁龙先森

大前端 编程语言 28天写作

【并发编程的艺术】JVM体系与内存模型

程序员架构进阶

Java 架构 并发编程 内存 28天写作

产品经理定位

让我思考一会儿

产品经理训练营 第一周作业

DB

产品经理训练营

产品经理训练营--第一章作业

Lucas zhou

产品经理训练营

网络安全产品经理任职要求

让时间说真话

产品经理 网络安全产品经理

智能对话系统产品经理岗位拆解

元二

类别型特征

IT蜗壳-Tango

机器学习 七日更

Windows DHCP最佳实践(二)

BigYoung

windows Windows Server 2012 R2 DHCP

可恶的爬虫直接把生产机器全部爬挂了!

java金融

Java 爬虫 布隆过滤器 反爬

【作业-01】认识产品经理

西西里奇

产品经理 产品经理训练营

作业 - 认识产品经理

Geek_971380

产品经理训练营

DevSecOps如何提高应用程序安全性?

啸天

安全 DevSecOps 应用安全

「产品经理训练营」作业 01

🌟

产品经理训练营

产品经理训练营 第一周作业记录

周玲

产品经理训练营 岗位要求

Dropbox是如何安全地存储用户密码的_语言 & 开发_薛命灯_InfoQ精选文章