CN112738038A - 一种基于非对称口令认证的密钥协商的方法和装置 - Google Patents
一种基于非对称口令认证的密钥协商的方法和装置 Download PDFInfo
- Publication number
- CN112738038A CN112738038A CN202011498155.4A CN202011498155A CN112738038A CN 112738038 A CN112738038 A CN 112738038A CN 202011498155 A CN202011498155 A CN 202011498155A CN 112738038 A CN112738038 A CN 112738038A
- Authority
- CN
- China
- Prior art keywords
- public key
- password
- temporary
- key
- secret
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000004891 communication Methods 0.000 claims abstract description 143
- 238000004422 calculation algorithm Methods 0.000 claims description 103
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 3
- 150000001875 compounds Chemical class 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 17
- 230000009977 dual effect Effects 0.000 abstract 1
- 230000003993 interaction Effects 0.000 abstract 1
- 238000012790 confirmation Methods 0.000 description 5
- 238000009795 derivation Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 150000003839 salts Chemical class 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0442—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Power Engineering (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种基于非对称口令认证的密钥协商的方法和装置,通信双方分别拥有自己的公私钥对,并且保存对方公钥,保存不同的口令,通过一轮信息交互,协商出所需长度的共享密钥。在密钥协商的过程中,本发明实现了基于私钥和口令的双重身份认证,比单一的口令认证密钥协商更加安全,同时又比基于私钥认证的密钥协商更加适用于口令认证的互联网应用场景。而且,本发明使用的口令是非对称的,能够有效防止对称口令情况下服务端口令泄露而导致的所有客户端口令泄露的安全问题。
Description
技术领域
本发明涉及信息安全领域,具体涉及一种基于非对称口令认证的密钥协商的方法和装置。
背景技术
密钥交换协议,指的是通信双方通过不安全的信道传递消息,根据传递的消息计算出一个共享的秘密值,该秘密值可用于计算共享密钥,用于后续的安全通信。常见的密钥交换算法有DH密钥交换算法,该算法可以满足通信双方在完全没有对方任何预先消息的条件下通过不安全信道创建一个共享密钥。DH(Diffie–Hellman)算法的流程是,通信双方各自建立一个临时公私钥对,并把临时公钥公开传递给对方;双方利用己方的临时私钥和对方传递过来的临时公钥,计算出一个共享的秘密值。DH算法是基于离散对数困难问题,类似地,基于椭圆曲线(Elliptic Curve Cryptography,ECC)上的离散对数困难问题,产生了ECDH算法。ECDH算法的流程和DH算法的流程是一致的。然而,DH和ECDH算法都缺乏身份认证,因此都无法抵抗中间人攻击。在实际使用过程中,DH和ECDH算法都需要与其他签名算法配合,靠签名算法实现身份认证。
基于口令的密钥交换算法一定程度上解决了上述身份认证的问题。国际上的SPAKE2算法是一个对称口令认证的密钥交换协议。SPAKE2算法本质上是在DH算法的基础上,加入了口令认证的部分。SPAKE2算法中双方使用的口令是相同的,在此基础上发展而来的SPAKE2+算法则引入了不对称的口令认证,也就是说,通信双方用于实现身份认证的口令知识是不同的,在协议的实施过程中只有一方直接使用口令,另一方使用校验值,校验值可以在线下初始化过程中通过口令进行计算。基于口令认证的密钥交换算法在物联网中有着非常广泛的应用前景,如车联网中数字车钥匙和车首次配对过程中安全通道的建立,实际生活中有非常多的基于一个简单口令建立一个更安全的通信通道的需求,然而目前我们缺少国产的口令认证的密钥交换协议。
国密SM2算法密钥交换协议适用于商用密码应用中的密钥交换,可以满足通信双方经过两次或者三次信息传递过程得到一个双方共同决定的共享密钥。SM2算法密钥交换协议也需要双方互相传递一个临时公钥,然后用己方的私钥、己方的临时公私密钥对、对方的公钥、对方的临时公钥来计算一个只有他们知道的秘密值,由该秘密值计算出共享密钥。该共享密钥通常用于某个对称密码算法中。SM2算法密钥交换协议可以用于密钥管理和协商。但是国密SM2算法并不适用于口令认证的密钥协商应用场景。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于非对称口令认证的密钥协商的方法和装置,一是提供了一种国产的口令认证密钥交换协议,二是采用非对称的口令认证,能有效防止对称口令情况下服务端口令的泄露而导致的所有客户端口令泄露的安全问题。
为实现上述目的,本发明采用的技术方案如下:
一种基于非对称口令认证的密钥协商的方法,包括以下步骤:
S100、第一通信方产生一个随机数作为第一临时私钥,基于椭圆曲线的基点和所述第一临时私钥得到对应的第一临时公钥,基于所述椭圆曲线的第一公开点和第一秘密口令得到第一口令公钥,基于所述第一临时公钥和所述第一口令公钥得到第一组合公钥,将所述第一组合公钥传输给第二通信方;
S200、所述第二通信方产生一个随机数作为第二临时私钥,基于所述椭圆曲线的基点和所述第二临时私钥得到对应的第二临时公钥,基于所述椭圆曲线的第二公开点和所述第一秘密口令得到第二口令公钥,基于所述第二临时公钥和所述第二口令公钥得到第二组合公钥,将所述第二组合公钥传输给所述第一通信方;
S300、所述第一通信方接收所述第二组合公钥,基于所述椭圆曲线的第二公开点和所述第一秘密口令计算出所述第二口令公钥,基于所述第二组合公钥和所述第二口令公钥得到所述第二通信方的所述第二临时公钥,基于所述第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,计算得到秘密值Z,基于第二秘密口令和所述第二临时公钥得到秘密值V,基于所述秘密值Z和所述秘密值V,使用约定的KDF算法或者Hash算法生成所需长度的共享密钥;
S400、所述第二通信方接收所述第一组合公钥,基于所述椭圆曲线的第一公开点和所述第一秘密口令计算出所述第一口令公钥,基于所述第一组合公钥和所述第一口令公钥得到所述第一通信方的所述第一临时公钥,基于所述第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,计算得到所述秘密值Z,基于第三秘密口令和所述第二临时私钥得到所述秘密值V,基于所述秘密值Z和所述秘密值V,使用约定的所述KDF算法或者所述Hash算法生成所需长度的所述共享密钥;
其中,所述基点、所述第一公开点、所述第二公开点为选定的有限域上的所述椭圆曲线的三个随机点,所述三个随机点生成的子群的大小接近或者等于所述椭圆曲线本身所构成的群的大小;所述第一秘密口令和所述第二秘密口令是所述选定的有限域上的两个随机数,满足大于零并且小于所述椭圆曲线的阶,所述第三秘密口令是在初始化阶段由所述第二秘密口令乘以所述基点得到;其中,所述第一秘密口令和所述第二秘密口令由所述第一通信方拥有,称为口令;所述第一秘密口令和所述第三秘密口令由所述第二通信方拥有,称为校验值。
进一步,如上所述的方法,S100中,所述基于椭圆曲线的基点和所述第一临时私钥得到对应的第一临时公钥,包括:
将所述第一临时私钥与所述基点进行点乘运算,得到所述第一临时公钥;
所述基于所述椭圆曲线的第一公开点和第一秘密口令得到第一口令公钥,包括:
将所述第一秘密口令与所述第一公开点进行点乘运算,得到所述第一口令公钥;
所述基于所述第一临时公钥和所述第一口令公钥得到第一组合公钥,包括:
将所述第一临时公钥和所述第一口令公钥进行组合运算,得到所述第一组合公钥,其中,所述第一组合公钥不是无穷远点;
如果所述第一组合公钥是无穷远点,则需要重新生成所述第一临时私钥。
进一步,如上所述的方法,S200中,所述基于所述椭圆曲线的基点和所述第二临时私钥得到对应的第二临时公钥,包括:
将所述第二临时私钥与所述基点进行点乘运算,得到所述第二临时公钥;
所述基于所述椭圆曲线的第二公开点和所述第一秘密口令得到第二口令公钥,包括:
将所述第一秘密口令与所述第二公开点进行点乘运算,得到所述第二口令公钥;
所述基于所述第二临时公钥和所述第二口令公钥得到第二组合公钥,包括:
将所述第二临时公钥和所述第二口令公钥进行组合运算,得到所述第二组合公钥,其中,所述第二组合公钥不是无穷远点;
如果所述第二组合公钥是无穷远点,则需要重新生成所述第二临时私钥。
进一步,如上所述的方法,S300中,所述基于椭圆曲线的第二公开点和所述第一秘密口令计算出所述第二口令公钥,包括:
将所述第一秘密口令和所述第二公开点进行点乘运算,得到所述第二口令公钥;
所述基于第二组合公钥和所述第二口令公钥得到所述第二临时公钥,包括:
将所述第二组合公钥和所述第二口令公钥进行组合运算的逆运算,得到所述第二临时公钥;
所述基于第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,计算得到秘密值Z,包括:
将所述第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,经过F函数运算,计算得到秘密值Z;
所述基于第二秘密口令和所述第二临时公钥得到秘密值V,包括:
将所述第二秘密口令与所述第二临时公钥进行点乘运算,得到所述秘密值V。
进一步,如上所述的方法,S400中,所述基于椭圆曲线的第一公开点和第一秘密口令计算出所述第一口令公钥,包括:
将所述第一秘密口令和所述第一公开点进行点乘运算,得到所述第一口令公钥;
所述基于第一组合公钥和所述第一口令公钥得到所述第一临时公钥,包括:
将所述第一组合公钥和所述第一口令公钥进行组合运算的逆运算,得到所述第一临时公钥;
所述基于第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,计算得到秘密值Z,包括:
将所述第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,经过F函数运算,计算得到秘密值Z;
所述基于第三秘密口令和所述第二临时私钥得到所述秘密值V,包括:
将所述第二临时私钥与所述第三秘密口令进行点乘运算,得到所述秘密值V。
进一步,如上所述的方法,所述组合运算包括:点加运算和点减运算;
所述组合运算的逆运算包括:点减运算和点加运算;
如果所述组合运算是点加运算,则所述组合运算的逆运算为点减运算;如果所述组合运算是点减运算,则所述组合运算的逆运算为点加运算。
进一步,如上所述的方法,所述F函数运算包括:
F函数须满足以下条件:
a.F函数作用在己方私钥、己方公钥、己方临时私钥、己方临时公钥、对方临时公钥、复方公钥上的结果是一致的,也就是通信双方通过F函数生成同一个秘密值Z;
b.双方临时公钥和双方公钥须非平凡地参与计算;
c.须不影响椭圆曲线对应的安全强度。
进一步,如上所述的方法,所述方法还包括:
S500、所述第一通信方和所述第二通信方通过加一轮信息传递和密码算法,以确认双方生成了相同的共享密钥;所述密码算法包括所述Hash算法、MAC算法和对称密码算法。
一种基于非对称口令认证的密钥协商的装置,包括:进行密钥协商的第一通信方和第二通信方;
所述第一通信方用于,产生一个随机数作为第一临时私钥,基于椭圆曲线的基点和所述第一临时私钥得到对应的第一临时公钥,基于所述椭圆曲线的第一公开点和第一秘密口令得到第一口令公钥,基于所述第一临时公钥和所述第一口令公钥得到第一组合公钥,将所述第一组合公钥传输给所述第二通信方;
所述第二通信方用于,产生一个随机数作为第二临时私钥,基于所述椭圆曲线的基点和所述第二临时私钥得到对应的第二临时公钥,基于所述椭圆曲线的第二公开点和所述第一秘密口令得到第二口令公钥,基于所述第二临时公钥和所述第二口令公钥得到第二组合公钥,将所述第二组合公钥传输给所述第一通信方;
所述第一通信方用于,接收所述第二组合公钥,基于所述椭圆曲线的第二公开点和所述第一秘密口令计算出所述第二口令公钥,基于所述第二组合公钥和所述第二口令公钥得到所述第二通信方的所述第二临时公钥,基于所述第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,计算得到秘密值Z,基于第二秘密口令和所述第二临时公钥得到秘密值V,基于所述秘密值Z和所述秘密值V,使用约定的KDF算法或者Hash算法生成所需长度的共享密钥;
所述第二通信方用于,接收所述第一组合公钥,基于所述椭圆曲线的第一公开点和所述第一秘密口令计算出所述第一口令公钥,基于所述第一组合公钥和所述第一口令公钥得到所述第一通信方的所述第一临时公钥,基于所述第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,计算得到所述秘密值Z,基于第三秘密口令和所述第二临时私钥得到所述秘密值V,基于所述秘密值Z和所述秘密值V,使用约定的所述KDF算法或者所述Hash算法生成所需长度的所述共享密钥;
其中,所述基点、所述第一公开点、所述第二公开点为选定的有限域上的所述椭圆曲线的三个随机点,所述三个随机点生成的子群的大小接近或者等于所述椭圆曲线本身所构成的群的大小;所述第一秘密口令和所述第二秘密口令是所述选定的有限域上的两个随机数,满足大于零并且小于所述椭圆曲线的阶,所述第三秘密口令是在初始化阶段由所述第二秘密口令乘以所述基点得到;其中,所述第一秘密口令和所述第二秘密口令由所述第一通信方拥有,称为口令;所述第一秘密口令和所述第三秘密口令由所述第二通信方拥有,称为校验值。
进一步,如上所述的装置,所述第一通信方中,所述基于椭圆曲线的基点和所述第一临时私钥得到对应的第一临时公钥,包括:
将所述第一临时私钥与所述基点进行点乘运算,得到所述第一临时公钥;
所述基于所述椭圆曲线的第一公开点和第一秘密口令得到第一口令公钥,包括:
将所述第一秘密口令与所述第一公开点进行点乘运算,得到所述第一口令公钥;
所述基于所述第一临时公钥和所述第一口令公钥得到第一组合公钥,包括:
将所述第一临时公钥和所述第一口令公钥进行组合运算,得到所述第一组合公钥,其中,所述第一组合公钥不是无穷远点;
如果所述第一组合公钥是无穷远点,则需要重新生成所述第一临时私钥;
所述第二通信方中,所述基于所述椭圆曲线的基点和所述第二临时私钥得到对应的第二临时公钥,包括:
将所述第二临时私钥与所述基点进行点乘运算,得到所述第二临时公钥;
所述基于所述椭圆曲线的第二公开点和所述第一秘密口令得到第二口令公钥,包括:
将所述第一秘密口令与所述第二公开点进行点乘运算,得到所述第二口令公钥;
所述基于所述第二临时公钥和所述第二口令公钥得到第二组合公钥,包括:
将所述第二临时公钥和所述第二口令公钥进行组合运算,得到所述第二组合公钥,其中,所述第二组合公钥不是无穷远点;
如果所述第二组合公钥是无穷远点,则需要重新生成所述第二临时私钥;
所述第一通信方中,所述基于椭圆曲线的第二公开点和所述第一秘密口令计算出所述第二口令公钥,包括:
将所述第一秘密口令和所述第二公开点进行点乘运算,得到所述第二口令公钥;
所述基于第二组合公钥和所述第二口令公钥得到所述第二临时公钥,包括:
将所述第二组合公钥和所述第二口令公钥进行组合运算的逆运算,得到所述第二临时公钥;
所述基于第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,计算得到秘密值Z,包括:
将所述第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,经过F函数运算,计算得到秘密值Z;
所述基于第二秘密口令和所述第二临时公钥得到秘密值V,包括:
将所述第二秘密口令与所述第二临时公钥进行点乘运算,得到所述秘密值V;
所述第二通信方中,所述基于椭圆曲线的第一公开点和第一秘密口令计算出所述第一口令公钥,包括:
将所述第一秘密口令和所述第一公开点进行点乘运算,得到所述第一口令公钥;
所述基于第一组合公钥和所述第一口令公钥得到所述第一临时公钥,包括:
将所述第一组合公钥和所述第一口令公钥进行组合运算的逆运算,得到所述第一临时公钥;
所述基于第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,计算得到秘密值Z,包括:
将所述第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,经过F函数运算,计算得到秘密值Z;
所述基于第三秘密口令和所述第二临时私钥得到所述秘密值V,包括:
将所述第二临时私钥与所述第三秘密口令进行点乘运算,得到所述秘密值V。
本发明的有益效果在于:本发明所提供的方法和装置,能够完成基于私钥和口令知识的双重身份认证,有效抵抗中间人攻击,比现有的口令认证密钥交换协议更加安全,同时也能够满足通信双方利用口令来协商共享密钥的应用场景的需求。更进一步,非对称的口令的使用,能有效防止对称口令情况下服务端口令的泄露而导致的所有客户端口令泄露的安全问题。
附图说明
图1为本发明实施例中提供的一种基于非对称口令认证的密钥协商的方法的流程示意图;
图2为本发明实施例中提供的一种基于非对称口令认证的密钥协商的方法的流程示意图。
具体实施方式
下面结合说明书附图与具体实施方式对本发明做进一步的详细说明。
本发明提供一种在椭圆曲线上实现非对称口令认证密钥交换协议的方案。两个用户通过交互的信息传递,用己方的公私密钥对、对方的公钥以及口令知识来商定一个只有他们知道的共享密钥。这个共享密钥通常作为某个对称密码算法密钥,用于后续建立一个安全强度更高的通信通道。在使用口令的时候,一方直接使用口令,另外一方使用由口令生成的校验值。
如图1所示,本发明实施例提供一种基于非对称口令认证的密钥协商的方法。选定有限域上的一条椭圆曲线以及三个属于该椭圆曲线的随机点,要求这些点能生成一个很大的子群,这个子群最好和椭圆曲线本身所构成的群一样大或者比较接近。记这三个点为G、M、N。其中,G为椭圆曲线的基点,其阶为素数n,M、N作为公开的点参数。通信的双方为A和B,他们的私钥分别为dA、dB,公钥为PA、PB。通信方A拥有秘密口令w0、w1∈[1,n-1],而通信方B拥有校验值w0∈[1,n-1],L=[w1]G,其中[]表示点乘运算。一般情况下,秘密口令w0、w1可以通过双方共享的短口令串联公共参数(如双方公开信息或者盐值)经过Hash函数计算,然后通过处理到合适的范围得到。
当通信方A需要和通信方B协商密钥时,执行以下步骤:
S100包括:
S101:通信方A产生一个随机数作为第一临时私钥;
S102:基于椭圆曲线的基点和第一临时私钥得到对应的第一临时公钥;
S103:基于椭圆曲线的第一公开点和第一秘密口令得到第一口令公钥;
S104:基于第一临时公钥和第一口令公钥得到第一组合公钥;
S105:将第一组合公钥传输给通信方B。
通信方A产生一个随机数rA∈[1,n-1]作为临时私钥,并将其乘以基点G得到RA=[rA]G作为临时公钥;将秘密口令w0乘以公开点M得到口令公钥[w0]M;由临时公钥和口令公钥生成组合公钥X,并将其传输给B。A需要确保X并不是无穷远点,否则需重新生成临时私钥。
S200包括:
S201:通信方B产生一个随机数作为第二临时私钥;
S202:基于椭圆曲线的基点和第二临时私钥得到对应的第二临时公钥;
S203:基于椭圆曲线的第二公开点和第一秘密口令得到第二口令公钥;
S204:基于第二临时公钥和第二口令公钥得到第二组合公钥;
S205:将第二组合公钥传输给通信方A。
通信方B产生一个随机数rB∈[1,n-1]作为临时私钥,并将其乘以基点G得到RB=[rB]G作为临时公钥;将秘密口令w0乘以公开点N得到口令公钥[w0]N;由临时公钥和口令公钥生成组合公钥Y,并将其传输给A。B需要确保Y并不是无穷远点,否则需重新生成临时私钥。
S300包括:
S301:通信方A接收第二组合公钥,基于椭圆曲线的第二公开点和第一秘密口令计算出第二口令公钥;
S302:基于第二组合公钥和第二口令公钥,得到通信方B的第二临时公钥;
S303:基于通信方A的公私钥对、第一临时私钥、第一临时公钥、通信方B的公钥、第二临时公钥,计算得到秘密值Z;
S304:基于第二秘密口令和第二临时公钥,得到秘密值V;
S305:基于秘密值Z和秘密值V,使用约定KDF算法或者Hash算法生成所需长度的共享密钥。
通信方A接收到组合公钥Y后,计算出B的口令公钥[w0]N,由Y中恢复出B的临时公钥RB;A由己方公私钥对(dA,PA)、己方临时公私钥对(rA,RA)、对方临时公钥RB、对方公钥PB计算出一个秘密值Z;A将秘密口令w1乘以RB得到另一个秘密值V=[w1]RB;A可以使用约定的KDF算法或者Hash算法由秘密值Z、V和一些公开参数生成所需长度的共享密钥。
S400包括:
S401:通信方B接收第一组合公钥,基于椭圆曲线的第一公开点和第一秘密口令计算出第一口令公钥;
S402:基于第一组合公钥和第一口令公钥,得到通信方A的第一临时公钥;
S403:基于通信方B的公私钥对、第二临时私钥、第二临时公钥、通信方A的公钥、第一临时公钥,计算得到秘密值Z;
S404:基于第三秘密口令和第二临时私钥,得到秘密值V;
S405:基于秘密值Z和秘密值V,使用约定KDF算法或者Hash算法生成所需长度的共享密钥。
通信方B接收到组合公钥X后,计算出A的口令公钥[w0]M,由X中恢复出A的临时公钥RA;B由己方公私钥对(dB,PB)、己方临时公私钥对(rB,RB)、对方临时公钥RA、对方公钥PA计算出同一个秘密值Z;B将rB乘以第三秘密口令L得到另一个秘密值V=[rB]L;B可以使用相同的KDF算法或者Hash算法由该秘密值Z、V及公开参数生成所需长度的共享密钥。
通信方A、B可以利用Hash算法、MAC算法、对称密码算法等,通过加一轮信息传递,以确认双方生成了相同的共享密钥,该步骤称为密钥确认流程,是可选的。
下面进一步阐述上述步骤中可以灵活选择的部分:
1)本发明中的Hash算法可以选用常见的Hash算法,如国密SM3算法或者SHA256算法等。
2)KDF算法又叫密钥派生算法,它的作用是从一个共享的秘密比特串中派生出密钥数据。在密钥协商过程中,密钥派生算法作用在密钥交换所获共享的秘密比特串上,从中产生所需的会话密钥或进一步加密所需的密钥数据。密钥派生函数可以选择SM2算法中的KDF算法等。
3)由临时公钥和口令公钥生成组合公钥的组合运算过程,只需要满足能够从组合公钥和口令公钥反推出临时公钥,并且三者都非平凡地参与运算即可。例如,可以采用点加运算,组合公钥等于临时公钥加上口令公钥,在后续从组合公钥和口令公钥计算临时公钥的过程中,临时公钥等于组合公钥减去口令公钥;也可以采用点减运算,如果组合公钥等于临时公钥减去口令公钥,那么后续从组合公钥和口令公钥计算临时公钥的过程中,临时公钥就等于组合公钥加上口令公钥。
4)由己方公私密钥对、己方临时公私密钥对、对方临时公钥、对方公钥计算出一个秘密点的计算过程记为F函数,该函数需要满足:
a.F(dA,PA,rA,RA,RB,PB)=F(dB,PB,rB,RB,RA,PA),也就是
通信双方通过F函数生成同一个秘密值Z;
b.双方临时公钥和双方公钥须非平凡地参与计算;
c.须不影响椭圆曲线对应的安全强度。
例如,可以选择SM2算法密钥交换协议中的同一计算过程。
5)密钥确认流程只需要确保双方生成了相同的共享密钥即可,可以利用Hash算法、MAC算法、对称密码算法等作用在共享密钥以及双方都知道的其他共享信息上。
本发明主要是在SM2算法的基础上实现了非对称口令认证密钥交换协议,通过两轮或者三轮信息传递,把双方不对称的口令知识转变成安全强度更高的共享密钥。本发明的关键在于确保信息交换双方基于各自的秘密值(己方私钥、临时私钥、口令或者校验值)和公开值(双方公钥、临时公钥)能够计算出一个共同的秘密值:双方各自产生临时私钥,计算出临时公钥、口令公钥,在这两者的基础上计算出一个组合公钥并传递给对方,双方接收到对方的组合公钥后,利用口令或者校验值恢复出对方临时公钥,利用己方公私密钥对、己方临时公私密钥对、对方临时公钥、对方公钥计算出一个共同的秘密值,再利用不对称的口令知识和传递的消息计算出另一个共同的秘密值,在此基础上根据约定的算法计算出共享密钥。双方可增加一轮信息传递以确保双方已经计算出相同的共享密钥,该密钥确认流程是可选的。
如图2所示,本发明实施例还提供一种基于非对称口令认证的密钥协商的方法,当椭圆曲线参数选择为SM2椭圆曲线公钥密码算法系统参数时,Hash算法、KDF算法以及共享秘密点的生成函数F我们选择都与SM2算法密钥交换协议中一致,密钥确认流程选择直接使用Hash算法。
本发明所使用的椭圆曲线参数与SM2一致:其中,G为椭圆曲线的基点,其阶为素数n,h为余因子。此外,任意选定两个椭圆曲线上的点M、N作为公开参数。用户A的公私钥对为(dA,PA),其中dA为私钥,PA为公钥,用户B的公私钥对为(dB,PB)。ZA和ZB为公开可计算的用户A、B对应的杂凑值。假设通信方A拥有秘密口令w0、w1∈[1,n-1],而通信方B拥有校验值w0∈[1,n-1],L=[w1]G,计划协商获得的密钥数据长度为klen比特,用户A为发起方,用户B为响应方。用户A、B为了获得相同的密钥,应实现如下运算步骤:
用户A:
A1:用随机数发生器产生随机数rA∈[1,n-1];
A2:计算椭圆曲线点RA=[rA]G=(x1,y1);
A3:计算椭圆曲线点X=RA-[w0]M,如果[h]X是无穷远点,则回到A1;
A4:将X发送给用户B。
用户B:
B1:用随机数发生器产生随机数rB∈[1,n-1];
B2:计算椭圆曲线点RB=[rB]G=(x2,y2);
B3:计算椭圆曲线点Y=RB-[w0]N,如果[h]Y是无穷远点,则回到B1;
B4:计算椭圆曲线点RA=X+[w0]M;
B6:从RB中取出域元素x2,将x2的数据类型转化为整数,计算_x2=2w+(x2&(2w-1));
B7:计算tB=(dB+_x2·rB)mod n;
B8:计算椭圆曲线点Z=[h·tB](PA+[_x1]RA)=(xZ,yZ),如果Z是无穷远点,那么B协商失败;否则按照GM/T 0003-2012中给出的方法将xZ、yZ的数据类型转化为比特串;
B9:计算椭圆曲线点V=[rB]L=(xV,yV),如果V是无穷远点,那么B协商失败;否则按照GM/T 0003-2012中给出的方法将xV、yV的数据类型转化为比特串;
B10:计算KB=KDF(xZ||yZ||xV||yV||ZA||ZB,klen);
优选地,还包括:
B11:将相应数据的数据类型转化为比特串,计算SB=Hash(0x02||xZ||yZ||xV||yV||x1||y1||x2||y2||ZA||ZB||w0);
B12:将Y、SB发送给用户A。
用户A:
A5:计算椭圆曲线点RB=Y+[w0]N;
A10:计算椭圆曲线点V=[w1]RB=(xV,yV),如果V是无穷远点,那么A协商失败;否则按照GM/T 0003-2012中给出的方法将xV、yV数据类型转化为比特串;
A11:计算KA=KDF(xZ||yZ||xV||yV||ZA||ZB,klen)。
优选地,还包括:
A12:将相应数据的数据类型转化为比特串,计算S1=Hash(0x02||xZ||yZ||xV||yV||x1||y1||x2||y2||ZA||ZB||w0),并检验S1=SB是否成立,若不成立则从B到A的密钥确认失败;
A13:计算SA=Hash(0x03||xZ||yZ||xV||yV||x1||y1||x2||y2||ZA||ZB||w0),并将SA发送给用户B。
用户B:
B13:计算S2=Hash(0x03||xZ||yZ||xV||yV||x1||y1||x2||y2||ZA||ZB||w0),并检验S2=SA是否成立,若不成立则从A到B的密钥确认失败。
KA=KB即为用户A和B所协商出来的密钥值。
本发明是在国密SM2算法的基础上提出的非对称口令认证密钥交换协议,能够完成基于私钥和口令知识的双重身份认证,有效抵抗中间人攻击,比现有的口令认证密钥交换协议更加安全,同时也能够满足通信双方利用口令来协商共享密钥的应用场景的需求。本发明在国密SM2算法密钥交换协议的基础上,添加了非对称口令认证的部分,同时也能扩展到其他ECC椭圆曲线密码系统上。非对称口令认证指的是,在协议实施过程中一方直接使用口令,另外一方使用校验值,校验值可以在线下初始化过程中进行计算,由校验值不能反推出口令。口令和校验值的不对称性给予了校验值泄露一定弹性。通常情况下,客户端作为证明者的身份,直接使用口令,而服务端作为验证者使用校验值。
本发明也更能满足数字车钥匙分发等物联网的使用场景,特别是不对称口令的使用,特别适合通信双方是客户端和服务端这种不对等身份关系的网络通信服务中。尤其是服务端需要存储多个客户端的口令知识的情况下,采用非对称的口令认证,能有效防止对称口令情况下服务端口令的泄露而导致的所有客户端口令泄露的安全问题。
与已有的算法比较而言,SM2算法密钥交换协议中通信双方基于对各自私钥的掌握来实现双方的认证,最后协商出共享密钥;SPAKE2算法和SPAKE2+算法则基于的是双方都拥有的口令知识实现相互认证从而协商出共享密钥。本发明综合了以上两种算法的优点,采用的是基于对私钥以及口令知识这两个因素的掌握来实现双方的相互认证,其中一方直接使用口令,另外一方使用校验值,经过两轮或者三轮的信息交换,协商出所需求长度的共享密钥。本发明与SM2算法密钥交换协议最根本的不同点在于,在密钥协商进行信息交换的第一轮和第二轮过程中,交换的数据也就是随机数公钥部分,加入了口令的作用,以更适用于需要基于口令实现密钥交换的应用场景。本发明区别于SPAKE2算法、SPAKE2+算法的地方是,采用的是基于私钥和口令知识的双重认证,相对于仅仅根据口令进行认证,安全强度更高。另外,非对称的口令的使用,能有效防止使用校验值一方的口令的泄露。
本发明实施例还提供一种基于非对称口令认证的密钥协商的装置,包括:进行密钥协商的第一通信方和第二通信方。第一通信方用于产生一个随机数作为第一临时私钥,基于椭圆曲线的基点和第一临时私钥得到对应的第一临时公钥,基于椭圆曲线的第一公开点和第一秘密口令得到第一口令公钥,基于第一临时公钥和第一口令公钥得到第一组合公钥,将第一组合公钥传输给第二通信方。第二通信方用于产生一个随机数作为第二临时私钥,基于椭圆曲线的基点和第二临时私钥得到对应的第二临时公钥,基于椭圆曲线的第二公开点和第一秘密口令得到第二口令公钥,基于第二临时公钥和第二口令公钥得到第二组合公钥,将第二组合公钥传输给第一通信方。第一通信方用于接收第二组合公钥,计算出第二口令公钥,基于第二组合公钥和第二口令公钥得到第二通信方的第二临时公钥,基于第一通信方的公私钥对、第一临时私钥、第一临时公钥、第二通信方的公钥、第二临时公钥,计算得到秘密值Z,基于第二秘密口令和第二临时公钥得到秘密值V,基于秘密值Z、秘密值V以及公共参数,使用约定的KDF算法或者Hash算法生成所需长度的共享密钥。第二通信方用于接收第一组合公钥,计算出第一口令公钥,基于第一组合公钥和第一口令公钥得到第一通信方的第一临时公钥,基于第二通信方的公私钥对、第二临时私钥、第二临时公钥、第一通信方的公钥、第一临时公钥,计算得到秘密值Z,基于第三秘密口令和第二临时私钥得到秘密值V,基于秘密值Z、秘密值V以及公共参数,使用约定的KDF算法或者Hash算法生成所需长度的共享密钥。
其中,基点、第一公开点、第二公开点为选定的有限域上的椭圆曲线的三个随机点,三个随机点生成的子群的大小接近或者等于椭圆曲线本身所构成的群的大小。所述第一秘密口令和所述第二秘密口令是选定的有限域上的两个随机数,满足大于零并且小于椭圆曲线的阶,所述第三秘密口令是在初始化阶段由所述第二秘密口令乘以所述基点得到。其中,第一秘密口令和第二秘密口令由第一通信方拥有,称为口令;第一秘密口令和第三秘密口令由第二通信方拥有,称为校验值。
第一通信方中,基于椭圆曲线的基点和第一临时私钥得到对应的第一临时公钥,包括:
将第一临时私钥与基点进行点乘运算,得到第一临时公钥;
基于椭圆曲线的第一公开点和第一秘密口令得到第一口令公钥,包括:
将第一秘密口令与第一公开点进行点乘运算,得到第一口令公钥;
基于第一临时公钥和第一口令公钥得到第一组合公钥,包括:
将第一临时公钥和第一口令公钥进行组合运算,得到第一组合公钥,其中,第一组合公钥不是无穷远点;
如果第一组合公钥是无穷远点,则需要重新生成第一临时私钥。
第二通信方中,基于椭圆曲线的基点和第二临时私钥得到对应的第二临时公钥,包括:
将第二临时私钥与基点进行点乘运算,得到第二临时公钥;
基于椭圆曲线的第二公开点和第一秘密口令得到第二口令公钥,包括:
将第一秘密口令与第二公开点进行点乘运算,得到第二口令公钥;
基于第二临时公钥和第二口令公钥得到第二组合公钥,包括:
将第二临时公钥和第二口令公钥进行组合运算,得到第二组合公钥,其中,第二组合公钥不是无穷远点;
如果第二组合公钥是无穷远点,则需要重新生成第二临时私钥。
第一通信方中,基于椭圆曲线的第二公开点和第一秘密口令计算出第二口令公钥,包括:
将第一秘密口令和第二公开点进行点乘运算,得到第二口令公钥;
基于第二组合公钥和第二口令公钥得到第二临时公钥,包括:
将第二组合公钥和第二口令公钥进行组合运算的逆运算,得到第二临时公钥;
基于第一通信方的公私钥对、第一临时私钥、第一临时公钥、第二通信方的公钥、第二临时公钥,计算得到秘密值Z,包括:
将第一通信方的公私钥对、第一临时私钥、第一临时公钥、第二通信方的公钥、第二临时公钥,经过F函数运算,计算得到秘密值Z;
基于第二秘密口令和第二临时公钥得到秘密值V,包括:
将第二秘密口令与第二临时公钥进行点乘运算,得到秘密值V。
第二通信方中,基于椭圆曲线的第一公开点和第一秘密口令计算出第一口令公钥,包括:
将第一秘密口令和第一公开点进行点乘运算,得到第一口令公钥;
基于第一组合公钥和第一口令公钥得到第一临时公钥,包括:
将第一组合公钥和第一口令公钥进行组合运算的逆运算,得到第一临时公钥;
基于第二通信方的公私钥对、第二临时私钥、第二临时公钥、第一通信方的公钥、第一临时公钥,计算得到秘密值Z,包括:
将第二通信方的公私钥对、第二临时私钥、第二临时公钥、第一通信方的公钥、第一临时公钥,经过F函数运算,计算得到秘密值Z;
基于第三秘密口令和第二临时私钥得到秘密值V,包括:
将第二临时私钥与第三秘密口令进行点乘运算,得到秘密值V。
本发明主要是为了解决基于国密算法实现口令认证的密钥协商问题,可应用于基于一个简单口令建立一个更安全的通信通道的应用场景中,如车联网场景中数字钥匙与车辆基于口令的密钥协商。本方案相比于已有的密钥协商算法有以下优点:
1.相比于DH算法、ECDH算法,本发明能够天然抵抗中间人攻击。
2.相比于SPAKE2算法、SPAKE2+算法,本发明采用基于口令和私钥的双重认证,相比于单纯基于口令的认证,安全强度更高。
3.相比于SM2算法密钥交换协议,本发明添加了口令认证的部分,更适用于基于口令实现更高级别安全通道建立的应用场景中。
4.本发明中使用了非对称的口令:即通信一方直接使用口令,另一方使用通过口令生成的校验值。校验值是在线下初始化过程中由口令生成,并且从校验值中恢复出口令是计算上不可行的。非对称口令的使用,能够有效防止使用校验值的一方的口令泄露,该方案非常适用于有一个要与很多客户端通信并存储对应的口令知识的服务端的应用场景。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种基于非对称口令认证的密钥协商的方法,其特征在于,包括以下步骤:
S100、第一通信方产生一个随机数作为第一临时私钥,基于椭圆曲线的基点和所述第一临时私钥得到对应的第一临时公钥,基于所述椭圆曲线的第一公开点和第一秘密口令得到第一口令公钥,基于所述第一临时公钥和所述第一口令公钥得到第一组合公钥,将所述第一组合公钥传输给第二通信方;
S200、所述第二通信方产生一个随机数作为第二临时私钥,基于所述椭圆曲线的基点和所述第二临时私钥得到对应的第二临时公钥,基于所述椭圆曲线的第二公开点和所述第一秘密口令得到第二口令公钥,基于所述第二临时公钥和所述第二口令公钥得到第二组合公钥,将所述第二组合公钥传输给所述第一通信方;
S300、所述第一通信方接收所述第二组合公钥,基于所述椭圆曲线的第二公开点和所述第一秘密口令计算出所述第二口令公钥,基于所述第二组合公钥和所述第二口令公钥得到所述第二临时公钥,基于所述第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,计算得到秘密值Z,基于第二秘密口令和所述第二临时公钥得到秘密值V,基于所述秘密值Z和所述秘密值V,使用约定的KDF算法或者Hash算法生成所需长度的共享密钥;
S400、所述第二通信方接收所述第一组合公钥,基于所述椭圆曲线的第一公开点和所述第一秘密口令计算出所述第一口令公钥,基于所述第一组合公钥和所述第一口令公钥得到所述第一临时公钥,基于所述第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,计算得到所述秘密值Z,基于第三秘密口令和所述第二临时私钥得到所述秘密值V,基于所述秘密值Z和所述秘密值V,使用约定的所述KDF算法或者所述Hash算法生成所需长度的所述共享密钥;
其中,所述基点、所述第一公开点、所述第二公开点为选定的有限域上的所述椭圆曲线的三个随机点,所述三个随机点生成的子群的大小接近或者等于所述椭圆曲线本身所构成的群的大小;所述第一秘密口令和所述第二秘密口令是所述选定的有限域上的两个随机数,满足大于零并且小于所述椭圆曲线的阶,所述第三秘密口令是在初始化阶段由所述第二秘密口令乘以所述基点得到;其中,所述第一秘密口令和所述第二秘密口令由所述第一通信方拥有,称为口令;所述第一秘密口令和所述第三秘密口令由所述第二通信方拥有,称为校验值。
2.根据权利要求1所述的方法,其特征在于,S100中,所述基于椭圆曲线的基点和所述第一临时私钥得到对应的第一临时公钥,包括:
将所述第一临时私钥与所述基点进行点乘运算,得到所述第一临时公钥;
所述基于所述椭圆曲线的第一公开点和第一秘密口令得到第一口令公钥,包括:
将所述第一秘密口令与所述第一公开点进行点乘运算,得到所述第一口令公钥;
所述基于所述第一临时公钥和所述第一口令公钥得到第一组合公钥,包括:
将所述第一临时公钥和所述第一口令公钥进行组合运算,得到所述第一组合公钥,其中,所述第一组合公钥不是无穷远点;
如果所述第一组合公钥是无穷远点,则需要重新生成所述第一临时私钥。
3.根据权利要求2所述的方法,其特征在于,S200中,所述基于所述椭圆曲线的基点和所述第二临时私钥得到对应的第二临时公钥,包括:
将所述第二临时私钥与所述基点进行点乘运算,得到所述第二临时公钥;
所述基于所述椭圆曲线的第二公开点和所述第一秘密口令得到第二口令公钥,包括:
将所述第一秘密口令与所述第二公开点进行点乘运算,得到所述第二口令公钥;
所述基于所述第二临时公钥和所述第二口令公钥得到第二组合公钥,包括:
将所述第二临时公钥和所述第二口令公钥进行组合运算,得到所述第二组合公钥,其中,所述第二组合公钥不是无穷远点;
如果所述第二组合公钥是无穷远点,则需要重新生成所述第二临时私钥。
4.根据权利要求3所述的方法,其特征在于,S300中,所述基于椭圆曲线的第二公开点和所述第一秘密口令计算出所述第二口令公钥,包括:
将所述第一秘密口令和所述第二公开点进行点乘运算,得到所述第二口令公钥;
所述基于第二组合公钥和所述第二口令公钥得到所述第二临时公钥,包括:
将所述第二组合公钥和所述第二口令公钥进行组合运算的逆运算,得到所述第二临时公钥;
所述基于第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,计算得到秘密值Z,包括:
将所述第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,经过F函数运算,计算得到秘密值Z;
所述基于第二秘密口令和所述第二临时公钥得到秘密值V,包括:
将所述第二秘密口令与所述第二临时公钥进行点乘运算,得到所述秘密值V。
5.根据权利要求4所述的方法,其特征在于,S400中,所述基于椭圆曲线的第一公开点和第一秘密口令计算出所述第一口令公钥,包括:
将所述第一秘密口令和所述第一公开点进行点乘运算,得到所述第一口令公钥;
所述基于第一组合公钥和所述第一口令公钥得到所述第一临时公钥,包括:
将所述第一组合公钥和所述第一口令公钥进行组合运算的逆运算,得到所述第一临时公钥;
所述基于第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,计算得到秘密值Z,包括:
将所述第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,经过F函数运算,计算得到秘密值Z;
所述基于第三秘密口令和所述第二临时私钥得到所述秘密值V,包括:
将所述第二临时私钥与所述第三秘密口令进行点乘运算,得到所述秘密值V。
6.根据权利要求2-5任一项所述的方法,其特征在于,所述组合运算包括:点加运算和点减运算;
所述组合运算的逆运算包括:点减运算和点加运算;
如果所述组合运算是点加运算,则所述组合运算的逆运算为点减运算;如果所述组合运算是点减运算,则所述组合运算的逆运算为点加运算。
7.根据权利要求4或5所述的方法,其特征在于,所述F函数运算包括:
F函数须满足以下条件:
a.F函数作用在己方私钥、己方公钥、己方临时私钥、己方临时公钥、对方临时公钥、复方公钥上的结果是一致的,也就是通信双方通过F函数生成同一个秘密值Z;
b.双方临时公钥和双方公钥须非平凡地参与计算;
c.须不影响椭圆曲线对应的安全强度。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
S500、所述第一通信方和所述第二通信方通过加一轮信息传递和密码算法,以确认双方生成了相同的共享密钥;所述密码算法包括所述Hash算法、MAC算法和对称密码算法。
9.一种基于非对称口令认证的密钥协商的装置,其特征在于,包括:进行密钥协商的第一通信方和第二通信方;
所述第一通信方用于,产生一个随机数作为第一临时私钥,基于椭圆曲线的基点和所述第一临时私钥得到对应的第一临时公钥,基于所述椭圆曲线的第一公开点和第一秘密口令得到第一口令公钥,基于所述第一临时公钥和所述第一口令公钥得到第一组合公钥,将所述第一组合公钥传输给所述第二通信方;
所述第二通信方用于,产生一个随机数作为第二临时私钥,基于所述椭圆曲线的基点和所述第二临时私钥得到对应的第二临时公钥,基于所述椭圆曲线的第二公开点和所述第一秘密口令得到第二口令公钥,基于所述第二临时公钥和所述第二口令公钥得到第二组合公钥,将所述第二组合公钥传输给所述第一通信方;
所述第一通信方用于,接收所述第二组合公钥,基于所述椭圆曲线的第二公开点和所述第一秘密口令计算出所述第二口令公钥,基于所述第二组合公钥和所述第二口令公钥得到所述第二临时公钥,基于所述第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,计算得到秘密值Z,基于第二秘密口令和所述第二临时公钥得到秘密值V,基于所述秘密值Z和所述秘密值V,使用约定的KDF算法或者Hash算法生成所需长度的共享密钥;
所述第二通信方用于,接收所述第一组合公钥,基于所述椭圆曲线的第一公开点和所述第一秘密口令计算出所述第一口令公钥,基于所述第一组合公钥和所述第一口令公钥得到所述第一临时公钥,基于所述第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,计算得到所述秘密值Z,基于第三秘密口令和所述第二临时私钥得到所述秘密值V,基于所述秘密值Z和所述秘密值V,使用约定的所述KDF算法或者所述Hash算法生成所需长度的所述共享密钥;
其中,所述基点、所述第一公开点、所述第二公开点为选定的有限域上的所述椭圆曲线的三个随机点,所述三个随机点生成的子群的大小接近或者等于所述椭圆曲线本身所构成的群的大小;所述第一秘密口令和所述第二秘密口令是所述选定的有限域上的两个随机数,满足大于零并且小于所述椭圆曲线的阶,所述第三秘密口令是在初始化阶段由所述第二秘密口令乘以所述基点得到;其中,所述第一秘密口令和所述第二秘密口令由所述第一通信方拥有,称为口令;所述第一秘密口令和所述第三秘密口令由所述第二通信方拥有,称为校验值。
10.根据权利要求9所述的装置,其特征在于,所述第一通信方中,所述基于椭圆曲线的基点和所述第一临时私钥得到对应的第一临时公钥,包括:
将所述第一临时私钥与所述基点进行点乘运算,得到所述第一临时公钥;
所述基于所述椭圆曲线的第一公开点和第一秘密口令得到第一口令公钥,包括:
将所述第一秘密口令与所述第一公开点进行点乘运算,得到所述第一口令公钥;
所述基于所述第一临时公钥和所述第一口令公钥得到第一组合公钥,包括:
将所述第一临时公钥和所述第一口令公钥进行组合运算,得到所述第一组合公钥,其中,所述第一组合公钥不是无穷远点;
如果所述第一组合公钥是无穷远点,则需要重新生成所述第一临时私钥;
所述第二通信方中,所述基于所述椭圆曲线的基点和所述第二临时私钥得到对应的第二临时公钥,包括:
将所述第二临时私钥与所述基点进行点乘运算,得到所述第二临时公钥;
所述基于所述椭圆曲线的第二公开点和所述第一秘密口令得到第二口令公钥,包括:
将所述第一秘密口令与所述第二公开点进行点乘运算,得到所述第二口令公钥;
所述基于所述第二临时公钥和所述第二口令公钥得到第二组合公钥,包括:
将所述第二临时公钥和所述第二口令公钥进行组合运算,得到所述第二组合公钥,其中,所述第二组合公钥不是无穷远点;
如果所述第二组合公钥是无穷远点,则需要重新生成所述第二临时私钥;
所述第一通信方中,所述基于椭圆曲线的第二公开点和所述第一秘密口令计算出所述第二口令公钥,包括:
将所述第一秘密口令和所述第二公开点进行点乘运算,得到所述第二口令公钥;
所述基于第二组合公钥和所述第二口令公钥得到所述第二临时公钥,包括:
将所述第二组合公钥和所述第二口令公钥进行组合运算的逆运算,得到所述第二临时公钥;
所述基于第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,计算得到秘密值Z,包括:
将所述第一通信方的公私钥对、所述第一临时私钥、所述第一临时公钥、所述第二通信方的公钥、所述第二临时公钥,经过F函数运算,计算得到秘密值Z;
所述基于第二秘密口令和所述第二临时公钥得到秘密值V,包括:
将所述第二秘密口令与所述第二临时公钥进行点乘运算,得到所述秘密值V;
所述第二通信方中,所述基于椭圆曲线的第一公开点和第一秘密口令计算出所述第一口令公钥,包括:
将所述第一秘密口令和所述第一公开点进行点乘运算,得到所述第一口令公钥;
所述基于第一组合公钥和所述第一口令公钥得到所述第一临时公钥,包括:
将所述第一组合公钥和所述第一口令公钥进行组合运算的逆运算,得到所述第一临时公钥;
所述基于第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,计算得到秘密值Z,包括:
将所述第二通信方的公私钥对、所述第二临时私钥、所述第二临时公钥、所述第一通信方的公钥、所述第一临时公钥,经过F函数运算,计算得到秘密值Z;
所述基于第三秘密口令和所述第二临时私钥得到所述秘密值V,包括:
将所述第二临时私钥与所述第三秘密口令进行点乘运算,得到所述秘密值V。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011498155.4A CN112738038B (zh) | 2020-12-17 | 2020-12-17 | 一种基于非对称口令认证的密钥协商的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011498155.4A CN112738038B (zh) | 2020-12-17 | 2020-12-17 | 一种基于非对称口令认证的密钥协商的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112738038A true CN112738038A (zh) | 2021-04-30 |
CN112738038B CN112738038B (zh) | 2024-05-28 |
Family
ID=75602810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011498155.4A Active CN112738038B (zh) | 2020-12-17 | 2020-12-17 | 一种基于非对称口令认证的密钥协商的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112738038B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040081321A1 (en) * | 1995-04-21 | 2004-04-29 | Marinus Struik | Key agreement and transport protocol |
CN1832397A (zh) * | 2005-11-28 | 2006-09-13 | 北京浦奥得数码技术有限公司 | 电子设备接口间基于公钥证书的认证密钥协商和更新方法 |
CN101431415A (zh) * | 2008-12-12 | 2009-05-13 | 天柏宽带网络科技(北京)有限公司 | 一种双向认证的方法 |
US20110208970A1 (en) * | 2010-02-25 | 2011-08-25 | Certicom Corp. | Digital signature and key agreement schemes |
US20150067329A1 (en) * | 2012-03-27 | 2015-03-05 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Method and system for establishing a session key |
US20150358157A1 (en) * | 2014-06-05 | 2015-12-10 | Wuhan University | ASYMMETRIC-COMPUTING TYPE SHARED KEY ESTABLISHING METHOD SUITABLE FOR CLOUD COMPUTING AND IoT |
CN107437993A (zh) * | 2016-05-26 | 2017-12-05 | 中兴通讯股份有限公司 | 一种基于无证书两方认证密钥协商方法和装置 |
CN107483195A (zh) * | 2017-09-08 | 2017-12-15 | 哈尔滨工业大学深圳研究生院 | 物联网环境下安全的双方认证与密钥协商协议 |
US20190215154A1 (en) * | 2016-09-05 | 2019-07-11 | Lg Electronics Inc. | Lightweight and escrow-less authenticated key agreement for the internet of things |
US20200153618A1 (en) * | 2017-05-10 | 2020-05-14 | Koninklijke Philips N.V. | Key agreement devices and method |
-
2020
- 2020-12-17 CN CN202011498155.4A patent/CN112738038B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040081321A1 (en) * | 1995-04-21 | 2004-04-29 | Marinus Struik | Key agreement and transport protocol |
CN1832397A (zh) * | 2005-11-28 | 2006-09-13 | 北京浦奥得数码技术有限公司 | 电子设备接口间基于公钥证书的认证密钥协商和更新方法 |
CN101431415A (zh) * | 2008-12-12 | 2009-05-13 | 天柏宽带网络科技(北京)有限公司 | 一种双向认证的方法 |
US20110208970A1 (en) * | 2010-02-25 | 2011-08-25 | Certicom Corp. | Digital signature and key agreement schemes |
US20150067329A1 (en) * | 2012-03-27 | 2015-03-05 | Commissariat A L'energie Atomique Et Aux Energies Alternatives | Method and system for establishing a session key |
US20150358157A1 (en) * | 2014-06-05 | 2015-12-10 | Wuhan University | ASYMMETRIC-COMPUTING TYPE SHARED KEY ESTABLISHING METHOD SUITABLE FOR CLOUD COMPUTING AND IoT |
CN107437993A (zh) * | 2016-05-26 | 2017-12-05 | 中兴通讯股份有限公司 | 一种基于无证书两方认证密钥协商方法和装置 |
US20190215154A1 (en) * | 2016-09-05 | 2019-07-11 | Lg Electronics Inc. | Lightweight and escrow-less authenticated key agreement for the internet of things |
US20200153618A1 (en) * | 2017-05-10 | 2020-05-14 | Koninklijke Philips N.V. | Key agreement devices and method |
CN107483195A (zh) * | 2017-09-08 | 2017-12-15 | 哈尔滨工业大学深圳研究生院 | 物联网环境下安全的双方认证与密钥协商协议 |
Also Published As
Publication number | Publication date |
---|---|
CN112738038B (zh) | 2024-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107948189B (zh) | 非对称密码身份鉴别方法、装置、计算机设备及存储介质 | |
JP5349619B2 (ja) | アイデンティティベースの認証鍵共有プロトコル | |
Mandt et al. | Certificateless authenticated two-party key agreement protocols | |
US8918648B2 (en) | Digital signature and key agreement schemes | |
CN112713997B (zh) | 密钥协商方法和系统 | |
CN110971401B (zh) | 一种基于交叉互锁机制的认证密钥协商方法及其实施装置 | |
US8447036B2 (en) | Multi-party key agreement method using bilinear map and system therefor | |
CN107437993A (zh) | 一种基于无证书两方认证密钥协商方法和装置 | |
Ray et al. | Establishment of ECC-based initial secrecy usable for IKE implementation | |
JP2003298568A (ja) | 鍵供託を使用しない、認証された個別暗号システム | |
CN111049647B (zh) | 一种基于属性门限的非对称群组密钥协商方法 | |
KR20100050846A (ko) | 키 교환 시스템 및 방법 | |
CN113572603A (zh) | 一种异构的用户认证和密钥协商方法 | |
CN112468490A (zh) | 一种用于电网终端层设备接入的认证方法 | |
CN113132104A (zh) | 一种主动安全的ecdsa数字签名两方生成方法 | |
CN112564923B (zh) | 一种基于无证书的安全网络连接握手方法 | |
CN113242129B (zh) | 一种基于格加密的端到端数据机密性和完整性保护方法 | |
EP2363976A1 (en) | Improved digital signature and key agreement schemes | |
CN110971404B (zh) | 一种面向安全跨域通信的无证书群密钥协商方法 | |
CN111953489A (zh) | 基于sm2算法的发电单元采集业务的密钥交换设备及方法 | |
Pal et al. | Diffie-Hellman key exchange protocol with entities authentication | |
CN114024668B (zh) | 高效的无双线性对运算的无证书认证密钥协商方法及系统 | |
CN112738038B (zh) | 一种基于非对称口令认证的密钥协商的方法和装置 | |
CN114021165A (zh) | 一种部分私公钥对构建方法、认证密钥协商方法及系统 | |
CN114978488A (zh) | 一种基于sm2算法的协同签名方法及系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |