CN113515738A - 基于二维码的安全认证方法、装置及存储介质 - Google Patents
基于二维码的安全认证方法、装置及存储介质 Download PDFInfo
- Publication number
- CN113515738A CN113515738A CN202110733152.2A CN202110733152A CN113515738A CN 113515738 A CN113515738 A CN 113515738A CN 202110733152 A CN202110733152 A CN 202110733152A CN 113515738 A CN113515738 A CN 113515738A
- Authority
- CN
- China
- Prior art keywords
- dimensional code
- code
- login verification
- sequence
- generating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/36—User authentication by graphic or iconic representation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/10544—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum
- G06K7/10821—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation by scanning of the records by radiation in the optical part of the electromagnetic spectrum further details of bar or optical code scanning devices
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Electromagnetism (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Storage Device Security (AREA)
Abstract
本公开提供一种基于二维码的安全认证方法、装置及存储介质,用于解决二维码登录认证过程不能满足更高安全性需求的技术问题。本公开技术方案利用二维码的特性及纠错机制,在不破坏纠错能力的前提下将登录验证码携带在二维码中,服务端使用伪随机发生器基于用户名和密码生成的种子生成映射位置序列,根据映射位置序列将登录验证码写入二维码中。扫描器使用与服务端一致的映射位置序列生成方法在本地生成映射位置序列并根据映射位置序列从二维码中读取登录验证码。服务端验证通过客户端发送上来的登录验证码是否与本端的一致,从而实现安全登录认证。本公开技术方案可应用于服务端与扫描器网络隔离的应用场景中,能够提高登录认证过程的安全性。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种基于二维码的安全认证方法、装置及存储介质。
背景技术
条码技术从开始普及到目前已经过了十几年,条码应用从以超市、便利店为代表的商品管理开始,向运输,制造等行业扩展,担负起构筑各种信息系统的任务。如今大量的服务提供扫描条码进行登录认证的方式,便捷且安全。
常见的扫码登录方案需要同时有电脑主机服务端和移动终端(例如手机),移动终端在扫码后,输入用户名uname和密码upwd进行登录,产生一个通用唯一识别码uuid,传递给服务端程序,服务端经过认证后跳转,登录成功。该方案需要移动终端和服务端进行直接通信,不适用于对安全要求较高的后端存储环境。
发明内容
有鉴于此,本公开提供一种基于二维码的安全认证方法、装置及存储介质,用于解决二维码登录认证过程不能满足更高安全性需求的技术问题。
图1为基于本公开实施例提出的一种基于二维码的安全认证方法,该方法应用于二维码扫描器与服务端的网络隔离的应用场景中的服务端,所述方法包括:
步骤101.基于服务端唯一性标识信息生成二维码标签信息,并基于所生成的二维码标签信息生成二维码的信息块;
步骤102.接收到客户端发送的登录请求后,根据请求中携带的用户名从认证数据库中获取用户密码,基于用户名和密码生成伪随机发生器的种子;
步骤103.基于所生成的种子使用伪随机发生器生成用于在二维码中写入登录验证码的映射位置序列;
步骤104.基于映射位置序列将服务端生成的登录验证码写入到二维码中;
步骤105.将写入登录验证码的二维码发送给客户端。
进一步地,所述方法还包括:在接收到客户端发送的携带登录验证码的认证请求时,判断服务端生成的登录验证码与认证请求中的登录验证码是否一致,当判定一致时,向客户端授权反馈认证成功信息。
进一步地,在所述基于映射位置序列将服务端生成的登录验证码后,所述方法还包括:为加入登录验证码的二维码计算生成掩码,并使用生成的掩码对加入登录验证码的二维码进行掩码处理。
进一步地,生成所述映射位置序列的步骤包括:
根据所使用的二维码的版本和纠错级别确定用于携带登录验证码的校验码最大位宽C;其中,C不大于所述二维码版本和纠错级别支持的最大纠错字符数;
基于所述种子使用伪随机数发生器在二维码的信息块中随机选取C个块,并对选取的C个块进行扩展,生成C*8个格式为[a,b]格式的元素构成的初始位置序列,其中,a用于指示信息块的序号;b用于指示信息块中对应比特位的序号;
基于所述种子使用伪随机数发生器将所述初始位置序列中的元素混淆生成所述映射位置序列。
基于本公开实施例的另一方面,还提供一种基于二维码的安全认证方法,该方法应用于二维码扫描器与服务端的网络隔离的应用场景中的客户端,该方法包括:
通过登录页面向服务端发送携带用户名的登录请求;
接收服务端发送的携带登录验证码的二维码并显示所述二维码;
向服务端发送携带扫描器生成的登录验证码的认证请求。
基于本公开实施例的另一方面,还提供一种基于二维码的安全认证方法,该方法应用于二维码扫描器与服务端的网络隔离的应用场景中的扫描器,该方法包括:
扫描客户端界面上显示的携带登录验证码的二维码;
基于用户输入的用户名和密码生成伪随机发生器的种子;
基于所述种子使用伪随机发生器生成用于从二维码中读取登录验证码的映射位置序列;
基于映射位置序列从二维码中读取并显示登录验证码。
进一步地,生成所述映射位置序列的步骤包括:
根据所使用的二维码的版本和纠错级别确定用于携带登录验证码的校验码最大位宽C;其中,C不大于所述二维码版本和纠错级别支持的最大纠错字符数,所述C与服务端生成映射位置序列时所确定的C一致;
采用与服务端一致的伪随机数发生器基于所述种子在二维码的信息块中随机选取C个块,并对选取的C个块进行扩展,生成C*8个格式为[a,b]格式的元素构成的初始位置序列,其中,a用于指示信息块的序号;b用于指示信息块中对应比特位的序号;
基于所述种子使用伪随机数发生器将所述初始位置序列中的元素混淆生成所述映射位置序列。
图2为基于本公开实施例提供的一种基于二维码的安全认证装置结构示意图,该装置200中的各功能模块可以采用软件、硬件或软硬件相结合的方式实现。当多个硬件设备共同实施本公开的技术方案时,由于各硬件设备之间相互协作的目的是共同实现本发明目的,一方的动作和处理结果确定了另一方的动作执行的时机及可能获得的结果,因此,可视为各执行主体之间具有相互协作关系,各执行主体之间具有相互指挥和控制关系。该装置200应用于二维码扫描器与服务端的网络隔离的应用场景中的服务端,该装置200包括:
映射序列生成模块201,用于根据客户端发送的登录请求中携带的用户名从认证数据库中获取用户密码,基于用户名和密码生成伪随机发生器的种子;以及基于所述种子使用伪随机发生器生成用于在二维码中写入登录验证码的映射位置序列;
登录验证码生成模块202,用于生成的登录验证码;
二维码生成模块203,用于基于服务端唯一性标识信息生成二维码标签信息,并基于所生成的二维码标签信息生成二维码的信息块;以及基于所述映射位置序列将所述登录验证码写入到二维码中;
收发模块204,用于接收客户端发送的登录请求,以及将写入登录验证码的二维码发送给客户端。
进一步地,所述映射序列生成模块201包括:
种子生成单元,用于根据客户端发送的登录请求中携带的用户名从认证数据库中获取用户密码,基于用户名和密码生成伪随机发生器的种子;
位宽确定单元,用于根据所使用的二维码的版本和纠错级别确定用于携带登录验证码的校验码最大位宽C;其中,C不大于所述二维码版本和纠错级别支持的最大纠错字符数;
初始序列生成单元,用于基于所述种子使用伪随机数发生器在二维码的信息块中随机选取C个块,并对选取的C个块进行扩展,生成C*8个格式为[a,b]格式的元素构成的初始位置序列,其中,a用于指示信息块的序号;b用于指示信息块中对应比特位的序号;
映射序列生成单元,用于基于所述种子使用伪随机数发生器将所述初始位置序列中的元素混淆生成所述映射位置序列。
基于本公开实施例的另一方面,本公开还提供一种二维码扫描器,该二维码扫描器应用于二维码扫描器与服务端的网络隔离的应用场景中,该二维码扫描器包括:
扫码单元,用于扫描客户端界面上显示的携带登录验证码的二维码;
种子生成单元,用于基于用户输入的用户名和密码生成伪随机发生器的种子;
映射序列生成单元,用于基于所述种子使用伪随机发生器生成用于从二维码中读取登录验证码的映射位置序列;
验证码读取单元,用于基于映射位置序列从二维码中读取并显示登录验证码。
进一步地,二维码扫描器映的射序列生成单元包括:
(1)位宽确定单元,用于根据所使用的二维码的版本和纠错级别确定用于携带登录验证码的校验码最大位宽C;其中,C不大于所述二维码版本和纠错级别支持的最大纠错字符数,所述C与服务端生成映射位置序列时所确定的C一致;
(2)初始序列生成单元,用于采用与服务端一致的伪随机数发生器基于所述种子在二维码的信息块中随机选取C个块,并对选取的C个块进行扩展,生成C*8个格式为[a,b]格式的元素构成的初始位置序列,其中,a用于指示信息块的序号;b用于指示信息块中对应比特位的序号;
(3)映射序列生成单元,用于基于所述种子使用伪随机数发生器将所述初始位置序列中的元素混淆生成所述映射位置序列。
本公开技术方案利用二维码的特性及纠错机制,在不破坏纠错能力的前提下将登录验证码携带在二维码中,服务端使用伪随机发生器基于用户名和密码生成的种子生成映射位置序列,根据映射位置序列将登录验证码写入二维码中。扫描器使用与服务端一致的映射位置序列生成方法在本地生成映射位置序列并根据映射位置序列从二维码中读取登录验证码。服务端验证通过客户端发送上来的登录验证码是否与本端的一致,从而实现安全登录认证。本公开技术方案可应用于服务端与扫描器网络隔离的应用场景中,能够提高登录认证过程的安全性。
附图说明
为了更加清楚地说明本公开实施例或者现有技术中的技术方案,下面将对本公开实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本公开实施例的这些附图获得其他的附图。
图1为基于本公开实施例提出的一种基于二维码的安全认证方法;
图2为基于本公开实施例提供的一种基于二维码的安全认证装置结构示意图;
图3为本公开一实施例提供的一种基于二维码的安全认证方法的服务端步骤流程图;
图4为QR码的结构组成示意图;
图5为本公开一实施例提供的二维码安全认证方法的客户端的步骤流程图;
图6为本公开一实施例提供的能够实现二维码安全认证方法的电子设备结构示意图。
具体实施方式
在本公开实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本公开实施例。本公开实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本公开中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本公开旨在提供一种基于二维码的安全认证方法,本公开技术方案总体思想是利用二维码的特性及纠错码的纠错机制,在不破坏纠错能力的前提下将登录验证码携带在二维码中,使得在通过正常扫描二维码得到二维码内的标签内容的同时,也可以通过扫描器得到二维码内的登录验证码,从而实现快速认证和登录。采用本公开技术方案,现有扫描器无法区分本公开提供的二维码与普通二维码的区别,即使攻击者知晓本公开提供的二维码内包含登录验证码key,本公开技术方案也依旧可以保证二维码认证的安全性。
在客户端与扫描器分离的应用场景中,应用本公开技术方案进行快速登录认证的过程可以是:用户在客户端输入服务访问网址后进入到登录页面,用户在登录页面输入用户名后按登录按键后,客户端向服务端发送登录请求。服务端接收到客户端的登录请求后,根据登录请求中携带的用户名按照服务端的二维码生成步骤在服务端生成包含登录验证码的二维码,并将生成的二维码发送给客户端显示在客户端的登录页面中,同时登录页面显示登录验证码输入窗口,等待用户输入登录验证码。用户使用扫描器(例如手机)扫描二维码后,要求用户输入用户名和密码,扫描器基于用户输入的用户名和密码按照与服务端相同的方式在本地生成登录验证码的映射位置序列LN,通过LN读取二维码中的登录验证码并显示在扫描器上,用户在登录界面的登录验证码输入窗口输入登录验证码后点登录按键后,客户端向服务端发送登录验证请求,请求中携带登录验证码的哈希值,服务端接收到请求后对登录验证码进行校验,如果校验通过则认证成功。随着智能设备的普及,在访问服务的客户端和扫描器为同一物理设备的应用场景中,用户可在本机上直接调用本机上的扫描组件进行扫描,从而通过扫描组件获取到二维码中的登录验证码,其他过程类似,本公开不做过多赘述。
图3为本公开一实施例提供的一种基于二维码的安全认证方法的服务端步骤流程图。图3的实施例中的二维码采用快速响应码(Quick Response,QR)码实现,QR码由白色和黑色两种方形模块构成,代表着数字0和1。QR码标准提供了40个QR版本,可编码各种数据,其中版本1容量最小,版本40容量最大。用户使用的版本取决于字母、数字、二进制、汉字或其组合编码的数据量以及纠错级别。QR码可使用纠错码(Reed Solomon,RS)码进行纠错。RS码有L,M,Q,H四个纠错级别,最大可纠正30%的错误,具备良好的可靠性,即使部分脏污或损坏,也可以正确的读取数据。
图3所示步骤流程应用于服务端,具体实现步骤描述如下:
步骤301.基于分布式存储集群的唯一性标识信息生成QR码标签信息;
该实施例中,采用的二维码类型为快速响应码QR,服务端为分布式存储集群,可使用分布式存储集群的名称、域名、虚拟IP地址等能唯一性标识该分布式存储集群的信息生成QR码标签信息。根据此生成的OR码标签信息可以编码生成对应的QR码,生成的QR码可通过扫描器扫描从而获得QR码标签信息。
步骤302.基于预先确定的QR码版本和纠错级别,使用所生成的QR码标签信息,生成对应的数据块和纠错块,从而确认QR码编码的数据部分;
其中,数据块用于承载标签信息的内容,纠错块是基于未加入登录验证码的数据块计算出来的,用于纠正二维码中的错误数据。本公开将数据块和纠错块统称为信息块。
本公开的思路是在不破坏QR码的纠错能力的前提下,将登陆校验码(简称为key)散布于QR码中,因此具体使用何种QR码版本和纠错级别,可根据需要保证的登录验证码的长度来选取。例如,若登录验证码位数为4位,则QR码版本和纠错级别至少要满足能够纠正QR码中大于4位的错误信息的条件。
通常在QR码的创建过程中会根据数据填充情况计算掩码MASK类型(掩码用于均衡QR码黑白色块分布),由于本公开需要在掩码处理之前加入登录验证码,因此该步骤中的QR码先生成到数据块和纠错块为止,先不计算MASK类型,在加入登录验证码后再计算MASK类型,从而保证放入登录验证码key后黑白色块均衡。
步骤311.服务端在接收到客户端发送的登录请求后,根据请求中携带的用户名从认证数据库中获取用户密码,基于用户名和密码生成伪随机发生器的种子;
本公开中,客户端在请求中携带的用户名应当理解为用户的唯一性标识,例如用户注册的账号、用户手机号等。在服务端侧,在用户注册时会将用户名和密码等用户信息存储到认证数据库中。
本公开使用伪随机数发生器来辅助将服务端生成的登录验证码映射到数据块中。本公开不限定所使用的伪随机数发生器的种类,该实施例中使用线性反馈移位寄存器(LFSR)类型的伪随机数发生器。该类伪随机发生器生成的伪随机序列的随机性的好坏很大程度上取决于移位寄存器的周期,比如python使用的梅森旋转算法使用19937级线性反馈移位寄存器。由于伪随机发生器使用相同的种子产生的伪随机序列也是相同的,因此根据用户输入的用户名和密码生成唯一的种子即可得到唯一的伪随机序列从而得到唯一的映射位置序列(Location Sequence,LN)。
生成伪随机发生器的种子的方式可以有很多种,例如本公开一实施例中将用户名和密码拼接起来,对拼接后的用户名和密码进行哈希计算从而得到伪随机发生器的种子seed。
步骤312.基于所生成的种子使用伪随机发生器生成用于在二维码中写入登录验证码的映射位置序列LN;
为生成映射位置序列LN,需要经过以下几个步骤:
Step1:根据QR码的版本和纠错级别确定用于携带登录验证码的校验码最大位宽C;
为了安全性考虑,校验码最大位宽C应当小于等于QR码的版本和纠错级别能保证正确读取数据块的最大位数。为简单起见,可将C确定为当前QR码版本和纠错级别支持的最大纠错字符数,即QR码可以支持二维码中多少个块数据异常纠错。比如QR码版本1共有26块数据与纠错块,在H级别的容错率下,可以容忍至多8块数据块错误,即C为8。
Step2:基于所生成的种子使用伪随机数发生器在该版本QR码中所有信息块中随机选取C块,并对选取的C块进行扩展,生成初始位置序列;
该步骤中,对C块进行遍历扩展,生成C*8个格式为[a,b]格式的元素构成的生成初始位置序列。其中,a用于指示信息块的序号;b用于指示信息块中对应比特位的序号,取值范围为0~7。
例如对于版本1级别H的QR码,选择C=8,在QR码所有的数据块和纠错块中选择C块,使用python的random类作为随机发生器,指定种子seed进行伪随机初始化,从[1,26]的范围里随机选取8个不重复的数字,所选的8个不重复的数字对应QR码中的8个块的位置。
图4为QR码的结构组成示意图,如图所示,每个信息块中数字1对应的比特位为最高有效位(Most Significant Bit,MSB),每块有8个比特bit位,C块共有C*8位,根据上一步选取的长为C的数组,扩展为长为C*8,每各数组元素为[a,b]格式的二维数组。例如随机确定的8个块为[2,8,11,3,21,10,9,26],经扩展后生成的初始位置序列如下:
{[2,1],[2,2],[2,3],[2,4],[2,5],[2,6],[2,7],[2,8],
[8,1],[8,2],[8,3],[8,4],[8,5],[8,6],[8,7],[8,8],
...
[26,1],[26,2],[26,3],[26,4],[26,5],[26,6],[26,7],[26,8]}。
Step3:基于所生成的种子使用伪随机数发生器将初始位置序列中的元素混淆生成长度为C*8的映射位置序列LN。
例如基于前述步骤中生成的种子使用python中的random类混淆打乱前述步骤生成的初始位置序列即{[2,1],[2,2],[2,3]...[2,8],[8,1]...[26,8]},经过混淆后变为{[11,5],[3,8],[2,1],…,[26,8],[8,1],…,[2,3]},混淆后的序列即为映射位置序列LN。其中,混淆是指序列中元素位置的交换,混淆的目的在于保证该算法公布的情况下的安全性,由于每块顺序遍历被爆破的难度过低,因此需要进行混淆保证数据填充的随机性。
例如使用python中的random类进行混淆,由于random类使用伪随机发生器,而生成的伪随机序列可以唯一的被初始化种子seed来决定,因此相同的伪随机发生器下相同的seed一定可以得到相同的伪随机序列。因此只要保证扫描器和服务端使用相同的伪随机发生器和相同的种子即可得到相同的映射位置序列LN。
步骤321.服务端生成登录验证码;
为了保证每次认证的key值不同并保证QR码隐藏被爆破的安全性,建议服务端每次随机生成大于4位的登录验证码key,登录验证码的字符位数需要小于等于C,具体位数可根据实际场景决定。服务端生成登录验证码的方式可采用随机生成方式,也可采用预设的规则生成,本公开不做具体限定。
服务端在生成登录验证码key后,对key进行哈希运算后生成对应的哈希值,等待客户端的校验。用户在使用扫描器扫描显示在登录页面的二维码之后,在扫描器上会显示出登录验证码,用户在客户端的登录界面输入登录验证码后即可登录服务端获取相应的服务。
步骤331.基于映射位置序列LN将登录验证码写入到QR码中;
为了充分利用QR码的冗余来保证安全性,考虑到登录验证码key的位数可能会小于LN所能表达的字符位数C的情况,因此规定在key的字符位数小于C的情况下,将key补0到与C等长,然后将key根据LN中每一项[a,b]所映射的位置将登录验证码的二进制bit位填充到QR码中。
步骤332.为写入登录验证码的QR码计算生成掩码MASK,并使用生成的掩码对加入登录验证码的QR码进行掩码处理生成最终的二维码;
本公开中掩码处理过程为可选步骤。使用掩码MASK对QR码进行掩码处理的目的是使得生成的最终的二维码的黑白色块更加均匀。
步骤333.将生成的二维码随登录页面发送给客户端,以使客户端在登录页面中呈现。
图5为本公开一实施例提供的二维码安全认证方法的客户端的步骤流程图,该步骤流程示例了客户端扫码与服务端认证流程,具体包括:
步骤501.通过扫描器扫描登录页面呈现的二维码,并通过扫描器获取用户名和密码;
用户在客户端的登录页面看到显示的二维码后,使用扫描器扫描二维码,二维码识别成功后,可触发扫描器显示要求用户输入用户名和密码的页面,通过认证界面获取用户输入的用户名和密码。
本公开中,在扫描器中可建立服务与用户名的绑定关系,扫描器可通过二维码扫描二维码后,通过纠错码可恢复出正确的数据块,并通过正确的数据块识别出用户希望登录的是哪个服务,从而从缓存中调出历史记录或之前绑定的服务与用户的绑定关系列表,用户选择确认即可从历史记录中获取到用户名和密码,从而避免每次用户输入的麻烦。
步骤502.扫描器判断是否成功获取到用户名和密码,若判定为是则执行步骤503;否则执行步骤509;
如果获取到用户名和密码,则采用本公开提供的登录认证方案,否则采用其它登录认证方案。
步骤503.扫描器使用与服务端一致的LN生成方法用所获得的用户名和密码在本地生成LN;
步骤504.扫描器根据LN从二维码中读取出登录验证码,并在客户端登录页面输入登录验证码;
扫描器根据LN从二维码中读取出登录验证码,解码后去除后续补的0得到登录验证码key。
步骤505.用户在客户端登录页面输入登录验证码后,客户端向服务端发送认证请求,请求中携带登录验证码的哈希值;
服务端接收到客户端发送的认证请求后,根据认证请求中携带的用户名或会话缓存的用户名获取服务端之前生成的登录验证码的哈希值,验证认证请求中携带的登录验证码的哈希值与服务端的登录验证码的哈希值是否一致,若一致则认证通过,向客户端授权可访问资源并向客户端发送认证成功的响应消息,否则发送认证失败的响应消息。
本公开一实施例中,也可在请求中直接携带登录验证码,服务端也采用明文登录验证码进行比对。采用哈希值的方式进行登录验证码的比对的目的是增强安全性。
步骤506.客户端接收到认证响应消息后,根据验证结果判断是否验证成功,若成功则执行步骤507,否则执行步骤508。
步骤507.登录成功,将页面重定向到服务页面。
步骤508.登录失败时,刷新二维码,提示用户需要重新验证。
步骤509.在获取用户名密码失败后,说明是普通二维码登录,可从二维码中获取分布式存储集群唯一标识信息。
除QR码外,本公开技术方案还可使用Code49、Code16k等类型的二维码来实现相同的发明目的,具体实现过程类似,本公开不再赘述。
在某些安全性要求较高的应用场景中,要求扫描器与管理服务端的管理客户端隔离,管理客户端和服务端都位于内网中,要求扫描器与存储设备管理网络之间不可以通信。本公开技术方案技术方案中,扫描器仅需根据用户输入的用户名和密码即可从客户端上显示的二维码中读取出校验码,不需要扫描器连接服务端网络,可实现在扫描器与服务端不通信的情况下的登录认证,从而保障了服务网络的安全,并可保证每次登录认证所使用的登录验证码都不同,实现认证过程的低计算复杂度和高安全性。
图6为本公开一实施例提供的能够实现二维码安全认证方法的电子设备结构示意图,该设备600包括:诸如中央处理单元(CPU)的处理器610、通信总线620、通信接口640以及存储介质630。其中,处理器610与存储介质630可以通过通信总线620相互通信。存储介质630内存储有计算机程序,当该计算机程序被处理器610执行时即可实现本公开提供的方法的各步骤的功能。
其中,存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
应当认识到,本公开的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本公开描述的过程的操作,除非本公开另外指示或以其他方式明显地与上下文矛盾。本公开描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本公开的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本公开所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本公开所述的方法和技术编程时,本公开还包括计算机本身。
以上所述仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (12)
1.一种基于二维码的安全认证方法,其特征在于,该方法应用于二维码扫描器与服务端的网络隔离的应用场景中的服务端,所述方法包括:
基于服务端唯一性标识信息生成二维码标签信息,并基于所生成的二维码标签信息生成二维码的信息块;
接收到客户端发送的登录请求后,根据请求中携带的用户名从认证数据库中获取用户密码,基于用户名和密码生成伪随机发生器的种子;
基于所述种子使用伪随机发生器生成用于在二维码中写入登录验证码的映射位置序列;
基于映射位置序列将服务端生成的登录验证码写入到二维码中;
将写入登录验证码的二维码发送给客户端。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到客户端发送的携带登录验证码的认证请求时,判断服务端生成的登录验证码与认证请求中的登录验证码是否一致,当判定一致时,向客户端授权反馈认证成功信息。
3.根据权利要求1所述的方法,其特征在于,在所述基于映射位置序列将服务端生成的登录验证码后,所述方法还包括:
为加入登录验证码的二维码计算生成掩码,并使用生成的掩码对加入登录验证码的二维码进行掩码处理。
4.根据权利要求1所述的方法,其特征在于,生成所述映射位置序列的步骤包括:
根据所使用的二维码的版本和纠错级别确定用于携带登录验证码的校验码最大位宽C;其中,C不大于所述二维码版本和纠错级别支持的最大纠错字符数;
基于所述种子使用伪随机数发生器在二维码的信息块中随机选取C个块,并对选取的C个块进行扩展,生成C*8个格式为[a,b]格式的元素构成的初始位置序列,其中,a用于指示信息块的序号;b用于指示信息块中对应比特位的序号;
基于所述种子使用伪随机数发生器将所述初始位置序列中的元素混淆生成所述映射位置序列。
5.一种基于二维码的安全认证方法,其特征在于,该方法应用于二维码扫描器与服务端的网络隔离的应用场景中的客户端,所述方法包括:
通过登录页面向服务端发送携带用户名的登录请求;
接收服务端发送的携带登录验证码的二维码并显示所述二维码;
向服务端发送携带扫描器生成的登录验证码的认证请求。
6.一种基于二维码的安全认证方法,其特征在于,该方法应用于二维码扫描器与服务端的网络隔离的应用场景中的扫描器,所述方法包括:
扫描客户端界面上显示的携带登录验证码的二维码;
基于用户输入的用户名和密码生成伪随机发生器的种子;
基于所述种子使用伪随机发生器生成用于从二维码中读取登录验证码的映射位置序列;
基于映射位置序列从二维码中读取并显示登录验证码。
7.根据权利要求6所述的方法,其特征在于,生成所述映射位置序列的步骤包括:
根据所使用的二维码的版本和纠错级别确定用于携带登录验证码的校验码最大位宽C;其中,C不大于所述二维码版本和纠错级别支持的最大纠错字符数;
采用与服务端一致的伪随机数发生器基于所述种子在二维码的信息块中随机选取C个块,并对选取的C个块进行扩展,生成C*8个格式为[a,b]格式的元素构成的初始位置序列,其中,a用于指示信息块的序号;b用于指示信息块中对应比特位的序号;
基于所述种子使用伪随机数发生器将所述初始位置序列中的元素混淆生成所述映射位置序列。
8.一种基于二维码的安全认证装置,其特征在于,该装置应用于二维码扫描器与服务端的网络隔离的应用场景中的服务端,所述装置包括:
映射序列生成模块,用于根据客户端发送的登录请求中携带的用户名从认证数据库中获取用户密码,基于用户名和密码生成伪随机发生器的种子;以及基于所述种子使用伪随机发生器生成用于在二维码中写入登录验证码的映射位置序列;
登录验证码生成模块,用于生成的登录验证码;
二维码生成模块,用于基于服务端唯一性标识信息生成二维码标签信息,并基于所生成的二维码标签信息生成二维码的信息块;以及基于所述映射位置序列将所述登录验证码写入到二维码中;
收发模块,用于接收客户端发送的登录请求,以及将写入登录验证码的二维码发送给客户端。
9.根据权利要求8所述的装置,其特征在于,所述映射序列生成模块包括:
种子生成单元,用于根据客户端发送的登录请求中携带的用户名从认证数据库中获取用户密码,基于用户名和密码生成伪随机发生器的种子;
位宽确定单元,用于根据所使用的二维码的版本和纠错级别确定用于携带登录验证码的校验码最大位宽C;其中,C不大于所述二维码版本和纠错级别支持的最大纠错字符数;
初始序列生成单元,用于基于所述种子使用伪随机数发生器在二维码的信息块中随机选取C个块,并对选取的C个块进行扩展,生成C*8个格式为[a,b]格式的元素构成的初始位置序列,其中,a用于指示信息块的序号;b用于指示信息块中对应比特位的序号;
映射序列生成单元,用于基于所述种子使用伪随机数发生器将所述初始位置序列中的元素混淆生成所述映射位置序列。
10.一种二维码扫描器,其特征在于,该二维码扫描器应用于二维码扫描器与服务端的网络隔离的应用场景中,该二维码扫描器包括:
扫码单元,用于扫描客户端界面上显示的携带登录验证码的二维码;
种子生成单元,用于基于用户输入的用户名和密码生成伪随机发生器的种子;
映射序列生成单元,用于基于所述种子使用伪随机发生器生成用于从二维码中读取登录验证码的映射位置序列;
验证码读取单元,用于基于映射位置序列从二维码中读取并显示登录验证码。
11.根据权利要求10所述的二维码扫描器,其特征在于,所述映射序列生成单元包括:
位宽确定单元,用于根据所使用的二维码的版本和纠错级别确定用于携带登录验证码的校验码最大位宽C;其中,C不大于所述二维码版本和纠错级别支持的最大纠错字符数;
初始序列生成单元,用于采用与服务端一致的伪随机数发生器基于所述种子在二维码的信息块中随机选取C个块,并对选取的C个块进行扩展,生成C*8个格式为[a,b]格式的元素构成的初始位置序列,其中,a用于指示信息块的序号;b用于指示信息块中对应比特位的序号;
映射序列生成单元,用于基于所述种子使用伪随机数发生器将所述初始位置序列中的元素混淆生成所述映射位置序列。
12.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序当被处理器执行时实施如权利要求1至7中任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110733152.2A CN113515738A (zh) | 2021-06-29 | 2021-06-29 | 基于二维码的安全认证方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110733152.2A CN113515738A (zh) | 2021-06-29 | 2021-06-29 | 基于二维码的安全认证方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113515738A true CN113515738A (zh) | 2021-10-19 |
Family
ID=78066530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110733152.2A Pending CN113515738A (zh) | 2021-06-29 | 2021-06-29 | 基于二维码的安全认证方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113515738A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115329319A (zh) * | 2022-08-31 | 2022-11-11 | 重庆市规划和自然资源信息中心 | 一种基于ElasticSearch技术的空间算子搜寻系统 |
CN115391475A (zh) * | 2022-08-31 | 2022-11-25 | 重庆市规划和自然资源信息中心 | 一种基于ElasticSearch技术的包含运算算子空间搜索方法 |
-
2021
- 2021-06-29 CN CN202110733152.2A patent/CN113515738A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115329319A (zh) * | 2022-08-31 | 2022-11-11 | 重庆市规划和自然资源信息中心 | 一种基于ElasticSearch技术的空间算子搜寻系统 |
CN115391475A (zh) * | 2022-08-31 | 2022-11-25 | 重庆市规划和自然资源信息中心 | 一种基于ElasticSearch技术的包含运算算子空间搜索方法 |
CN115391475B (zh) * | 2022-08-31 | 2023-05-12 | 重庆市规划和自然资源信息中心 | 一种基于ElasticSearch技术的包含运算算子空间搜索方法 |
CN115329319B (zh) * | 2022-08-31 | 2023-05-19 | 重庆市规划和自然资源信息中心 | 一种基于ElasticSearch技术的空间算子搜寻系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108023874B (zh) | 单点登录的校验装置、方法及计算机可读存储介质 | |
CN104835046B (zh) | 一种用于二维码安全校验的数据鉴伪方法 | |
AU2005318933B2 (en) | Authentication device and/or method | |
CA2591968C (en) | Authentication device and/or method | |
CN100459488C (zh) | 便携式一次性动态密码生成器以及使用其的安全认证系统 | |
CN111008923B (zh) | 水印嵌入和水印提取方法、装置和设备 | |
CN103825734A (zh) | 敏感操作验证方法、终端设备、服务器和验证系统 | |
CN103929402A (zh) | 敏感操作验证方法、终端设备、服务器和验证系统 | |
CN113515738A (zh) | 基于二维码的安全认证方法、装置及存储介质 | |
CN112883361B (zh) | 应用程序的功能跳转方法、装置、计算机设备及存储介质 | |
CN105208013A (zh) | 一种跨设备的高安全性无密码登录方法 | |
CN103107996A (zh) | 数字证书在线下载方法及系统、数字证书发放平台 | |
CN105162604A (zh) | 一种基于特征图像识别的验证方法、服务器及系统 | |
CN107888553B (zh) | 一种验证方法、服务器和系统 | |
CN105099707A (zh) | 一种离线认证方法、服务器及系统 | |
US20150172275A1 (en) | Method and system for verification of presence | |
CN103532979A (zh) | CGI web界面下的多会话验证码的产生及验证方法 | |
CN116680673B (zh) | 显示器的身份校验方法、装置以及计算机设备 | |
CN112699366B (zh) | 跨平台免登安全通讯方法、装置和电子设备 | |
CN115622703A (zh) | 一种静态编码发码、验码方法、设备、存储介质 | |
CN114244620A (zh) | 一种板卡入网验证方法、装置及板卡控制中心 | |
TWM618726U (zh) | 依憑證及驗證資料在不同裝置上確認身分之系統 | |
CN116566744B (zh) | 数据处理方法和安全校验系统 | |
US20240104184A1 (en) | Systems and methods for access control | |
CN114283008A (zh) | 资源转移方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |