鉴权方法、装置、设备及计算机可读存储介质
相关申请的交叉引用
本公开基于申请号为202010898310.5、申请日为2020年8月31日、申请名称为“鉴权方法、装置、设备及计算机可读存储介质”的中国专利申请提出,并要求该中国专利申请的优先权,该中国专利申请的全部内容在此引入本公开作为参考。
技术领域
本公开涉及互联网技术领域,涉及一种鉴权方法、装置、设备及计算机可读存储介质。
背景技术
随着互联网技术的普及和网络服务的复杂程度不断增加,传统技术中将所有计算任务都放到服务器的运行模式造成服务器的负载越来越高。为了解决上述问题,网络服务的管理员可以将部分或者全部的计算任务放在终端设备中执行,以降低服务器的负载。例如,可以采用WebAssembly(基于堆栈的虚拟机的二进制指令格式,wasm)技术将计算任务保存在wasm文件中,作为算法文件部署至终端设备。在计算任务通过算法文件部署至终端设备的情况下,由于源代码完全交给终端设备控制,会存在计算任务被非法调用的问题。
发明内容
本公开实施例提供一种鉴权方法、装置、设备及计算机可读存储介质,能够提升鉴权过程中的安全性,进而,通过本公开实施例提供的鉴权方法可以有效的避免计算任务被非法调用。
本公开实施例的技术方案是这样实现的:
本公开实施例提供一种鉴权方法,应用于终端,包括:根据第一时间戳对待验证信息进行加密,得到第一密文;向服务器发送携带第一密文和第一时间戳的鉴权请求;接收服务器发送的与鉴权请求对应的鉴权响应;鉴权响应携带第二密文和第二时间戳;根据第二时间戳对第二密文进行解密,得到服务器对待验证信息的鉴权结果。
通过上述实现方式,可以将对该待验证信息的验证过程放在服务器端进行,在终端用于执行复杂算法任务的过程中,降低了终端的计算压力;另外,本公开实施例中提供的加/解密机制还可以根据不同的时间戳选择不同的加/解密方法,进一步提升了鉴权过程中的安全性;终端与服务器采用相同的加/解密机制,易于部署,应用性较强;通过本公开实施例提供的鉴权方法还可以有效的避免计算任务被非法调用,提升了计算任务的安全性。
在一些可能的实现方式中,所述根据第一时间戳对待验证信息进行加密,得到第一密文,包括:根据第一时间戳和预设的密钥生成算法生成第一密钥;根据第一密钥对待验证信息进行加密,得到第一密文。
在一些可能的实现方式中,所述根据第一时间戳和预设的密钥生成算法生成第一密钥,包括:对第一时间戳进行第一变换处理,得到第一参数;对预设的初始密钥和第一参数进行第二变换处理,得到第一密钥。
在一些可能的实现方式中,所述根据第二时间戳对第二密文进行解密,得到服务器对待验证信息的鉴权结果,包括:根据第二时间戳和预设的密钥生成算法生成第二密钥;根据第二密钥对第二密文进行解密,得到服务器对待验证信息的鉴权结果。
在一些可能的实现方式中,所述根据第二时间戳和预设的密钥生成算法生成第二密钥,包括:对第二时间戳进行第一变换处理,得到第二参数;对预设的初始密钥和第二参数进行第二变换处理,得到第二密钥。
通过上述实现方式,可以根据不同的时间戳生成不同的密钥,通过根据不同时间戳生成的密钥完成对待验证信息的加密过程和对第二密文的解密过程,可以保证第一密文、第二密文在终端与服务器中的传输过程的安全性;同时,由于不同时间戳对应的加密密钥均不相同,可以有效的避免非法用户通过劫持大量传输密文,以破解加密密钥的风险;同时,由于本公开提供的动态密钥是根据第一时间戳经过第一变换处理和经过第二变换处理得到的,提升了非法用户破解密钥生成算法的难度,进一步提升了鉴权过程的安全性。
在一些可能的实现方式中,所述在根据第一时间戳对待验证信息进行加密,得到第一密文的步骤之前,方法还包括:接收针对算法文件的初始化请求;初始化请求用于请求调用算法文件中的算法任务。
在一些可能的实现方式中,所述方法还包括:根据鉴权结果确定算法文件的初始化结果;所述根据鉴权结果确定算法文件的初始化结果,包括:在鉴权结果为通过的情况下,确定算法文件的初始化结果为初始化成功,允许终端调用算法文件中的算法任务;在鉴权结果为未通过的情况下,确 定算法文件的初始化结果为初始化失败,禁止终端调用算法文件中的算法任务。
在一些可能的实现方式中,所述方法还包括:确定鉴权结果的状态信息;在鉴权结果为无效状态的情况下,确定算法文件的初始化结果为初始化失败;所述根据鉴权结果确定算法文件的初始化结果,包括:在鉴权结果为有效状态的情况下,根据鉴权结果确定算法文件的初始化结果。
通过上述实现方式,可以保证该算法文件中算法任务的安全性,防止非法用户对该算法文件中算法任务的非法调用。
在一些可能的实现方式中,所述方法还包括:向服务器发送时间同步请求,接收服务器发送的时间同步响应,根据时间同步响应进行终端与服务器之间的时间同步;所述确定鉴权结果的状态信息,包括:在得到鉴权结果的情况下,获取进行时间同步后终端的系统时间作为第三时间戳;根据第三时间戳和第二时间戳确定鉴权结果的状态信息。
在一些可能的实现方式中,所述根据第三时间戳和第二时间戳确定鉴权结果的状态信息,包括:在第三时间戳与第二时间戳之间的时间间隔超出预设的有效时间阈值的情况下,确定鉴权结果为无效状态;在第三时间戳与第二时间戳之间的时间间隔未超出有效时间阈值的情况下,确定鉴权结果为有效状态。
通过上述实现方式,可以根据第二时间戳和第三时间戳确定该鉴权结果的生成时间,进而确定该鉴权结果的有效性,可以防止重放攻击,提升系统的安全性。
在一些可能的实现方式中,所述待验证信息包括以下至少之一:当前域名、随机校验码和用户输入的身份标识。
本公开实施例提供一种鉴权方法,应用于服务器,包括:接收终端发送的携带第一密文和第一时间戳的鉴权请求;根据第一时间戳对第一密文进行解密,得到待验证信息;对待验证信息进行验证,得到鉴权结果;根据第二时间戳对鉴权结果进行加密,得到第二密文;向终端发送携带第二时间戳和第二密文的鉴权响应;鉴权响应用于指示终端根据解密后的第二密文获得鉴权结果。
通过上述实现方式,可以将对该待验证信息的验证过程放在服务器端进行,在终端用于执行复杂算法任务的过程中,降低了终端的计算压力;另外,本公开实施例中提供的加/解密机制还可以根据不同的时间戳选择不同的加/解密方法,进一步提升了鉴权过程的安全性;终端与服务器采用相同的加/解密机制,易于部署,应用性较强;通过本公开实施例提供的鉴权方法还可以有效的避免计算任务被非法调用,提升了计算任务的安全性。
在一些可能的实现方式中,所述根据第一时间戳对第一密文进行解密,得到待验证信息,包括:根据第一时间戳和预设的密钥生成算法生成第一密钥;根据第一密钥对第一密文进行解密,得到待验证信息。
在一些可能的实现方式中,所述根据第一时间戳和预设的密钥生成算法生成第一密钥,包括:对第一时间戳进行第一变换处理,得到第一参数;对预设的初始密钥和第一参数进行第二变换处理,得到第一密钥。
在一些可能的实现方式中,所述根据第二时间戳对鉴权结果进行加密,得到第二密文,包括:根据第二时间戳和预设的密钥生成算法生成第二密钥;根据第二密钥对鉴权结果进行加密,得到第二密文。
在一些可能的实现方式中,所述根据第二时间戳和预设的密钥生成算法生成第二密钥,包括:对第二时间戳进行第一变换处理,得到第二参数;对预设的初始密钥和第二参数进行第二变换处理,得到第二密钥。
通过上述实现方式,根据不同的时间戳生成不同的密钥,通过根据不同时间戳生成的密钥完成对待验证信息的加密过程和对第二密文的解密过程,可以保证第一密文、第二密文在服务器与终端中的传输过程的安全性;同时,由于不同时间戳对应的加密密钥均不相同,可以有效的避免非法用户通过劫持大量传输密文,以破解加密密钥的风险;同时,由于本公开提供的动态密钥是根据第一时间戳经过第一变换处理和经过第二变换处理得到的,提升了非法用户破解密钥生成算法的难度,进一步提升了鉴权过程的安全性。
在一些可能的实现方式中,所述方法还包括:接收终端发送的时间同步请求;向终端发送时间同步响应;时间同步响应用于指示终端进行与服务器之间的时间同步。
通过上述实现方式,可以根据第二时间戳和第三时间戳确定该鉴权结果的生成时间,进而确定该鉴权结果的有效性,可以防止重放攻击,提升系统的安全性。
在一些可能的实现方式中,所述待验证信息包括以下至少之一:当前域名、随机校验码和用户输入的身份标识。
本公开实施例提供一种鉴权装置,所述装置包括:
第一加密部分,被配置为根据第一时间戳对待验证信息进行加密,得到第一密文;
第一发送部分,被配置为向服务器发送携带第一密文和第一时间戳的鉴权请求;
第一接收部分,被配置为接收服务器发送的与鉴权请求对应的鉴权响应;鉴权响应携带第二密文和第二时间戳;
第一解密部分,被配置为根据第二时间戳对第二密文进行解密,得到服务器对待验证信息的鉴权结果。
本公开实施例提供一种鉴权装置,所述装置包括:
第二接收部分,被配置为接收终端发送的携带第一密文和第一时间戳的鉴权请求;
第二解密部分,被配置为根据第一时间戳对第一密文进行解密,得到待验证信息;
验证部分,被配置为对待验证信息进行验证,得到鉴权结果;
第二加密部分,被配置为根据第二时间戳对鉴权结果进行加密,得到第二密文;
第二发送部分,被配置为向终端发送携带第二时间戳和第二密文的鉴权响应;鉴权响应用于指示终端根据解密后的第二密文获得鉴权结果。
本公开实施例提供一种鉴权设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本公开实施例提供的鉴权方法。
本公开实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本公开实施例提供的鉴权方法。
本公开实施例一种计算机程序,包括计算机可读代码,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行用于实现本公开实施例提供的鉴权方法。
本公开实施例具有以下有益效果:
本公开实施例通过根据第一时间戳对待验证信息进行加密,得到第一密文;向服务器发送携带第一密文和第一时间戳的鉴权请求;接收服务器发送的与鉴权请求对应的鉴权响应;鉴权响应携带第二密文和第二时间戳;根据第二时间戳对第二密文进行解密,得到服务器对待验证信息的鉴权结果。如此,可以将对该待验证信息的验证过程放在服务器端进行,在终端用于执行复杂算法任务的过程中,降低了终端的计算压力;另外,本公开实施例中提供的加/解密机制还可以根据不同的时间戳选择不同的加/解密方法,进一步提升了鉴权过程的安全性;终端与服务器采用相同的加/解密机制,易于部署,应用性较强;通过本公开实施例提供的鉴权方法还可以有效的避免计算任务被非法调用,提升了计算任务的安全性。
附图说明
图1是本公开实施例提供的鉴权系统的一个可选的架构示意图;
图2是本公开实施例提供的鉴权设备的结构示意图;
图3是本公开实施例提供的鉴权方法的一个可选的流程示意图;
图4是本公开实施例提供的鉴权方法的一个可选的流程示意图;
图5是本公开实施例提供的鉴权方法的一个可选的流程示意图;
图6是本公开实施例提供的鉴权方法的一个可选的流程示意图;
图7是本公开实施例提供的鉴权方法的一个可选的流程示意图;
图8是本公开实施例提供的鉴权方法的一个可选的流程示意图;
图9是本公开实施例提供的鉴权方法的一个可选的流程示意图;
图10是本公开实施例提供的鉴权方法的一个可选的流程示意图;
图11是本公开实施例提供的鉴权方法的一个可选的流程示意图;
图12是本公开实施例提供的一个可选的鉴权装置的组成结构示意图;
图13是本公开实施例提供的一个可选的鉴权装置的组成结构示意图。
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本申请的实施例,并于说明书一起用于说明本申请的技术方案。
具体实施方式
为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,所描述的实施例不应视为对本公开的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解, “一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使在本实施例中描述的本公开实施例能够以除了在在本实施例中图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开实施例的目的,不是旨在限制本公开。
参见图1,图1是本公开实施例提供的鉴权系统100的一个可选的架构示意图,为实现支撑一个鉴权应用,终端400(示例性示出了终端400-1和终端400-2)通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合。图1还示出了服务器200可以为服务器集群,该服务器集群包括服务器200-1至200-3,同样地,服务器200-1至200-3可以是实体机器,也可以是利用虚拟化技术(如容器技术及虚拟机技术等)构建的虚拟机器,本公开实施例对此不做限定,当然,在本实施例中也可使用单个服务器来进行服务的提供。
在一些可能的实现方式中,终端400在接收针对算法文件的初始化请求后,会终端根据第一时间戳对待验证信息进行加密,得到第一密文,向与终端400连接的服务器200发送携带第一密文和第一时间戳的鉴权请求,服务器200根据第一时间戳对第一密文进行解密,得到待验证信息;对待验证信息进行验证,得到鉴权结果;根据第二时间戳对鉴权结果进行加密,得到第二密文。服务器200向终端400发送携带第二时间戳和第二密文的鉴权响应。终端400根据第二时间戳对第二密文进行解密,得到服务器200对待验证信息的鉴权结果,并根据鉴权结果确定算法文件的初始化结果。终端400可以在图形界面410(示例性示出了图形界面410-1和图形界面410-2)显示该初始化结果。
参见图2,图2是本公开实施例提供的鉴权设备500的结构示意图,图2所示的鉴权设备500包括:至少一个处理器510、存储器550、至少一个网络接口520和用户接口530。鉴权设备500中的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。
处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口530包括使得能够呈现媒体内容的一个或多个输出装置531,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口530还包括一个或多个输入装置532,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本公开实施例描述的存储器550旨在包括任意适合类型的存储器。存储器550可选地包括在物理位置上远离处理器510的一个或多个存储设备。
在一些可能的实现方式中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、部分和数据结构或者其子集或超集,下面示例性说明。
操作系统551,包括被配置为处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信部分552,被配置为经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
显示部分553,被配置为经由一个或多个与用户接口530相关联的输出装置531(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理部分554,被配置为对一个或多个来自一个或多个输入装置532之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些可能的实现方式中,本公开实施例提供的鉴权装置可以采用软硬件结合的方式实现,作为示例,本公开实施例提供的鉴权装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本公开实施例提供的鉴权方法。
在一些可能的实现方式中,本公开实施例提供的鉴权装置可以采用软件方式实现,图2示出了 存储在存储器550中的鉴权装置555,其可以是程序和插件等形式的软件,在该鉴权设备为终端的情况下,包括以下部分:第一加密部分1201、第一发送部分1202、第一接收部分1203和第一解密部分1204;在该鉴权设备为服务器的情况下,包括以下软件部分:第二接收部分1301、第二解密部分1302、验证部分1303、第二加密部分1304和第二发送部分1305。这些部分是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。
将在下文中说明各个部分的功能。
在另一些实施例中,本公开实施例提供的装置可以采用硬件方式实现,作为示例,本公开实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本公开实施例提供的鉴权方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
将结合本公开实施例提供的终端的示例性应用和实施,在本公开实施例中,将以终端为执行主体说明本公开实施例提供的鉴权方法。
参见图3,图3是本公开实施例提供的鉴权方法的一个可选的流程示意图,将结合图3示出的步骤进行说明。
在S301中,根据第一时间戳对待验证信息进行加密,得到第一密文。
在一些可能的实现方式中,终端可以在接收到对目标服务的使用请求的情况下,执行本公开实施例提供的鉴权方法。该目标服务对应至少一个算法任务,终端在使用该目标服务的过程中,可以调用该目标服务对应的至少一个算法任务。然而,在使用该目标服务之前,需要对该目标服务的使用权限(或对该至少一个算法任务的调用权限)进行验证,即对该使用请求进行鉴权,执行本公开实施例提供的鉴权方法。
其中,在S301中,该第一时间戳可以是终端执行步骤S301的系统时间,也可以是终端接收到该使用请求的系统时间,也可以是根据预设规则获取的系统时间。该目标服务包括但不限于是各种查询服务,图像识别服务,计算服务等。以该目标服务为图像识别服务为例,在终端接收到对该图像识别服务的使用请求的情况下,需要调用该图像识别服务对应的识别算法任务,因此,响应于该使用请求,终端可以对该图像识别服务的使用请求进行鉴权,执行本公开实施例提供的鉴权方法。在一些可能的实现方式中,该待验证信息可以包括以下至少之一:当前域名、随机校验码和用户输入的身份标识。
其中,在该待验证信息包括当前域名的情况下,终端在接收到该使用请求之后,会获取终端当前访问的域名(即当前域名),通过该第一时间戳对该当前域名进行加密,得到携带当前域名的第一密文;在该待验证信息包括随机校验码的情况下,终端在接收到该使用请求之后,会根据预设的随机算法生成一个随机校验码,通过该第一时间戳对该随机校验码进行加密,得到携带随机校验码的第一密文,其中,每次生成的随机校验码都不相同;在该待验证信息包括用户输入的身份标识的情况下,终端在接收到该使用请求之后,会通过交互式窗口提示用户输入对应的身份标识,并接收该身份标识,通过该第一时间戳对该身份标识进行加密,得到携带随机校验码的第一密文,其中,该身份标识可以包括但不限于是口令、账号密码等形式。
在一些可能的实现方式中,该验证信息可以为“当前域名+用户输入的身份标识”的形式,其中,当前域名与该身份标识有对应关系,也就是说,在终端侧可以预先存储合法的当前域名与身份标识的对应关系,在获取到当前使用请求对应的待验证的“当前域名+用户输入的身份标识”后,终端可以根据该合法的当前域名与身份标识的对应关系检测当前使用请求是否合法。该合法的当前域名与身份标识的对应关系也可以存储在服务器侧,采用的检测方法与终端侧相同。
例如,合法的当前域名与身份标识的对应关系包括如下表1所示的对应关系:
表1
|
用户标识1 |
用户标识2 |
用户标识3 |
用户标识4 |
域名1 |
合法 |
合法 |
合法 |
合法 |
域名2 |
合法 |
非法 |
合法 |
非法 |
域名3 |
非法 |
合法 |
非法 |
合法 |
若终端接收到的对目标服务的使用请求为“域名2+身份标识2”,则确定该使用请求为非法的;若使用请求为“域名2+身份标识3”,则确定该使用请求为合法的。该合法的当前域名与身份标识的对应关系也可以同时存储于服务器侧,或者只存储于服务器侧或终端侧。
在一些可能的实现方式中,终端对待验证信息进行加密得到第一密文的过程中,使用的加密机制为预先设定好的,且该加密机制可以根据第一时间戳的不同生成不同的第一密文。
在一些实施例中,该加密机制可以包括多个不同的加密方法,每一加密方法均对应一个时间段。在加密过程中,根据第一时间戳所处的时间段,在多个不同的加密方法中选取目标加密方法,并通过该目标加密方法完成加密过程;在一些实施例中,该加密机制可以根据不同的第一时间戳生成不同的密钥,通过该第一时间戳生成的密钥完成加密。
在S302中,向服务器发送携带第一密文和第一时间戳的鉴权请求。
在一些可能的实现方式中,服务器中预存有与终端相同的加密机制,相应地,服务器中也预存有与加密机制对应的解密机制。在终端向服务器发送该鉴权请求的过程中,该第一时间戳是通过明文发送的,该第一密文为经过加密的待验证信息。
其中,由于该第一时间戳是通过明文发送的,服务器可以根据该第一时间戳所处的时间段,在多个不同的解密方法中选取目标解密方法,并通过该目标解密方法完成解密过程;服务器还可以根据不同的第一时间戳生成不同的密钥,通过该第一时间戳生成的密钥完成解密。
在一些可能的实现方式中,该鉴权请求用于指示服务器执行下述步骤:根据第一时间戳对第一密文进行解密,得到待验证信息;对待验证信息进行验证,得到鉴权结果;根据第二时间戳对鉴权结果进行加密,得到第二密文;向终端发送携带第二时间戳和第二密文的鉴权响应;鉴权响应用于指示终端根据解密后的第二密文获得鉴权结果。其中,服务器可以通过白名单的形式对该待验证信息进行验证,该白名单中预存有多个合法信息,在所述待验证信息为该白名单中多个合法信息中的任意一个的情况下,将该待验证信息对应的鉴权结果为通过,在该白名单中不存在该待验证信息的情况下,将该待验证信息对应的鉴权结果为未通过。例如,在待验证信息包括“当前域名+用户输入的身份标识”的情况下,服务器端可以预存有如下表2所示的白名单。若终端接收到的对目标服务的使用请求为“域名2+身份标识2”,则确定该使用请求为非法的;若使用请求为“域名2+身份标识3”,则确定该使用请求为合法的。
表2
白名单序号 |
域名 |
用户标识 |
1 |
域名1 |
用户标识1 |
2 |
域名1 |
用户标识2 |
3 |
域名1 |
用户标识3 |
4 |
域名2 |
用户标识1 |
5 |
域名2 |
用户标识3 |
6 |
域名3 |
用户标识2 |
… |
… |
… |
在S303中,接收服务器发送的与鉴权请求对应的鉴权响应;鉴权响应携带第二密文和第二时间戳。
在一些可能的实现方式中,服务器发送的鉴权响应与终端发送的鉴权请求相对应。该鉴权请求还可以携带请求标识,该请求标识用于区分不同的鉴权请求,在终端需要同时发送多个鉴权请求的情况下,可以为不同的鉴权请求分配不同的请求标识。相应地,鉴权响应也会携带该请求标识,通过匹配请求标识可以确定鉴权请求对应的鉴权响应。
在一些实施例中,该鉴权响应携带了通过明文传输的第二时间戳,和将鉴权结果进行加密生成的第二密文。
在S304中,根据第二时间戳对第二密文进行解密,得到服务器对待验证信息的鉴权结果。
在一些可能的实现方式中,终端根据第二时间戳对第二密文进行解密,使用的解密机制为预先设定好的,且该加密机制可以根据第一时间戳的不同生成不同的鉴权结果。该解密机制与终端中的加密机制是相对应的。
在一些实施例中,在加密机制为包括多个不同的加密方法,每一加密方法均对应一个时间段的情况下,该解密机制也包括不同的解密方法,每一时间段中的加密方法与解密方法两两对应;在一些实施例中,在加密机制为可以根据不同的第一时间戳生成不同的密钥,通过该第一时间戳生成的密钥完成加密的情况下,该解密机制也可以采用相同的密钥生成方法根据不同的第一时间戳生成不同的密钥,并通过该第一时间戳生成的密钥完成解密过程。
在一些可能的实现方式中,若解密失败,则鉴权结果为鉴权失败;若解密成功,可以直接得到服务器对该待验证信息的鉴权结果。
通过本公开实施例对于图3的上述示例性实施可知,本公开实施例通过根据第一时间戳对待验证信息进行加密,得到第一密文;向服务器发送携带第一密文和第一时间戳的鉴权请求;接收服务器发送的与鉴权请求对应的鉴权响应;鉴权响应携带第二密文和第二时间戳;根据第二时间戳对第二密文进行解密,得到服务器对待验证信息的鉴权结果。如此,可以将对该待验证信息的验证过程放在服务器端进行,在终端用于执行复杂算法任务的过程中,降低了终端的计算压力,并且,用于对该待验证信息进行验证的白名单由服务器维护,提高了鉴权过程中白名单的安全性;另外,本公开实施例中提供的加/解密机制还可以根据不同的时间戳选择不同的加/解密方法,进一步提升了鉴权过程的安全性;终端与服务器采用相同的加/解密机制,易于部署,应用性较强;通过本公开实施例提供的鉴权方法还可以有效的避免计算任务被非法调用,提升了计算任务的安全性。
参见图4,图4是本公开实施例提供的鉴权方法的一个可选的流程示意图,基于图3,图3中的S301可以更新为S401至S402,S304可以更新为S403至S404,将结合图4示出的步骤进行说明。
在S401中,根据第一时间戳和预设的密钥生成算法生成第一密钥。
在一些可能的实现方式中,该密钥生成算法可以根据第一时间戳的不同生成不同的第一密钥。可以通过以下方案实现上述的密钥生成算法:S4011,对第一时间戳进行第一变换处理,得到第一参数;S4012,对预设的初始密钥和第一参数进行第二变换处理,得到第一密钥。
其中,该第一变换处理为基于该第一时间戳的字符转换处理。对于相同的第一时间戳,经过第一变换处理得到的第一参数也是相同的,对于不相同的第一时间戳,经过第一变换处理得到的第一参数可以是不同的,也可以是相同的。在第一时间戳包括多位0至9的数字的情况下,可以根据每一位数字对应的字符,将由数字组成的第一时间戳变换为由字符组成的第一参数;还可以根据预设的顺序变更规则,对该第一时间戳中的多位数字的相对位置进行改变,得到相对位置变更后的第一参数;还可以对该第一时间戳中每一位数字加上预设数值,以组成该第一参数。
例如,若存在第一时间戳为“20200101”,可以根据预设的“0对应A、1对应B、2对应C…”的对应关系,将该第一时间戳转换为“CACAABAB”;还可以对该第一时间戳中每一位数字的相对位置进行改变,在翻转的情况下得到的第一参数为“10100202”;还可以对该第一时间戳中每一位数字加上预设数值(以8为例),得到的第一参数为“9898810810”或者“98988A8A”。
在一些可能的实现方式中,该第二变换处理可以根据得到的第一参数与初始密钥生成第一密钥。其中,第二变换处理可以为对该第一参数中的各个字符与该初始密钥中的各个字符的字符处理,包括但不限于是各种替换、组合等字符处理方式。
例如,若存在初始密钥为“ylaQxlGJ”,第一参数为“CACAABAB”,可以采用组合的方式得到第一密钥,如“ylaQxlGJCACAABAB”、“yClAaCQAxAlBGAJB”等;也可以采用替换的方式得到第一密钥,如“ylaQABAB”、“yAaAxBGB”等;还可以同时采用替换、组合等字符处理方式。
在S402中,根据第一密钥对待验证信息进行加密,得到第一密文。
在S403中,根据第二时间戳和预设的密钥生成算法生成第二密钥。
在一些可能的实现方式中,该密钥生成算法可以根据第二时间戳的不同生成不同的第二密钥。可以通过以下方案实现上述的密钥生成算法:S4031,对第二时间戳进行第一变换处理,得到第二参数;S4032,对预设的初始密钥和第二参数进行第二变换处理,得到第二密钥。其中,该密钥生成算法与S401中的密钥生成算法相同。
在S404中,根据第二密钥对第二密文进行解密,得到服务器对待验证信息的鉴权结果。
通过本公开实施例对于图4的上述示例性实施可知,本公开实施例通过预设的密钥生成算法,可以根据不同的时间戳生成不同的密钥,通过根据不同时间戳生成的密钥完成对待验证信息的加密过程和对第二密文的解密过程,可以保证第一密文、第二密文在终端与服务器中的传输过程的安全性;同时,由于不同时间戳对应的加密密钥均不相同,可以有效的避免非法用户通过劫持大量传输密文,以破解加密密钥的风险;同时,由于本公开提供的动态密钥是根据第一时间戳经过第一变换处理和经过第二变换处理得到的,提升了非法用户破解密钥生成算法的难度,进一步提升了鉴权过程的安全性。
在一些可能的实现方式中,参见图5,图5是本公开实施例提供的鉴权方法的一个可选的流程示意图,基于图3,在S301之前,还可以包括S501,在S304之后,还可以包括S502。
在S501中,接收针对算法文件的初始化请求;初始化请求用于请求调用算法文件中的算法任务。
在一些可能的实现方式中,终端接收的对目标服务的使用请求,可以为针对该目标服务对应的 算法任务的调用请求。该算法任务被封装在算法文件中,在终端访问该目标服务对应的服务器的过程中,可以接收到服务器发送的封装了大量算法任务的算法文件,并生成对该算法文件的初始化请求。即为了调用该目标服务对应的算法任务,需要先根据针对算法文件的初始化请求对该算法文件进行初始化,在初始化成功的情况下,可以允许终端调用该算法文件中所有的算法任务或该算法文件中的部分算法任务;在初始化失败的情况下,禁止终端调用该算法文件中的算法任务。
其中,在接收到针对算法文件的初始化请求之后,执行图3提供的鉴权步骤。
在S502中,根据鉴权结果确定算法文件的初始化结果。
在一些可能的实现方式中,该S502还包括:S5021,在鉴权结果为通过的情况下,确定算法文件的初始化结果为初始化成功,允许终端调用算法文件中的算法任务。进而实现该目标功能。
在一些可能的实现方式中,该S502还包括:S5022,在鉴权结果为未通过的情况下,确定算法文件的初始化结果为初始化失败,禁止终端调用算法文件中的算法任务。
通过本公开实施例对于图5的上述示例性实施可知,本公开实施例通过获取对算法文件的初始化请求,并获取服务器通过加密通道传输的鉴权结果,根据鉴权结果得到初始化结果,可以保证该算法文件中算法任务的安全性,防止非法用户对该算法文件中算法任务的非法调用。
在一些可能的实现方式中,参见图6,图6是本公开实施例提供的鉴权方法的一个可选的流程示意图,基于图5,所述方法还可以包括S601、S602和S603。
在S601中,向服务器发送时间同步请求,接收服务器发送的时间同步响应,根据时间同步响应进行终端与服务器之间的时间同步。
在一些可能的实现方式中,该S601可以在终端与服务器建立连接的过程中完成,也可以在S302之前的任意一个时间点执行。也就是说,时间同步的目的是为了保证携带该第一密文的鉴权请求发送之后得到鉴权响应中鉴权结果的有效性。因此,为了保证该鉴权结果的有效性,可以在发送该鉴权请求之前,完成终端与服务器之间的时间同步。
在S602中,确定鉴权结果的状态信息。
其中,在鉴权结果为无效状态的情况下,执行步骤S603;在鉴权结果为有效状态的情况下,执行步骤S502。
在一些可能的实现方式中,可以通过以下方式实现确定鉴权结果的状态信息:S6021,在得到鉴权结果的情况下,获取进行时间同步后终端的系统时间作为第三时间戳;S6022,根据第三时间戳和第二时间戳确定鉴权结果的状态信息。
其中,该S6022包括:在第三时间戳与第二时间戳之间的时间间隔超出预设的有效时间阈值的情况下,确定鉴权结果为无效状态;在第三时间戳与第二时间戳之间的时间间隔未超出有效时间阈值的情况下,确定鉴权结果为有效状态。
需要说明的是,该S6022还包括:在第三时间戳与第二时间戳之间的时间间隔未超出预设的有效时间阈值的情况下,且第三时间戳与第二时间戳之间的时间间隔超出预设的最小时间间隔的情况下,确定鉴权结果为有效状态。该最小时间间隔由终端与服务器之间的通道质量有关。
例如,存在第三时间戳T3、第二时间戳T2和有效时间阈值Th,在(T3-T2)>Th的情况下,确定鉴权结果为无效状态;在(T3-T2)≤Th的情况下,确定鉴权结果为有效状态。在另一个实现方式中,在(T3-T2)≤Th的情况下,还需要判断与最小时间间隔Tm之间的关系,在(T3-T2)>Tm的情况下,确定鉴权结果为有效状态;在(T3-T2)≤Tm的情况下,确定鉴权结果为无效状态。
在S603中,确定算法文件的初始化结果为初始化失败。
其中,初始化失败用于禁止终端调用算法文件中的算法任务。
通过本公开实施例对于图6的上述示例性实施可知,本公开通过在发送鉴权请求之前完成终端与服务器之间的时间同步,从而可以根据第二时间戳和第三时间戳确定该鉴权结果的生成时间,进而确定该鉴权结果的有效性,可以防止重放攻击,提升系统的安全性。
将结合本公开实施例提供的终端的示例性应用和实施,在本公开实施例中,将以服务器为执行主体说明本公开实施例提供的鉴权方法。
参见图7,图7是本公开实施例提供的鉴权方法的一个可选的流程示意图,将结合图7示出的步骤进行说明。
在S701中,接收终端发送的携带第一密文和第一时间戳的鉴权请求。
在一些可能的实现方式中,该第一密文是终端通过预先设定好的加密机制对待验证信息进行加密得到的,该加密机制可以根据第一时间戳的不同生成不同的第一密文。在终端向服务器发送该鉴权请求的过程中,该第一时间戳是通过明文发送的,该第一密文为经过加密的待验证信息。
在S702中,根据第一时间戳对第一密文进行解密,得到待验证信息。
在一些可能的实现方式中,该服务器中预存有与终端相同的加密机制,相应地,服务器中也预存有与加密机制对应的解密机制。服务器可以根据该解密机制对该第一密文进行解密,得到该待验证信息。
在一些可能的实现方式中,在服务器根据该解密机制对该第一密文的解密过程中,若解密失败无法得到该待验证信息,确定鉴权结果为鉴权失败。
在S703中,对待验证信息进行验证,得到鉴权结果。
在一些可能的实现方式中,该待验证信息可以包括以下至少之一:当前域名、随机校验码和用户输入的身份标识。
在一些可能的实现方式中,该验证信息可以为“当前域名+用户输入的身份标识”的形式,其中,当前域名与该身份标识有对应关系,也就是说,服务器中可以通过白名单的方式预先存储合法的当前域名与身份标识的对应关系,在获取到待验证的“当前域名+用户输入的身份标识”后,服务器可以根据该合法的当前域名与身份标识的对应关系检测当前使用请求是否合法。
在S704中,根据第二时间戳对鉴权结果进行加密,得到第二密文。
在一些可能的实现方式中,该第二时间戳可以为服务器接收到终端发送的鉴权请求的时间;还可以是直接将该第一时间戳作为该第二时间戳,以减少终端的运算压力;还可以将得到鉴权结果的服务器系统作为该第二时间戳。服务器可以基于与终端中预先设定好的加密机制相同的加密机制,根据第二时间戳对鉴权结果进行加密,得到第二密文。
在S705中,向终端发送携带第二时间戳和第二密文的鉴权响应;鉴权响应用于指示终端根据解密后的第二密文获得鉴权结果。
在一些可能的实现方式中,该鉴权响应用于指示终端执行以下操作:接收服务器发送的与鉴权请求对应的鉴权响应;鉴权响应携带第二密文和第二时间戳;根据第二时间戳对第二密文进行解密,得到服务器对待验证信息的鉴权结果。还可以执行:在鉴权结果为通过的情况下,确定算法文件的初始化结果为初始化成功,允许终端调用算法文件中的算法任务;在鉴权结果为未通过的情况下,确定算法文件的初始化结果为初始化失败,禁止终端调用算法文件中的算法任务。
通过本公开实施例对于图7的上述示例性实施可知,本公开实施例通过接收终端发送的携带第一密文和第一时间戳的鉴权请求;根据第一时间戳对第一密文进行解密,得到待验证信息;对待验证信息进行验证,得到鉴权结果;根据第二时间戳对鉴权结果进行加密,得到第二密文;向终端发送携带第二时间戳和第二密文的鉴权响应;鉴权响应用于指示终端根据解密后的第二密文获得鉴权结果。如此,可以将对该待验证信息的验证过程放在服务器端进行,在终端用于执行复杂算法任务的过程中,降低了终端的计算压力;另外,本公开实施例中提供的加/解密机制还可以根据不同的时间戳选择不同的加/解密方法,进一步提升了鉴权过程中的安全性;终端与服务器采用相同的加/解密机制,易于部署,应用性较强。
参见图8,图8是本公开实施例提供的鉴权方法的一个可选的流程示意图,基于图7,图7中的S702可以更新为S801至S802,S704可以更新为S803至S804。
在S801中,根据第一时间戳和预设的密钥生成算法生成第一密钥。
在一些可能的实现方式中,该密钥生成算法可以根据第一时间戳的不同生成不同的第一密钥。可以通过以下方案实现上述的密钥生成算法:S8011,对第一时间戳进行第一变换处理,得到第一参数;S8012,对预设的初始密钥和第一参数进行第二变换处理,得到第一密钥。其中,该密钥生成算法与S401中的密钥生成算法相同。
在S802中,根据第一密钥对第一密文进行解密,得到待验证信息。
在S803中,根据第二时间戳和预设的密钥生成算法生成第二密钥。
在一些可能的实现方式中,该密钥生成算法可以根据第二时间戳的不同生成不同的第二密钥。可以通过以下方案实现上述的密钥生成算法:S8031,对第二时间戳进行第一变换处理,得到第二参数;S8032,对预设的初始密钥和第二参数进行第二变换处理,得到第二密钥。其中,该密钥生成算法与S401中的密钥生成算法相同。其中,该密钥生成算法与S401中的密钥生成算法相同。
在S804中,根据第二密钥对鉴权结果进行加密,得到第二密文。
通过本公开实施例对于图8的上述示例性实施可知,本公开实施例通过预设的密钥生成算法,可以根据不同的时间戳生成不同的密钥,通过根据不同时间戳生成的密钥完成对待验证信息的加密过程和对第二密文的解密过程,可以保证第一密文、第二密文在服务器与终端中的传输过程的安全性;同时,由于不同时间戳对应的加密密钥均不相同,可以有效的避免非法用户通过劫持大量传输 密文,以破解加密密钥的风险;同时,由于本公开提供的动态密钥是根据第一时间戳经过第一变换处理和经过第二变换处理得到的,提升了非法用户破解密钥生成算法的难度,进一步提升了鉴权过程的安全性。
参见图9,图9是本公开实施例提供的鉴权方法的一个可选的流程示意图,基于图7,在步骤S701之前,所述方法还包括S901至S902。
在S901中,接收终端发送的时间同步请求。
在S902中,向终端发送时间同步响应;时间同步响应用于指示终端进行与服务器之间的时间同步。
通过本公开实施例对于图9的上述示例性实施可知,本公开通过在发送鉴权请求之前完成终端与服务器之间的时间同步,从而可以根据第二时间戳和第三时间戳确定该鉴权结果的生成时间,进而确定该鉴权结果的有效性,可以防止重放攻击,提升系统的安全性。
在一些可能的实现方式中,参见图10,图10是本公开实施例提供的鉴权方法的一个可选的流程示意图,将结合图10示出的步骤进行说明。
在S1001中,终端接收针对算法文件的初始化请求;初始化请求用于请求调用算法文件中的算法任务。
在S1002中,终端根据第一时间戳对待验证信息进行加密,得到第一密文。
在S1003中,终端向服务器发送时间同步请求。
在S1004中,服务器接收终端发送的时间同步请求,终端发送时间同步响应。
在S1005中,终端接收服务器发送的时间同步响应,根据时间同步响应进行终端与服务器之间的时间同步。此时,终端已经可以完成与服务器之间的时间同步。
在S1006中,终端向服务器发送携带第一密文和第一时间戳的鉴权请求。
在S1007中,服务器根据第一时间戳对第一密文进行解密,得到待验证信息。
在S1008中,服务器对待验证信息进行验证,得到鉴权结果。
在S1009中,服务器根据第二时间戳对鉴权结果进行加密,得到第二密文。
在S1010中,服务器向终端发送携带第二时间戳和第二密文的鉴权响应。
在S1011中,终端接收服务器发送的与鉴权请求对应的鉴权响应;鉴权响应携带第二密文和第二时间戳。
在S1012中,终端根据第二时间戳对第二密文进行解密,得到服务器对待验证信息的鉴权结果。
在S1013中,终端确定鉴权结果的状态信息。在鉴权结果为无效状态的情况下,执行S1014;在鉴权结果为有效状态的情况下,执行S1015。
在S1014中,终端确定算法文件的初始化结果为初始化失败。
在S1015中,终端根据鉴权结果确定算法文件的初始化结果。
其中,S1015包括:S1016,在鉴权结果为通过的情况下,确定算法文件的初始化结果为初始化成功,允许终端调用算法文件中的算法任务;S1017,在鉴权结果为未通过的情况下,确定算法文件的初始化结果为初始化失败,禁止终端调用算法文件中的算法任务。
通过本公开实施例对于图10的上述示例性实施可知,本公开实施例可以将对该待验证信息的验证过程放在服务器端进行,在终端用于执行复杂算法任务的过程中,降低了终端的计算压力,并且,用于对该待验证信息进行验证的白名单由服务器维护,提高了鉴权过程中白名单的安全性;另外,本公开实施例中提供的加/解密机制还可以根据不同的时间戳选择不同的加/解密方法,进一步提升了鉴权过程的安全性;终端与服务器采用相同的加/解密机制,易于部署,应用性较强;通过本公开实施例提供的鉴权方法还可以有效的避免计算任务被非法调用,提升了计算任务的安全性。
下面,将说明本公开实施例在一个实际的应用场景中的示例性应用。
本公开实施例可以解决算法文件中的计算任务被非法调用的问题,其中该算法文件可以包括但不限于是各种格式的脚本、模块。为了便于理解,将以该算法文件为wasm(WebAssembly)文件为例,对本公开实施例提供的鉴权方法进行说明。
wasm是基于堆栈的虚拟机的二进制指令格式。wasm被设计为编程语言的可移植编译目标,从而可以在网页上为客户端和服务器应用程序进行部署。在算法通过wasm部署到前端后,由于wasm的源代码完全交给客户端控制,其天然可被其所处的嵌入式环境调用。为防止未授权用户无限制的调用wasm中的算法部分(算法任务),需要添加鉴权部分,增强wasm的安全性。目前,对于wasm的鉴权研究由于wasm技术仍处在初期发展阶段,可用的鉴权方式有限。wasm的网络 通信能力依赖于其所处的嵌入式环境,所以第三方对于嵌入式环境的篡改也增加了wasm鉴权的风险。
在相关技术中,可以通过以下方法实现鉴权方案:wasm先进行自鉴权:获取当前域名并搜索是否在持有的白名单中;进行握手验证:发送随机校验码key到已授权的服务器并获取服务器对key加密后的skey2,比对skey2与wasm自己对key加密的skey2’是否一致,若一致则鉴权通过。通过上述方法可以解决wasm内的代码保护问题,但是,仍存在部分问题:浏览器端可以维护的白名单大小受限;白名单容易被篡改;授权服务器部署麻烦,中间人可以将请求劫持,转发至其他授权服务器,只要wasm和授权服务器所持有的秘钥相同都可以鉴权通过,若要避免该问题,则wasm和授权服务器的秘钥需要一一对应,也就是需要多套秘钥方案,这样即使将请求送至其他授权服务器,得到的响应也不正确。
因此,本公开提供了一种鉴权方法,可以在基于js(javascript,具有函数优先的轻量级,解释型或即时编译型的编程语言)网络通信能力的基础上实现wasm的远程终端鉴权,并尽量规避第三方对js篡改和实行中间人攻击的风险。使得只有授权用户能够成功调用wasm内的算法接口,增加第三方攻击的难度。
在一些可能的实现方式中,在wasm文件中添加鉴权部分,算法接口(算法就任务)调用前先进行初始化,根据初始化结果决定是否能够调用算法接口。在初始化时向服务器发送鉴权请求并等待鉴权结果,根据结果决定初始化的成功与否。鉴权信息采用自获取和用户输入的结合,并对网络通信添加加密策略。
请参阅图11,图11是本公开实施例提供的鉴权方法的一个可选的流程示意图,将结合图11示出的步骤进行说明。
在S1101中,主动获取当前域名domain。
在S1102中,获取wasm文件所在系统时间戳time_stamp1,对time_stamp1进行自定义的第一变换处理形成第一参数,之后对第一参数和服务器和wasm所持有的共同初始秘钥initial_key进行自定义的第二变换处理形成加密秘钥key1。可以将称time_stamp1和initial_key生成key1的过程保存为预设的密钥生成算法。其中,time_stamp1为上述实施例中的第一时间戳;加密秘钥key1为上述实施例中的第一密钥。
在S1103中,接收用户输入的appID(身份标识符),然后使用key1对appID和域名进行加密得到密文1。其中,密文1为上述实施例中的第一密文。
在S1104中,向服务器发送时间同步请求,该请求也由与S1102,S1103相同的机制进行加密,并与time_stamp一同送到服务器,得到服务器时间的加密响应(机制与S1106至S1110相同)后,记录服务器时间并在wasm内部进行校准,得到与服务器同步的钟表clock’。
在S1105中,将密文1与time_stamp1的明文发送至服务器。
在S1106中,服务器对initial_key和收到的time_stamp1,通过预设的密钥生成算法得到解密秘钥key1。
在S1107中,服务器解密密文1,查询appID和对应的域名是否在白名单内,将结果记录为鉴权结果。
在S1108中,服务器获取当前时间戳time_stamp2。其中,该time_stamp2为上述实施例中的第二时间戳。
在S1109中,对time_stamp2和initial_key,通过预设的密钥生成算法得到加密秘钥key2。其中,该key2为上述实施例中的第二密钥。
在S1110中,使用key2对鉴权结果进行加密得到密文2,并将密文2和time_stamp2的明文返回到wasm文件。其中,密文2为上述实施例中的第二密文。
在S1111中,wasm文件对time_stamp2和initial_key,通过预设的密钥生成算法得到解密秘钥key2,对密文2进行解密获得鉴权结果。
在S1112中,判断鉴权结果是否通过。
在S1113中,若鉴权结果为不通过或鉴权结果解密失败,则初始化失败。
在S1114中,若鉴权结果为通过,则wasm查询校准钟表获取当前校准时间time_stamp3,比较time_stamp3是否超过了time_stamp2与有效期的和,若超出则初始化失败,否则成功。其中,time_stamp3为上述实施例中的第三时间戳。
在一些可能的实现方式中,在wasm和服务器通信过程中可以添加随机校验码,即wasm发送时间同步请求或鉴权密文时可以额外添加一段随机字符串由秘钥加密送到服务器,服务器解密后重 新加密随响应一并返回,wasm校验该随机校验码是否一致,来决定收到响应的有效性,若一致则有效,若不一致则无效。类似地,服务器同样可以使用在第一次回复时添加随机校验码来验证第二次请求的有效性。
通过本公开实施例提供的鉴权方法,可以达到以下技术效果:秘钥随时间变化,且中间人难以篡改时间戳和密文;中间人难以确定何为鉴权通过的密文,并且在有效期内使用通过密文;由于获取域名由wasm完成,该代码段被编译为字节码,相比于传统的js代码,不会向外暴露代码段的执行步骤,中间人难以获知鉴权请求信息使用了什么参数;部署容易,实现简单。
下面继续说明本公开实施例提供的鉴权装置555的实施为部分的示例性结构,在一些可能的实现方式中,如图12所示,存储在存储器550的鉴权装置555中的部分可以包括:
第一加密部分1201,被配置为根据第一时间戳对待验证信息进行加密,得到第一密文;
第一发送部分1202,被配置为向服务器发送携带第一密文和第一时间戳的鉴权请求;
第一接收部分1203,被配置为接收服务器发送的与鉴权请求对应的鉴权响应;鉴权响应携带第二密文和第二时间戳;
第一解密部分1204,被配置为根据第二时间戳对第二密文进行解密,得到服务器对待验证信息的鉴权结果。
在一些可能的实现方式中,第一加密部分1201还被配置为:根据第一时间戳和预设的密钥生成算法生成第一密钥;根据第一密钥对待验证信息进行加密,得到第一密文。
在一些可能的实现方式中,第一加密部分1201还被配置为:对第一时间戳进行第一变换处理,得到第一参数;对预设的初始密钥和第一参数进行第二变换处理,得到第一密钥。
在一些可能的实现方式中,第一解密部分1204,还被配置为:根据第二时间戳和预设的密钥生成算法生成第二密钥;根据第二密钥对第二密文进行解密,得到服务器对待验证信息的鉴权结果。
在一些可能的实现方式中,第一解密部分1204,还被配置为:对第二时间戳进行第一变换处理,得到第二参数;对预设的初始密钥和第二参数进行第二变换处理,得到第二密钥。
在一些可能的实现方式中,该鉴权装置555还包括初始化部分,该初始化部分被配置为接收针对算法文件的初始化请求;初始化请求用于请求调用算法文件中的算法任务。
在一些可能的实现方式中,该鉴权装置555还包括调用部分,该调用部分被配置为根据鉴权结果确定算法文件的初始化结果。该调用部分还被配置为在鉴权结果为通过的情况下,确定算法文件的初始化结果为初始化成功,允许终端调用算法文件中的算法任务;在鉴权结果为未通过的情况下,确定算法文件的初始化结果为初始化失败,禁止终端调用算法文件中的算法任务。
在一些可能的实现方式中,该鉴权装置555还包括状态确定部分,该状态确定部分被配置为确定鉴权结果的状态信息;在鉴权结果为无效状态的情况下,确定算法文件的初始化结果为初始化失败。该调用部分还被配置为在鉴权结果为有效状态的情况下,根据鉴权结果确定算法文件的初始化结果。
在一些可能的实现方式中,该鉴权装置555还包括第一同步部分,该第一同步部分被配置为向服务器发送时间同步请求,接收服务器发送的时间同步响应,根据时间同步响应进行终端与服务器之间的时间同步。该状态确定部分还被配置为在得到鉴权结果的情况下,获取进行时间同步后终端的系统时间作为第三时间戳;根据第三时间戳和第二时间戳确定鉴权结果的状态信息。
在一些可能的实现方式中,该状态确定部分还被配置为在第三时间戳与第二时间戳之间的时间间隔超出预设的有效时间阈值的情况下,确定鉴权结果为无效状态;在第三时间戳与第二时间戳之间的时间间隔未超出有效时间阈值的情况下,确定鉴权结果为有效状态。
在一些可能的实现方式中,待验证信息包括以下至少之一:当前域名、随机校验码和用户输入的身份标识。
在一些可能的实现方式中,如图13所示,存储在存储器550的鉴权装置555中的软件部分可以包括:
第二接收部分1301,被配置为接收终端发送的携带第一密文和第一时间戳的鉴权请求;
第二解密部分1302,被配置为根据第一时间戳对第一密文进行解密,得到待验证信息;
验证部分1303,被配置为对待验证信息进行验证,得到鉴权结果;
第二加密部分1304,被配置为根据第二时间戳对鉴权结果进行加密,得到第二密文;
第二发送部分1305,被配置为向终端发送携带第二时间戳和第二密文的鉴权响应;鉴权响应用于指示终端根据解密后的第二密文获得鉴权结果。
在一些可能的实现方式中,第二解密部分1302,还被配置为根据第一时间戳和预设的密钥生 成算法生成第一密钥;根据第一密钥对第一密文进行解密,得到待验证信息。
在一些可能的实现方式中,第二解密部分1302,还被配置为根据第一时间戳和预设的密钥生成算法生成第一密钥,包括:对第一时间戳进行第一变换处理,得到第一参数;对预设的初始密钥和第一参数进行第二变换处理,得到第一密钥。
在一些可能的实现方式中,第二加密部分1304,还被配置为根据第二时间戳和预设的密钥生成算法生成第二密钥;根据第二密钥对鉴权结果进行加密,得到第二密文。
在一些可能的实现方式中,第二加密部分1304,还被配置为对第二时间戳进行第一变换处理,得到第二参数;对预设的初始密钥和第二参数进行第二变换处理,得到第二密钥。
在一些可能的实现方式中,该鉴权装置555还包括第二同步部分,该第二同步部分还被配置为接收终端发送的时间同步请求;向终端发送时间同步响应;时间同步响应用于指示终端进行与服务器之间的时间同步。
在一些可能的实现方式中,待验证信息包括以下至少之一:当前域名、随机校验码和用户输入的身份标识。
本公开实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本公开实施例上述的鉴权方法。
本公开实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本公开实施例提供的鉴权方法,例如,如图3、图4、图5、图6、图7、图8、图9、图10或图11示出的方法。
在一些可能的实现方式中,计算机可读存储介质可以是铁电存储器(Ferroelectric Random Access Memory,FRAM)、只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable read-only memory,PROM)、电子可编程只读存储器(Electrical Programmable read-only memory,EPROM)、带电可擦可编程只读存储器(Electrical Programmable read-only memory,EEPROM)、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些可能的实现方式中,可执行指令可以采用程序、软件、部分、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为部分、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper Text Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个部分、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本公开的实施例而已,并非用于限定本公开的保护范围。凡在本公开的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本公开的保护范围之内。
工业实用性
本公开提供了一种鉴权方法、装置、设备及计算机可读存储介质;方法包括:根据第一时间戳对待验证信息进行加密,得到第一密文;向服务器发送携带第一密文和第一时间戳的鉴权请求;接收服务器发送的与鉴权请求对应的鉴权响应;鉴权响应携带第二密文和第二时间戳;根据第二时间戳对第二密文进行解密,得到服务器对待验证信息的鉴权结果。本公开实施例能够提升鉴权过程中的安全性,进而,通过本公开实施例提供的鉴权方法可以有效的避免计算任务被非法调用。