当前位置: 首页 > news >正文

农行鉴权问题

银行登录的两层加密

1.传输层加密 TLS/HTTPS

2.应用层加密

前端js+公钥加密算法 来加密密码

加密时用的密钥时银行的公钥,由服务器下发到页面中

农行的鉴权机制:

在这里插入图片描述

1.农行前端加密流程

输入账号、密码、验证码

前端脚本加密处理

    获取服务器下发的公钥加入防重放参数,时间戳、随机数等?使用公钥加密账号和密码

构造登录请求

    加密后的账号、加密后的密码、验证码防重放token?

通过https发送到服务器

服务器端解密与校验

    用私钥解密账号、密码校验密码是否正确检查防重放token是否有效

成功 则建立会话Session/Cookie

问题:

服务器下发的公钥和解密时的私钥有什么联系吗?

要在哪里加入防重放参数?怎么判断这些放重返参数是否合理呢?

防重放token指的是什么,如何检验呢?

session和cookie有什么联系与区别

这里的加密与传输层TLS/HTTPS的加密有什么联系与区别?

回答:

-公钥和私钥是一对,来源于非对称加密算法 RSA/SM2

公钥可以加密但不能解密,这个安全地发送到浏览器端

私钥只能再服务器端保存

-防重参数把时间戳、随机数、或者一次性 token 拼到待加密的数据中

服务器解密后确认请求是新鲜的

可以把参数拼到明文再加密,或是参数单独作为字段传输

-防重放token是一次性或是短期有效的随机串,由服务器生成,下发给浏览器

浏览器在下一次发送请求时必须带上

服务器收到后检查token是否存在于有效列表,是否过期,是否已被使用(用过就作废)

-session存在于服务器端,保存用户的登录状态和数据(用户ID,权限等),每个session由唯一ID

cookie存在于客户端(浏览器端),存储少量数据,如session ID

Cookie 里通常会保存 Session ID,浏览器每次请求都会带上这个 Cookie → 服务器用 Session ID 找回对应的 Session 数据

-TLS/HTTPS传输层加密,数据一旦进入通道进行整体加密

前端加密在应用层(浏览器)先把敏感字段单独加密,还可加入额外安全机制如防重放,相当于第二道保险

继续提问:

每次登录下都要有一对独一无二的公钥和私钥吗?不一定,可能一段时间更换

服务器怎么判断请求是新鲜的呢?检查时间戳(浏览器把当前时间戳发给服务器,服务器解密后检查时间戳是否在允许范围内)、随机数(服务器提前给浏览器一个一次性随机数,浏览器加密时带上,服务器解密后比对)、一次性token(用过一次即作废)

token相当于是链式生成的,就是上一个请求生成的被下一个请求使用?不一定,有独立一次性token(登录前服务器给一个token,登录时要把token一起发给服务器,用一次作废)和链式token(基于前一个生成下一个)

登录成功后的鉴权:

  • Session + Cookie(银行常用)

    • 服务器创建一个 Session(里面存你是谁、权限等信息)

    • 把 Session ID 放到 Cookie 发回浏览器

    • 之后浏览器的每个请求,都会自动带上这个 Cookie → 服务器用 Session ID 找到你的登录状态

  • Token 鉴权(部分移动端或 API 用)

    • 登录时直接返回一个加密签名的 Token(比如 JWT)

    • 之后每个请求都带上 Token,服务器解密验证

会话保持的安全机制 :
银行会加很多额外的检查

  • 绑定客户端信息

    • 会话记录下你的 IP、浏览器指纹、设备号

    • 如果变化太大,会要求重新登录

  • 会话超时

    • 一段时间(如 10 分钟)没操作,自动退出
  • 二次验证

    • 高风险操作(比如转账)需要短信、U盾、动态口令

登录后的数据传输:

  • 依然走 HTTPS

  • 关键字段(交易密码、转账金额)通常还会再次在前端加密(和登录时类似的加密机制)

  • 会结合一次性 token(防止转账请求被重放)

银行的二次验证机制:

1.短信验证码

登录异常时要求,如新设备、可疑IP;高风险操作时,如转账修改密码添加收款人

由服务器生成,随机数生成器(最好是加密安全的 RNG),防止可预测

传输时,从银行服务器到短信网关 → 有专用加密链路;从短信网关到手机 → 走运营商网络(这一段不算非常安全,但因为有效期短、一次性,风险可接受)

验证码必须和用户会话绑定(不能用别人手机收到的验证码在你的会话里验证)

会进行安全增强,限制尝试次数(输错 3~5 次就锁定);限制发送频率(防止验证码被暴力请求);结合前端 token(验证码输入请求本身也带防重放参数)

银行会把它作为一道防线而不是唯一防线

问题

短信网关是什么?

数据从银行发出到收到短信具体经过什么流程?

2.U盾

银行生成一对密钥包括公钥和私钥,私钥存在U盾硬件中且不可导出,公钥存在银行服务器

使用时,银行发给用户一段挑战数据,U盾用私钥签名,签名结果发回银行,银行用保存的公钥验证签名

U盾还可能参与加密数据

问题:

U盾硬件具体指的是什么,是物理实体码?放在哪里呢?类似U盘,内部有安全芯片,能存私钥和执行加密操作,但不允许私钥被直接读取(类似内部黑箱),用户拿着

用私钥签名是什么意思?可能先哈希,再加密哈希值

这里的U盾是不是类似农行中的k宝?是的

3.动态口令

密码一次性,很快会过期

  • 硬件令牌

    • 比如银行给你一个小巧的钥匙扣/卡片,上面有一个屏幕,每隔 30 秒跳出一个新 6 位数字。

    • 登录网银或转账时,系统会要求你输入它当前显示的数字。

    • 原理是令牌和银行后台的“种子密钥”相同,时间同步,所以生成的数字一致。

  • 手机 App 令牌

    • 像 Google Authenticator、微软验证器、支付宝宝令。

    • 不用硬件设备,直接在手机上用 App 生成 6 位数字(通常 30 秒更新一次)。

    • 常用于公司 VPN 登录、GitHub、邮箱的二次验证。

  • 短信/邮件一次性验证码(也是动态口令的一种)

    • 登录时服务器发一个验证码到你的手机或邮箱,你在几分钟内输入才有效。

    • 虽然常见,但安全性比硬件/App 令牌低,因为短信可能被劫持。

http://www.dtcms.com/a/322149.html

相关文章:

  • 嵌入式 Linux 驱动开发常见问题排查宝典(驱动开发篇)v1.0
  • “人工”智能究竟需要多少人工?
  • 《设计模式之禅》笔记摘录 - 14.组合模式
  • 使用Python+selenium实现第一个自动化测试脚本
  • 【GPT-OSS 全面测评】释放推理、部署和自主掌控的 AI 新纪元
  • 1688 图片搜图找货接口开发实战:从图像特征提取到商品匹配全流程
  • InfluxDB漏洞:Metrics 未授权访问漏洞
  • 自定义上传本地文件夹到七牛云
  • 【深度学习新浪潮】GPT-5正式发布:开启博士级智能新纪元
  • Redis基础数据类型
  • 支持向量机(SVM)全解析:原理、类别与实践
  • Nestjs框架: 基于 Argon2 的用户登录注册安全机制设计与实现
  • Vue框架总结案例
  • 抖音AI分身:帮助每个抖音创作者,打造自己的AI分身
  • 垃圾堆放识别准确率↑32%:陌讯多模态融合算法实战解析
  • 设计一个 Java 本地缓存组件
  • P1119 灾后重建【题解】
  • 【动态规划 | 二维费用背包问题】二维费用背包问题详解:状态设计与转移方程优化
  • 温室韭菜收割机的设计cad【12张】三维图+设计说明书
  • WinForm 实战 (进度条):用 ProgressBar+Timer 打造动态进度展示功能
  • AUTOSAR进阶图解==>AUTOSAR_EXP_AIOccupantAndPedestrianSafety
  • C++ Primer
  • window10本地运行datax与datax-web
  • 吴恩达 深度学习笔记
  • 校招秋招春招小米在线测评小米测评题库|测评解析和攻略|题库分享
  • 阶段二测试
  • 巧妙实现Ethercat转Profinet协议网关匹配光伏电站
  • 《P6464 [传智杯 #2 决赛] 传送门》
  • 五、CV_ResNet
  • Redis的Linux安装