做视频网站需要哪些手续,哪个网站可以做司考题,网站灰色 代码,哪里有网站推广优化目录 引言
明文存储
基本哈希存储
加盐哈希存储
适应性哈希算法
密码加密存储
小结 引言
密码是最常用的身份验证手段#xff0c;既简单又高效。密码安全是网络安全的基石#xff0c;对保护个人和组织信息的安全具有根本性的作用。然而有关密码泄漏的安全问题一再发生…目录 引言
明文存储
基本哈希存储
加盐哈希存储
适应性哈希算法
密码加密存储
小结 引言
密码是最常用的身份验证手段既简单又高效。密码安全是网络安全的基石对保护个人和组织信息的安全具有根本性的作用。然而有关密码泄漏的安全问题一再发生大部分都是因为密码的存储不安全导致的那么该如何安全地存储密码呢接下来就详细讲解一下各种密码存储方案以及对应的优缺点通过各种方案的对比来选择出最佳的方案。
明文存储
明文存储密码是指在数据库或其他存储系统中直接存储用户密码的原始形式没有进行任何加密或散列处理。这种方式意味着密码以可读形式保存任何可以访问存储系统的人都能直接看到明文密码。
这种方式在早期的 Web 应用里面非常常见一来是为了实现简单二来是那个时候安全问题不是特别突出开发人员没有对应的安全意识。随着安全问题日益增多开发人员安全意识也日益提高当下这种方式已经很少见了但是依然有很多缺乏安全意识的同学还这么干。这种方式的缺点就是极其不安全主要是以下几个方面
安全性极低如果数据库遭到未授权访问攻击者可以立即获取所有用户的密码。不仅危害用户在当前系统中的安全还威胁用户在其他系统中账户的安全因为许多用户会在不同的系统中使用同样的密码。违反合规性多数现代的数据保护法规和标准如欧盟的通用数据保护条例GDPR和支付卡行业数据安全标准PCI DSS都要求对敏感数据进行加密处理明文存储密码已经违反了这些法规。内部威胁即使外部攻击者无法访问数据库公司内部的员工也可能无意或有意地泄露密码增加了内部安全问题发生的风险。
因为这些缺点明文存储密码是绝对不能使用的方法。
基本哈希存储
基本哈希存储密码是指使用哈希函数如 MD5、SHA-1 或 SHA-256将密码转换成固定长度的字符串存储在数据库或其他存储系统中。哈希函数是单向函数理论上不能从哈希值逆向推导出原始密码。这种方式虽然比明文存储安全性高一些但仍然有一些明显的缺点
容易产生哈希碰撞基本的哈希算法例如 MD5 和 SHA-1已经被证明存在哈希碰撞的问题即不同的输入可能产生相同的输出降低了安全性。易被破解因为相同的密码总是产生相同的哈希值使得攻击者可以使用彩虹表预先计算的哈希值表来反向查找密码。另外由于基本哈希函数的计算速度很快攻击者可以在短时间内尝试大量可能的密码使用暴力攻击或字典攻击方法来找到原始密码。
这种方式最好不要使用。
加盐哈希存储
加盐哈希存储密码是指在对密码散列过程中加入一个额外的随机值称为“盐”这个盐是在用户每次注册或更改密码时随机生成的与密码一起被哈希处理。然后将盐和哈希值一起存储在数据库中或其他存储系统中。当用户尝试登录时取出这个盐并与用户输入的密码一起哈希然后比较这个哈希值与存储的哈希值是否匹配。加盐哈希的目的是为了增加密码存储的复杂性和安全性用于抵御彩虹表攻击。因为即使两个用户使用相同的密码由于盐的不同对应的哈希值也会不同。这种方式虽然可以抵抗彩虹表攻击但如果使用的哈希函数计算速度很快如 MD5、SHA-1则依然容易被暴力破解。使用这种方式需要注意以下几点
盐的管理盐必须独特且随机同时需要安全地存储。如果盐的生成不够随机或者存储不当那么安全性就会大打折扣。使用方式对于每个用户都要使用不同的盐并且在服务器端进行哈希如使用相同的盐或者在客户端进行哈希安全性会大大降低。使用强哈希函数由于弱哈希函数例如 MD5、SHA-1 等已经被证明不够安全建议至少选择使用 SHA256 算法。
这种方式目前被广泛使用但是还有更优的方式。
适应性哈希算法
适应性哈希算法是针对密码存储做了特别设计的算法设计时考虑了计算时间可以调整计算复杂度以适应硬件性能的提升使得即使在计算能力增强的情况下破解密码的难度也能保持在一个较高的水平。
这类算法比较有代表性的是 bcrypt、scrypt、Argon2 等其中 bcrypt 是使用最广泛的关于 bcrypt 的详解可以参考之前的文章 《安全高效又易用的密码哈希神器-bcrypt 算法解析》。
使用适应性哈希算法存储密码是目前的最佳实践这些算法专门为密码存储而设计提供了盐值的自动管理和计算强度的调整能力以此来抵御各种攻击手段。唯一缺点可能就是兼容性问题了在一些受限环境中可能没有对应的实现。使用这种方式时需要注意的一点是要适当配置好工作因子不然仍然可能受到攻击。
密码加密存储
密码加密存储是指使用加密算法对称算法或非对称算法对用户密码进行加密后存储在数据库中或其他存储系统中。与哈希方式不同的是加密是一个可逆的过程可以通过解密得到原始密码。这通常涉及到一个密钥只有知道这个密钥的人才能解密密码。
使用对称或非对称加密算法对密码进行加密然后存储加密后的值。缺陷主要是以下几点
密码加密的安全性极大地依赖于密钥的安全性。如果密钥被泄露所有的密码都将以明文形式泄露。存储可逆形式的密码可能会违反某些隐私和安全标准如 GDPR 或 PCI DSS。即使外部攻击者无法访问数据库公司内部的员工也可能无意中或有意地使用秘钥解密密码进而泄露密码增加了内部安全问题发生的风险。
在现代的密码存储实践中是不推荐使用可逆的加密算法存储的所以这种方式不推荐使用。
小结
每种密码存储方法都有其优缺点但最佳实践是使用适应性哈希算法适应性哈希算法专门为密码存储而设计提供了盐值的自动管理和计算强度的调整能力以此来抵御各种攻击手段。