新足迹

 找回密码
 注册

精华好帖回顾

· 透明的海,柔情的珊瑚,追魂的鱼- 大溪地印象 (加了几张照片) (2009-4-17) hilltop-bear · E&E -- 南瓜枣椰司康 & 奶香玉米司康 (2011-3-18) 闲夏采薇
· 荷兰德国比利时之行,休闲游记 (2013-12-22) john-2204 · 粤菜系列(1):端午节包粽子 (2009-5-28) shangpin
Advertisement
Advertisement
查看: 2868|回复: 51

用户密码存储技术讨论 [复制链接]

特殊贡献奖章

发表于 2011-2-16 16:30 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
做web app的同学,你们的系统用神马方法存储用户密码
我一直都用 md5加salt的方法

密码分两部分
后一部分是salt,前一部分是用户密码加上salt然后md5加密

简单代码如下
$password=$user->getUserPw($values['username']);
$parts        = explode( ':', $password );
$crypt        = $parts[0];
$salt        = @$parts[1];
$testcrypt = md5($values['password']. $salt);
if ($salt)
    $values['encrypted_pw']=$testcrypt.":".$salt;
else
    $values['encrypted_pw']=$testcrypt;

兼容没有salt的普通md5

[ 本帖最后由 kr2000 于 2011-2-16 17:32 编辑 ]
Advertisement
Advertisement

发表于 2011-2-16 16:39 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我一直都是 md5($salt.$userpassword) 然后储存。Verify user 是就 if($pwFromDB === md5($salt.$userpassword))

简单。唯一的不好就是Not Recoverable.

我的salt都是十六(英母+数字+符号)长

[ 本帖最后由 porcorosso 于 2011-2-16 17:41 编辑 ]

2010年度奖章获得者

发表于 2011-2-16 16:44 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
web app 的话用open ID 好啦

。net 里有自带的System.Security.Cryptography, 用的就是 one-way MD5。

足够了。

我见过海量信用卡号明码储存的,然后打印处叫财务处理。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

2010年度奖章获得者

发表于 2011-2-16 17:11 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
理论上说md5是不可逆的, 需要salt才可逆。
粉刺的是,人家要是拿到了你的salt,那等于也看到了你的password了。
所以至少你的salt要跟password分开储存,否则就每意义了。

但人家brutal force解密的话也不需要你的salt。

跟何况现在连MD5本生都是可逆的。。。。悲剧啊。

所以OpenID 最好,把责任留给别人。
足迹 Reader is phenomenal. If you never used, you never lived 火速下载

发表于 2011-2-16 21:21 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
database side的credtit card加密几乎没啥用,防谁啊? developer? 大家都有key的,弄几万张credit card number加密跟不加密的区别基本上就是一个query run 20秒根5秒的区别。

发表于 2011-2-16 21:33 |显示全部楼层
此文章由 nali 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 nali 所有!转贴必须注明作者、出处和本声明,并保持内容完整
你可以查查看这个论坛的帐号密码方式,给大家汇报一下。

已经Discuz 6 了,才看到。
Advertisement
Advertisement

发表于 2011-2-16 21:39 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-2-16 18:11 发表
理论上说md5是不可逆的, 需要salt才可逆。
粉刺的是,人家要是拿到了你的salt,那等于也看到了你的password了。
所以至少你的salt要跟password分开储存,否则就每意义了。

但人家brutal force解密的话也不需要你的salt。

跟何况现在连MD5本生都是可逆的。。。。悲剧啊。

所以OpenID 最好,把责任留给别人。



没看懂,为什么salt会让md5可逆?

brute force的时候有没有salt,就md5而言可能就是5分钟跟5年的区别。md5现在确实不是那么牢靠了,但也不是那么容易破的,真的就算靠不住了,还有sha1/sha256呢

评分

参与人数 1积分 +1 收起 理由
cdfei + 1 同没懂

查看全部评分

发表于 2011-2-16 21:44 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-2-16 22:21 发表
database side的credtit card加密几乎没啥用,防谁啊? developer? 大家都有key的,弄几万张credit card number加密跟不加密的区别基本上就是一个query run 20秒根5秒的区别。


那是本身的安全制度没弄好,正规的话加密的key会放在硬件系统里,需要解密的时候程序从数据库里读取加密的数据,然后送到HSM里面解密,key是永远不会暴露出来的,所以你要是只拿到了数据库根本没用,一定要在不被发觉的情况下同时攻破负责读取数据库和跟HSM通讯的server

发表于 2011-2-16 21:45 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 bulaohu 于 2011-2-16 22:44 发表


那是本身的安全制度没弄好,正规的话加密的key会放在硬件系统里,需要解密的时候程序从数据库里读取加密的数据,然后送到HSM里面解密,key是永远不会暴露出来的,所以你要是只拿到了数据库根本没用,一定要在不被发觉的情况下同时攻破负责读取数据库和跟HSM通讯的server


I love your avatar, so cool!!!

发表于 2011-2-16 21:49 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-2-16 22:45 发表


I love your avatar, so cool!!!


谢谢,可以来这里自己做

http://www.simpsonsmovie.com/main.html

发表于 2011-2-16 21:50 |显示全部楼层
此文章由 Fernando 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Fernando 所有!转贴必须注明作者、出处和本声明,并保持内容完整
做过项目,用Oracle Vault保护信用卡,卡号和加密key分别在不同的realm里面,物理层也加密,DBA看不到realm里的数据。一select就被audit,audit数据也在realm里,dba看不到,也改不了....
用存储过程来加密解密信用卡卡号。
like hell
Advertisement
Advertisement

发表于 2011-2-16 21:58 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 bulaohu 于 2011-2-16 22:49 发表


谢谢,可以来这里自己做

http://www.simpsonsmovie.com/main.html


多谢!!!The simpsons是我的最爱

特殊贡献奖章

发表于 2011-2-17 08:56 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
信用卡存银行那边吧
自己的数据库存信用卡风险太大
但见过很多公司都存储别人的信用卡号

特殊贡献奖章

发表于 2011-2-17 09:00 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
salt跟password没有神马关系
只是把加密后的密码弄的复杂了点
如果有人得到加密后的密码,即使解了没有salt也白搭
不过因为salt也存在同一个数据库里,所以如果数据库也被破了salt有没有也是一样

原帖由 dalaohu 于 2011-2-16 18:11 发表
理论上说md5是不可逆的, 需要salt才可逆。
粉刺的是,人家要是拿到了你的salt,那等于也看到了你的password了。
所以至少你的salt要跟password分开储存,否则就每意义了。

但人家brutal force解密的话也不需要你的salt。

跟何况现在连MD5本生都是可逆的。。。。悲剧啊。

所以OpenID 最好,把责任留给别人。

发表于 2011-2-17 09:25 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
一般用户密码在数据库中都是MD5加密的, 不可逆的加密算法, 拿到数据库有能怎么样, 除非用已知的进行替换, 不过用户第一时间就知道了.

特殊贡献奖章

发表于 2011-2-17 09:38 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我在那个tm vs tl的隐秘帖子里说md5不可破被鄙视了
md5早就被破了,现在不是不可逆

原帖由 Dan.and.Andy 于 2011-2-17 10:25 发表
一般用户密码在数据库中都是MD5加密的, 不可逆的加密算法, 拿到数据库有能怎么样, 除非用已知的进行替换, 不过用户第一时间就知道了.
Advertisement
Advertisement

发表于 2011-2-17 09:41 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-2-17 10:38 发表
我在那个tm vs tl的隐秘帖子里说md5不可破被鄙视了
md5早就被破了,现在不是不可逆



en,md5 algorithm是公开的

http://en.wikipedia.org/wiki/MD5

发表于 2011-2-17 09:51 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-2-17 10:38 发表
我在那个tm vs tl的隐秘帖子里说md5不可破被鄙视了
md5早就被破了,现在不是不可逆



山大王什么那个女教授的论文? 不是被破了, 还是不可逆, 只是人工干预md5的插值算法, 减少解密时间, 还是硬破解. md5加密过程中的已经把原始信息的部分抛弃掉了,理论上还是不可逆. 理论上没有不能被破解的加密方法,只是时间很你的计算机有多快的问题.

发表于 2011-2-17 09:57 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
网上有MD5 lookup的网页,string compare就快很多了,但基本上不可能有全部的combination

http://tools.benramsey.com/md5/

2010年度奖章获得者

发表于 2011-2-17 10:07 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整

发表于 2011-2-17 10:20 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-2-17 10:38 发表
我在那个tm vs tl的隐秘帖子里说md5不可破被鄙视了
md5早就被破了,现在不是不可逆



可不可破这个观念很奇怪,我不知道是谁开始传播的。理论上来讲所有的加密都可破,只是个破解时间长短的问题。但时间长短也是个概率上的概念,手气壮的时候AES也能在几分钟内就碰到,虽然一般来说破解的平均时间长达几千年

md5目前是常用的hash里面最弱的,没有salt的情况下用rainbow table可能几秒钟就搞定,但使用的当的话也不是那么容易的
Advertisement
Advertisement

发表于 2011-2-17 10:27 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 porcorosso 于 2011-2-17 10:57 发表
网上有MD5 lookup的网页,string compare就快很多了,但基本上不可能有全部的combination

http://tools.benramsey.com/md5/


The given MD5 hash reverses to:

SLOW DOWN COWBOY! (max= 900 requests/hour or every 4 seconds one request.)

发表于 2011-2-17 10:31 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这种reverse lookup的网站一大堆,你可以自己给一个字符串hash到md5以后去试试reverse,然后你就会发现大多数简单的字符串都能被reverse,但你用一个很长的,entropy很大的字符串的话,他们一般就会告诉你找不着,除非你手气特好 :)

发表于 2011-2-17 10:38 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
口干舌燥说了一大堆了,最后再科普一下可逆跟碰撞的区别:

可逆是指你能够100%可靠地解密,并恢复原始字符串。

碰撞是指你可以找到一个字符串,它的hash值跟你需要reverse的这个hash是一模一样的。至于这个字符串跟原始字符串是否相等?不知道,除非人家告诉你,你也永远不会知道,因为对于某个特定的hash function而言,存在可能性有多个字符串最后的hash是一样的。

md5这类的hash function是one way的,这是安全理论里面一个重要的概念,是跟encryption之类的two way method的最大不同。理解了这个你就不会再说md5是可逆的这种话了,md5不可逆,但因为其本身不够强大,你可能在比较短的时间里就找到碰撞

发表于 2011-2-17 10:45 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
最后给出一个hash,请感兴趣的去你能找到的reverse lookup的地方破解 有些所谓的破解网站竟然连这个都搞不定

286755fad04869ca523320acce0dc6a4

这个hash我的一些同事都记住了,在自己脑袋里都能破解

发表于 2011-2-17 10:45 |显示全部楼层
此文章由 michaelchin 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 michaelchin 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 Dan.and.Andy 于 2011-2-17 10:51 发表


山大王什么那个女教授的论文? 不是被破了, 还是不可逆, 只是人工干预md5的插值算法, 减少解密时间, 还是硬破解. md5加密过程中的已经把原始信息的部分抛弃掉了,理论上还是不可逆. 理论上没有不能被破解的加密方法,只是时间很你的计算机有多快的问题.

这句错了,有一种。
Advertisement
Advertisement

发表于 2011-2-17 10:47 |显示全部楼层
此文章由 michaelchin 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 michaelchin 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 bulaohu 于 2011-2-17 11:31 发表
这种reverse lookup的网站一大堆,你可以自己给一个字符串hash到md5以后去试试reverse,然后你就会发现大多数简单的字符串都能被reverse,但你用一个很长的,entropy很大的字符串的话,他们一般就会告诉你找不着,除非你手气特好 :)

那些网站明显是在查字典

发表于 2011-2-17 10:50 |显示全部楼层
此文章由 michaelchin 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 michaelchin 所有!转贴必须注明作者、出处和本声明,并保持内容完整
http://www.rsa.com/node.aspx?id=1156
去买个这玩意儿吧,哈不哈希都是扯淡,障眼法

发表于 2011-2-17 11:04 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 michaelchin 于 2011-2-17 11:45 发表

这句错了,有一种。


哪种?

发表于 2011-2-17 11:25 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 michaelchin 于 2011-2-17 11:50 发表
http://www.rsa.com/node.aspx?id=1156
去买个这玩意儿吧,哈不哈希都是扯淡,障眼法


这个不是一回事吧

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部