写点什么

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:002465
用户头像

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

关注

评论

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

珠宝行业电子秤串口程序开发

108518

珠宝行业erp 珠宝天平 电子秤

重磅!业界首个云原生批量计算项目Volcano正式晋级为CNCF孵化项目

华为云开发者联盟

云原生 Volcano 批量计算 cncf

学习管理管理系统解决方案

低代码小观

学习方法 企业管理 企业管理系统 教育管理 CRM系统

2022中国“SaaS”领域十大趋势

小炮

SaaS SaaS应用 SaaS平台

Leetcode 14天算法挑战 D1-1 #704 二分搜索

米菲爸爸

面试 LeetCode

无聊科技正经事周刊(第3期):美团的推荐算法,是在玩火吗?

潘大壮

程序员 周刊 行业趋势 科技周刊

限时好礼 | MongoDB又有新书籍出炉啦!

MongoDB中文社区

mongodb

百万奖金,首届船海数据智能应用创新大赛正式开赛

科技热闻

深挖房地产行业数智化转型升级价值,推动地产管理革新

数商云

产业互联网 数字化转型 企业数字化

怎么添加或删除电脑上的应用软件呢?

InfoQ IT百科

百万奖金,首届船海数据智能应用创新大赛正式开赛

科技热闻

应对“反洗钱”,银丰新融反洗钱自主监测系统为机构保驾护航

华为云开发者联盟

数据库 分布式架构 GaussDB 反洗钱 鲲鹏云

6. 堪比JMeter的.Net压测工具 - Crank 实战篇 - 收集诊断跟踪信息与如何分析瓶颈

MASA技术团队

C# .net 测试 压测 测试工具

浅析mysql性能优化

乌龟哥哥

4月月更

png、jpg这两种图片格式有什么不同?

InfoQ IT百科

自助洗车机加盟项目要怎么加盟

共享电单车厂家

自助洗车加盟 自助洗车机项目

如何发起 MQTT 亿级连接和千万消息吞吐性能测试

阿里巴巴云原生

常见的杀毒软件有哪些?

InfoQ IT百科

将node项目部署到云服务器详细教程

CRMEB

java高级用法之:绑定CPU的线程Thread-Affinity

程序那些事

Java Netty 程序那些事 4月月更

怎么转换视频的格式?

InfoQ IT百科

24小时自助洗车设备厂家哪家好?

共享电单车厂家

自助洗车机厂家 24小时自助洗车 自助洗车机设备

淘宝小程序体验优化:数据分析和优化实践

阿里巴巴终端技术

小程序 数据分析 体验优化 性能模型

TASKCTL 用户权限操作设置

敏捷调度TASKCTL

DevOps 分布式 敏捷开发 ETL系统 自动化运维

活动报名 | 如何基于开源项目 Tapdata PDK,快速完成数据源和目标的开发?

tapdata

数据库

自助洗车加盟!自助洗车品牌大全

共享电单车厂家

自助洗车加盟 自助洗车品牌

24小时自助洗车加盟怎么收费?

共享电单车厂家

自助洗车加盟 24小时自助洗车

使用APICloud & 科大讯飞SDK快速实现语音识别功能

YonBuilder低代码开发平台

前端开发 语音识别 APP开发 APICloud 科大讯飞

无聊科技正经事周刊(第2期):线上马拉松你会参加吗?

潘大壮

程序员 周刊 科技周刊

怎么建立无法删除的文件夹?

InfoQ IT百科

加盟自助洗车需要符合什么条件

共享电单车厂家

加盟自助洗车 自助洗车加盟条件

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