MFA多因素认证和TOTP认证逻辑解析

news2025/1/21 15:23:13

MFA多因素认证与TOTP认证逻辑解析

在今天的数字时代,隐私和安全变得尤为重要。用户越来越需要确保他们的在线账户和敏感信息不会落入不法分子之手。为此,多因素认证(Multi-Factor Authentication,MFA)应运而生,为登录和敏感操作添加了额外的安全层。
例如我们可以在登录github时可以设置基于TOTP的MFA多因素认证:
在这里插入图片描述
左边就是需要输入认证码的地方,右边就是我们要输入的认证码

MFA多因素认证的原理

MFA是一种安全认证方法,要求用户在登录或执行重要操作时提供多个不同类型的身份验证因素。这意味着用户不再只需要用户名和密码,还需要提供其他信息,使攻击者更难以获取足够的信息来窃取账户。MFA通常涉及三个主要类型的认证因素:

  1. 知识因素(Something You Know): 这是用户所知道的秘密信息,如密码或PIN码。

  2. 所有权因素(Something You Have): 这是用户所拥有的物理设备,如手机、硬件令牌或智能卡。

  3. 生物特征因素(Something You Are): 这是用户的生物特征,如指纹、虹膜或面部识别。

TOTP认证逻辑解析

其中一种常用的MFA方法是基于时间的一次性密码(Time-Based One-Time Password,TOTP)。TOTP通过在一段时间内生成的一次性密码来增加身份验证的安全性。以下是TOTP的认证逻辑:

  1. 用户在身份验证应用中设置一个密钥,通常在初始化MFA时生成。这个密钥只有用户和认证服务器知道。

  2. 认证服务器和用户的身份验证应用根据固定的时间步长生成一次性密码。时间步长通常为30秒。

  3. 使用HMAC-SHA1算法,将当前时间戳除以时间步长得到一个计数值,然后使用密钥将计数值进行哈希计算。这个哈希结果就是一次性密码的一部分。

  4. 用户的身份验证应用显示生成的一次性密码,用户在一定时间内使用这个密码进行登录或认证。

  5. 用户输入一次性密码,认证服务器在当前时间戳的前后几个时间步长内计算一次密码,然后与用户输入的密码进行比较。如果匹配,认证成功。
    这是我根据个人理解画出的流程图:
    在这里插入图片描述

TOTP的优势

TOTP的认证逻辑提供了几个优势:

  • 安全性增强: TOTP基于时间和共享密钥,攻击者需要知道密钥和正确的时间步长才能生成有效的一次性密码。

  • 方便性: 用户只需在身份验证应用中查看一次性密码,无需额外的物理令牌。

  • 灵活性: TOTP可以与多个在线服务一起使用,只需一个应用即可管理多个账户的MFA。

结论

MFA多因素认证与TOTP认证逻辑为用户的在线安全提供了重要的保护层。通过结合不同类型的认证因素,MFA确保即使密码被泄漏,攻击者也无法轻易获得账户访问权限。而TOTP作为MFA的一种实现方式,通过时间限制的一次性密码进一步加强了认证的安全性。在今天的互联世界中,采用MFA与TOTP是保护个人和机构账户免受未经授权访问的重要步骤。

希望这篇博客为你对MFA和TOTP的认知提供了更深入的了解!

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

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

相关文章

Linux系统编程:采用管道的方式实现进程间通信

目录 一. 进程间通信概述 二. 管道的概念 三. 通过管道实现进程间通信 3.1 实现原理 3.2 匿名管道创建系统接口pipe 3.3 管道通信的模拟实现 3.4 管道通信的访问控制规则 3.5 管道通信的特点 四. 通过匿名管道实现进程池 4.1 进程池的概念 4.2 进程池的模拟实现 五…

Android 广播发送流程分析

在上一篇文章中Android 广播阻塞、延迟问题分析方法讲了广播阻塞的分析方法,但是分析完这个问题,自己还是有一些疑问: 广播为啥会阻塞呢?发送给接收器就行了,为啥还要等着接收器处理完才处理下一个?由普通…

分布式文件系统(FastDFS)

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

吐血整理,接口自动化测试-接口依赖/上传接口处理(项目实例)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 常见的两种接口依…

Docker容器与虚拟化技术:Docker资源控制、数据管理

目录 一、理论 1.资源控制 2.Docker数据管理 二、实验 1.Docker资源控制 2.Docker数据管理 三、问题 1.docker容器故障导致大量日志集满,造成磁盘空间满 2、当日志占满之后如何处理 四、总结 一、理论 1.资源控制 (1) CPU 资源控制 cgroups&#xff0…

什么是前端框架?怎么学习? - 易智编译EaseEditing

前端框架是一种用于开发Web应用程序界面的工具集合,它提供了一系列预定义的代码和结构,以简化开发过程并提高效率。 前端框架通常包括HTML、CSS和JavaScript的库和工具,用于构建交互式、动态和响应式的用户界面。 学习前端框架可以让您更高效…

Centos8安装docker并配置Kali Linux图形化界面

鉴于目前网上没有完整的好用的docker安装kali桌面连接的教程,所以我想做一个。 准备工作 麻了,这服务器供应商提供的镜像是真的纯净,纯净到啥都没有。 问题一:Centos8源有问题 Error: Failed to download metadata for repo ap…

Redis基础概念和数据类型详解

目录 1.什么是Redis? 2.为什么要使用Redis? 3.Redis为什么这么快? 4.Redis的使用场景有哪些? 5.Redis的基本数据类型 5.1 5种基础数据类型 5.1.1 String字符串 5.1.2 List列表 5.1.3 Set集合 5.1.4 Hash散列 5.1.5 Zset有序集…

【hive】hive分桶表的学习

hive分桶表的学习 前言: 每一个表或者分区,hive都可以进一步组织成桶,桶是更细粒度的数据划分,他本质不会改变表或分区的目录组织方式,他会改变数据在文件中的分布方式。 分桶规则: 对分桶字段值进行哈…

玩转 VS code 之下载篇

VSCode 简介 Visual Studio Code (简称 VS Code / VSC),是2015 年由微软公司推出的一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、GIT 等特性,支持插件扩展等等 可用于 Windows,ma…

使用 Visual Studio GoogleTest编写 C/C++ 单元测试——入门篇

入门教程 Visual Studio 新建 GoogleTest项目,一路选默认参数 pch.h #pragma once#include "gtest/gtest.h"int add(int a, int b);pch.cpp #include "pch.h"int add(int a, int b) {return a b; }test.cpp #include "pch.h"TES…

LoRA微调方法详解

本文要介绍的是大模型的微调训练方法之一----LoRA。 0 背景 现在大模型非常火爆,大家都在想方设法应用大模型。 当前很多大模型虽说可以zero-shot直接使用, 但是在具体应用上一般还是微调一下效果更好, 也就是常说的finetune。 在小模型时代…

栈存储结构详解

目录 栈存储结构详解 进栈和出栈 栈的具体实现 栈的应用 什么是队列(队列存储结构) 栈存储结构详解 同顺序表和链表一样,栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构,如图 1 所示。 图 1 栈存储结构示意…

【string】基本用法

目录 前言: string常用接口 一、string的创建,拼接与拷贝构造 1.创建 2.拼接 3.拷贝构造 二、string遍历 方式一:operator[ ]重载 方式二:迭代器 1.正向迭代器: 2.反向迭代器 3.const正向迭代器 4.const反向迭代器 方式三&#…

PyQt5资源的加载和使用,即如何使用Pyrcc

1、打开QtDesigner,选择编辑资源 2、新建资源文件,随便找个地方保存 3、按照自己的喜好命名,然后添加资源 4、保存并退出 5、我们创建一个QLabel,在这里添加资源 6、我们保存界面文件,并编译为py文件,然后…

【C语言】调试技巧

目录 一、什么是bug? 二、调试 1.一般调试的步骤 2.Debug 和 Release 三、调试环境准备 四、调试时要查看的信息 1.查看临时变量的值 2.查看内存信息 3.查看调用堆栈 4.查看反汇编信息 5.查看寄存器 五、练习 六、常见的coding技巧 七、const的作用 八、编程常见…

时序预测 | MATLAB实现基于RF随机森林的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于RF随机森林的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于RF随机森林的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 MATLAB实现基于RF随机森林的时间序列预测-递归预测未来…

Linux命令200例:kill用来终止或者结束进程(常用)

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…

服务链路追踪

一、基础概念 1.背景 对于一个大型的几十个、几百个微服务构成的微服务架构系统,通常会遇到下面一些问题,比如: 如何串联整个调用链路,快速定位问题?如何理清各个微服务之间的依赖关系?如何进行各个微服…