一文读懂如何安全地存储密码

目录

引言

明文存储

基本哈希存储

加盐哈希存储

适应性哈希算法

密码加密存储

小结


引言

密码是最常用的身份验证手段,既简单又高效。密码安全是网络安全的基石,对保护个人和组织信息的安全具有根本性的作用。然而有关密码泄漏的安全问题一再发生,大部分都是因为密码的存储不安全导致的,那么该如何安全地存储密码呢?接下来就详细讲解一下各种密码存储方案以及对应的优缺点,通过各种方案的对比来选择出最佳的方案。

明文存储

明文存储密码是指在数据库或其他存储系统中直接存储用户密码的原始形式,没有进行任何加密或散列处理。这种方式意味着密码以可读形式保存,任何可以访问存储系统的人都能直接看到明文密码。

这种方式在早期的 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 算法解析》。

使用适应性哈希算法存储密码是目前的最佳实践,这些算法专门为密码存储而设计,提供了盐值的自动管理和计算强度的调整能力,以此来抵御各种攻击手段。唯一缺点可能就是兼容性问题了,在一些受限环境中,可能没有对应的实现。使用这种方式时需要注意的一点是要适当配置好工作因子,不然仍然可能受到攻击。

密码加密存储

密码加密存储是指使用加密算法(对称算法或非对称算法)对用户密码进行加密后存储在数据库中或其他存储系统中。与哈希方式不同的是加密是一个可逆的过程,可以通过解密得到原始密码。这通常涉及到一个密钥,只有知道这个密钥的人才能解密密码。

使用对称或非对称加密算法对密码进行加密,然后存储加密后的值。缺陷主要是以下几点:

  1. 密码加密的安全性极大地依赖于密钥的安全性。如果密钥被泄露,所有的密码都将以明文形式泄露。
  2. 存储可逆形式的密码可能会违反某些隐私和安全标准,如 GDPR 或 PCI DSS。
  3. 即使外部攻击者无法访问数据库,公司内部的员工也可能无意中或有意地使用秘钥解密密码,进而泄露密码,增加了内部安全问题发生的风险。

在现代的密码存储实践中,是不推荐使用可逆的加密算法存储的,所以这种方式不推荐使用。

小结

每种密码存储方法都有其优缺点,但最佳实践是使用适应性哈希算法,适应性哈希算法专门为密码存储而设计,提供了盐值的自动管理和计算强度的调整能力,以此来抵御各种攻击手段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/167510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生物动力葡萄酒和有机葡萄酒一样吗?

农业维持了数十万年的文明,但当人类以错误的方式过多干预,过于专注于制造和操纵产品时,农业往往会失败。如果我们的目标是获得最高质量的收成,并长期坚持我们的做法,我们就必须与土地打交道。 当我们开始寻找生物动力…

应用内测分发平台如何上传应用包体?

●您可免费将您的应用(支持苹果.ios安卓.apk文件)上传至咕噜分发平台,我们将免费为应用生成下载信息,但咕噜分发将会对应用的下载次数进行收费(每个账号都享有免费赠送的下载点数以及参加活动的赠送点数)&a…

UVA1025 城市里的间谍 A Spy in the Metro

UVA1025 城市里的间谍 A Spy in the Metro 题面翻译 题目大意 某城市地铁是一条直线,有 n n n( 2 ≤ n ≤ 50 2\leq n\leq 50 2≤n≤50)个车站,从左到右编号 1 … n 1\ldots n 1…n。有 M 1 M_1 M1​ 辆列车从第 1 1 1 站开…

【电路笔记】-分压器

分压器 文章目录 分压器1、概述2、负载分压器3、分压器网络4、无功分压器4.1 电容分压器4.2 感应分压器 5、总结 有时,需要精确的电压值作为参考,或者仅在需要较少功率的电路的特定阶段之前需要。 分压器是解决此问题的一个简单方法,因为它们…

【Vue】filter的用法

上一篇&#xff1a; vue的指令 https://blog.csdn.net/m0_67930426/article/details/134599378?spm1001.2014.3001.5502 本篇所使用指令 v-for v-on v-html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…

在vscode下将ipynb文件转成pdf的方法

正常情况下&#xff0c;可以在vscode的ipynb界面点击上面的三个点&#xff0c;里面有export&#xff0c;可以选择直接输出html和pdf&#xff0c;但是需要latex&#xff0c;由于按扎u安装麻烦&#xff0c;所以我换了一种方法。 ----------------------------------------------…

记一次docker服务启动失败解决过程

环境&#xff1a;centos 7.6 报错&#xff1a;start request repeated too quickly for docker.service 由于服务器修复了内核漏洞&#xff0c;需要重启&#xff0c;没想到重启后&#xff0c;docker启动失败了 查看状态 systemctl status docker如下图 里面有一行提示&…

网络互联与IP地址

目录 网络互联概述网络的定义与分类网络的定义网络的分类 OSI模型和DoD模型网络拓扑结构总线型拓扑结构星型拓扑结构环型拓扑结构 传输介质同轴电缆双绞线光纤 介质访问控制方式CSMA/CD令牌 网络设备网卡集线器交换机路由器总结 IP地址A、B、C类IP地址特殊地址形式 子网与子网掩…

[NOIP2013 提高组] 积木大赛

Description 春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为 n 的大厦&#xff0c;大厦可以看成由 n 块宽度为 1 的积木组成&#xff0c;第 i 块积木的最终高度需要是 hi​。 在搭建开始之前&#xff0c;没有任何积木&#xff08;可以看成 n 块高度…

使用rsync从OpenShift的pod复制文件

环境 Red Hat Enterprise Linux release 8.6 (Ootpa)OCP 4.12.22 准备 安装rsync&#xff1a; yum install rsync 查看pod&#xff1a; [rootapi.kai1123.cp.fyre.ibm.com ~]# oc get pod -n cpd-instance | grep dmc ...... ibm-dmc-1700727413211000-monitor-0 …

DCDC电感发热啸叫原因分析

一、电感发热啸叫原因解析 发热原因&#xff1a;电感饱和&#xff0c;实际使用的电感值<理论电感计算值 原因1&#xff1a;电感选择过小&#xff0c;计算值不合理。 原因2&#xff1a;PCB布局不合理&#xff0c;屏蔽型电感下方应设禁止铺铜区。 啸叫原因&#xff1a; 人耳的…

Log4j2.xml不生效:WARN StatusLogger Multiple logging implementations found:

背景 将 -Dlog4j.debug 添加到IDEA的类的启动配置中 运行上图代码&#xff0c;这里log4j2.xml控制的日志级别是info&#xff0c;很明显是没生效。 DEBUG StatusLogger org.slf4j.helpers.Log4jLoggerFactory is not on classpath. Good! DEBUG StatusLogger Using Shutdow…

小数化分数

【问题描述】 任何小数都能表示成分数的形式&#xff0c;对于給定的小数&#xff0c;编写程序其化为最简分数输出&#xff0c;小数包括简单小数和循环小数。 【输入形式】 第一行是一个整数N&#xff0c;表示有多少组数据。 每组数据只有一个纯小数&#xff0c;也就是整…

Camera Raw v16.0.0(PS Raw增效工具)

Camera Raw 16是一款允许摄影师处理原始图像文件的软件PS增效工具。原始图像文件是未经相机内部软件处理的数码照片&#xff0c;因此包含相机传感器捕获的所有信息。Camera Raw 为摄影师提供了一种在将原始文件转换为更广泛兼容的格式&#xff08;如 JPEG 或 TIFF&#xff09;之…

搭建SRS视频服务器

去官方网站下载FFmpeg6.1 https://ffmpeg.org/download.html拷贝到CentOS7.9中的/opt目录下&#xff0c;解压并重命名 tar -xvf ffmpeg-6.1.tar.xz 解压后编译安装 ./configure make make install从github下载SRS4.0release 解压后 如果ffmpeg的路径不在/usr/local/bin/ffmpe…

【MATLAB】全网入门快、免费获取、持续更新的科研绘图教程系列2

14 【MATLAB】科研绘图第十四期表示散点分布的双柱状双Y轴统计图 %% 表示散点分布的双柱状双Y轴统计图%% Made by Lwcah &#xff08;公众号&#xff1a;Lwcah&#xff09; %% 公众号&#xff1a;Lwcah %% 知乎、B站、小红书、抖音同名账号:Lwcah&#xff0c;感谢关注~ %% 更多…

LeetCode二叉树小题目

Q1将有序数组转换为二叉搜索树 题目大致意思就是从一个数组建立平衡的二叉搜索树。由于数组以及进行了升序处理&#xff0c;我们只要考虑好怎么做到平衡的。平衡意味着左右子树的高度差不能大于1。由此我们可以想着是否能用类似二分递归来解决。 如果left>right,直接返回nul…

IO多路转接之epoll

目录 一. epoll的实现原理 二. epoll的相关接口 2.1 epoll_create -- 创建epoll模型 2.2 epoll_ctl -- 对epoll模型进行控制 2.3 epoll_wait -- 等待epoll所关注的事件就绪 2.4 epoll相关接口的使用方法 三. Epoll服务器的模拟实现 3.1 EpollServer类的声明 3.2 Epoll…

网工内推 | 美的、得力集团,包吃包住,IE认证优先,14薪

01 美的 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1.负责IT网络设备、IDC机房的日常维护巡检、监控和管理&#xff1b; 2.负责路由、交换、防火墙、无线控制器、AP等网络设备的开通、调整、优化升级&#xff1b; 3.负责公司OT、IT网络规划&#xff0c;项目实施以…

路由VRRP配置例子

拓朴如下&#xff1a; 主要配置如下&#xff1a; [R1] interface GigabitEthernet0/0/0ip address 10.1.1.1 255.255.255.0 vrrp vrid 1 virtual-ip 10.1.1.254vrrp vrid 1 priority 200vrrp vrid 1 preempt-mode timer delay 20 # interface GigabitEthernet0/0/1ip address …