关于密码破解难度的提问

2014-03-22 17:49:12 +08:00
 hopestar86
在不知道 密钥 和知道 加密解密算法 的情况下,给你N串加密字符串,破解出来耗时长吗?

准备写个小程序将一般重要的密码,手动输入密钥加密,需要用到时手动输入密钥解密
(一般重要的密码 都是自己本地电脑上keepass随机生成的,这个小程序主要是应急用 (小程序还有其他功能所以就没采用那个在线存密码的网站来的))

用的thinkphp的Crypt加密类,如果破解需要5 6天时间的话,我就采用。
(如果你愿意花5 6天破解一般重要密码的话,说明你真够无聊的 ^_^)
5595 次点击
所在节点    PHP
16 条回复
loading
2014-03-22 17:55:41 +08:00
拼上一个128位的salt,还是那么短时间么?
wwek
2014-03-22 18:00:21 +08:00
密码还是要加盐的·
icylogic
2014-03-22 18:28:08 +08:00
两次hash加盐,有现成轮子,前段时间startup上有过http://blog.jobbole.com/61872/#toc3
9hills
2014-03-22 18:30:56 +08:00
Crypt是有salt的,别说5.6天了,5、6年也不可能

但是生成的不适合做密码,还是以它的生成结果再转换成适合密码的格式才行
hopestar86
2014-03-22 18:48:24 +08:00
@wwek

@icylogic

md5 hash后我自己都得不到密码,这种只能用于密码校验吧

@9hills

这里说的是最严重的情况,即你的程序文件(加解密方法) 和 数据库都被获取

“生成结果再转换成适合密码” base64?
jsonline
2014-03-22 18:50:32 +08:00
加真随机眼就基本无解了。
raincious
2014-03-22 19:36:13 +08:00
@hopestar86

> “生成结果再转换成适合密码” base64?

base64等于没转换。为了安全的话,SHA512自己跑100轮其实也就够了嗯。这样除非是特别牛叉的指定攻击一个人的密码,否则盗取密码的人逆算出所有密码的代价太大了。
9hills
2014-03-22 19:39:37 +08:00
@hopestar86 首先你要使用安全性高的Bcrypt,然后有两种使用场景

1. 强固定密码 + 可泄漏的salt。把salt放入程序文件,但是使用强密码。salt泄漏后可以计算彩虹表,但由于Bcrypt的计算难度很大,相当于速度很慢的穷举(有多慢?差不多一个密码得试0.3s,而且硬件基本无关)。可以计算出你的密码被穷举到的概率是非常小的,5、6年不夸张

但是这个的弱点是,你需要为每个站都设置一个强固定密码,否则一旦某个站被明文脱裤。。。那反过来讲,既然每个站都设了强密码,那还用这套系统干啥。。


2. 强固定密码 + 弱salt(不固定,但容易被猜到,比如站点的名字) 这样你只需要记住一个固定密码,然后根据不同的站点使用不同的salt。。。这个就算这个站被明文脱裤,也不影响其他站的密码

你需要记忆的仅仅是一个固定密码,然后每个站的名字你可以选择域名的中间部分,比如v2ex。我就是这么做的,安全性没有任何问题。。

所以推荐你用第二种。
raincious
2014-03-22 20:09:43 +08:00
@9hills +1

上次被骂之后我已经学得很乖,密码都是N次Hash(SHA512,第一次的时候加站点的SALT)跑好,然后开始算个随机Salt跑再crypt N次(算法根据服务器,Blowfish排第一)。

但其实任何密码都是不安全的,在拿到加密的串之后。

不过呢,如果真的能保证加密算法的保密性,自己写个位偏移或许也是安全的。但是最佳事件不是自己发明一个算法然后期望别人不会算出规律来破解,而是使用现有的强算法,根据业界多年的最佳经验来做加密。
SkyFvcker
2014-03-22 21:22:14 +08:00
楼上几位都理解错了,楼主要的是加密,而不是校验,因此Hash是不能用的(因为无法解密)
对Crypt类不清楚,查资料发现是用的DES。
虽说DES目前还没有可以5-6天可以破解,但是有条件还是推荐AES。
相比而言我认为比算法选择更重要的是口令安全,毕竟枚举口令比枚举密钥空间要简单很多。
SkyFvcker
2014-03-22 22:12:52 +08:00
更正一下,DES目前用专用设备可以做到一天内破解,看楼主需求了
9hills
2014-03-22 22:44:32 +08:00
@SkyFvcker 你可以搜索下我推荐的BCrypt

另外我没提hash ...
11138
2014-03-22 22:50:37 +08:00
目前比较好的选择是AES和Blowfish。
BCrypt使用的就是Blowfish算法。
emric
2014-03-22 23:04:22 +08:00
暂时在用 PBKDF2 + sha256 + salt
把 PBKDF2 丢到客户端计算, 不知道这算不算的上好的方法.
fange01
2014-03-22 23:09:25 +08:00
关键是你的常用密码都已经泄露的,再加密有个鸟用。。。有个几个T社工库的大有人在
lygmqkl
2014-03-24 14:19:35 +08:00
fenge01+1 问题就在于常用密码被泄漏,有几个人能做到分级密码?有几个人能做到定期更换密码?有几个人能做到分级密码+定期更换?

大数据库不会被破,成本太高,个别密码不是被破得,是被“获得”得。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.fyfyfm.apispeedy.workers.dev/t/105414

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX