热词 | 口令 随机数 素数 随机 身份 时间戳 密钥 密文 关联 客户端 | ||
专利类型 | 发明公开 | 法律事件 | 公开; 实质审查; |
专利有效性 | 实质审查 | 当前状态 | 实质审查 |
申请号 | CN202410940459.3 | 申请日 | 2024-07-12 |
公开(公告)号 | CN118944867A | 公开(公告)日 | 2024-11-12 |
申请人 | 中国电信股份有限公司技术创新中心; 中国电信股份有限公司; | 申请人类型 | 企业 |
发明人 | 廉欢欢; 康步荣; 周旭华; | 第一发明人 | 廉欢欢 |
权利人 | 中国电信股份有限公司技术创新中心,中国电信股份有限公司 | 权利人类型 | 企业 |
当前权利人 | 中国电信股份有限公司技术创新中心,中国电信股份有限公司 | 当前权利人类型 | 企业 |
省份 | 当前专利权人所在省份:北京市 | 城市 | 当前专利权人所在城市:北京市昌平区 |
具体地址 | 当前专利权人所在详细地址:北京市昌平区北七家镇未来科技城南区中国电信北京信息科技创新园11层1118室、1116室 | 邮编 | 当前专利权人邮编:102209 |
主IPC国际分类 | H04L9/08 | 所有IPC国际分类 | H04L9/08 ; H04L9/06 ; H04L9/32 |
专利引用数量 | 0 | 专利被引用数量 | 0 |
专利权利要求数量 | 10 | 专利文献类型 | A |
专利代理机构 | 北京同达信恒知识产权代理有限公司 | 专利代理人 | 李静; |
摘要 | 本 申请 公开了一种基于口令的认证密钥协商方法和 电子 设备。该方法中,客户端根据第一随机数和第一口令文件中的第一参考口令生成第一目标口令,并根据第一随机数和设定素数阶群中的一个生成元生成第一素数阶群关联随机数;将第一目标口令、第一素数阶群关联随机数和第一时间戳发送至 服务器 ,并接收来第二素数阶群关联随机数、第二时间戳,和第二密文;根据第二目标口令和第二素数阶群关联随机数,和第一参考身份标识、第一身份标识、第一随机数计算第一中间秘密值;解密第二密文,并在解密验证通过的情况下,根据第一中间秘密值、第一目标口令、第一素数阶群关联随机数、第二目标口令、第二素数阶群关联随机数,计算得到第一会话密钥。提高安全性。 | ||
权利要求 | 1.一种基于口令的认证密钥协商方法,其特征在于,包括: |
||
说明书全文 | 一种基于口令的认证密钥协商方法和电子设备技术领域[0001] 本申请涉及密钥技术领域,尤其涉及一种基于口令的认证密钥协商方法和电子设备。 背景技术[0002] 基于口令的认证密钥协商(Password‑based Authenticated Key Agreement,PAKA)协议使得参与方之间通过预先共享的低熵秘密值(即口令)进行相互认证,然后共同协商出最终的会话密钥。该类协议部署灵活、维护方便,并且口令简单易记。此外,PAKA协议不需要公钥基础设施和密钥分发中心的参与,而且没有过多的安全假设。 [0003] PAKA协议可以被分为两类:对称PAKA协议和非对称PAKA协议。其中,对称PAKA协议中,存在口令泄露的风险;非对称PAKA协议中,存在预计算攻击,并且非对称环境下的方案应用局限性较大。 [0004] 因此,如何得到一个参与方免受信息攻击和预计算攻击的对称口令认证密钥协商方案尤为重要。发明内容 [0005] 本申请示例性的实施方式中提供一种基于口令的认证密钥协商方法和电子设备,用以协商出一个会话密钥,进而保证参与方免受信息攻击和预计算攻击。 [0006] 根据示例性的实施方式中的第一方面,提供一种基于口令的认证密钥协商方法,应用于客户端,包括: [0007] 根据第一随机数和第一口令文件中的第一参考口令生成第一目标口令,以及,根据第一随机数和设定素数阶群中的一个生成元生成第一素数阶群关联随机数;其中,第一口令文件是根据客户端关联的第一口令、第一身份标识和第一随机盐值确定的; [0008] 将第一目标口令、第一素数阶群关联随机数和第一时间戳发送至服务器; [0009] 接收来自服务器的根据第二参考口令和第二随机数生成的第二目标口令、根据第二随机数和设定素数阶群中的一个生成元生成的第二素数阶群关联随机数、第二时间戳,以及,根据第二时间戳、第二参考口令和第二随机数计算得到的第二密文; [0010] 根据接收到的第二目标口令和第二素数阶群关联随机数,以及预先存储的第一参考身份标识、第一身份标识、第一随机数,计算第一中间秘密值;其中,第一参考身份标识是对第一身份标识进行哈希计算得到的; [0011] 解密第二密文,并在解密验证通过的情况下,根据第一中间秘密值、第一目标口令、第一素数阶群关联随机数、第二目标口令、第二素数阶群关联随机数,计算得到第一会话密钥。 [0012] 根据示例性的实施方式中的第二方面,提供一种基于口令的认证密钥协商方法,应用于服务器,该方法包括: [0013] 接收来自客户端的第一目标口令、第一素数阶群关联随机数和第一时间戳; [0014] 根据第二随机数和第二口令文件中的第二参考口令生成第二目标口令,以及,根据第二随机数和设定素数阶群中的一个生成元生成第二素数阶群关联随机数;其中,第二口令文件是根据服务器关联的第二口令、第二身份标识和第二随机盐值确定的; [0015] 根据接收到的第一目标口令和第一素数阶群关联随机数,以及预先存储的第二参考标识、第二身份标识、第二随机数,计算第二中间秘密值;其中,第二参考标识是对第二身份标识进行哈希计算得到的; [0016] 根据第二时间戳、第二参考口令和第二随机数计算第二密文; [0017] 将第二目标口令、第二素数阶群关联随机数、第二时间戳和第二密文发送至客户端; [0018] 接收来自客户端根据第一时间戳、第一目标口令和第一随机数生成的第一密文; [0019] 解密第一密文,并在解密验证通过的情况下,根据第二中间秘密值、第二目标口令、第二素数阶群关联随机数、第一目标口令、第一素数阶群关联随机数,计算得到第二会话密钥。 [0020] 根据示例性的实施方式中的第三方面,提供一种基于口令的认证密钥协商装置,应用户客户端,包括: [0021] 第一处理单元,用于:根据第一随机数和第一口令文件中的第一参考口令生成第一目标口令,以及,根据第一随机数和设定素数阶群中的一个生成元生成第一素数阶群关联随机数;其中,第一口令文件是根据客户端关联的第一口令、第一身份标识和第一随机盐值确定的; [0022] 第一传输单元,用于:第一目标口令、第一素数阶群关联随机数和第一时间戳发送至服务器; [0023] 第一传输单元,还用于:接收来自服务器的根据第二参考口令和第二随机数生成的第二目标口令、根据第二随机数和设定素数阶群中的一个生成元生成的第二素数阶群关联随机数、第二时间戳,以及,根据第二时间戳、第二参考口令和第二随机数计算得到的第二密文; [0024] 第一处理单元,还用于:根据接收到的第二目标口令和第二素数阶群关联随机数,以及预先存储的第一参考身份标识、第一身份标识、第一随机数,计算第一中间秘密值;其中,第一参考身份标识是对第一身份标识进行哈希计算得到的; [0025] 第一处理单元,还用于:解密第二密文,并在解密验证通过的情况下,根据第一中间秘密值、第一目标口令、第一素数阶群关联随机数、第二目标口令、第二素数阶群关联随机数,计算得到第一会话密钥。 [0026] 根据示例性的实施方式中的第四方面,提供一种基于口令的认证密钥协商装置,应用于服务器,包括: [0027] 第二传输单元,用于:接收来自客户端的第一目标口令、第一素数阶群关联随机数和第一时间戳; [0028] 第二处理单元,用于:根据第二随机数和第二口令文件中的第二参考口令生成第二目标口令,以及,根据第二随机数和设定素数阶群中的一个生成元生成第二素数阶群关联随机数;其中,第二口令文件是根据服务器关联的第二口令、第二身份标识和第二随机盐值确定的; [0029] 第二传输单元,还用于:根据接收到的第一目标口令和第一素数阶群关联随机数,以及预先存储的第二参考标识、第二身份标识、第二随机数,计算第二中间秘密值;其中,第二参考标识是对第二身份标识进行哈希计算得到的; [0030] 第二处理单元,还用于:根据第二时间戳、第二参考口令和第二随机数计算第二密文; [0031] 第二传输单元,还用于:将第二目标口令、第二素数阶群关联随机数、第二时间戳和第二密文发送至客户端; [0032] 第二传输单元,还用于:接收来自客户端根据第一时间戳、第一目标口令和第一随机数生成的第一密文; [0033] 第二处理单元,还用于:解密第一密文,并在解密验证通过的情况下,根据第二中间秘密值、第二目标口令、第二素数阶群关联随机数、第一目标口令、第一素数阶群关联随机数,计算得到第二会话密钥。 [0034] 根据示例性的实施方式中的第五方面,提供一种电子设备,包括处理器和存储器; [0035] 存储器,用于存储计算机程序指令; [0036] 处理器执行调用存储器中的计算机程序指令执行前述任意一方面中或任意一方面中的任意可能的实现方式中提供的方法。 [0037] 根据示例性的实施方式中的第六方面,本申请实施例中还提供一种计算机可读存储介质,该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现任意一方面中的任意一种设计提供的方法。 [0038] 根据示例性的实施方式中的第七方面,本申请提供了一种计算机程序产品,计算机程序产品包括计算机指令,在被计算设备执行时,计算设备执行前述任意一方面中或任意一方面中的任意可能的实现方式中提供的方法。该计算机程序产品可以为一个软件安装包,在需要使用前述任一方面或任一方面的任意可能的实现方式中提供的方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。 [0039] 本申请实施例,客户端根据关联的第一口令、第一身份标识和第一随机盐值生成第一口令文件,再根据第一随机数和第一口令文件中的第一参考口令生成第一目标口令,以及,根据第一随机数和设定素数阶群中的一个生成元生成第一素数阶群关联随机数。这样的设计,存储的是口令文件而不是明文口令,并且,口令文件中包括了口令、身份标识和随机盐值等元素,由于攻击方不知道随机盐值,即使口令文件被泄露,协议也能抵抗预计算攻击,防止攻击方拿到口令,也就是说,客户端所在的电子设备被攻击时,仍能保护参与双方免受信息泄露带来的影响以及预计算攻击。另外,客户端第一目标口令、第一素数阶群关联随机数和第一时间戳发送至服务器;接收来自服务器的根据第二参考口令和第二随机数生成的第二目标口令、根据第二随机数和设定素数阶群中的一个生成元生成的第二素数阶群关联随机数、第二时间戳,以及,根据第二时间戳、第二参考口令和第二随机数计算得到的第二密文;根据接收到的第二目标口令和第二素数阶群关联随机数,以及预先存储的第一参考身份标识、第一身份标识、第一随机数,计算第一中间秘密值;其中,第一参考身份标识是对第一身份标识进行哈希计算得到的;解密第二密文,并在解密验证通过的情况下,根据第一中间秘密值、第一目标口令、第一素数阶群关联随机数、第二目标口令、第二素数阶群关联随机数,计算得到第一会话密钥。这样的设计,客户端和服务器在建立会话密钥的过程中无需双线性配对运算,依赖哈希等运算等轻量级运算,因此,简单高效。附图说明 [0040] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。 [0041] 图1示例性示出了本申请实施例提供的一种基于口令的认证密钥协商方法的应用场景图; [0042] 图2示例性示出了本申请实施例提供的一种基于口令的认证密钥协商方法的流程图; [0043] 图3示例性示出了本申请实施例提供的另一种基于口令的认证密钥协商方法的流程图; [0044] 图4示例性示出了本申请实施例提供的一种基于口令的认证密钥协商方法的信令图; [0045] 图5示例性示出了本申请实施例提供的一种基于口令的认证密钥协商装置的结构示意图; [0046] 图6示例性示出了本申请实施例提供的另一种基于口令的认证密钥协商装置的结构示意图; [0047] 图7示例性示出了本申请实施例提供的一种电子设备的结构示意图。 具体实施方式[0048] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。 [0049] 其中,“第一”表示客户端的相关概念,“第二”表示服务器的相关概念。为了方便理解,对本申请实施例中涉及的概念进行说明: [0050] [0051] 口令认证密钥协商可以被分为两类:对称口令认证密钥交换协商和非对称口令认证密钥交换协商。在对称的设置中,客户端与服务器通过共享相同的口令来相互验证。但是,存在一个潜在的问题,例如,如果服务器被入侵,对方可以获得本地口令数据库,然后利用任意口令来假冒其他用户进行通信。为了降低口令泄露带来的风险,非对称口令认证密钥交换的概念被提出。它允许服务器存储与口令相关的验证元,而不是明文口令。如果验证元被泄露,那么对方就需要更多的时间才能恢复口令。但是,Jarecki指出这些非对称PAKA可能方案遭受预计算攻击。由于这些协议中的验证元是口令通过确定性单向函数转换生成的,并且其中的盐值在密钥协商阶段是公开传输的。这样攻击者可以预先计算并列出所有可能的口令的函数值,也就是建立所有口令对应的表,一旦服务器被入侵,它就会找到对应用户的口令。 [0052] 为了防止预计算攻击,Jarecki等人提出强安全非对称的PAKA的方案。采用不经意伪随机函数为服务器生成口令文件,交互期间不需要将盐值从服务器端传输到用户,并且服务器信息泄露不会造成口令即时泄露的情况。Bradley等人提出另一种通用可组合的强安全非对称PAKA方案,该算法采用了一种新的条件密钥封装机制和通用的平滑投射哈希函数作为工具,交互只进行了两条消息传输量,并且避免了哈希到群上的运算。 [0053] 然而在实际应用中,口令被存储在客户端或设备上是十分常见的。例如许多用户允许他们的浏览器保存密码,同一用户下运行的任何程序都可以访问这些口令,这使他们很容易成为恶意软件的目标。因此客户端如果遭受到入侵,协议的安全性将受到威胁。尽管上述强安全的非对称口令认证密钥协商方案可以抵抗信息泄露攻击和预计算攻击,但是客户端在上述攻击下将变得脆弱。因此保护双方免受信息泄露攻击和预计算攻击是一个不容忽视的问题。另外,非对称的PAKA协议不适用于所有环境中。 [0054] 综上,现有基于口令的认证密钥协商协议仍然面临以下问题:(1)现有对称PAKA协议存在口令泄露的风险;(2)现有强安全的非对称PAKA协议中,客户端仍然存在预计算攻击,并且非对称环境下的方案应用局限;(3)大多数PAKA协议不提供身份隐私保护。因此,如何设计一个保护双方免受信息泄露攻击和预计算攻击,且满足身份隐私保护的对称口令认证密钥协商方案是一个值得密切关切的问题 [0055] 为此,本申请实施例提供了一种基于口令的认证密钥协商方法,该方法中,在初始化阶段,系统设置公共参数。在口令文件生成阶段,由于该阶段处于离线阶段,参与双方提前计算得到口令文件。口令文件由口令、盐值和身份派生。它包含两个元素,其中一个由口令哈希和盐值计算所得,另一个由盐值哈希和参与方身份计算。在会话密钥协商阶段,用户设备之间的交互是在线进行的。用户设备各自选取临时密钥,然后检索各自的口令文件,通过口令文件和临时密钥生成相同的临时秘密值,然后验证双方身份并生成一个共享的会话密钥。这样的设计,提供身份隐私保护,且能够抵抗信息泄露攻击和预计算攻击。 [0056] 在介绍完本申请实施例的设计思想之后,下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。 [0057] 参考图1,示出了一种基于口令的认证密钥协商方法的应用场景图,其中,11为部署有客户端的电子设备,12为服务器。可选的,在客户端与服务器协商密钥的场景中,协商后的密钥可以用来验证用户访问客户端。另外,本申请实施例还可以适用于两个客户端进行密钥协商,协商后的密钥可以用来进行数据传输等。图1只是举例说明,并不形成具体的限定。 [0058] 为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。 [0059] 下面结合图1所示的应用场景,参考图2示出的一种基于口令的认证密钥协商方法的流程图,该方法应用于客户端,对本申请实施例提供的技术方案进行说明。 [0060] S201:客户端根据第一随机数和第一口令文件中的第一参考口令生成第一目标口令,以及,根据第一随机数和设定素数阶群中的一个生成元生成第一素数阶群关联随机数。 [0061] 其中,第一口令文件是根据客户端关联的第一口令、第一身份标识和第一随机盐值确定的。 [0062] S202:客户端将第一目标口令、第一素数阶群关联随机数和第一时间戳发送至服务器。 [0063] S203:客户端接收来自服务器的根据第二参考口令和第二随机数生成的第二目标口令、根据第二随机数和设定素数阶群中的一个生成元生成的第二素数阶群关联随机数、第二时间戳,以及,根据第二时间戳、第二参考口令和第二随机数计算得到的第二密文。 [0064] S204:客户端根据接收到的第二目标口令和第二素数阶群关联随机数,以及预先存储的第一参考身份标识、第一身份标识、第一随机数,计算第一中间秘密值。 [0065] 其中,第一参考身份标识是对第一身份标识进行哈希计算得到的。 [0066] S205:客户端解密第二密文,并在解密验证通过的情况下,根据第一中间秘密值、第一目标口令、第一素数阶群关联随机数、第二目标口令、第二素数阶群关联随机数,计算得到第一会话密钥。 [0067] 本申请实施例,客户端根据关联的第一口令、第一身份标识和第一随机盐值生成第一口令文件,再根据第一随机数和第一口令文件中的第一参考口令生成第一目标口令,以及,根据第一随机数和设定素数阶群中的一个生成元生成第一素数阶群关联随机数。这样的设计,存储的是口令文件而不是明文口令,并且,口令文件中包括了口令、身份标识和随机盐值等元素,由于攻击方不知道随机盐值,即使口令文件被泄露,协议也能抵抗预计算攻击,防止攻击方拿到口令,也就是说,客户端所在的电子设备被攻击时,仍能保护参与双方免受信息泄露带来的影响以及预计算攻击。另外,客户端第一目标口令、第一素数阶群关联随机数和第一时间戳发送至服务器;接收来自服务器的根据第二参考口令和第二随机数生成的第二目标口令、根据第二随机数和设定素数阶群中的一个生成元生成的第二素数阶群关联随机数、第二时间戳,以及,根据第二时间戳、第二参考口令和第二随机数计算得到的第二密文;根据接收到的第二目标口令和第二素数阶群关联随机数,以及预先存储的第一参考身份标识、第一身份标识、第一随机数,计算第一中间秘密值;其中,第一参考身份标识是对第一身份标识进行哈希计算得到的;解密第二密文,并在解密验证通过的情况下,根据第一中间秘密值、第一目标口令、第一素数阶群关联随机数、第二目标口令、第二素数阶群关联随机数,计算得到第一会话密钥。这样的设计,客户端和服务器在建立会话密钥的过程中无需双线性配对运算,依赖哈希等运算等轻量级运算,因此,简单高效。 [0068] 在说明图2的协商阶段之前,首先对初始化阶段和口令文件生成阶段进行说明。 [0069] 在初始化阶段,设置一个素数阶群用G表示,阶数用q表示,g表示素数阶群G中的一个生成元。1G表示G中的单位元素,用G/1G表示除去1G的集合。κ表示安全参数,p(κ)表示κ内* p(κ)的一个多项式并且是会话密钥的长度。设置4个哈希函数如下:H:{0,1} →{0,1} ; 其中,H、H1和H3表示被建模为随机预言机的密 * p(κ) 码哈希函数,H2表示 ‑线性哈希函数。{0,1}表示任意长度的0或1比特的字符串,{0,1}表示长度为p(κ)的0或1比特的字符串; 表示小于q的任意整数。 [0070] 另外,本申请实施例中,PAKA协议包含匹配的客户端‑服务器列表,令用户 的身份标识为IDi,拥有口令文件,该口令文件由他的口令pwi、身份标识IDi和私有随机盐值派生得到。对于每一个客户端‑服务器匹配对(CA,SB),他们的口令相等,即pwA=pwB。 [0071] 在口令文件生成阶段,客户端CA随机选取一个盐值,称为第一随机盐值 该第一随机盐值可以随机化口令和哈希。计算第一参考口令 计算第一参考身份标识 而第一口令文件中包括第一参考口令hwA和第一参考身份标识 DA。 [0072] 在口令文件生成阶段,客户端CB随机选取一个盐值,称为第二随机盐值 该第二随机盐值可以随机化口令和哈希。计算第二参考口令 计算第二参考身份标识 而第二口令文件中包括第二参考口令hwB和第二参考身份标识 DB。 [0073] 结合如上的初始化阶段以及口令文件生成阶段,接下来对协商阶段进行说明。 [0074] 当客户端检测到输入口令和身份标识的操作,可以识别操作指示的口令和身份标识,并且检索第一口令文件<File=(hwA,DA)>来对操作的安全性进行验证。在操作指示的口令与第一口令文件指示的口令相同,且,操作指示的身份标识与第一口令文件指示的身份标识相同的情况下,确保当前操作是安全的。 [0075] 这样的设计,提供了身份隐私保护,传输的数据不会泄露任何与身份相关的信息。即使口令文件被泄露,在不知道盐值的情况下,也没有办法获取身份信息。 [0076] 涉及到S201,客户端CA选取一个随机数(第一随机数) 计算第一目标口令计算第一素数阶群关联随机数 [0077] 涉及到S202,客户端CA将第一目标口令XA、第一素数阶群关联随机数YA和第一时间戳TA发送至服务器SB,也就是说,将(XA,YA,TA)发送至服务器SB。 [0078] 涉及到S203,服务器SB接收来自客户端CA的(XA,YA,TA),可以识别输入的口令以及输入的身份标识,并且检索第二口令文件<File=(hwB,DB)>来进行安全验证在输入的口令与第一口令文件指示的口令相同,且,输入的身份标识与第一口令文件指示的身份标识相同的情况下,确保当前环境是安全的。 [0079] 服务器SB随机选取一个随机数(第二随机数) 计算第二目标口令计算第二素数阶群关联随机数 服务器SB检查第一时间戳TA 是否新鲜,也就是说检查当前时刻与第一时间戳TA的时间差是否小于设定时间差阈值。若小于,则确定第一时间戳TA新鲜。 [0080] 服务器SB根据接收到的第一目标口令和第一素数阶群关联随机数,以及预先存储的第二参考标识、第二身份标识、第二随机数,计算第二中间秘密值。例如,第二中间秘密值可以通过如下公式计算得到: [0081] 服务器SB根据第二时间戳、第二参考口令和第二随机数计算第二密文。例如,第二密文可以通过如下公式计算得到: [0082] 服务器SB将第二目标口令、第二素数阶群关联随机数、第二时间戳和第二密文发送至客户端,也就是,将(XB,YB,TB,EB)发送给客户端。 [0083] 涉及到S203,客户端接收来自服务器的根据第二参考口令和第二随机数生成的第二目标口令、根据第二随机数和设定素数阶群中的一个生成元生成的第二素数阶群关联随机数、第二时间戳,以及,根据第二时间戳、第二参考口令和第二随机数计算得到的第二密文。 [0084] 其中,客户端接收到(XB,YB,TB,EB),可以验证时间是否新鲜。示例性的,确定接收到第二目标口令、第二素数阶群关联随机数、第二时间戳和第二密文的时刻,与接收到的第二时间戳之间的时间差小于设定时间差阈值。 [0085] 涉及到S204,客户端根据接收到的第二目标口令和第二素数阶群关联随机数,以及预先存储的第一参考身份标识、第一身份标识、第一随机数,计算第一中间秘密值。例如,第一中间秘密值可以通过如下公式计算: [0086] 涉及到S205,客户端解密第二密文。具体的,在解密第二密文时,若同时满足条件1‑条件3,则可以确定解密验证通过: [0087] 条件1:解密得到的时间戳与接收到的第二时间戳相等。 [0088] 其中,客户端解密第二密文,得到解密结果中包括时间戳、随机数和参考口令。该条件中,确认解密得到的时间戳与第二时间戳TB相等。 [0089] 条件2:根据解密得到的随机数计算的素数阶群关联随机数与接收到的第二素数阶群关联随机数相等。 [0090] 其中,客户端根据解密得到的随机数可以计算素数阶群关联随机数,该条件中,判断该随机数与第二素数阶群关联随机数YB相等。 [0091] 条件3:根据解密得到的随机数和解密得到的参考口令计算得到的目标口令与接收到的第二目标口令相等 [0092] 其中,客户端应用哈希函数H2对解密得到的随机数和参考口令进行计算,确定得到的目标口令与第二目标口令XB是否相等。 [0093] 客户端在解密验证通过的情况下,根据第一中间秘密值、第一目标口令、第一素数阶群关联随机数、第二目标口令、第二素数阶群关联随机数,计算得到第一会话密钥。 [0094] 例如,客户端设置sidA=XA||YA||XB||YB,并计算得到第一会话密钥K1:=H(tkA||sidA)。另外,客户端计算第一密文 并将第一密文发送给服务器。最后,为了避免数据存储量过大或者后续数据调用错误,客户端可以将本次初始阶段、口令文件生成阶段以及协商阶段应用到的中间参数或者变量删除。 [0095] 服务器收到第一密文后,得到解密结果中包括时间戳、随机数和参考口令,参考上述客户端在解密第二密文时的条件1‑条件3的判断过程。服务器在解密验证通过的情况下,根据第二中间秘密值、第二目标口令、第二素数阶群关联随机数、第一目标口令、第一素数阶群关联随机数,计算得到第二会话密钥。 [0096] 例如,服务器设置sidB=XA||YA||XB||YB,并计算得到第二会话密钥K2:=H(tkB||sidB)。最后,为了避免数据存储量过大或者后续数据调用错误,服务器可以将本次初始阶段、口令文件生成阶段以及协商阶段应用到的中间参数或者变量删除。 [0097] 参考图3示出的一种基于口令的认证密钥协商方法的流程图,该方法应用于服务器,对本申请实施例提供的技术方案进行说明。 [0098] S301:服务器接收来自客户端的第一目标口令、第一素数阶群关联随机数和第一时间戳。 [0099] S302:服务器根据第二随机数和第二口令文件中的第二参考口令生成第二目标口令,以及,根据第二随机数和设定素数阶群中的一个生成元生成第二素数阶群关联随机数。 [0100] 其中,第二口令文件是根据服务器关联的第二口令、第二身份标识和第二随机盐值确定的。 [0101] S303:服务器根据接收到的第一目标口令和第一素数阶群关联随机数,以及预先存储的第二参考标识、第二身份标识、第二随机数,计算第二中间秘密值。 [0102] 其中,第二参考标识是对第二身份标识进行哈希计算得到的。 [0103] S304:服务器根据第二时间戳、第二参考口令和第二随机数计算第二密文。 [0104] S305:服务器将第二目标口令、第二素数阶群关联随机数、第二时间戳和第二密文发送至客户端。 [0105] S306:服务器接收来自客户端根据第一时间戳、第一目标口令和第一随机数生成的第一密文。 [0106] S307:服务器解密第一密文,并在解密验证通过的情况下,根据第二中间秘密值、第二目标口令、第二素数阶群关联随机数、第一目标口令、第一素数阶群关联随机数,计算得到第二会话密钥。 [0107] 本申请实施例,传输的信息不会泄露参与方的身份,因此协议中参与方的身份被保护,实现了身份隐私保护的对称口令密钥协商。能够保护参与双方都能免受信息泄露攻击和预计算攻击。另外,主要依赖哈希、异或和少量的指数运算操作等轻量级运算,简单高效。此外,该方法还具有以下优点:抵抗假冒攻击和重放攻击,前向保密、前向安全性和双向认证。 [0108] 在S301之前,为了确定操作环境的安全,服务器确定输入的口令与第二口令文件指示的口令相同,且,输入的身份标识与第二口令文件指示的身份标识相同。 [0109] 在S307中计算第二中间秘密值之前,服务器确定接收到第一目标口令、第一素数阶群关联随机数、第一时间戳和第一密文的时刻,与第一时间戳之间的时间差小于设定时间差阈值。 [0110] 涉及到S307,在解密第一密文时,若同时满足条件1‑条件3,则可以确定解密验证通过: [0111] 条件1:解密得到的时间戳与接收到的第一时间戳相等;且 [0112] 条件2:根据解密得到的随机数计算的素数阶群关联随机数与接收到的第一素数阶群关联随机数相等;且 [0113] 条件3:根据解密得到的随机数和解密得到的参考口令计算得到的目标口令与接收到的第一目标口令相等。 [0114] 需要说明的是,图3中各步骤的实现方式可参见图2各步骤,这里不赘述。 [0115] 为了使本申请的技术方案更完善,图4为本申请实施例提供的一种基于口令的认证密钥协商方法的信令图,图4至少包括如下步骤: [0116] S401:客户端根据关联的第一口令、第一身份标识和第一随机盐值生成第一口令文件。 [0117] S402:客户端根据第一随机数和第一口令文件中的第一参考口令生成第一目标口令,以及,根据第一随机数和设定素数阶群中的一个生成元生成第一素数阶群关联随机数。 [0118] S403:客户端将第一目标口令、第一素数阶群关联随机数和第一时间戳发送至服务器。 [0119] S404:服务器根据服务器关联的第二口令、第二身份标识和第二随机盐值生成第二口令文件。 [0120] S405:服务器根据第二随机数和第二口令文件中的第二参考口令生成第二目标口令,以及,根据第二随机数和设定素数阶群中的一个生成元生成第二素数阶群关联随机数。 [0121] S406:服务器根据接收到的第一目标口令和第一素数阶群关联随机数,以及预先存储的第二参考标识、第二身份标识、第二随机数,计算第二中间秘密值。 [0122] S407:服务器根据第二时间戳、第二参考口令和第二随机数计算第二密文。 [0123] S408:服务器将第二目标口令、第二素数阶群关联随机数、第二时间戳和第二密文发送至客户端。 [0124] S409:客户端解密第二密文,并在解密验证通过的情况下,根据第一中间秘密值、第一目标口令、第一素数阶群关联随机数、第二目标口令、第二素数阶群关联随机数,计算得到第一会话密钥。 [0125] S410:客户端根据第一时间戳、第一目标口令和第一随机数生成第一密文。 [0126] S411:客户端将第一密文发送至服务器。 [0127] S412:服务器解密第一密文,并在解密验证通过的情况下,根据第二中间秘密值、第二目标口令、第二素数阶群关联随机数、第一目标口令、第一素数阶群关联随机数,计算得到第二会话密钥。 [0128] 需要说明的是,各步骤之间的先后顺序只是举例说明,并不形成明显的限定。例如,客户端和服务器生成口令文件的过程可一先一后,也可同时。 [0129] 本申请实施例,从功能特性和安全性方面分析,本发明方法能够抵抗离线口令猜测攻击、重放攻击、服务器泄露攻击、双方信息泄露攻击和预计算攻击,并且提供了双向认证、完美前向安全和身份隐私保护功能。从计算开销方面分析,本方法无论在口令文件生成阶段还是密钥协商阶段,本方法主要采用轻量级运算,包含少数指数运算、普通哈希运算和异或运算。与大多数PAKA协议采用的配对运算、群上映射到点的哈希运算相比,本方法大大减少了计算量和计算耗时。因此,本方法在安全性和计算成本上都具有较好的优势和实用性。 [0130] 如图5所示,基于相同的发明构思,本申请实施例提供一种基于口令的认证密钥协商装置,应用户客户端。该装置包括第一处理单元51和第一传输单元52。 [0131] 第一处理单元51,用于:根据第一随机数和第一口令文件中的第一参考口令生成第一目标口令,以及,根据第一随机数和设定素数阶群中的一个生成元生成第一素数阶群关联随机数;其中,第一口令文件是根据客户端关联的第一口令、第一身份标识和第一随机盐值确定的; [0132] 第一传输单元52,用于:第一目标口令、第一素数阶群关联随机数和第一时间戳发送至服务器; [0133] 第一传输单元52,还用于:接收来自服务器的根据第二参考口令和第二随机数生成的第二目标口令、根据第二随机数和设定素数阶群中的一个生成元生成的第二素数阶群关联随机数、第二时间戳,以及,根据第二时间戳、第二参考口令和第二随机数计算得到的第二密文; [0134] 第一处理单元51,还用于:根据接收到的第二目标口令和第二素数阶群关联随机数,以及预先存储的第一参考身份标识、第一身份标识、第一随机数,计算第一中间秘密值;其中,第一参考身份标识是对第一身份标识进行哈希计算得到的; [0135] 第一处理单元51,还用于:解密第二密文,并在解密验证通过的情况下,根据第一中间秘密值、第一目标口令、第一素数阶群关联随机数、第二目标口令、第二素数阶群关联随机数,计算得到第一会话密钥。 [0136] 在一种可选的实施方式中,第一处理单元51具体用于,在解密第二密文时,通过如下方式确定解密验证通过: [0137] 解密得到的时间戳与接收到的第二时间戳相等;且 [0138] 根据解密得到的随机数计算的素数阶群关联随机数与接收到的第二素数阶群关联随机数相等;且 [0139] 根据解密得到的随机数和解密得到的参考口令计算得到的目标口令与接收到的第二目标口令相等。 [0140] 在一种可选的实施方式中,根据第一随机数和第一口令文件中的第一参考口令生成第一目标口令之前,第一处理单元51还用于: [0141] 客户端响应于输入口令和身份标识的操作,确定操作指示的口令与第一口令文件指示的口令相同,且,操作指示的身份标识与第一口令文件指示的身份标识相同。 [0142] 在一种可选的实施方式中,计算第一中间秘密值之前,第一处理单元51还用于: [0143] 确定接收到第二目标口令、第二素数阶群关联随机数、第二时间戳和第二密文的时刻,与接收到的第二时间戳之间的时间差小于设定时间差阈值。 [0144] 由于该装置即是本申请实施例中的方法中的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。 [0145] 如图6所示,基于相同的发明构思,本申请实施例提供一种基于口令的认证密钥协商装置,应用于服务器。该装置包括第二传输单元61和第二处理单元62。 [0146] 第二传输单元61,用于:接收来自客户端的第一目标口令、第一素数阶群关联随机数和第一时间戳; [0147] 第二处理单元62,用于:根据第二随机数和第二口令文件中的第二参考口令生成第二目标口令,以及,根据第二随机数和设定素数阶群中的一个生成元生成第二素数阶群关联随机数;其中,第二口令文件是根据服务器关联的第二口令、第二身份标识和第二随机盐值确定的; [0148] 第二传输单元61,还用于:根据接收到的第一目标口令和第一素数阶群关联随机数,以及预先存储的第二参考标识、第二身份标识、第二随机数,计算第二中间秘密值;其中,第二参考标识是对第二身份标识进行哈希计算得到的; [0149] 第二处理单元62,还用于:根据第二时间戳、第二参考口令和第二随机数计算第二密文; [0150] 第二传输单元61,还用于:将第二目标口令、第二素数阶群关联随机数、第二时间戳和第二密文发送至客户端; [0151] 第二传输单元61,还用于:接收来自客户端根据第一时间戳、第一目标口令和第一随机数生成的第一密文; [0152] 第二处理单元62,还用于:解密第一密文,并在解密验证通过的情况下,根据第二中间秘密值、第二目标口令、第二素数阶群关联随机数、第一目标口令、第一素数阶群关联随机数,计算得到第二会话密钥 [0153] 在一种可选的实施方式中,第二处理单元62具体用于,在解密第一密文时,通过如下方式确定解密验证通过: [0154] 解密得到的时间戳与接收到的第一时间戳相等;且 [0155] 根据解密得到的随机数计算的素数阶群关联随机数与接收到的第一素数阶群关联随机数相等;且 [0156] 根据解密得到的随机数和解密得到的参考口令计算得到的目标口令与接收到的第一目标口令相等。 [0157] 在一种可选的实施方式中,根据第二随机数和第二口令文件中的第二参考口令生成第二目标口令之前,第二处理单元62还用于: [0158] 服务器确定输入的口令与第二口令文件指示的口令相同,且,输入的身份标识与第二口令文件指示的身份标识相同。 [0159] 在一种可选的实施方式中,计算第二中间秘密值之前,第二处理单元62还用于: [0160] 确定接收到第一目标口令、第一素数阶群关联随机数、第一时间戳和第一密文的时刻,与第一时间戳之间的时间差小于设定时间差阈值。 [0161] 由于该装置即是本申请实施例中的方法中的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。 [0162] 基于与上述基于口令的认证密钥协商方法相同的发明构思,本申请实施例还提供了一种电子设备,该电子设备具体(可以为智能设备内部的控制设备或控制系统,也可以是与智能设备通信的外部设备,如)可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)、服务器等。例如,电子设备为桌面计算机,则客户端可以部署在桌面计算机。如图7所示,该电子设备可以包括处理器71和存储器72。 [0163] 处理器71可以是通用处理器,例如中央处理器(CPU)、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。 [0164] 存储器72作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random Access Memory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read‑Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器72还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。 [0165] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;上述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于:移动存储设备、随机存取存储器(RAM,Random Access Memory)、磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等各种可以存储程序代码的介质。 [0166] 或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例方法的全部或部分。而前述的存储介质包括:移动存储设备、随机存取存储器(RAM,Random Access Memory)、磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等各种可以存储程序代码的介质。 [0167] 基于同一发明构思,本申请实施例还提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行如前文论述任一的页面切换方法。由于上述计算机程序产品解决问题的原理与页面切换方法相似,因此上述计算机程序产品的实施可以参见方法的实施,重复之处不再赘述。 [0168] 以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本申请实施例的方法,不应理解为对本申请实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本申请实施例的保护范围之内。 |