还敢使用MD5算法存储用户密码?法国电力供应商被罚款60万欧元
MD5 是一种消息摘要算法,由于属于比较老的算法因此在密码学上 MD5 已经被认为可以破解,所谓破解指的是进行碰撞,MD5 算法就现代技术来看比较弱,所以被碰撞的风险非常大。
讲道理存储用户密码肯定得使用加密算法,而且还得是比较健壮的加密算法,而法国电力提供商 EDF 直接使用 MD5 算法存储用户的密码。
这都说不上是加密,因为存在高安全风险,所以法国数据保护监管机构认定该提供商违反欧盟通用数据保护条例 (GDPR),然后开出了 60 万欧元的罚单。
所幸这家提供商只在短时间内存储了 25800 名用户的密码,如果全部用户的密码都使用 MD5 算法存储的话,估计这公司得大出血。
另外监管机构调查还发现,这家电力提供商其他部分的用户 (241 万 +) 虽然采用哈希算法加密了密码,但没有加盐,因此还是存在安全风险。
这波罚款过后 EDF 会好好改进用户数据的处理流程,确保使用足够健壮的算法保护的同时,还要加盐避免拖库后被破解。
哈希加盐:
指的是使用常规哈希算法加密的同时,往数据里掺入一点随机数据从而加大密码破解难度,这点随机数据就像炒菜撒点盐进去,所以被业界称为哈希加盐。盐可以根据不同场景进行搭配使用,既可以插入固定值也可以插入随机字符串,既可以在特定位置插入也可以在随机位置插入。
举个栗子:
用户使用的密码:x7faqgjw
经过 SHA 散列后得到的结果是:58ecbf2b3136ceda7fddfd986ba8bd8d59b2d73779691e839f3f176ce2c04b84
由于密码太短强度不够,这个结果很容易被彩虹表破解,因此可以在用户密码结尾添加特定字符串:
x7faqgjwabcdefghijklmnopqrstuvwxyz
这样新的 SHA 散列是 7b5001a5a8bcdcfa1b64d41f6339cfa7a5c0eca04cca6ff6a6c1d6aad17794cc
强度足够大可以更好的避免被破解。(以上栗子引用自 wikipedia )