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

应用安全四十三:无密码认证安全

什么是无密码认证?

无密码认证是一种新兴的安全技术和身份认证手段,是用密码以外的东西验证软件用户身份的过程,旨在替代传统的用户账号和密码认证方法,提高账号的安全性和用户体验。无密码技术通过生物识别、多因素认证、基于硬件设备的认证等方法来实现身份验证和授权,可以减少由于密码泄露、用户的疏忽或恶意攻击等因素导致的安全问题。

无密码身份验证可以降低任何组织的成本和安全风险。在无密码身份验证模型中,用户无需输入用户名或电子邮件地址以及密码组成的凭据,而是使用另一种方法来验证身份信息。常见的无密码身份验证包括生物识别(如面部识别、指纹识别、声纹识别等)、短信验证等。无密码技术的最大优势在于解决了密码泄漏这一核心问题。正如谷歌云产品管理总监萨姆·斯里尼瓦斯所解释的那样,在不久的将来,无密码认证的使用可能会迅速增长。

在现实的生活中,其实已经很多手机应用已经开启了无密码验证的应用。例如:使用面容或者指纹开机,登录APP时,也可以选择使用指纹或者短信验证,这样用户就可以不用记住繁琐的密码,也降低了密码泄露的风险。

Passwordless的类型

传统的系统需要用户输入用户名和密码,也就是所谓的What they know,来验证用户是谁? 而无密码认证需要用户通过What they have[例如:移动设备]或者Who they are[例如:生物信息的唯一性可以确定一个用户]。以下是几种常用的无密码认证方式:

生物信息Biometrics):人的很多生物特征都是唯一的,例如:指纹、人脸或者虹膜等。生物信息认证就是通过这些个人唯一的特征来验证登录的用户就是它所声明的那个用户,无需密码。例如:人脸完全的可能性是小鱼一万亿分之一的,完全可以忽略不计,因此人脸识别是一个有效地认证的方式。

魔鬼链接:这种系统登录也不需要用户输入密码,而是要用户输入一个邮箱,系统就会发送一个具备一定随机性的链接到邮箱里,通过这个链接,用户可以点击直接登录系统。这种方式其实还是和密码密码不能完全脱离关系,因为邮箱的认证还是需要密码的,一旦邮箱的密码被攻破,该系统的登录也就被攻破了。这种方式成本比较低,实现起来也比较简单。

OTP/OTC:一次性密码(OTP)或一次性代码(OTC)类似于魔法链接,但要求用户输入您发送给他们的代码(通过电子邮件或通过SMS发送到他们的移动设备),而不是简单地点击链接。

推送通知:英文是Push Notification,用户通过专用的身份验证应用程序(例如Google authenticator)在移动设备上收到推送通知,并通过推送通知打开应用程序以验证其身份。

硬件令牌:如智能卡、安全令牌、近场通信令牌和Rivest-Shamir-Adleman安全令牌是一种在硬件设备中包含证书的人性化方式。这些硬件设备处理身份验证签名过程,并保护密钥不被泄露。这种方式成本比较高,需要硬件支持,还需要有移动的智能卡,一旦智能卡丢失也会对安全造成很大的威胁。

无密码验证与多因子验证

MFA(多因素身份认证)和Passwordless Authentication(无密码身份认证)都是用于增强身份验证安全性的技术,但是它们有一些不同之处。

MFA是一种数字身份认证系统,需要用户通过多个身份认证查验点。通常,MFA会要求用户输入用户名和密码,然后通过其他方式进行额外的身份验证,例如发送一次性访问密码到用户的手机或电子邮件,或者使用生物特征识别技术,如指纹或面部识别。MFA的目的是增加破解密码的难度,减少身份被盗用的风险。

无密码验证则不需要用户输入密码来进行身份验证。它通常利用生物特征识别技术或占有因素来进行身份验证,例如通过指纹识别或通过向用户的手机发送一次性访问密码或电子邮件链接来进行身份验证。这种方法的优点是用户不需要记住复杂的密码,也不需要担心密码被盗用或被破解。

总的来说,MFA和无密码验证都是为了提高身份验证的安全性,但它们采用的方法不同。MFA采用多个身份认证查验点来增加破解密码的难度;而无密码验证则通过利用生物特征识别技术或占有因素来进行身份验证,避免了使用密码带来的风险。

无密码验证的优点和好处

无密码验证比使用密码验证带来很多好处。

从用户的角度来说,当用户密码设置简单时,容易被破解;当用户密码设置复杂时,又容易忘记,经常在重置密码的道路上行进,造成不必要的麻烦。启用无密码验证之后,用户无需再担心密码泄露,也不需要再记住冗长的密码。例如,使用短信验证码验证,只需要输入手机号,获取验证码,就可以使用验证码登录。在移动APP上验证码还支持自动填入,用户都不需要输入验证码就可以登录了。 这就大大方便了用户,提升了用户体验。

从维护系统公司的角度来说,可以降低风险。根据Verizon的2021年数据泄露调查报告(DBIR),登录凭证漏洞占所有数据泄露的84%以上。完全消除密码可以降低数据泄露的风险,因为它降低了攻击者使用密码(以及经常暴露密码的不安全行为)攻击系统和系统的用户的能力。例如,网络犯罪分子经常使用登录凭证填充(使用来自一个网站的用户凭证来访问另一个网站)来攻击该网站,因为超过三分之二的人重复使用密码。消除密码消除了网络犯罪分子使用他们在其他地方获得的凭据访问您系统帐户的能力,降低了撞库攻击的可能。

由于网络钓鱼占所有数据泄露的36%,并且许多都是为了获取用户名和密码而执行的,如果他们收到网络钓鱼电子邮件,因此消除密码意味着您的用户或员工不会意外地向恶意行为者提供任何可以用来访问其帐户和个人数据的东西,也降低了钓鱼攻击的概率。

从维护系统公司的角度来说,还可以降低成本。有些公司的系统重置密码可能需要联系管理人员,这就给管理人员增加了负担。同时,管理系统存储这些密码信息,需要消耗一定的存储空间,而且需要有人维护和管理这些数据。使用了无密码验证,就可以消除存储和维护这些数据的需要【有些无密码验证可能还需要存储一些信息,例如:指纹和面容等】。

从公司的角度而言,如果竞争对手没有提供无密码验证,本公司提供了无密码验证,可以提高用户体验,争取更多的用户。

从预防攻击的角度而言,无密码验证可以预防一下攻击:

暴力破解:无密码身份验证不依赖于人类可读的数据,因此更难以猜测。即使是短信验证码,有效时间非常有限,难以暴力破解或者暴力破解成本很高;

撞库攻击:由于密码不可再用,所以,可以预防撞库攻击;

Keylogger:实现完备的无密码验证是不允许验证码被使用两次的,即使Keylogger可以盗取登录凭证,由于是一次性的,所以,盗取了也没有什么用途。

无密码验证的缺点

第一、如果使用生物信息,由于生物信息是唯一的而且不能改变的,所以,很难重置生物信息,例如,一个人的指纹是不能被重置的。而密码而言,重置密码就很灵活。

第二、无密码验证需要一个安全方法保护好验证码,如果验证码被泄露,再结合个人信息的泄露,就可以被不法分子用于做违法的事情。例如:短信验证码用于验证用户登录,有些人员就利用一些用户对安全知识的认识的不足,尝试通过各种方法获取短信验证码,通过在线会议共享手机屏幕的方式就可以获取短信验证码。另外,如果用户的手机被盗,也会导致短信验证码被截取,因为手机的短信通知里可以在手机不解锁的情况下看到短信验证码。

无密码认证常见的威胁和预防

第一、OTP太短,当使用SMS或者邮件发送短信验证码时,发送的验证码太短,有时还会遇到四位数字的验证码,四位数字组合起来也就10000中情况,很容易就被破解。

预防措施: 使用长一些的短信验证码,例如:6位以上数字。目前手机短信验证码使用的6位数字居多,可能是为了用户友好和安全相结合的结果。不过,大多手机都可以自动填入手机验证码,增加到8位其实也不会给用户带来什么麻烦,而且更加安全。

第二、OTP超时时间太长,一般一次性密码的长度都不长,目前以6位数字为主,如果超时时间太长,就可能给攻击者机会。虽然6位数字组合起来有100万中可能,去掉一些重复的数字再加上生日攻击,尝试的次数就会大大降低。曾经渗透测试时遇到一个网站,6位验证码的有效时间居然给了10分钟的超时时间。

预防措施: 就是缩短一次性密码的有效时间,最长不能大于1分钟。

第三、用户端设备丢失,当一个用户的手机丢失时,捡到手机的人,一旦知道手机号,就可以通过手机号去尝试发送OTP,目前大多数的市场上的手机,如果选择了短信通知的情况下,如下图:

都可以在不解锁的情况下查看到短信的内容,尤其是OTP的短信通知,由于短信内容较短,一般都可以查看整条消息的内容。

预防措施: 就是非必要尽量不要打开短信通知,如下图:

第四、手机端恶意软件,除了盗窃之外,手机端威胁还可能来自包含恶意软件的不安全应用程序、恶意网站或不安全的公共或开放网络等。

预防措施:需要教育用户不要随意点击不明来源的链接,不要使用公共区域的WIFI网络。

第五、安全错误配置和新的安全漏洞,安全配置错误在2019年占所有漏洞的82%,这是黑客的一个容易攻击的目标,因为他们可以容易地发现和利用这些弱点来窃取数据并在组织中制造混乱。这些错误包括未加密的文件、未打补丁的系统、继续使用默认凭据、未受保护的设备以及弱(或不存在)的防火墙保护。配置错误的环境还会使组织容易受到恶意软件感染、僵尸网络和勒索软件攻击的影响,这可能导致数据泄露和赎金要求、身份欺诈和代价高昂的业务停机等问题。

预防措施:通过在整个技术堆栈进行全面的基于风险漏洞评估,加上渗透测试、补丁管理和强大的IAM治理,来识别和解决这些缺陷是至关重要的。为了防止攻击,制定符合企业安全需求的策略和安全基线,指导企业应实施安全配置,并进行符合性检查。定期使用SCA工具扫描是否使用含有严重CVE漏洞的第三方组件等,最好SCA工具可以探测相关CVE是否可以被直接利用,这样可以根据是否可以直接利用设置优先级顺序,优先升级和测试明显可以被利用的漏洞的组件。

第六、内部威胁,来自恶意或疏忽的内奸对各地的组织来说,正在成为越来越大的无密码风险。根据Verizon DBIR 2020的数据,2019年,超过30%的数据泄露涉及内部人员,例如现任或前任员工,或第三方承包商和供应商。许多内部威胁还源于滥用合法的特权帐户。

预防措施:为了降低此类风险,至关重要的是采取安全控制措施,防止滥用和/或提升特权,例如多方授权和将策略执行点分散化以防止IAM策略被篡改。组织还必须确定敏感文件的位置,并确定哪些人可以访问数据,哪些人不能访问数据。 维护最少特权访问模型、围绕数据安全创建一种文化并遵循零信任原则来保护企业资产变得越来越重要。定期检查敏感数据访问日志,及时发现违规行为,及时制止。

第七、用户对隐私的关注,一些用户在使用个人设备进行无密码身份验证时感到不舒服,并担心他们的生物识别数据或上下文数据将被用于侵犯他们的隐私。 对密码的熟悉程度和对无密码身份验证优势的不熟悉也造成了对变革的抵制。

预防措施:使用基于零知识证明和无PII原则的无密码身份验证解决方案,确实可以在使用个人设备时确保不收集用户数据。

第八、不同地方对信息安全的要求的不同,各个国家对网络安全和个人隐私都有专门的法律,不同的国家的法律也不尽相同,如果一个应用要在全球范围内广泛被使用,可能会出现违反当地法律的可能。例如:2019年1月21日,法国的数据保护监管机构——国家信息与自由委员会(CNIL)向谷歌开出5000万欧元(约合5680万美元)的罚单,原因是谷歌没能遵守欧洲《通用数据保护条例》(GDPR)的要求。

预防措施:成立合规部门,研究各个国家的信息安全法律对于收集个人隐私数据的要求,严格按照当地法律实施。在欧洲国家,必须要求工作人员咨询审查无密码身份验证解决方案,以确保其遵守零知识证明和无PII原则。

无密码认证总结

无密码登录确实给用户带来了很大的方便,使用户可以从各种冗长的密码中解脱出来。 但无密码认证给用户带来方便的同时也会带来相应的威胁。在实施无密码认证的时候,需要在系统启动开发之初,考虑到可能收到的威胁,在设计时,需要针对相对的威胁设计好预防方案。由于可能存在未被发现的威胁,在系统投入使用之后,需要时刻关注业界关于无密码认证的攻击事件,及时根据相应事件加强系统的预防措施。

了解无密码身份验证的优点和缺点对于帮助组织实现无密码至关重要。知己知彼才能百战不殆,在信息安全的领域里,也需要做到知己知彼,才能正确地预防。

参考:

Passwordless Authentication 101 | eSecurity Planet

What is passwordless authentication and how does it work?

What Is Passwordless Authentication?

What is Passwordless Authentication?

7 Passwordless Risks and How to Mitigate Them

The Truth About Passwordless Authentication | OneLogin

相关文章:

应用安全四十三:无密码认证安全

什么是无密码认证? 无密码认证是一种新兴的安全技术和身份认证手段,是用密码以外的东西验证软件用户身份的过程,旨在替代传统的用户账号和密码认证方法,提高账号的安全性和用户体验。无密码技术通过生物识别、多因素认证、基于硬…...

Lattice-Based Blind Signatures: Short, Efficient, and Round-Optimal

目录 摘要引言 Lattice-Based Blind Signatures: Short, Efficient, and Round-Optimal CCS 2023 摘要 我们提出了一种基于随机预言机启发式和标准格问题(环/模块SIS/LWE和NTRU)的2轮盲签名协议,签名大小为22KB。该协议是全面优化的&#xf…...

Qt/C++音视频开发57-切换音视频轨道/切换节目流/分别切换音频视频轨道

一、前言 对各种音视频文件格式的支持,是一个播放器的基础功能。一般的音视频文件只有1路流,比如音频文件只有1路音频流,视频文件只有1路音频1路视频流,实践过程中发现,还有一种ts格式的文件,可能有多路流…...

深度学习之基于Django文本情感分析识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在文本情感分析领域的应用已经取得了显著的进展。Django是一个流行的Python Web框架,它可以帮助…...

138. 随机链表的复制 --力扣 --JAVA

题目 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点…...

Python Flask 框架开发

1. Python 代码示例(使用 Flask 框架) 1.1 安装依赖库 pip install flask flask_sqlalchemy flask_login flask_wtf 1.2 主应用文件 app.py from flask import Flask, request, jsonify, redirect, url_for, render_template, flash from flask_sqla…...

k8s安装-学习环境

目录 环境准备 配置hosts 关闭防火墙 关闭交换分区 调整swappiness参数 关闭setlinux Ipv4转发 时钟同步 安装Docker 配置Yum源 安装 配置 启动 日志 安装k8s 配置Yum源 Master节点 安装 初始化 配置kubectl 部署CNI网络插件 Node节点 检查 环境准备 准…...

Vue3动态表单

示例代码如下: // 引入需要的依赖包 import { ref, reactive } from vue; import { useForm } from /composables/useForm;// 定义表单数据模型 const formModel reactive({name: ,age: ,gender: , });// 使用自定义的useForm函数创建表单实例 const { register, …...

2312skia,15vulkan及技巧

ANGLE介绍 ANGLE,把OpenGLES2或3调用转换为DirectX9,11或OpenGL调用.这些说明记录了如何在Windows或Linux上使用ANGLE而不是本地OpenGL后端. 细节 gclient sync下载ANGLE的源码及Skia的其他仅测试依赖项. 要针对ANGLE构建Skia测试工具,请添加skia_use_angletrue到args.gn文件…...

TLSF算法概念,原理,内存碎片问题分析

TLSF算法介绍 TLSF(Two-Level Segregated Fit,两级分割适应算法)。 第一级(first level,简称fl):将内存大小按2的幂次方划分一个粗粒度的范围,如一个72字节的空闲内存的fl是6(72介…...

sharding-jdbc实现分库分表

shigen日更文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。 😅😅最近几天的状态有点不对,所以有几天没有更新了。 当我们的数据量比较大…...

JDK中lock锁的机制,其底层是一种无锁的架构实现的,公平锁和非公平锁

简述JDK中lock锁的机制,其底层是一种无锁的架构实现的,是否知道其是如何实现的 synchronized与lock lock是一个接口,而synchronized是在JVM层面实现的。synchronized释放锁有两种方式: 获取锁的线程执行完同步代码,…...

c++通过serial库进行上下位机通信

​编辑 风紊 现役大学牲,半退休robomaster视觉队员 写在前面 本文章主要介绍的是如何通过开源的serial库和虚拟串口实现上位机和下位机通信。 需求 假设下位机有这样一个数据报发送给上位机 struct DataRecv {char start s;TeamColor color TeamColor::Blu…...

【傻瓜级JS-DLL-WINCC-PLC交互】7.​C#直连PLC并读取PLC数据

思路 JS-DLL-WINCC-PLC之间进行交互,思路,先用Visual Studio创建一个C#的DLL控件,然后这个控件里面嵌入浏览器组件,实现JS与DLL通信,然后DLL放入到WINCC里面的图形编辑器中,实现DLL与WINCC的通信。然后PLC与…...

指针常量和常量指针的区别

文章目录 指针常量常量指针即是指针常量又是常量指针 指针常量 指针常量的本质是常量,表示的是 这个指针所指向的地址不能发生改变。即指针变量的值(即地址值)不能发生修改。但是指针所指向的那块内存里的值是可以修改的。 注意:…...

离散化算法总结

离散化是将大范围的数字映射到小范围的区间内,适用于稀疏的区间。 两个问题需要考虑: 1. 原数组中可能有重复元素,需要去重。 2. 如何算出离散化后的值(离散化后保序,使用二分)。 题目链接: …...

【海思SS528 | VO】MPP媒体处理软件V5.0 | VO模块编程总结

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

逻辑卷管理器lvm

啥意思,个人理解就是可以将物理分区合并一起组成大的磁盘,也可以移除其中的某个分区。 有四个概念需要了解下 PV,物理卷,VG 卷用户组,PE物理扩展块,LV逻辑卷 p物理,v卷,g用户组&a…...

函数声明后的“ - >”是什么?

这种语法的优势之一是可以在函数的返回类型中使用函数参数&#xff0c;使得返回类型更灵活。 先来看一个使用尾返回类型的例子&#xff1a; #include <iostream> auto add(int a, int b) -> int {return a b; }int main() {std::cout << add(3, 4) <<…...

51爱心流水灯32灯炫酷代码

源代码摘自远眺883的文章&#xff0c;大佬是30个灯的&#xff0c;感兴趣的铁汁们可以去看看哦~&#xff08;已取得原作者的许可&#xff09;&#xff1a;基于STC89C51单片机设计的心形流水灯软件代码部分_单片机流水灯代码_远眺883的博客-CSDN博客 由于博主是个小菜鸡&#xff…...

将不同时间点的登录状态记录转化为不同时间段的相同登录状态SQL求解

题目 有不同时间点的登录状态记录表state_log如下 请使用sql将其转化为如下表的不同时间段的相同登录状态记录 思路分析&#xff1a; 此类问题需要用到lag或lead函数取上下行对应的数据&#xff0c;然后对前后结果做比较打标签&#xff08;0或1&#xff09;&#xff0c;再…...

正则表达式与SQL数据库教程

使用正则表达式通过用例查询 Postgres 数据库&#xff1a; 正则表达式&#xff08;又名 Regex&#xff09; 正则表达式是一个强大的工具&#xff0c;广泛用于模式匹配和文本操作。 几乎所有编程语言都支持它们&#xff0c;并且经常用于文本提取、搜索和匹配文本等用例。 正则…...

HTML_web扩展标签

1.表格标签 2.增强表头表现 4.表格属性&#xff08;实际不常用&#xff09; 结构标签&#xff1a; 合并单元格&#xff1a; 更多请查看主页...

论文阅读:Distributed Initialization for VVIRO with Position-Unknown UWB Network

前言 Distributed Initialization for Visual-Inertial-Ranging Odometry with Position-Unknown UWB Network这篇论文是发表在ICRA 2023上的一篇文章&#xff0c;本文提出了一种基于位置未知UWB网络的一致性视觉惯性紧耦合优化测距算法( DC-VIRO )的分布式初始化方法。 对于…...

scrapy爬虫中间件和下载中间件的使用

一、关于中间件 之前文章说过&#xff0c;scrapy有两种中间件&#xff1a;爬虫中间件和下载中间件&#xff0c;他们的作用时间和位置都不一样&#xff0c;具体区别如下&#xff1a; 爬虫中间件&#xff08;Spider Middleware&#xff09; 作用&#xff1a; 爬虫中间件主要负…...

手敲单链表,简单了解其运行逻辑

1. 链表 1.1 结构组成 链表是一种物理存储结构上非连续存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 链表的结构如下图所示&#xff0c;是由很多个节点相互通过引用来连接而成的&#xff1b;每一个节点由两部分组成&#xff0c;分别数据域&…...

Redis RDB

基于内存的 Redis, 数据都是存储在内存中的。 那么如果重启的话, 数据就会丢失。 为了解决这个问题, Redis 提供了 2 种数据持久化的方案: RDB 和 AOF。 RDB 是 Redis 默认的持久化方案。当满足一定条件的时候, 会把当前内存中的数据写入磁盘, 生成一个快照文件 dump.rdb。Redi…...

Elasticsearch一些函数查询

1. 根据价格分组统计数量&#xff0c;每组区间为2000&#xff0c; filter_pathaggregations 设置查询结果只展示函数结果 也有date_histogram函数根据日期分组等等 GET order/_search?filter_pathaggregations {"aggs": {"hist_price": {"histogr…...

竞赛选题 : 题目:基于深度学习的水果识别 设计 开题 技术

1 前言 Hi&#xff0c;大家好&#xff0c;这里是丹成学长&#xff0c;今天做一个 基于深度学习的水果识别demo 这是一个较为新颖的竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/pos…...

Linux expect命令详解

在Linux系统中&#xff0c;expect 是一款非常有用的工具&#xff0c;它允许用户自动化与需要用户输入进行交互的程序。本文将深入探讨expect命令的基本语法、使用方法以及一些最佳实践。 什么是Expect命令&#xff1f; expect 是一个用于自动化交互式进程的工具。它的主要功能…...