您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

密码传输和存储,如何保证数据安全?

时间:2023-03-04 16:12:28  来源:今日头条  作者:java易

本文从一个输入密码登录场景说起,详细介绍了密码传输过程的改进和思路,最后展现出一个相对安全的传输和存储方案。

场景

在互联网项目中,我们经常会遇到以下场景:

 

  • 用户注册,输入验证码传输到后端保存
  • 用户登录,前端输入密码传输到后端验证
  • 用户支付,需要输入支付密码传输到后端验证

 

在上述场景中都涉及到了密码的传输和存储。这就产生了一个问题,密码作为用户的敏感数据,我们该采取怎样的方案才能保证这个过程中的数据安全。

存在的问题

这里我们以登录场景说起。你可能会说,这多简单,这不就是前端输入密码,然后保存到后端密码,或者直接从MySQL中查询出密码对比一下不就好了吗?


 

先说说,如果没有特殊处理关于密码的传输和存储会有哪些问题。

 

  1. 如果输入的密码是明文传输到后端,如果中间链路被人劫持,那就可以直接窃听到明文密码数据。
  2. 如果数据库直接存储明文,黑客攻击数据库时就可以轻松获得明文密码数据。

 

因为大多数用户的常用密码是固定的,如果拿到用户的明文数据,影响范围不只是我们的系统。他们会去其他网站尝试“撞库”,很可能会造成用户的财产损失。作为一个合规的负责任的企业,我们在设计系统时应该考虑这些问题。

为什么会被劫持?

首先说第一个劫持的问题如何解决。

HTTP(超文本传输协议)是用于在网络上传输数据的一种协议。虽然HTTP是广泛使用的协议之一,但它也存在着一些安全风险,例如:

 

  1. 窃听风险:HTTP是明文传输协议,数据在传输过程中不加密,因此可以被攻击者窃听并获取敏感信息,如用户名、密码、银行卡号等。
  2. 中间人攻击:攻击者可以在传输过程中截取数据包并进行篡改或者注入恶意内容,从而实现攻击。
  3. XSS(跨站脚本)攻击:攻击者利用web应用程序没有对用户输入数据进行过滤或者校验,从而在用户浏览器中执行恶意脚本或者植入恶意代码,进而获取用户敏感信息或者劫持用户会话。
  4. CSRF(跨站请求伪造)攻击:攻击者可以通过伪造用户已认证的请求,以用户的身份执行恶意操作,例如恶意提交表单、发起请求等。
  5. 数据篡改:攻击者可以截获数据并对其进行修改,从而对web应用程序进行攻击。

 

HTTP 存在如此多的安全问题,那么可以替换为 HTTPS 协议来解决。

HTTPS 降低劫持风险

HTTPS(安全套接字层超文本传输协议)是HTTP协议的安全版本,通过在传输过程中使用加密协议(如SSL或TLS)加密传输的数据,避免了明文传输的风险,并且使用数字证书验证服务器的身份,防止冒充攻击,为Web通信提供了安全保障。HTTPS的主要目的是解决HTTP在传输过程中存在的明文传输和窃听风险。

SSL/TLS协议的主要作用是:

 

  1. 数据保密性:使用加密算法将数据加密,防止窃听者获取敏感信息。
  2. 数据完整性:使用消息摘要算法和数字签名等技术来保证数据的完整性,防止数据被篡改。
  3. 身份认证:使用数字证书来验证通信对象的身份,防止冒充攻击。
  4. 会话管理:SSL/TLS协议支持会话缓存和会话恢复技术,可以提高通信效率,减少计算和网络资源的消耗。

 

那么HTTPS请求的完整流程如何,具体是如何保证数据安全的?


 

 

  1. 客户端向服务器发送请求:客户端在向服务器发送请求时,将使用HTTPS协议代替HTTP协议,并在请求中包含一个安全连接请求,告知服务器该请求需要使用SSL/TLS协议进行加密和解密。
  2. 服务器返回数字证书:如果服务器支持HTTPS协议,它将返回一个数字证书,包含服务器公钥、证书颁发机构等信息。数字证书由可信的第三方机构颁发,用于证明服务器的身份和证书的有效性。
  3. 客户端验证数字证书:客户端会验证数字证书的有效性,包括证书是否过期、证书颁发机构是否可信等。如果数字证书通过验证,客户端将使用其中的公钥来建立安全连接。
  4. 客户端生成会话密钥:在与服务器建立安全连接后,客户端将生成一个会话密钥(称为预主密钥),用于协商加密算法和密钥长度等参数。这里我们称为KEY。
  5. 客户端将预主密钥发送到服务器:客户端将预主密钥(KEY)使用服务器公钥进行加密,并将加密后的预主密钥(KEY)发送到服务器。
  6. 服务器使用私钥解密预主密钥:服务器使用自己的私钥对预主密钥(KEY)进行解密,并使用该预主密钥来协商加密算法、密钥长度和其他参数。对返回结果内容进行加密后传输(这一步就约定好了对称加密算法,完成对称密钥传输)
  7. 客户端和服务器使用协商的加密算法和密钥进行通信:在通过以上步骤建立了安全连接并完成了协商过程后,客户端和服务器将使用协商的加密算法和主密钥进行通信,保证数据在传输过程中的安全性。

 

以上是HTTPS请求加密的基本过程,其核心是通过数字证书和加密技术来保证数据在传输过程中的安全性。整个过程第三方即使监听到了数据,因为没有私钥所以无法解密,如果篡改数据服务器将无法解密。

中间人攻击

看起来HTTPS似乎解决了网络传输过程中的安全问题,但是HTTPS的安全完全建立在证书可信的基础上,如果中间人伪造证书怎么办?

中间人攻击(Man-in-the-middle attack, MITM攻击)是指攻击者在通信双方之间进行了非法的拦截、篡改和注入操作,从而能够窃取双方之间的信息和敏感数据。只要黑客诱导用户安装非法证书,他就可以模拟服务器,获取到用户传输的信息。那么如何解决呢?

加密算法

既然黑客可能获取到明文数据,那我们加密不就好了嘛。所以,在使用加密算法前我们先简单了解下加密算法。

加密主要有两种方式:对称加密和非对称加密。

对称加密

对称加密是指加密和解密过程使用相同的密钥,也称为共享密钥加密。

 

  1. A 使用密钥加密。
  2. B 使用相同的密钥解密。

 

常见的对称加密算法有DES、3DES、AES等,其加密速度快、加密效率高,但密钥的安全性是一个问题,因为加密和解密使用相同的密钥,如果密钥被泄露,那么整个通信过程的安全性就会被破坏。

客户端和服务端进行通信,采用对称加密,如果只使用一个密钥,很容易破解;如果每次用不同的秘钥,海量秘钥的管理和传输成本又会比较高。

算法热点DES(Data Encryption Standard)数据加密标准,速度较快,适用于加密大量数据的场合,目前已证实不安全,可用3DES替换3DES(Triple DES是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高AES(Advanced Encryption Standard)高级加密标准,是下一代的加密算法标准,速度快,安全级别高,支持128、192、256、512位密钥的加密。是目前最常见的对称加密算法

非对称加密

非对称加密则使用两个密钥:公钥和私钥。公钥可以向任何人公开,用于加密数据,而私钥只有密钥的持有者才能使用,用于解密数据。

 

  1. A 生成一把公钥和一把私钥,公钥可以给任何人。
  2. B 拿到公钥,加密后传输给A。
  3. A 使用私钥解密。

 

常见的非对称加密算法有RSA、DSA、ECC等。非对称加密算法的安全性很高,因为密钥是成对出现的,只有私钥的持有者才能解密数据,而私钥通常保存在计算机的安全存储区中,不易泄露。

一般情况下,对称加密和非对称加密会结合使用,例如HTTPS协议就同时使用了对称加密和非对称加密算法。HTTPS建立连接时使用非对称加密算法对密钥进行传输,然后使用对称加密算法来加密数据传输,这样既保证了安全性,又不会影响通信速度。

RSA

RSA加密算法是一种非对称加密算法,它由Ron Rivest、Adi Shamir和Leonard Adleman三位密学家于1977年共同提出。RSA加密算法的安全性基于数学难题,目前是公认的一种较为安全的加密算法。公钥私钥成对出现,用其中一个加密只能用另一个解密,通常用公钥加密私钥解密。

为什么RSA能够做到非对称加密呢?

 

互质关系:如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系

 

简单来说,RSA利用的原理是,如果两个互质关系的正整数的乘积足够大,是极难进行因式分解的(目前被破解的最长RSA密钥是768个二进制位,而正常使用的至少是1024位的密钥)。

通过一定的运算,把某计算结果和乘积作为公钥,另一个计算结果和乘积作为私钥,即可以实现,利用公钥进行加密,并利用私钥进行解密。具体的数学公式推导和证明可以参考RSA算法原理。

继续改进流程

知道了加密算法的分类,我们果断采取使用RSA来加密我们的密码。那么我们将密码传输流程改进为下面这个样子,将传输过程分为获取公钥和用公钥加密两步,这样即使有人拦截请求,他也无法解密数据。


 

存储加密

现在第一个传输密码的问题已经解决了,那么我们如何存储密码呢?

如果用明文存储密码(不管是存在数据库还是日志中),一旦数据泄露,所有用户的密码就毫无保留地暴露在黑客的面前,开头提到的风险就可能发生,那我们费半天劲加密传输密码也失去了意义。

单向加密

单向加密算法指的是只能从明文生成一个对应的哈希值,不能反过来根据哈希值得到对应的明文。经常被大家用来加密的算法有MD5和SHA系列(如SHA1、SHA256、SHA384、SHA512等)。

这样即使是我们开发人员,拿到数据都不知道用户的真实密码,安全性提高了很多,但是还不够。

通常黑客在侵入保存密码的数据库之后,他会随机猜测一个密码,生成一个哈希值。如果该哈希值在数据库中存在,那么他就猜对了一个用户的密码。如果没有猜中也没有关系,他可以再次随机猜测下一个密码进行尝试。

事实上黑客为了提高破解密码的效率,他们会事先计算大量密码对应的各种哈希算法的哈希值,并把密码及对应的哈希值存入一个表格中(这种表格通常被称为彩虹表),在破解密码时只需要到事先准备的彩虹表里匹配即可。因此现在黑客们破解仅仅只用哈希算法加密过的密码事实上已是不费吹灰之力。

加点“盐”

盐salt:一个随机的字符串,往明文密码里加盐就是把明文密码和一个随机的字符串拼接在一起。

为了应对黑客们用彩虹表破解密码,我们可以先往明文密码加盐,然后再对加盐之后的密码用哈希算法加密。由于盐在密码校验的时候还要用到,因此通常盐和密码的哈希值是存储在一起的,我们需要在数据库中为其增加对应的字段。这样我们的密码就安全多了。

继续改进我们的流程,如下。

拿到密文密码并且在服务器解密之后,我们用数据库中的盐(每个用户不同)来拼接明文密码,然后和数据库中的密码做对比,如果相同则登陆成功。


 

最后,欢迎大家提问和交流。



Tags:密码   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
注意!密码、验证码都没说,钱是怎么被骗走的?
转自:科普中国“我密码和验证码都没有给他,为什么钱还是被骗子骗走了?”骗子是怎么做到的呢?真实案例今年1月,武汉市民张某在家接到一陌生电话,电话自称是某平台的客服,告诉张某购...【详细内容】
2024-04-11  Search: 密码  点击:(4)  评论:(0)  加入收藏
电脑怎么重新设置密码?
数字化时代,每个人的生活都与各种密码紧密相连。电脑密码作为保护个人隐私和数据安全的第一道防线,重要性不言而喻。忘记电脑密码是个普遍且棘手的问题。本文将详细介绍在不同...【详细内容】
2024-04-11  Search: 密码  点击:(3)  评论:(0)  加入收藏
数字社交的新典范:解析Facebook的成功密码
在当今数字化时代,社交媒体已经成为人们日常生活的重要组成部分,而Facebook作为最知名的社交媒体平台之一,其成功之处备受瞩目。本文将深入解析Facebook的成功密码,探讨其在数字...【详细内容】
2024-04-10  Search: 密码  点击:(3)  评论:(0)  加入收藏
手机就可以修改WiFi密码,进行网络提速,还能防止别人蹭网
随着网络的普及和使用频率的增加,很多人可能遇到了一些网络管理上的问题,比如忘记了WiFi密码、网络速度缓慢、或者发现有不明设备在家中蹭网。相信朋友们也曾遇到过吧?但是,你知...【详细内容】
2024-04-03  Search: 密码  点击:(6)  评论:(0)  加入收藏
未来5年微短剧或撬动千亿市场 短剧的下一个“财富密码”是它?
数据来源:中国网络视听发展报告(2024)“当下,网络视听是全球最大最火爆、最有前途,且充满活力的行业之一。而短剧尤其是微短剧以及延伸出来的网络新型直播,是目前中国和全球网络视...【详细内容】
2024-03-28  Search: 密码  点击:(13)  评论:(0)  加入收藏
中国三大运营商共同发布通过GSMA Open Gateway认证的一次性密码 API
3月26日,北京:中国三大领先的移动运营商——中国移动、中国电信和中国联通今日发布商用OTP API(一次性密码API)服务,并通过了GSMA Open Gateway认证。此次发布标志着中...【详细内容】
2024-03-26  Search: 密码  点击:(22)  评论:(0)  加入收藏
微信转账时弹出“这一行字”,别急着输付款密码,已有不少人中招
在我们日常生活中,微信转账已经成为了一种非常便捷的支付方式。然而,就在我们使用这种支付方式时,有时会遇到一些看似平常却隐藏着风险的提示信息。今天,我就要提醒大家,如果在微...【详细内容】
2024-03-14  Search: 密码  点击:(16)  评论:(0)  加入收藏
手机设置指纹好还是密码好?
近日,我和一位朋友正在一家咖啡馆品茶聊天,话题自然而然地转到了手机的安全性。我拿起咖啡杯,微笑着问道:“你觉得手机指纹锁好,还是密码锁更安全呢?”这个问题引发了我们长达数小...【详细内容】
2024-03-11  Search: 密码  点击:(11)  评论:(0)  加入收藏
忘记Word文档密码?教你如何快速解密解决!
在网上找回word文档密码、去除word文档密码非常简单。具体步骤如下:1.百度搜索““六牛助手”官网”;2.点击“立即开始”并在用户中心上传需要解密的文件,稍等片刻即可找回密码...【详细内容】
2024-03-01  Search: 密码  点击:(25)  评论:(0)  加入收藏
人人都该懂密码学,通用密码学原理与应用实战|完结无密
来百度APP畅享高清图片//下栽のke:http://quangneng.com/4061/标题:人人都该懂密码学:通用密码学原理与应用实战在当今数字化的世界中,密码学已经成为了信息安全的核心。不论是...【详细内容】
2024-02-06  Search: 密码  点击:(50)  评论:(0)  加入收藏
▌简易百科推荐
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(0)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(6)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(13)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(9)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(11)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(9)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
站内最新
站内热门
站内头条