CN103795545A - 一种安全通信的方法和系统 - Google Patents

一种安全通信的方法和系统 Download PDF

Info

Publication number
CN103795545A
CN103795545A CN201410050866.3A CN201410050866A CN103795545A CN 103795545 A CN103795545 A CN 103795545A CN 201410050866 A CN201410050866 A CN 201410050866A CN 103795545 A CN103795545 A CN 103795545A
Authority
CN
China
Prior art keywords
terminal
data
server
module
obtains
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
Application number
CN201410050866.3A
Other languages
English (en)
Other versions
CN103795545B (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201410050866.3A priority Critical patent/CN103795545B/zh
Publication of CN103795545A publication Critical patent/CN103795545A/zh
Application granted granted Critical
Publication of CN103795545B publication Critical patent/CN103795545B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Mobile Radio Communication Systems (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明公开一种安全通信的方法和系统,包括:第一终端生成第一随机数和终端数据;服务器检查自身是否支持处理机制,生成第二随机数和服务器数据;第一终端对服务器证书进行验证,生成签名值和共享主密钥,加密得到第一加密数据;服务器对终端证书进行验证,对签名值进行验证,生成第一完成消息;第一终端对第一完成消息进行验证,生成第二完成消息,生成第一通信密钥;服务器对第二完成消息进行验证,对明文指令进行处理得到通信指令;第一终端对通信指令进行验证,对通信指令进行处理得到明文指令,执行相应操作得到明文响应,对所述明文响应进行处理得到通信响应;服务器对通信响应进行验证,提升第一终端在通信过程中的安全性。

Description

一种安全通信的方法和系统
技术领域
本发明涉及信息安全领域,尤其涉及一种安全通信的方法和系统。
背景技术
终端是一种多功能设备,能够获取银行卡信息,具有通讯功能,即终端与计算机联成网络后,可根据接收到的指令完成信息交换功能,使用方便快捷。现有的终端产品在与服务器进行通信时,只对个人标识码(PIN)和账户进行加密,而且进行加密的密钥固定不变,一旦密钥被窃取,则难以保证通信的安全性。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种安全通信的方法和系统,提升了终端产品在通信过程中的安全性。
本发明提供的一种安全通信的方法,应用于包括第一终端、第二终端和服务器的系统中,包括:
步骤S0:所述服务器通过所述第二终端向所述第一终端发送第一获取指令;
步骤S1:所述第一终端生成第一随机数,根据所述第一随机数和自身保存的处理标识列表生成终端数据,通过所述第二终端向所述服务器发送所述终端数据;
步骤S2:所述服务器根据所述终端数据获取所述处理标识列表,检查自身是否支持所述处理标识列表中的标识信息对应的处理机制,是则根据所述处理标识列表中与所述服务器支持的处理机制对应的标识信息,设置服务器处理标识,执行步骤S3;否则断开与所述第二终端之间的连接,结束;
步骤S3:所述服务器生成第二随机数,根据所述第二随机数和所述服务器处理标识生成服务器数据,通过所述第二终端向所述第一终端发送所述服务器数据和自身保存的服务器证书;
步骤S4:所述第一终端根据自身保存的认证中心证书对所述服务器证书进行验证,判断是否验证成功,是则根据所述服务器数据获取所述服务器处理标识,根据所述服务器处理标识设置终端处理标识,执行步骤S5,否则通过所述第二终端向所述服务器返回错误信息,所述服务器断开与所述第二终端之间的连接,结束;
步骤S5:所述第一终端根据所述终端数据和所述服务器数据生成签名值,生成一个预设长度的第三随机数作为共享主密钥,根据所述服务器证书的公钥对所述共享主密钥进行加密得到第一加密数据,通过所述第二终端向所述服务器发送所述签名值、所述第一加密数据和所述第一终端保存的终端证书;
步骤S6:所述服务器根据自身保存的认证中心证书对所述终端证书进行验证,判断是否验证成功,是则执行步骤S7,否则断开与所述第二终端之间的连接,结束;
步骤S7:所述服务器根据所述终端证书对所述签名值进行验证,判断是否验证成功,是则根据所述服务器证书的私钥对所述第一加密数据进行解密,得到所述共享主密钥,执行步骤S8,否则断开与所述第二终端之间的连接,结束;
步骤S8:所述服务器根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述共享主密钥生成第一完成消息,通过所述第二终端向所述第一终端发送所述第一完成消息;
步骤S9:所述第一终端根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述共享主密钥对所述第一完成消息进行验证,判断是否验证成功,是则执行步骤S10,否则通过所述第二终端向所述服务器返回错误信息,所述服务器断开与所述第二终端之间的连接,结束;
步骤S10:所述第一终端根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第二预设字符串和所述共享主密钥生成第二完成消息,通过所述第二终端向所述服务器发送所述第二完成消息,根据所述共享主密钥、第三预设字符串、所述第一随机数和所述第二随机数生成第一通信密钥;
步骤S11:所述服务器根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第二预设字符串和所述共享主密钥对所述第二完成消息进行验证,判断是否验证成功,是则根据所述共享主密钥、所述第三预设字符串、所述第一随机数和所述第二随机数生成第二通信密钥,执行步骤S12,否则断开与所述第二终端的连接,结束;
步骤S12:所述服务器使用与所述服务器处理标识对应的所述处理机制和所述第二通信密钥对明文指令进行处理,得到通信指令,通过所述第二终端向所述第一终端发送所述通信指令;
步骤S13:所述第一终端根据所述第一通信密钥对所述通信指令进行验证,判断是否验证成功,是则执行步骤S14,否则通过所述第二终端向所述服务器返回错误信息,所述服务器断开与所述第二终端之间的连接,结束;
步骤S14:所述第一终端使用所述终端处理标识对应的处理机制和所述第一通信密钥对所述通信指令进行处理,得到所述明文指令,根据所述明文指令的内容执行相应操作,得到明文响应,使用所述终端处理标识对应的处理机制和所述第一通信密钥对所述明文响应进行处理,得到通信响应,通过所述第二终端向所述服务器发送所述通信响应;
步骤S15:所述服务器根据所述第二通信密钥对所述通信响应进行验证,判断是否验证成功,是则使用与所述服务器处理标识对应的处理机制和所述第二通信密钥对所述通信响应进行处理,得到所述明文响应,结束;否则向所述第二终端返回错误信息,结束。
所述步骤S0中,所述服务器通过所述第二终端向所述第一终端发送第一获取指令之前包括:
步骤S0-1:所述服务器通过所述第二终端向所述第一终端发送第二获取指令;
步骤S0-2:所述第一终端获取自身的设备信息,通过所述第二终端向所述服务器发送所述设备信息;
步骤S0-3:所述服务器根据所述设备信息判断是否已与所述第一终端建立安全通道,是则根据所述共享主密钥、所述第三预设字符串、所述第一随机数和所述第二随机数,生成所述通信密钥,执行步骤S12,否则执行步骤S0。
所述步骤S1中,所述根据第一随机数和自身保存的处理标识列表生成终端数据具体为:所述第一终端将所述第一随机数和所述处理标识列表进行拼接,得到所述终端数据。
所述服务器根据所述第二随机数和所述服务器处理标识生成服务器数据具体为:所述服务器将所述第二随机数和所述服务器处理标识进行拼接,得到所述服务器数据。
所述第一终端根据所述终端数据和所述服务器数据生成签名值具体为:所述第一终端将所述终端数据和所述服务器数据进行拼接后得到待签名数据,对所述待签名数据进行摘要运算得到第一摘要,使用所述第一终端的私钥对所述第一摘要进行签名运算得到所述签名值;
所述服务器根据所述终端证书对所述签名值进行验证,判断是否验证成功,具体为:
所述服务器将所述终端数据和所述服务器数据进行拼接后得到验证数据,对所述验证数据进行摘要运算得到第一验证摘要,使用所述终端证书中的公钥对所述签名值进行计算,得到所述第一摘要,判断所述第一验证摘要与所述第一摘要是否相同,是则验证成功,否则验证失败。
所述服务器根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述共享主密钥生成第一完成消息,具体为:
所述服务器对所述服务器证书进行摘要运算得到第二摘要,对所述终端证书进行摘要运算得到第三摘要,将所述终端数据、所述服务器数据、所述第二摘要、所述第三摘要、所述签名值和所述第一加密数据进行拼接后得到第一数据,对所述第一数据进行摘要运算得到第四摘要,将所述第一预设字符串和所述第四摘要进行拼接,得到第二数据,使用所述共享主密钥的第一预设部分对所述第二数据进行基于哈希运算的消息认证码运算得到所述第一完成消息;
所述第一终端根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述共享主密钥对所述第一完成消息进行验证,判断是否验证成功,具体为:
所述第一终端对所述服务器证书进行摘要运算得到第二验证摘要,对所述终端证书进行摘要运算得到第三验证摘要,将所述终端数据、所述服务器数据、所述第二验证摘要、所述第三验证摘要、所述签名值和所述第一加密数据进行拼接,得到第一验证数据,对所述第一验证数据进行摘要运算得到第四验证摘要,将所述第一预设字符串和所述第四验证摘要进行拼接后得到第二验证数据,使用所述共享主密钥的第一预设部分对所述第二验证数据进行基于哈希运算的消息认证码运算得到第一验证消息;判断所述第一验证消息与所述第一完成消息是否相同,是则验证成功,否则验证失败。
所述第一终端根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第二预设字符串和所述共享主密钥生成第二完成消息具体为:
所述第一终端对所述服务器证书进行摘要运算得到第五摘要,对所述终端证书进行摘要运算得到第六摘要,将所述终端数据、所述服务器数据、所述第五摘要、所述第六摘要、所述签名值和所述第一加密数据进行拼接后得到第三数据,对所述第三数据进行摘要运算得到第七摘要,将所述第二预设字符串和所述第七摘要进行拼接,得到第四数据,使用所述共享主密钥的第一预设部分对所述第四数据进行基于哈希运算的消息认证码运算得到所述第二完成消息;
所述服务器根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第二预设字符串和所述共享主密钥对所述第二完成消息进行验证,判断是否验证成功,具体为:
所述服务器对所述服务器证书进行摘要运算得到第五验证摘要,对所述终端证书进行摘要运算得到第六验证摘要,将所述终端数据、所述服务器数据、所述第五验证摘要、所述第六验证摘要、所述签名值和所述第一加密数据进行拼接,得到第三验证数据,对所述第三验证数据进行摘要运算得到第七验证摘要,将所述第二预设字符串和所述第七验证摘要进行拼接后得到第四验证数据,使用所述共享主密钥的第一预设部分对所述第四验证数据进行基于哈希运算的消息认证码运算得到第二验证消息;判断所述第二验证消息与所述第二完成消息是否相同,是则验证成功,否则验证失败。
所述第一通信密钥包括第一加密密钥和第一消息认证码密钥;
所述根据所述共享主密钥、第三预设字符串、所述第一随机数和所述第二随机数生成第一通信密钥具体为:
步骤A:将所述第三预设字符串、所述第一随机数和所述第二随机数进行拼接得到第五数据;
步骤B:使用所述共享主密钥的第二预设部分对所述第五数据进行基于哈希运算的消息认证码运算得到第六数据,将所述第六数据的第一部分作为所述第一通信密钥中的所述第一加密密钥,将所述第六数据的第二部分作为所述第一通信密钥中的所述第一消息认证码密钥;
所述第二通信密钥包括第二加密密钥和第二消息认证码密钥;
所述根据所述共享主密钥、第三预设字符串、所述第一随机数和所述第二随机数生成第二通信密钥具体为:
步骤C:将所述第三预设字符串、所述第一随机数和所述第二随机数进行拼接得到第七数据;
步骤D:使用所述共享主密钥的第二预设部分对所述第七数据进行基于哈希运算的消息认证码运算得到第八数据,将所述第八数据的第一部分作为所述第二通信密钥中的所述第二加密密钥,将所述第六数据的第二部分作为所述第二通信密钥中的所述第二消息认证码密钥。
所述服务器使用与所述服务器处理标识对应的所述处理机制和所述第二通信密钥对明文指令进行处理,得到通信指令,具体为:
所述服务器使用与所述服务器处理标识对应的所述处理机制和所述第二通信密钥中的所述第二加密密钥对所述明文指令进行处理,得到密文指令;根据所述第二通信密钥中的所述第二消息认证码密钥对所述密文指令进行消息认证码运算,得到第一认证码;对所述密文指令和所述第一认证码进行组合得到的所述通信指令;
所述根据所述第一通信密钥对所述通信指令进行验证,判断是否验证成功,具体为:
所述第一终端根据所述第一通信密钥中的所述第一消息认证码密钥对所述通信指令中的所述密文指令进行消息认证码运算,得到第二认证码,判断所述第二认证码是否与所述通信指令中的所述第一认证码相同,是则验证成功,否则验证失败。
所述第一终端使用与所述终端处理标识对应的处理机制和所述第一通信密钥对所述通信指令进行处理,得到所述明文指令,具体为:
所述第一终端使用与所述终端处理标识对应的所述处理机制和所述第一通信密钥中的所述第一加密密钥对所述通信指令中的所述密文指令进行处理,得到所述明文指令。
所述使用所述终端处理标识对应的处理机制和所述第一通信密钥对所述明文响应进行处理,得到通信响应,具体为:
所述第一终端使用与所述终端处理标识对应的处理机制和所述第一通信密钥中的所述第一加密密钥对所述明文响应进行处理,得到的密文响应;根据所述第一通信密钥中的所述第一消息认证码密钥对所述密文响应进行消息认证码运算,得到的第三认证码;对所述密文响应和所述第三认证码进行组合得到所述通信响应;
所述根据所述第二通信密钥对所述通信响应进行验证,判断是否验证成功,具体为:
所述服务器根据所述第二通信密钥中的所述第二消息认证码密钥对所述通信响应中的所述密文响应进行消息认证码运算,得到第四认证码,判断所述第四认证码是否与所述通信响应中的所述第三认证码相同,是则验证成功,否则验证失败;
所述使用与所述服务器处理标识对应的处理机制和所述第二通信密钥对所述通信响应进行处理,得到所述明文响应,具体为:
所述服务器使用与所述服务器处理标识对应的所述处理机制和所述第二通信密钥中的所述第二加密密钥对所述通信响应中的所述密文响应进行处理,得到所述明文响应。
一种安全通信的系统,包括第一终端、第二终端和服务器;
所述第一终端包括第一接收模块、第一生成模块、第一验证模块、第一设置模块、加密模块、第二验证模块、第三验证模块、第一处理模块和第一发送模块;
所述第一接收模块,用于通过所述第二终端接收来自所述服务器的第一获取指令、服务器数据、服务器证书、第一完成消息和通信指令;
所述第一生成模块,用于当所述第一接收模块接收到所述第一获取指令时,生成第一随机数,根据所述第一随机数和所述第一终端保存的处理标识列表生成终端数据;当所述第一设置模块设置终端处理标识后,根据所述终端数据和所述服务器数据生成签名值,生成一个预设长度的第三随机数作为共享主密钥;当所述第二验证模块对所述第一完成消息验证成功后,根据所述服务器证书、终端证书、所述终端数据、所述服务器数据、所述签名值、所述加密模块加密得到的第一加密数据、第二预设字符串和所述共享主密钥生成第二完成消息,根据所述共享主密钥、第三预设字符串、所述第一随机数和所述服务器数据中的第二随机数生成第一通信密钥;
所述第一验证模块,用于根据所述第一终端保存的认证中心证书对所述第一接收模块接收到的所述服务器证书进行验证,判断是否验证成功;
所述第一设置模块,用于当所述第一验证模块对所述服务器证书验证成功时,根据所述第一接收模块接收到的所述服务器数据获取服务器处理标识,根据所述服务器处理标识设置终端处理标识;
所述加密模块,用于根据所述服务器证书的公钥对所述第一生成模块生成的所述共享主密钥进行加密得到所述第一加密数据;
所述第二验证模块,用于根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述共享主密钥对所述第一接收模块接收到的所述第一完成消息进行验证,判断是否验证成功;
所述第三验证模块,用于根据所述第一通信密钥对所述第一接收模块接收到的所述通信指令进行验证,判断是否验证成功;
所述第一处理模块,用于当所述第三验证模块对所述通信指令验证成功时,使用所述终端处理标识对应的处理机制和所述第一生成模块生成的所述第一通信密钥对所述通信指令进行处理,得到明文指令,根据所述明文指令的内容执行相应操作,得到明文响应,使用所述终端处理标识对应的处理机制和所述第一通信密钥对所述明文响应进行处理,得到通信响应;
所述第一发送模块,用于通过所述第二终端向所述服务器发送所述第一生成模块生成的所述终端数据、所述签名值和所述第二完成消息;通过所述第二终端向所述服务器发送所述终端证书;通过所述第二终端向所述服务器发送所述加密模块加密得到的所述第一加密数据;当所述第一验证模块、所述第二验证模块和所述第三验证模块验证失败时,通过所述第二终端向所述服务器发送错误信息;通过所述第二终端向所述服务器发送所述第一处理模块处理得到的所述通信响应;
所述服务器包括第二接收模块、第一获取模块、检查模块、第二设置模块、第二生成模块、第四验证模块、第五验证模块、解密模块、第六验证模块、第二处理模块、第七验证模块、第三处理模块、第二发送模块和通信中断模块;
所述第二接收模块,用于通过所述第二终端接收来自所述第一终端的所述终端数据、所述终端证书、所述第一加密数据、所述签名值、所述第二完成消息、所述通信响应和所述错误信息;
所述第一获取模块,用于根据所述第二接收模块接收到的所述终端数据获取所述处理标识列表;
所述检查模块,用于检查所述服务器是否支持所述第一获取模块获取到的所述处理标识列表中的标识信息对应的处理机制;
所述第二设置模块,用于当所述检查模块检查到所述服务器支持所述处理标识列表中的标识信息对应的处理机制时,根据所述处理标识列表中与所述服务器支持的处理机制对应的标识信息,设置所述服务器处理标识;
所述第二生成模块,用于当所述第二设置模块设置所述服务器处理标识后,生成所述第二随机数,根据所述第二随机数和所述服务器处理标识生成所述服务器数据;根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述解密模块解密得到的所述共享主密钥生成第一完成消息;当所述第六验证模块对所述第二完成消息验证成功时,根据所述共享主密钥、所述第三预设字符串、所述第一随机数和所述第二随机数生成所述第二通信密钥;
所述第四验证模块,用于根据所述服务器保存的认证中心证书对所述第二接收模块接收到的所述终端证书进行验证,判断是否验证成功;
所述第五验证模块,用于当所述第四验证模块对所述终端证书验证成功时,根据所述终端证书对所述第二接收模块接收到的所述签名值进行验证,判断是否验证成功;
所述解密模块,用于当所述第五验证模块对所述签名值验证成功时,根据所述服务器证书的私钥对所述第二接收模块接收到的所述第一加密数据进行解密,得到所述共享主密钥;
所述第六验证模块,用于根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第二预设字符串和所述共享主密钥对所述第二接收模块接收到的所述第二完成消息进行验证,判断是否验证成功;
所述第二处理模块,用于使用与所述服务器处理标识对应的所述处理机制和所述第二生成模块生成的所述第二通信密钥对明文指令进行处理,得到通信指令;
所述第七验证模块,用于根据所述第二通信密钥对所述第二接收模块接收到的所述通信响应进行验证,判断是否验证成功;
所述第三处理模块,用于当所述第七验证模块对所述通信响应验证成功时,使用与所述服务器处理标识对应的处理机制和所述第二通信密钥对所述第二接收模块接收到的所述通信响应进行处理,得到所述明文响应;
所述第二发送模块,用于通过所述第二终端向所述第一终端发送所述第一获取指令;通过所述第二终端向所述第一终端发送所述第二生成模块生成的所述服务器数据和所述第一完成消息;通过所述第二终端向所述第一终端发送所述服务器保存的服务器证书;通过所述第二终端向所述第一终端发送所述第二处理模块处理得到的所述通信指令;当所述第七验证模块对所述通信响应验证失败时,向所述第二终端返回错误信息;
所述通信中断模块,用于当所述检查模块检查所述服务器不支持所述处理标识列表中的标识信息对应的处理机制时、当所述第二接收模块接收到所述错误信息时、当所述第四验证模块对所述终端证书验证失败时、当所述第五验证模块对所述签名值验证失败时、当所述第六验证模块对所述第二完成消息验证失败时,断开与所述第二终端之间的连接。
所述第二发送模块还用于通过所述第二终端向所述第一终端发送第二获取指令;
所述第一接收模块还用于通过所述第二终端接收来自所述服务器的所述第二获取指令;
所述第一终端还包括第二获取模块,用于当所述第一接收模块接收到所述第二获取指令时,获取所述第一终端的设备信息;
所述第一发送模块,还用于通过所述第二终端向所述服务器发送所述设备信息;
所述服务器还包括第一判断模块,用于根据所述设备信息判断所述服务器是否已与所述第一终端建立安全通道;
所述第二生成模块还用于当所述第一判断模块判断所述服务器已与所述第一终端建立安全通道时,根据所述共享主密钥、所述第三预设字符串、所述第一随机数和所述第二随机数生成所述通信密钥;
所述第二发送模块还用于当所述第一判断模块判断所述服务器未与所述第一终端建立安全通道时,通过所述第二终端向所述第一终端发送所述第一获取指令。
所述第一生成模块包括第一拼接单元,用于将所述第一随机数和所述处理标识列表进行拼接,得到所述终端数据。
所述第二生成模块包括第二拼接单元,用于将所述第二随机数和所述服务器处理标识进行拼接,得到所述服务器数据。
所述第一生成模块包括第三拼接单元、第一摘要单元和签名单元;
所述第三拼接单元,用于当所述第一设置模块设置所述终端处理标识后,将所述终端数据和所述服务器数据进行拼接后得到待签名数据;
所述第一摘要单元,用于对所述第三拼接单元拼接得到的所述待签名数据进行摘要运算得到第一摘要;
所述签名单元,用于使用所述第一终端的私钥对所述第一摘要单元进行摘要运算得到的所述第一摘要进行签名运算得到所述签名值;
所述第五验证模块包括第四拼接单元、第二摘要单元、第一计算单元和第一判断单元;
所述第四拼接单元,用于当所述第四验证模块对所述终端证书验证成功时,将所述终端数据和所述服务器数据进行拼接,得到验证数据;
所述第二摘要单元,用于对所述第四拼接单元拼接得到的所述验证数据进行摘要运算得到第一验证摘要;
所述第一计算单元,用于当所述第二摘要单元运算得到第一验证摘要时,使用所述终端证书中的公钥对所述签名值进行计算,得到所述第一摘要;
所述第一判断单元,用于判断所述第二摘要单元运算得到的所述第一验证摘要与所述第一计算单元计算得到的所述第一摘要是否相同,是则确定对所述签名值验证成功,否则确定对所述签名值验证失败。
所述第二生成模块包括第三摘要单元、第五拼接单元和第二计算单元;
所述第三摘要单元,用于当所述解密模块解密得到所述共享主密钥后,对所述服务器证书进行摘要运算得到第二摘要,对所述终端证书进行摘要运算得到第三摘要;对所述第五拼接单元拼接得到的第一数据进行摘要运算得到第四摘要;
所述第五拼接单元,用于将所述终端数据、所述服务器数据、所述第三摘要单元摘要运算得到的所述第二摘要和所述第三摘要、所述签名值和所述第一加密数据进行拼接,得到所述第一数据;将所述第一预设字符串和所述第三摘要单元摘要运算得到的所述第四摘要进行拼接后得到第二数据;
所述第二计算单元,用于使用所述共享主密钥的第一预设部分对所述第五拼接单元拼接得到的所述第二数据进行基于哈希运算的消息认证码运算得到所述第一完成消息;
所述第二验证模块包括第四摘要单元、第六拼接单元、第三计算单元和第二判断单元;
所述第四摘要单元,用于当所述第一接收模块接收到所述第一完成消息时,对所述服务器证书进行摘要运算得到第二验证摘要,对所述终端证书进行摘要运算得到第三验证摘要;对所述第六拼接单元拼接得到的第一验证数据进行摘要运算得到第四验证摘要;
所述第六拼接单元,用于将所述终端数据、所述服务器数据、所述第四摘要单元摘要运算得到的所述第二验证摘要和所述第三验证摘要、所述签名值和所述第一加密数据进行拼接后得到所述第一验证数据;将所述第一预设字符串和所述第四摘要单元摘要运算得到的所述第四验证摘要进行拼接,得到第二验证数据;
所述第二计算单元,用于使用所述共享主密钥的第一预设部分对所述第六拼接单元拼接得到的所述第二验证数据进行基于哈希运算的消息认证码运算得到第一验证消息;
所述第二判断单元,用于判断所述第二计算单元计算得到的所述第一验证消息与所述第一接收模块接收到的所述第一完成消息是否相同,是则确定对所述第一完成消息验证成功,否则确定对所述第一完成消息验证失败。
所述第一生成模块包括第五摘要单元、第七拼接单元和第三计算单元;
所述第五摘要单元,用于当所述第二验证模块对所述第一完成消息验证成功时,对所述服务器证书进行摘要运算得到第五摘要,对所述终端证书进行摘要运算得到第六摘要;对所述第七拼接单元拼接到的第三数据进行摘要运算得到第七摘要;
所述第七拼接单元,用于将所述终端数据、所述服务器数据、所述第五摘要单元摘要运算得到的所述第五摘要和所述第六摘要、所述签名值和所述第一加密数据进行拼接,得到所述第三数据;将所述第二预设字符串和所述第五摘要单元摘要运算得到的所述第七摘要进行拼接,得到第四数据;
所述第三计算单元,用于使用所述共享主密钥的第一预设部分对所述第七拼接单元拼接到的所述第四数据进行基于哈希运算的消息认证码运算得到所述第二完成消息;
所述第六验证模块包括第六摘要单元、第八拼接单元、第四计算单元和第三判断单元;
所述第六摘要单元,用于当所述第二接收模块接收到所述第二完成消息时,对所述服务器证书进行摘要运算得到第五验证摘要,对所述终端证书进行摘要运算得到第六验证摘要;对所述第八拼接单元拼接得到的第三验证数据进行摘要运算得到第七验证摘要;
所述第八拼接单元,用于将所述终端数据、所述服务器数据、所述第六摘要单元摘要运算得到的所述第五验证摘要和所述第六验证摘要、所述签名值和所述第一加密数据进行拼接,得到第三验证数据;将所述第二预设字符串和所述第六摘要单元摘要运算得到的所述第七验证摘要进行拼接,得到第四验证数据;
所述第四计算单元,用于使用所述共享主密钥的第一预设部分对所述第八拼接单元拼接得到的所述第四验证数据进行基于哈希运算的消息认证码运算得到第二验证消息;
所述第三判断单元,用于判断所述第四计算单元计算得到的所述第二验证消息与所述第二接收模块接收到的所述第二完成消息是否相同,是则确定对所述第二完成消息验证成功,否则确定对所述第二完成消息验证失败。
第一生成模块还包括第九拼接单元和第五计算单元;
所述第九拼接单元,用于当所述第一生成模块生成所述第二完成消息后,将所述第三预设字符串、所述第一随机数和所述第二随机数进行拼接得到第五数据;
所述第五计算单元,用于使用所述共享主密钥的第二预设部分对所述第九拼接单元拼接得到的所述第五数据进行基于哈希运算的消息认证码运算得到第六数据,将所述第六数据的第一部分作为所述第一通信密钥中的第一加密密钥,将所述第六数据的第二部分作为所述第一通信密钥中的第一消息认证码密钥;
第二生成模块还包括第十拼接单元和第六计算单元;
所述第十拼接单元,用于当所述第六验证模块对所述第二完成消息验证成功时,将所述第三预设字符串、所述第一随机数和所述第二随机数进行拼接得到第七数据;
所述第六计算单元,用于使用所述共享主密钥的第二预设部分对所述第十拼接单元拼接得到的所述第七数据进行基于哈希运算的消息认证码运算得到第八数据,将所述第八数据的第一部分作为所述第二通信密钥中的第二加密密钥,将所述第六数据的第二部分作为所述第二通信密钥中的第二消息认证码密钥。
所述第二处理模块包括第一处理单元、第一认证单元和第一组合单元;
所述第一处理单元,用于使用与所述服务器处理标识对应的所述处理机制和所述第二生成模块生成的所述第二通信密钥中的所述第二加密密钥对所述明文指令进行处理,得到密文指令;
所述第一认证单元,用于根据所述第二通信密钥中的所述第二消息认证码密钥对所述第一处理单元处理得到的所述密文指令进行消息认证码运算,得到的第一认证码;
所述第一组合单元,用于对所述密文指令和所述第一认证单元运算得到的所述第一认证码进行组合,得到所述通信指令;
所述第三验证模块包括第二认证单元和第四判断单元;
所述第二认证单元,用于根据所述第一通信密钥中的所述第一消息认证码密钥对所述第一接收模块接收到的所述通信指令中的所述密文指令进行消息认证码运算,得到第二认证码;
所述第四判断单元,用于判断所述第二认证单元运算得到的所述第二认证码是否与所述通信指令中的所述第一认证码相同,是则确定对所述通信指令验证成功,否则确定对所述通信指令验证失败;
所述第一处理模块具体用于当所述第三验证模块对所述通信指令验证成功时,使用与所述终端处理标识对应的所述处理机制和所述第一通信密钥中的所述第一加密密钥对所述通信指令中的所述密文指令进行处理,得到所述明文指令。
所述第一处理模块包括第二处理单元、第三认证单元和第二组合单元;
所述第二处理单元,用于当所述第三验证模块对所述通信指令验证成功时,使用与所述终端处理标识对应的处理机制和所述第一通信密钥中的所述第一加密密钥对所述明文响应进行处理,得到密文响应;
所述第三认证单元,用于根据所述第一通信密钥中的所述第一消息认证码密钥对所述第二处理单元处理得到的所述密文响应进行消息认证码运算,得到的第三认证码;
所述第二组合单元,用于对所述第二处理单元处理得到的所述密文响应和所述第三认证单元运算得到的所述第三认证码进行组合得到的所述通信响应;
所述第七验证模块包括第四认证单元和第五判断单元;
所述第四认证单元,用于根据所述第二通信密钥中的所述第二消息认证码密钥对所述第二接收模块接收到的所述通信响应中的所述密文响应进行消息认证码运算,得到第四认证码;
所述第五判断单元,用于判断所述第四认证单元运算得到的所述第四认证码与所述通信响应中的所述第三认证码是否相同,是则确定对所述通信响应验证成功,否则确定对所述通信响应验证失败;
所述第三处理模块具体用于当所述第七验证模块对所述第二通信响应验证成功时,使用与所述服务器处理标识对应的所述处理机制和所述通信密钥中的所述第二加密密钥对所述通信响应中的所述密文响应进行处理,得到所述明文响应。
本发明与现有技术相比,具有以下优点:
在终端与服务器进行通信之前,建立安全通道,并且每次通信之前根据随机数生成通信密钥;在终端与服务器进行通信时,对通信数据进行加密及认证,提升了终端在通信过程中的安全性。
附图说明
图1是本发明实施例1提供的一种安全通信的方法的流程图;
图2至图4是本发明实施例2提供的一种安全通信的方法的流程图;
图5是本发明实施例3提供的一种安全通信的方法的流程图;
图6是本发明实施例4提供的一种安全通信的系统的模块图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供的一种安全通信的方法应用于包括第一终端、第二终端和服务器的系统;本实施例中,第一终端已与第二终端连接,第二终端已与服务器建立连接。
实施例1
本发明的实施例1提供一种安全通信的方法,如图1所示,包括:
步骤S0:第二终端向服务器发送通信请求;服务器通过第二终端向第一终端发送第一获取指令;
具体地,第一获取指令为获取终端数据的指令;
步骤S1:第一终端生成第一随机数,根据第一随机数和自身保存的处理标识列表生成终端数据,通过第二终端向服务器发送终端数据;
步骤S2:服务器根据终端数据获取处理标识列表,检查自身是否支持处理标识列表中的标识信息对应的处理机制,是则根据标识列表中与服务器支持的处理机制对应的标识信息,设置服务器处理标识,执行步骤S3;否则服务器断开与第二终端之间的连接,结束;
步骤S3:服务器生成第二随机数,根据第二随机数和服务器处理标识生成服务器数据,通过第二终端向第一终端发送服务器数据和自身保存的服务器证书;
步骤S4:第一终端根据自身保存的认证中心证书对服务器证书进行验证,判断是否验证成功,是则根据服务器数据获取服务器处理标识,根据服务器处理标识设置终端处理标识,执行步骤S5,否则通过第二终端向服务器返回错误信息,服务器断开与第二终端之间的连接,结束;
步骤S5:第一终端根据终端数据和服务器数据生成签名值,生成一个预设长度的第三随机数作为共享主密钥,根据服务器证书的公钥对共享主密钥进行加密得到第一加密数据,通过第二终端向服务器发送签名值、第一加密数据和第一终端保存的终端证书;
步骤S6:服务器根据自身保存的认证中心证书对终端证书进行验证,判断是否验证成功,是则执行步骤S7,否则服务器断开与第二终端之间的连接,结束;
步骤S7:服务器根据终端证书对签名值进行验证,判断是否验证成功,是则根据服务器证书的私钥对第一加密数据进行解密,得到共享主密钥,执行步骤S8,否则服务器断开与第二终端之间的连接,结束;
步骤S8:服务器根据服务器证书、终端证书、终端数据、服务器数据、签名值、第一加密数据、第一预设字符串和共享主密钥生成第一完成消息,通过第二终端向第一终端发送第一完成消息;
步骤S9:第一终端根据服务器证书、终端证书、终端数据、服务器数据、签名值、第一加密数据、第一预设字符串和共享主密钥对第一完成消息进行验证,判断是否验证成功,是则执行步骤S10,否则通过第二终端向服务器返回错误信息,服务器断开与第二终端之间的连接,结束;
步骤S10:第一终端根据服务器证书、终端证书、终端数据、服务器数据、签名值、第一加密数据、第二预设字符串和共享主密钥生成第二完成消息,通过第二终端向服务器发送第二完成消息,根据共享主密钥、第三预设字符串、第一随机数和第二随机数生成第一通信密钥;
步骤S11:服务器根据服务器证书、终端证书、终端数据、服务器数据、签名值、第一加密数据、第二预设字符串和共享主密钥对第二完成消息进行验证,判断是否验证成功,是则根据共享主密钥、第三预设字符串、第一随机数和第二随机数生成第二通信密钥,执行步骤S12,否则服务器断开与第二终端的连接,结束;
步骤S12:服务器使用与服务器处理标识对应的处理机制和第二通信密钥对明文指令进行处理,得到通信指令,通过第二终端向第一终端发送通信指令;
具体地,明文指令由服务器生成,通信指令为服务器与第一终端通信过程中的传输APDU的指令;
步骤S13:第一终端根据第一通信密钥对通信指令进行验证,判断是否验证成功,是则执行步骤S14,否则通过第二终端向服务器返回错误信息,服务器断开与第二终端之间的连接,结束;
步骤S14:第一终端使用终端处理标识对应的处理机制和第一通信密钥对通信指令进行处理,得到明文指令,根据明文指令的内容执行相应操作,得到明文响应,使用终端处理标识对应的处理机制和第一通信密钥对明文响应进行处理,得到通信响应,通过第二终端向服务器发送通信响应;
步骤S15:服务器根据第二通信密钥对通信响应进行验证,判断是否验证成功,是则使用与服务器处理标识对应的处理机制和第二通信密钥对通信响应进行处理,得到明文响应,结束;否则向第二终端返回错误信息,断开与第二终端之间的连接,结束。
实施例2
本发明的实施例2提供一种安全通信的方法,如图2至图4所示,包括:
当第二终端接收到与服务器进行通信的命令时,执行以下步骤:
步骤101:第二终端向服务器发送通信请求;
步骤102:服务器接收第二终端发送的通信请求,向第二终端发送第二获取指令;
具体地,第二获取指令为获取第一终端的设备信息的指令;
步骤103:第二终端接收服务器发送的第二获取指令,向第一终端转发第二获取指令;
步骤104:第一终端接收第二获取指令,获取自身的设备信息,向第二终端发送第一终端的设备信息;
步骤105:第二终端接收第一终端的设备信息,向服务器转发第一终端的设备信息;
步骤106:服务器接收第一终端的设备信息,根据第一终端的设备信息判断是否已与第一终端建立安全通道,是则执行步骤155,否则执行步骤107;
具体地,若服务器已与第一终端建立安全通道,则开始与第一终端进行安全通信,执行步骤155;
步骤107:服务器向第二终端发送第一获取指令;
具体地,第一获取指令为获取终端数据的指令;例如,第一获取指令为7E25000021;
步骤108:第二终端接收服务器发送的第一获取指令,向第一终端转发第一获取指令;
步骤109:第一终端接收第一获取指令,获取自身的处理标识列表A1,生成第一随机数r1,将第一随机数r1和处理标识列表A1进行拼接,得到终端数据R1;
例如,处理标识列表A1为30,第一随机数r1为:
11DC7B0AC3578D887210559B3902ECC911913B2A46280E272C216A820EE52197;
拼接后得到的终端数据R1为:
3011DC7B0AC3578D887210559B3902ECC911913B2A46280E272C216A820EE52197;
本实施例中,第一终端中的初始信息包括处理标识列表A1、认证中心证书和终端证书;
步骤110:第一终端向第二终端发送终端数据R1;
步骤111:第二终端接收第一终端发送的终端数据R1,向服务器转发终端数据R1;
步骤112:服务器接收终端数据R1,根据终端数据R1获取处理标识列表A1;
步骤113:服务器根据处理标识列表A1,检查自身是否支持处理标识列表A1中的标识信息对应的处理机制,是则根据处理标识列表A1中与服务器支持的处理机制对应的标识信息,设置服务器处理标识,执行步骤114;否则向第二终端返回错误信息,断开与第二终端之间的连接,结束;
步骤114:服务器生成第二随机数r2,将第二随机数r2和服务器处理标识进行拼接,得到服务器数据R2;
例如,服务器处理标识为10,第二随机数r1为:
AD894DE7958D4EFC558FBC980C08B8ACF907A854D6312DFF670656D152661345;
拼接后得到的服务器数据R2为:
10AD894DE7958D4EFC558FBC980C08B8ACF907A854D6312DFF670656D152661345;
步骤115:服务器向第二终端发送包含服务器证书的第一验证指令,将第一验证指令发送到第二终端;
具体地,第一验证指令中包括服务器证书;
例如,服务器证书为:
30820160A003020102020451665778300D06092A864886F70D01010505003024310B300906035504061302636E311530130603550403130C4665695469616E2054657374301E170D3133303431313036323630305A170D3134303431313036323630305A304C314A300906035504061302434E3009060355040B13023031300A060355040A1303435550300D060355040313064654534146453017060355040B1310435550205375706572205365727665723081AF300D06092A864886F70D010101050003819D0030819902819100C1ED75BD7BB937D8CD49935C770A414FA1ABE670E10B2E19246D0491218094F4AD83D4181D63B9FABFD0B76DFACFABE442BA561FBBFA8E0C2239F5D0A1970EDBDFE86A2852FB3BB8F1241978AD5D07CD18599FD78E6A7687B21677FB800B72CF283D952BEE94FFED7757053952E029A8ABEAD1704253414EE4A79DC75BAAB6D9D6CD6030690A9304BA64DA6458A625BB0203010001;
服务器将服务器证书分为三部分,通过三条第一验证指令将服务器证书发送到第二终端,三条第一验证指令分别为:
7E26000066800030820160A003020102020451665778300D06092A864886F70D01010505003024310B300906035504061302636E311530130603550403130C4665695469616E2054657374301E170D3133303431313036323630305A170D3134303431313036323630305A;
7E26000050203C304C314A300906035504061302434E3009060355040B13023031300A060355040A1303435550300D060355040313064654534146453017060355040B131043555020537570657220536572766572;
7E260000B450003081AF300D06092A864886F70D010101050003819D0030819902819100C1ED75BD7BB937D8CD49935C770A414FA1ABE670E10B2E19246D0491218094F4AD83D4181D63B9FABFD0B76DFACFABE442BA561FBBFA8E0C2239F5D0A1970EDBDFE86A2852FB3BB8F1241978AD5D07CD18599FD78E6A7687B21677FB800B72CF283D952BEE94FFED7757053952E029A8ABEAD1704253414EE4A79DC75BAAB6D9D6CD6030690A9304BA64DA6458A625BB0203010001;
步骤116:第二终端接收服务器发送的第一验证指令,向第一终端转发第一验证指令,将服务器的服务器证书转发到第一终端;
步骤117:第一终端接收第一验证指令,从第一验证指令中获取服务器证书;
步骤118:第一终端使用自身保存的认证中心证书对服务器证书进行验证,判断是否验证成功,是则根据服务器数据R2获取服务器处理标识,根据服务器处理标识设置终端处理标识,向第二终端返回验证成功信息,执行步骤121,否则向第二终端返回错误信息,执行步骤119;
步骤119:第二终端接收第一终端发送的错误信息,向服务器转发错误信息;
步骤120:服务器接收错误信息,断开与第二终端之间的连接,结束;
步骤121:第二终端接收第一终端发送的验证成功信息,向服务器转发验证成功信息;
步骤122:服务器接收验证成功信息,向第二终端发送第三获取指令,将服务器数据R2发送到第二终端;
具体地,第三获取指令为获取签名值的指令,第三获取指令中包括服务器数据R2;
例如,第三获取指令为:
7E28000042307DD88F411B6FBA303D7E6EB31AF03A2A653E03F4D0E3AA85CF0FE9B99E9F7E68107DD88F411B6FBA303D7E6EB31AF03A2A653E03F4D0E3AA85CF0FE9B99E9F7E68;
步骤123:第二终端接收服务器发送的第三获取指令,向第一终端转发第三获取指令,将服务器数据R2转发到第一终端;
步骤124:第一终端接收第三获取指令,从第三获取指令中获取服务器数据R2;
步骤125:第一终端将终端数据R1和服务器数据R2进行拼接后得到待签名数据R3,对待签名数据R3进行摘要运算得到第一摘要H1,使用终端证书的私钥对第一摘要H1进行签名运算得到签名值S1;
例如,终端数据R1为:
3011DC7B0AC3578D887210559B3902ECC911913B2A46280E272C216A820EE52197;
服务器数据R2为:
10AD894DE7958D4EFC558FBC980C08B8ACF907A854D6312DFF670656D152661345;
签名值S1为:
08517400DEA883EB75A6AEDC80F3F44B16475540D87169ECF1C57828F297C72251321A3EF6F3753CED18C9BE07F1A469DA46C54E29C677A19BF53A6EA643C3F5A23B2CC414256BAD31A0A674F198683665F572737EC95E0597F52135ED48EA48173EB9AA990CA6148373B7B84D34785899C1989D37B5A612B69759F2B6D17AC49BDD12489DCF101DAD6F256AAFE82997;
步骤126:第一终端向第二终端发送签名值S1;
步骤127:第二终端接收第一终端发送的签名值S1,向服务器转发签名值S1;
步骤128:服务器接收签名值S1,向第二终端发送第四获取指令;
具体地,第四获取指令为获取第一加密数据的指令;
步骤129:第二终端接收服务器发送的第四获取指令,向第一终端转发第四获取指令;
步骤130:第一终端接收第四获取指令,生成一个预设长度的第三随机数作为共享主密钥M1,并且使用服务器证书中的公钥对共享主密钥M1进行加密得到第一加密数据E1;
具体地,本实施例中,预设长度为48字节;
例如,共享主密钥M1为:
6754A3E1546717BF4A13AB780471287DC01DC9EFABDC4D619A814BDFFA11C62F0A2501564890945F2842C0570C6C009C;
第一加密数据E1为:
09940909A5453319C377219A1BB00D3BB8B15E7EA1D44E27561CBF71E608373DB92A8FF6EDB30FC1609641B10C2C0C535C3D89C694AF1A598C7AF9C18E884D3542D17F31EED7C8F7A124C31A7DCD179283EEF5255FC15A402546E1BE5D2DBDB258CB69307F18BEE4E3E200A175721C11141C2637C8B40B0D36B65761FB8941843A70EAB17B78E71FA3780B87A1687E66;
步骤131:第一终端向第二终端发送第一加密数据E1;
步骤132:第二终端接收第一终端发送的第一加密数据E1,向服务器转发第一加密数据E1;
步骤133:服务器接收第一加密数据E1,向第二终端发送第五获取指令;
具体地,第五获取指令为获取终端证书的指令;例如,第五获取指令为7E23000000;
步骤134:第二终端接收服务器发送的第五获取指令,向第一终端转发第五获取指令;
步骤135:第一终端接收第五获取指令,读取终端证书,向第二终端发送终端证书;
例如,终端证书为:
308201D830820141A003020102020451665240300D06092A864886F70D01010505003024310B300906035504061302636E311530130603550403130C4665695469616E2054657374301E170D3133303431313036303334345A170D3134303431313036303334345A302D312B300906035504061302434E300A060355040A13034355503012060355040B130B43555020526561646572203081AF300D06092A864886F70D010101050003819D0030819902819100E18549029FFBD846B7D434CD3525878C26AD2477A22B8EF480874EBFB4AA1219E6C3AC691DDEFF39849AB80075DDDCCAFDE95AE956FB1A81E4DBBA238995A0F1A3A245AEB4BFB8898D110F36591D0FE3273EA7159AB855B1DE983C5969DE9826B92037A3CBF5DE622D711F0059BB6E5AED2F116E2E4FCAED669489F6A0148B9681FDF4B73F14D5FBE60A45BFD25E64E30203010001300D06092A864886F70D010105050003818100395020114E344F33FDEBE52E1D0F74B796131969490F2EB7275FFF3994662A4751F94D2B165A4C5EF69F91215EBEE2731E770D4B256ACB81E4CB65426E0C79945A7F9954779B848607042A476E6ACA02F6ED333EE2232FDDC0E962896926C24B1FB833174C9139FF6ED94073E26C4D1B14E0077AAAB248BCA76424C26166C8A3;
将终端证书分为两部分,通过两条响应将终端证书发送到第二终端,两条响应分别为:
308201D830820141A003020102020451665240300D06092A864886F70D01010505003024310B300906035504061302636E311530130603550403130C4665695469616E2054657374301E170D3133303431313036303334345A170D3134303431313036303334345A302D312B300906035504061302434E300A060355040A13034355503012060355040B130B43555020526561646572203081AF300D06092A864886F70D010101050003819D0030819902819100E18549029FFBD846B7D434CD3525878C26AD2477A22B8EF480874EBFB4AA1219E6C3AC691DDEFF39849AB80075DDDCCAFDE95AE956FB1A81E4DBBA238995A0F1A3A245AEB4BFB8898D110F61DD;
36591D0FE3273EA7159AB855B1DE983C5969DE9826B92037A3CBF5DE622D711F0059BB6E5AED2F116E2E4FCAED669489F6A0148B9681FDF4B73F14D5FBE60A45BFD25E64E30203010001300D06092A864886F70D010105050003818100395020114E344F33FDEBE52E1D0F74B796131969490F2EB7275FFF3994662A4751F94D2B165A4C5EF69F91215EBEE2731E770D4B256ACB81E4CB65426E0C79945A7F9954779B848607042A476E6ACA02F6ED333EE2232FDDC0E962896926C24B1FB833174C9139FF6ED94073E26C4D1B14E0077AAAB248BCA76424C26166C8A39000;
步骤136:第二终端接收第一终端发送的终端证书,向服务器转发终端证书;
步骤137:服务器接收终端证书;
步骤138:服务器使用自身保存的认证中心证书对终端证书进行验证,判断是否验证成功,是则执行步骤139,否则向第二终端发送错误消息,断开与第二终端的连接,结束;
步骤139:服务器使用终端证书验证签名值S1,判断是否验证成功,是则执行步骤140,否则向第二终端发送错误消息,断开与第二终端的连接,结束;
具体地,服务器将终端数据R1和服务器数据R2进行拼接后得到验证数据R4,对验证数据R4进行摘要运算得到第一验证摘要,使用终端证书中的公钥对签名值S1进行计算,得到第一摘要H1,判断第一验证摘要与第一摘要H1是否相同,是则验证成功,否则验证失败;
步骤140:服务器使用服务器证书的私钥对第一加密数据E1进行解密,得到共享主密钥M1;
步骤141:服务器对服务器证书、终端证书、终端数据R1、服务器数据R2、签名值S1、第一加密数据E1、第一预设字符串和共享主密钥M1进行运算得到第一完成消息F1;
具体地,得到第一完成消息F1的方法为:服务器对服务器证书进行摘要运算得到第二摘要H2,对终端证书进行摘要运算得到第三摘要H3,将终端数据R1、服务器数据R2、第二摘要H2、第三摘要H3、签名值S1和第一加密数据E1进行拼接后得到第一数据T1,对第一数据T1进行摘要运算得到第四摘要H4,将第一预设字符串和第四摘要H4进行拼接后得到第二数据D1,使用共享主密钥M1的第一部分对第二数据D1进行基于哈希运算的消息认证码(HMAC)运算得到第一完成消息F1;
具体地,本实施例中,得到第一数据T1的方法为T1=R1|R2|H2|H3|S1|E1;第一预设字符串为ASCII码“SERVER”;共享主密钥M1的第一部分为共享主密钥M1前16个字节;
例如,第二摘要H2为:7C4628C115FDE9B577380CA82C87C2F9843A5634;
第三摘要为H3:3534D4FDE0C239441F0FA4B9A402CDC09371B6A9;
第一数据T1为:
3011DC7B0AC3578D887210559B3902ECC911913B2A46280E272C216A820EE5219710AD894DE7958D4EFC558FBC980C08B8ACF907A854D6312DFF670656D1526613457C4628C115FDE9B577380CA82C87C2F9843A56343534D4FDE0C239441F0FA4B9A402CDC09371B6A908517400DEA883EB75A6AEDC80F3F44B16475540D87169ECF1C57828F297C72251321A3EF6F3753CED18C9BE07F1A469DA46C54E29C677A19BF53A6EA643C3F5A23B2CC414256BAD31A0A674F198683665F572737EC95E0597F52135ED48EA48173EB9AA990CA6148373B7B84D34785899C1989D37B5A612B69759F2B6D17AC49BDD12489DCF101DAD6F256AAFE8299709940909A5453319C377219A1BB00D3BB8B15E7EA1D44E27561CBF71E608373DB92A8FF6EDB30FC1609641B10C2C0C535C3D89C694AF1A598C7AF9C18E884D3542D17F31EED7C8F7A124C31A7DCD179283EEF5255FC15A402546E1BE5D2DBDB258CB69307F18BEE4E3E200A175721C11141C2637C8B40B0D36B65761FB8941843A70EAB17B78E71FA3780B87A1687E66;
第二数据T1为:
5345564552FEE5BC7580DE1FEE59F9D3E354A7C82A34195074;
共享主密钥M1为:
6754A3E1546717BF4A13AB780471287DC01DC9EFABDC4D619A814BDFFA11C62F0A2501564890945F2842C0570C6C009C;
HMAC运算的密钥为共享主密钥M1前16个字节,即:
6754A3E1546717BF4A13AB780471287D;
第一完成消息F1为:
B2E83820D70B03575B49A4A1CF57498DEEEDC63D;
步骤142:服务器向第二终端发送包含第一完成消息F1的第二验证指令,将第二验证指令发送到第二终端;
具体地,第二验证指令为验证第一完成消息F1的指令,第二验证指令中包括第一完成消息F1;
例如,第二验证指令为:
7E2A000114B2E83820D70B03575B49A4A1CF57498DEEEDC63D;
步骤143:第二终端接收服务器发送的包含第一完成消息F1的第二验证指令,向第一终端转发第二验证指令,将第一完成消息F1转发到第一终端;
步骤144:第一终端接收第二验证指令,从第二验证指令中获取第一完成消息F1;
步骤145:第一终端根据服务器证书、终端证书、终端数据R1、服务器数据R2、签名值S1、第一加密数据E1、第一预设字符串和共享主密钥M1对第一完成消息F1进行验证,判断是否验证成功,是则向第二终端发送验证成功信息,执行步骤148,否则向第二终端发送错误消息,执行步骤146;
具体地,第一终端对服务器证书进行摘要运算得到第二验证摘要,对终端证书进行摘要运算得到第三验证摘要,将终端数据R1、服务器数据R2、第二验证摘要、第三验证摘要、签名值S1和第一加密数据E1进行拼接后得到第一验证数据,对第一验证数据进行摘要运算得到第四验证摘要,将第一预设字符串和第四验证摘要进行拼接后得到第二验证数据,使用共享主密钥的第一预设部分对第二验证数据进行基于哈希运算的消息认证码运算得到第一验证消息;判断第一验证消息与第一完成消息F1是否相同,是则验证成功,否则验证失败;
步骤146:第二终端接收第一终端发送的错误信息,向服务器转发错误信息;
步骤147:服务器接收错误信息,断开与第二终端的连接,结束;
步骤148:第二终端接收第一终端发送的验证成功信息,向服务器转发验证成功信息;
步骤149:服务器接收验证成功信息,向第二终端发送第六获取指令;
具体地,第六获取指令为获取第二完成消息F2的指令;例如,第六获取指令为:7E2A000000;
步骤150:第二终端接收服务器发送的第六获取指令,向第一终端转发第六获取指令;
步骤151:第一终端接收第六获取指令,对服务器证书、终端证书、终端数据R1、服务器数据R2、签名值S1、第一加密数据E1、第二预设字符串和共享主密钥M1进行运算得到第二完成消息F2;
具体地,得到F2的运算方法为:第一终端对服务器证书进行摘要运算得到第五摘要H5,对终端证书进行摘要运算得到第六摘要H6,将终端数据R1、服务器数据R2、第五摘要H5、第六摘要H6、签名值S1和第一加密数据E1进行拼接后得到第三数据T3,对第三数据T3进行摘要运算得到第七摘要H7,将第二预设字符串和第七摘要H7进行拼接后得到第四数据D4,使用共享主密钥M1的第一部分对第四数据D4进行基于哈希运算的消息认证码(HMAC)运算得到第二完成消息F2;
具体地,第二预设字符串为ASCII码“CLIENT”;
步骤152:第一终端向第二终端发送第二完成消息F2;第一终端根据共享主密钥M1、第三预设字符串、第一随机数r1和第二随机数r2生成第一通信密钥;
本实施例中,第一终端根据共享主密钥M1、第三预设字符串、第一随机数和第二随机数生成第一通信密钥,其中,第一通信密钥包括:第一加密密钥SKey1和第一消息认证码密钥MKey1;生成第一通信密钥的具体方法为:
步骤A:将第三预设字符串、第一随机数r1和第二随机数r2进行拼接得到第五数据;
步骤B:使用共享主密钥M1的第一部分对第五数据进行基于哈希运算的消息认证码(HMAC)运算得到第六数据,获取第六数据的第一部分作为第一通信密钥中的第一加密密钥SKey1,获取第六数据的第二部分作为第一通信密钥中的第一消息认证码密钥MKey1;
具体地,获取第六数据的第1个至第16字节的数据为第一加密密钥SKey1,获取第六数据的第5个至第20字节的数据为第一消息认证码密钥MKey1;
例如,X=HMAC(M1,key_label||r1||r2),其中,共享主密钥M1取前16个字节,key_label为3字节ASCII码“KEY”;X1、X2……X20分别为X的第1个至第20字节,则第一加密密钥SKey1为:SKey1=X1X2……X16,第一消息认证码密钥MKey1为:MKey1=X5X6……X20;
步骤153:第二终端接收第一终端发送的第二完成消息F2,向服务器转发第二完成消息F2;
步骤154:服务器接收第二完成消息F2,根据服务器证书、终端证书、终端数据R1、服务器数据R2、签名值S1、第一加密数据E1、第二预设字符串和共享主密钥M1对第二完成消息F2进行验证,判断是否验证成功,是则执行步骤155,否则向第二终端发送错误消息,断开与第二终端的连接,结束;
具体地,服务器对服务器证书进行摘要运算得到第五验证摘要,对终端证书进行摘要运算得到第六验证摘要,将终端数据R1、服务器数据R2、第五验证摘要、第六验证摘要、签名值S1和第一加密数据E1进行拼接后得到第三验证数据,对第三验证数据进行摘要运算得到第七验证摘要,将第二预设字符串和第七验证摘要进行拼接后得到第四验证数据,使用共享主密钥的第一预设部分对第四验证数据进行基于哈希运算的消息认证码运算得到第二验证消息;判断第二验证消息与第二完成消息F2是否相同,是则验证成功,否则验证失败;
具体地,服务器成功验证第二完成消息F2则表示已与第一终端建立安全通道,开始与第一终端进行安全通信;
步骤155:服务器根据共享主密钥M1、第三预设字符串、第一随机数r1和第二随机数r2生成第二通信密钥;
本实施例中,服务器与第一终端之间建立安全通道后,服务器根据共享主密钥M1、第三预设字符串、第一随机数r1和第二随机数r2生成第二通信密钥,其中,第二通信密钥包括:第二加密密钥SKey2和第二消息认证码密钥MKey2;生成第二通信密钥的具体方法为:
步骤C:将第三预设字符串、第一随机数和第二随机数进行拼接得到第七数据;
步骤D:使用共享主密钥M1的第一部分对第七数据进行基于哈希运算的消息认证码(HMAC)运算得到第八数据,获取第八数据的第一部分作为第二通信密钥中的第二加密密钥SKey2,获取第八数据的第二部分作为第二通信密钥中的第二消息认证码密钥MKey2;
具体地,获取第八数据的第1个至第16字节的数据为第二加密密钥SKey2,获取第八数据的第5个至第20字节的数据为第二消息认证码密钥MKey2;
例如,X=HMAC(M1,key_label||r1||r2),其中,共享主密钥M1取前16个字节,第三预设字符串即key_label为3字节ASCII码“KEY”;X1、X2……X20分别为X的第1个至第20字节,则第二加密密钥SKey2为:SKey2=X1X2……X16,第二消息认证码密钥MKey2为:MKey2=X5X6……X20;
步骤156:服务器使用与服务器处理标识对应的处理机制和第二通信密钥对明文指令进行处理,得到通信指令,向第二终端发送通信指令;
具体地,通信指令为服务器与第一终端通信过程中的传输APDU的指令;
具体地,服务器使用与服务器处理标识对应的处理机制和第二通信密钥中的第二加密密钥SKey2对明文指令进行处理,得到密文指令;根据第二通信密钥中的第二消息认证码密钥MKey2对密文指令进行消息认证码运算,得到第一认证码;对密文指令和第一认证码进行组合得到的通信指令;
例如,第二加密密钥SKey2为9EDCF5A6A6427D56B519E15FE4FCC338,第二消息认证码密钥MKey2为A6427D56B519E15FE4FCC33876461B3C;服务器成功验证第二完成消息F2后,生成通信指令具体为:
若服务器中的明文指令为7E4100000C000000000200130609140905,处理机制为3DES,使用第二加密密钥SKey2对明文指令进行加密,得到的密文指令为EF5A1B3E3630B2905C474A1D5F01323B14063D51CF25D8A9;
服务器使用第二消息认证码密钥MKey2对密文指令进行消息认证码(MAC)运算,得到的第一认证码为9135188AFBEB2CC0;
服务器对密文指令和第一认证码进行组合得到的通信指令,即通信指令为7F2B000020EF5A1B3E3630B2905C474A1D5F01323B14063D51CF25D8A99135188AFBEB2CC0;
步骤157:第二终端接收服务器发送的通信指令,向第一终端转发通信指令;
步骤158:第一终端接收通信指令,根据第一通信密钥对通信指令进行认证,判断是否认证成功,是则执行步骤161,否则向第二终端返回错误信息,执行步骤159;
具体地,第一终端根据第一通信密钥中的第一消息认证码密钥MKey1对通信指令中的密文指令进行消息认证码(MAC)运算,得到第二认证码,判断第二认证码是否与通信指令中的第一认证码相同,是则表示认证成功,否则表示认证失败;
例如,第一加密密钥SKey1为9EDCF5A6A6427D56B519E15FE4FCC338,第一消息认证码密钥MKey1为A6427D56B519E15FE4FCC33876461B3C;第一终端对通信指令进行认证具体为:
若通信指令为:
7F2B000020EF5A1B3E3630B2905C474A1D5F01323B14063D51CF25D8A99135188AFBEB2CC0;
其中密文指令为:
EF5A1B3E3630B2905C474A1D5F01323B14063D51CF25D8A9;
第一认证码为9135188AFBEB2CC0;
第一终端使用第一消息认证码密钥MKey1对通信指令中的密文指令进行消息认证码(MAC)运算,得到的第二认证码为9135188AFBEB2CC0,则第二认证码与第一认证码相同,通信指令认证成功;
步骤159:第二终端接收第一终端发送的错误信息,向服务器转发错误信息;
步骤160:服务器接收错误信息,断开与第二终端的连接,通信结束;
步骤161:第一终端使用与终端处理标识对应的处理机制和第一通信密钥对通信指令进行处理,得到明文指令,根据明文指令的内容执行相应操作,得到明文响应,使用与终端处理标识对应的处理机制和第一通信密钥对明文响应进行处理,得到通信响应;
具体地,第一终端使用与终端处理标识对应的处理机制和第一通信密钥中的第一加密密钥SKey1对通信指令中的密文指令进行处理,得到明文指令;
例如,密文指令为:
EF5A1B3E3630B2905C474A1D5F01323B14063D51CF25D8A9;
第一终端使用终端处理标识对应的处理机制和第一加密密钥SKey1对通信指令中的密文指令进行解密,得到的明文指令为:
7E4100000C000000000200130609140905;
第一终端根据明文指令的内容执行相应操作,得到的明文响应为:
02950580800480009A031306099F3704FF0AC27D82027D009F360200EB9F2701809F260827D8FCF81CD2994B9F100807010103A0B800019F34034203019F41030000018407A00000033301019F0902008C
第一终端根据明文响应生成通信响应具体为:
第一终端使用与终端处理标识对应的处理机制和第一通信密钥中的第一加密密钥SKey1对明文响应进行处理,得到的密文响应;根据第一通信密钥中的第一消息认证码密钥MKey1对密文响应进行消息认证码运算,得到的第三认证码;对密文响应和第三认证码进行组合得到的通信响应;
例如,若处理机制为3DES,第一终端使用第一加密密钥SKey1对明文响应进行加密,得到的密文响应为:
B741D34D3C5CD68D510F6B273A32A2E91973E633E52219C6F6CE54B385AB4D2EBC071A4A7FCAB940251E8EC04F7F7944D7473B89EA7E3904D55B4302345724955024E0DD70BAEB3FBC6EF01E1605370B07FA983F81EB5C62;
第一终端使用第一消息认证码密钥MKey1对密文响应进行消息认证码(MAC)运算,得到的第三认证码为7D45D45F3E8DB658;
第一终端对密文响应和第一认证码进行组合得到的通信响应为:
B741D34D3C5CD68D510F6B273A32A2E91973E633E52219C6F6CE54B385AB4D2EBC071A4A7FCAB940251E8EC04F7F7944D7473B89EA7E3904D55B4302345724955024E0DD70BAEB3FBC6EF01E1605370B07FA983F81EB5C627D45D45F3E8DB6589000;
步骤162:第一终端向第二终端发送通信响应;
步骤163:第二终端接收第一终端发送的通信响应,向服务器转发通信响应;
步骤164:服务器接收通信响应,根据第二通信密钥对通信响应进行认证,判断是否认证成功,是则执行步骤165,否则向第二终端返回错误信息,断开与第二终端的连接,通信结束;
具体地,服务器根据第二通信密钥中的第二消息认证码密钥MKey2对通信响应中的密文响应进行消息认证码(MAC)运算,得到第四认证码,判断第四认证码是否与通信响应中的第三认证码相同,是则表示认证成功,否则表示认证失败;
步骤165:服务器使用与服务器处理标识对应的处理机制和第二通信密钥对通信响应进行处理,得到明文响应,结束;
具体地,服务器使用与服务器处理标识对应的处理机制和第二通信密钥中的第二加密密钥SKey2对通信响应中的密文响应进行处理,得到明文响应。
实施例3
本发明的实施例3提供一种安全通信的方法,如图5所示,包括:
步骤201:当第一终端接收到第二获取指令时,获取自身的设备信息,通过第二终端向服务器发送第一终端的设备信息;
具体地,第二获取指令由服务器发送到第二终端,第二终端向第一终端进行转发;第二获取指令为获取第一终端的设备信息的指令;
步骤202:当第一终端接收到第一获取指令时,获取自身的处理标识列表A1,并生成第一随机数r1,将第一随机数r1和处理标识列表A1进行拼接后得到终端数据R1;
具体地,第一获取指令由服务器发送到第二终端,第二终端向第一终端进行转发;第一获取指令为获取终端数据的指令;例如,第一获取指令为7E25000021;
步骤203:第一终端通过第二终端向服务器发送终端数据R1;
具体地,第二终端接收终端数据R1,向服务器转发终端数据R1;
步骤204:当第一终端接收到第一验证指令时,获取第一验证指令中的服务器证书;
具体地,第一验证指令由服务器发送到第二终端,第二终端向第一终端进行转发;
步骤205:第一终端使用自身保存的认证中心证书验证服务器证书,判断是否验证成功,是则向第二终端返回验证成功信息,执行步骤206,否则向第二终端返回错误信息;
具体地,该步骤之后,第二终端接收验证成功信息或错误信息,向服务器转发验证成功信息或错误信息;服务器接收到错误信息后,断开与第二终端的连接;
步骤206:当第一终端接收到第三获取指令时,获取第三获取指令中的服务器数据R2;
具体地,第四指令由服务器发送到第二终端,第二终端向第一终端进行转发;第三获取指令为获取签名值的指令;
步骤207:第一终端将终端数据R1和服务器数据R2进行拼接后得到待签名数据R3,对待签名数据R3进行摘要运算得到第一摘要H1,使用第一终端的私钥对第一摘要H1进行签名运算得到签名值S1;
步骤208:第一终端通过第二终端向服务器发送签名值S1;
具体地,第二终端接收签名值S1,向服务器转发签名值S1;
步骤209:当第一终端接收到第四获取指令时,生成一个预设长度的第三随机数作为共享主密钥M1,并且使用服务器证书的公钥对共享主密钥M1进行加密得到第一加密数据E1;
具体地,第四获取指令由服务器发送到第二终端,第二终端向第一终端进行转发;第四获取指令为获取第一加密数据的指令;
步骤210:第一终端通过第二终端向服务器发送第一加密数据E1;
具体地,第二终端接收第一加密数据E1,向服务器转发第一加密数据E1;
步骤211:当第一终端接收到第五获取指令时,读取终端证书;
具体地,第五获取指令由服务器发送到第二终端,第二终端向第一终端进行转发;第五获取指令为获取终端证书的指令;
步骤212:第一终端通过第二终端向服务器发送终端证书;
具体地,第二终端接收终端证书,向服务器转发终端证书;
步骤213:当第一终端接收到第二验证指令时,从第二验证指令中获取第一完成消息F1;
具体地,第二验证指令由服务器发送到第二终端,第二终端向第一终端进行转发;第二验证指令为验证第一完成消息F1的指令;
步骤214:第一终端根据服务器证书、终端证书、终端数据R1、服务器数据R2、签名值S1、第一加密数据E1、第一预设字符串和共享主密钥M1对第一完成消息F1进行验证,判断是否验证成功,是则向第二终端发送验证成功信息,执行步骤215;否则向第二终端发送错误消息;
具体地,第二终端接收错误信息,向服务器转发错误信息;服务器接收到错误信息后,断开与第二终端的连接;
步骤215:当第一终端接收到第六获取指令时,对服务器证书、终端证书、终端数据R1、服务器数据R2、签名值S1、第一加密数据E1、第二预设字符串和共享主密钥M1进行运算得到第二完成消息F2;
具体地,第六获取指令由服务器发送到第二终端,第二终端向第一终端进行转发;第六获取指令为获取第二完成消息F2的指令;
本实施例中,得到第二完成消息F2具体为:第一终端对服务器证书进行摘要运算得到第五摘要H5,对终端证书进行摘要运算得到第六摘要H6,将终端数据R1、服务器数据R2、第五摘要H5、第六摘要H6、签名值S1和第一加密数据E1进行拼接后得到第三数据T3,对第三数据T3进行摘要运算得到第七摘要H7,将第二预设字符串和第七摘要H7进行拼接后得到第四数据D4,使用共享主密钥M1的第一部分对第四数据D4进行基于哈希运算的消息认证码(HMAC)运算得到第二完成消息F2;其中,第二预设字符串为ASCII码“CLIENT”;
步骤216:第一终端通过第二终端向服务器发送第二完成消息F2,第一终端根据共享主密钥M1、第三预设字符串、第一随机数和第二随机数生成第一通信密钥;
具体地,第二终端接收第二完成消息F2,向服务器转发第二完成消息F2;
本实施例中,第一终端根据共享主密钥M1、第三预设字符串、第一随机数和第二随机数生成第一通信密钥,其中,第一通信密钥包括:第一加密密钥和第一消息认证码密钥;生成第一通信密钥的具体方法为:
步骤A:将第三预设字符串、第一随机数和第二随机数进行拼接得到第五数据;
步骤B:使用共享主密钥M1的第一部分对第五数据进行基于哈希运算的消息认证码(HMAC)运算得到第六数据,获取第六数据的第一部分作为第一通信密钥中的第一加密密钥,获取第六数据的第二部分作为第一通信密钥中的第一消息认证码密钥;
步骤217:当第一终端接收到通信指令时,根据第一通信密钥对通信指令进行认证,判断是否认证成功,是则执行步骤218,否则向第二终端返回错误信息;
本实施例中,第二终端接收认证成功信息或错误信息,向服务器转发认证成功信息或错误信息;服务器接收到错误信息后,断开与第二终端的连接;
具体地,服务器与第一终端建立安全通道后,开始与第一终端进行安全通信;通信指令为服务器与第一终端通信过程中的传输APDU的指令;通信指令由服务器发送到第二终端,第二终端向第一终端进行转发;
具体地,第一终端使用第一通信密钥中的消息认证码密钥对通信指令中的密文指令进行消息认证码(MAC)运算,得到第二认证码,判断第二认证码是否与通信指令中的第一认证码相同,是则表示认证成功,否则表示认证失败;
步骤218:第一终端使用与终端处理标识对应的处理机制和第一通信密钥对通信指令中进行处理,得到明文指令,根据明文指令的内容执行相应操作,得到明文响应,使用与终端处理标识对应的处理机制和第一通信密钥对明文响应进行处理,得到通信响应;
具体地,第一终端使用与终端处理标识对应的处理机制和第一通信密钥终端第一加密密钥对通信指令中的密文指令进行处理,得到明文指令;第一终端使用与终端处理标识对应的处理机制和第一通信密钥中的第一加密密钥对明文响应进行处理,得到的密文响应;根据第一通信密钥中的第一消息认证码密钥对密文响应进行消息认证码运算,得到的第三认证码;对密文响应和第三认证码进行组合得到的通信响应;
步骤219:第一终端通过第二终端向服务器发送通信响应;
具体地,第二终端接收通信响应,向服务器转发通信响应。
实施例4
本发明的实施例4是在实施例1的基础上提供了一种安全通信的系统,如图6所示,包括:第一终端A、第二终端B和服务器C;
第一终端A包括第一接收模块A01、第一生成模块A03、第一验证模块A04、第一设置模块A05、加密模块A06、第二验证模块A07、第三验证模块A08、第一处理模块A09和第一发送模块A02;
第一接收模块A01,用于通过第二终端B接收来自服务器C的第一获取指令、服务器数据、服务器证书、第一完成消息和通信指令;
第一生成模块A03,用于当第一接收模块A01接收到第一获取指令时,生成第一随机数,根据第一随机数和第一终端A保存的处理标识列表生成终端数据;当第一设置模块A05设置终端处理标识后,根据终端数据和服务器数据生成签名值,生成一个预设长度的第三随机数作为共享主密钥;当第二验证模块A07对第一完成消息验证成功后,根据服务器证书、终端证书、终端数据、服务器数据、签名值、加密模块A06加密得到的第一加密数据、第二预设字符串和共享主密钥生成第二完成消息,根据共享主密钥、第三预设字符串、第一随机数和服务器数据中的第二随机数生成第一通信密钥;
第一验证模块A04,用于根据第一终端A保存的认证中心证书对第一接收模块A01接收到的服务器证书进行验证,判断是否验证成功;
第一设置模块A05,用于当第一验证模块A04对所述服务器证书验证成功时,根据第一接收模块A01接收到的服务器数据获取服务器处理标识,根据服务器处理标识设置终端处理标识;
加密模块A06,用于根据服务器证书的公钥对第一生成模块A03生成的共享主密钥进行加密得到第一加密数据;
第二验证模块A07,用于根据服务器证书、终端证书、终端数据、服务器数据、签名值、第一加密数据、第一预设字符串和共享主密钥对第一接收模块A01接收到的第一完成消息进行验证,判断是否验证成功;
第三验证模块A08,用于根据第一通信密钥对第一接收模块A01接收到的通信指令进行验证,判断是否验证成功;
第一处理模块A09,用于当第三验证模块A08对通信指令验证成功时,使用终端处理标识对应的处理机制和第一生成模块A03生成的第一通信密钥对通信指令进行处理,得到明文指令,根据明文指令的内容执行相应操作,得到明文响应,使用终端处理标识对应的处理机制和第一通信密钥对明文响应进行处理,得到通信响应;
第一发送模块A02,用于通过第二终端B向服务器C发送第一生成模块A03生成的终端数据、签名值和第二完成消息;通过第二终端B向服务器C发送自身的终端证书;通过第二终端B向服务器C发送加密模块A06加密得到的第一加密数据;当第一验证模块A04、第二验证模块A07和第三验证模块A08验证失败时,通过第二终端B向服务器C发送错误信息;通过第二终端B向服务器C发送第一处理模块A09处理得到的通信响应;
服务器C包括第二接收模块C01、第一获取模块C03、检查模块C04、第二设置模块C05、第二生成模块C06、第四验证模块C07、第五验证模块C08、解密模块C09、第六验证模块C10、第二处理模块C11、第七验证模块C13、第三处理模块C12、第二发送模块C02和通信中断模块C14;
第二接收模块C01,用于接收来自第二终端B的通信请求,通过第二终端B接收来自第一终端A的终端数据、终端证书、第一加密数据、签名值、第二完成消息、通信响应和错误信息;
第一获取模块C03,用于根据第二接收模块C01接收到的终端数据获取处理标识列表;
检查模块C04,用于检查服务器C是否支持第一获取模块C03获取到的处理标识列表中的标识信息对应的处理机制;
第二设置模块C05,用于当检查模块C04检查到服务器C支持处理标识列表中的标识信息对应的处理机制时,根据处理标识列表中与服务器C支持的处理机制对应的标识信息,设置服务器处理标识;
第二生成模块C06,用于当第二设置模块C05设置服务器处理标识后,生成第二随机数,根据第二随机数和服务器处理标识生成服务器数据;根据服务器证书、终端证书、终端数据、服务器数据、签名值、第一加密数据、第一预设字符串和解密模块C09解密得到的共享主密钥生成第一完成消息;当第六验证模块C10对第二完成消息验证成功时,根据共享主密钥、第三预设字符串、第一随机数和第二随机数生成第二通信密钥;
第四验证模块C07,用于根据服务器C保存的认证中心证书对第二接收模块C01接收到的终端证书进行验证,判断是否验证成功;
第五验证模块C08,用于当第四验证模块C07对终端证书验证成功时,根据终端证书对第二接收模块C01接收到的签名值进行验证,判断是否验证成功;
解密模块C09,用于当第五验证模块C08对签名值验证成功时,根据服务器证书的私钥对第二接收模块C01接收到的第一加密数据进行解密,得到共享主密钥;
第六验证模块C10,用于根据服务器证书、终端证书、终端数据、服务器数据、签名值、第一加密数据、第二预设字符串和共享主密钥对第二接收模块C01接收到的第二完成消息进行验证,判断是否验证成功;
第二处理模块C11,用于使用与服务器处理标识对应的处理机制和第二生成模块C06生成的第二通信密钥对明文指令进行处理,得到通信指令;
第七验证模块C13,用于根据第二通信密钥对第二接收模块C01接收到的通信响应进行验证,判断是否验证成功;
第三处理模块C12,用于当第七验证模块C13对通信响应验证成功时,使用与服务器处理标识对应的处理机制和第二通信密钥对第二接收模块C01接收到的通信响应进行处理,得到明文响应;
第二发送模块C02,用于当第二接收模块C01接收到通信请求时,通过第二终端B向第一终端A发送第一获取指令;通过第二终端B向第一终端A发送第二生成模块C06生成的服务器数据和第一完成消息;通过第二终端B向第一终端A发送服务器C保存的服务器证书;通过第二终端B向第一终端A发送第二处理模块C11处理得到的通信指令;
通信中断模块C14,用于当检查模块C04检查服务器C不支持处理标识列表中的标识信息对应的处理机制时、当第二接收模块C01接收到所述错误信息时、当第四验证模块C07对终端证书验证失败时、当第五验证模块C08对签名值验证失败时、当第六验证模块C10对第二完成消息验证失败时,断开与第二终端B之间的连接。
第二发送模块C02,还用于通过第二终端B向第一终端A发送第二获取指令;
第一接收模块A01,还用于通过第二终端B接收来自服务器C的第二获取指令;
第一终端A还包括第二获取模块,用于当第一接收模块A01接收到第二获取指令时,获取第一终端A的设备信息;
第一终端A的第一发送模块A02,还用于通过第二终端B向服务器C发送设备信息;
服务器C还包括第一判断模块,用于根据设备信息判断服务器C是否已与第一终端A建立安全通道;
第二生成模块C06还用于当第一判断模块判断服务器C已与第一终端A建立安全通道时,根据共享主密钥、第三预设字符串、第一随机数和第二随机数生成通信密钥;
第二发送模块C02还用于当第一判断模块判断服务器C未与第一终端A建立安全通道时,通过第二终端B向第一终端A发送第一获取指令。
第一生成模块A03包括第一拼接单元,用于将第一随机数和处理标识列表进行拼接,得到终端数据。
第二生成模块C06包括第二拼接单元,用于将第二随机数和服务器处理标识进行拼接,得到服务器数据。
第一生成模块A03包括第三拼接单元、第一摘要单元和签名单元;
第三拼接单元,用于当第一设置模块A05设置终端处理标识后,将终端数据和服务器数据进行拼接后得到待签名数据;
第一摘要单元,用于对第三拼接单元拼接得到的待签名数据进行摘要运算得到第一摘要;
签名单元,用于使用第一终端A的私钥对第一摘要单元进行摘要运算得到的第一摘要进行签名运算得到签名值;
第五验证模块C08包括第四拼接单元、第二摘要单元、第一计算单元和第一判断单元;
第四拼接单元,用于当第四验证模块C07对终端证书验证成功时,将终端数据和服务器数据进行拼接,得到验证数据;
第二摘要单元,用于对第四拼接单元拼接得到的验证数据进行摘要运算得到第一验证摘要;
第一计算单元,用于当第二摘要单元运算得到第一验证摘要时,使用终端证书中的公钥对签名值进行计算,得到第一摘要;
第一判断单元,用于判断第二摘要单元运算得到的第一验证摘要与第一计算单元计算得到的第一摘要是否相同,是则确定对签名值验证成功,否则确定对签名值验证失败。
第二生成模块C06包括第三摘要单元、第五拼接单元和第二计算单元;
第三摘要单元,用于当解密模块C09解密得到共享主密钥后,对服务器证书进行摘要运算得到第二摘要,对终端证书进行摘要运算得到第三摘要;对第五拼接单元拼接得到的第一数据进行摘要运算得到第四摘要;
第五拼接单元,用于将终端数据、服务器数据、第三摘要单元摘要运算得到第二摘要和第三摘要、签名值和第一加密数据进行拼接,得到第一数据;将第一预设字符串和第三摘要单元摘要运算得到的第四摘要进行拼接后得到第二数据;
第二计算单元,用于使用共享主密钥的第一预设部分对第五拼接单元拼接得到的第二数据进行基于哈希运算的消息认证码运算得到第一完成消息;
第二验证模块A07包括第四摘要单元、第六拼接单元、第三计算单元和第二判断单元;
第四摘要单元,用于当第一接收模块A01接收到第一完成消息时,对服务器证书进行摘要运算得到第二验证摘要,对终端证书进行摘要运算得到第三验证摘要;对第六拼接单元拼接得到的第一验证数据进行摘要运算得到第四验证摘要;
第六拼接单元,用于将终端数据、服务器数据、第四摘要单元摘要运算得到的第二验证摘要和第三验证摘要、签名值和第一加密数据进行拼接后得到第一验证数据;将第一预设字符串和第四摘要单元摘要运算得到的第四验证摘要进行拼接,得到第二验证数据;
第二计算单元,用于使用共享主密钥的第一预设部分对第六拼接单元拼接得到的第二验证数据进行基于哈希运算的消息认证码运算得到第一验证消息;
第二判断单元,用于判断第二计算单元计算得到的第一验证消息与第一接收模块接收到的第一完成消息是否相同,是则确定对第一完成消息验证成功,否则确定对第一完成消息验证失败。
第一生成模块A03包括第五摘要单元、第七拼接单元和第三计算单元;
第五摘要单元,用于当第二验证模块A07对第一完成消息验证成功时,对服务器证书进行摘要运算得到第五摘要,对终端证书进行摘要运算得到第六摘要;对第七拼接单元拼接到的第三数据进行摘要运算得到第七摘要;
第七拼接单元,用于将终端数据、服务器数据、第五摘要单元摘要运算得到的第五摘要和第六摘要、签名值和第一加密数据进行拼接,得到第三数据;将第二预设字符串和第五摘要单元摘要运算得到的第七摘要进行拼接,得到第四数据;
第三计算单元,用于使用共享主密钥的第一预设部分对第七拼接单元拼接到的第四数据进行基于哈希运算的消息认证码运算得到第二完成消息;
第六验证模块C10包括第六摘要单元、第八拼接单元、第四计算单元和第三判断单元;
第六摘要单元,用于当第二接收模块C01接收到第二完成消息时,对服务器证书进行摘要运算得到第五验证摘要,对终端证书进行摘要运算得到第六验证摘要;对第八拼接单元拼接得到的第三验证数据进行摘要运算得到第七验证摘要;
第八拼接单元,用于将终端数据、服务器数据、第六摘要单元摘要运算得到的第五验证摘要和第六验证摘要、签名值和第一加密数据进行拼接,得到第三验证数据;将第二预设字符串和第六摘要单元摘要运算得到的第七验证摘要进行拼接,得到第四验证数据;
第四计算单元,用于使用共享主密钥的第一预设部分对第八拼接单元拼接得到的第四验证数据进行基于哈希运算的消息认证码运算得到第二验证消息;
第三判断单元,用于判断第四计算单元计算得到的第二验证消息与第二接收模块C01接收到的第二完成消息是否相同,是则确定对第二完成消息验证成功,否则确定对第二完成消息验证失败。
第一生成模块A03还包括第九拼接单元和第五计算单元;
第九拼接单元,用于当第一生成模块A03生成第四计算单元后,将第三预设字符串、第一随机数和第二随机数进行拼接得到第五数据;
第五计算单元,用于使用共享主密钥的第二预设部分对第九拼接单元拼接得到的第五数据进行基于哈希运算的消息认证码运算得到第六数据,将第六数据的第一部分作为第一通信密钥中的第一加密密钥,将第六数据的第二部分作为第一通信密钥中的第一消息认证码密钥;
第二生成模块C06还包括第十拼接单元和第六计算单元;
第十拼接单元,用于当第六验证模块C10对第二完成消息验证成功时,将第三预设字符串、第一随机数和第二随机数进行拼接得到第七数据;
第六计算单元,用于使用共享主密钥的第二预设部分对第十拼接单元拼接得到的第七数据进行基于哈希运算的消息认证码运算得到第八数据,将第八数据的第一部分作为第二通信密钥中的第二加密密钥,将第六数据的第二部分作为第二通信密钥中的第二消息认证码密钥。
第二处理模块C11包括第一处理单元、第一认证单元和第一组合单元;
第一处理单元,用于当第二生成模块C06生成通信密钥时,使用与服务器处理标识对应的处理机制和第二生成模块C06生成的第二通信密钥中的第二加密密钥对明文指令进行处理,得到密文指令;
第一认证单元,用于根据第二通信密钥中的第二消息认证码密钥对第一处理单元处理得到的密文指令进行消息认证码运算,得到的第一认证码;
第一组合单元,用于对密文指令和第一认证单元运算得到的第一认证码进行组合,得到的通信指令;
第三验证模块A08包括第二认证单元和第四判断单元;
第二认证单元,用于根据第一通信密钥中的第一消息认证码密钥对第一接收模块A01接收到的通信指令中的密文指令进行消息认证码运算,得到第二认证码;
第四判断单元,用于判断第二认证单元运算得到的第二认证码是否与通信指令中的第一认证码相同,是则确定对通信指令验证成功,否则确定对通信指令验证失败;
第一处理模块A09具体用于当第三验证模块A08对通信指令验证成功时,使用与终端处理标识对应的处理机制和第一通信密钥中的第一加密密钥对通信指令中的密文指令进行处理,得到明文指令。
第一处理模块A09包括第二处理单元、第三认证单元和第二组合单元;
第二处理单元,用于当第三验证模块A08对通信指令验证成功时,使用与终端处理标识对应的处理机制和第一通信密钥中的第一加密密钥对明文响应进行处理,得到密文响应;
第三认证单元,用于根据第一通信密钥中的第一消息认证码密钥对第二处理单元处理得到的密文响应进行消息认证码运算,得到的第三认证码;
第二组合单元,用于对第二处理单元处理得到的密文响应和第三认证单元运算得到的第三认证码进行组合得到的通信响应;
第七验证模块C13包括第四认证单元和第五判断单元;
第四认证单元,用于根据第二通信密钥中的第二消息认证码密钥对第二接收模块C01接收到的通信响应中的密文响应进行消息认证码运算,得到第四认证码;
第五判断单元,用于判断第四认证单元运算得到的第四认证码是否与通信响应中的第三认证码是否相同,是则确定对通信响应验证成功,否则确定对通信响应验证失败;
第三处理模块C12具体用于当第七验证模块C13对通信响应验证成功时,使用与服务器处理标识对应的处理机制和第二通信密钥中的第二加密密钥对通信响应中的密文响应进行处理,得到明文响应。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (20)

1.一种安全通信的方法,应用于包括第一终端、第二终端和服务器的系统中,其特征在于,所述方法包括:
步骤S0:所述服务器通过所述第二终端向所述第一终端发送第一获取指令;
步骤S1:所述第一终端生成第一随机数,根据所述第一随机数和自身保存的处理标识列表生成终端数据,通过所述第二终端向所述服务器发送所述终端数据;
步骤S2:所述服务器根据所述终端数据获取所述处理标识列表,检查自身是否支持所述处理标识列表中的标识信息对应的处理机制,是则根据所述处理标识列表中与所述服务器支持的处理机制对应的标识信息,设置服务器处理标识,执行步骤S3;否则断开与所述第二终端之间的连接,结束;
步骤S3:所述服务器生成第二随机数,根据所述第二随机数和所述服务器处理标识生成服务器数据,通过所述第二终端向所述第一终端发送所述服务器数据和自身保存的服务器证书;
步骤S4:所述第一终端根据自身保存的认证中心证书对所述服务器证书进行验证,判断是否验证成功,是则根据所述服务器数据获取所述服务器处理标识,根据所述服务器处理标识设置终端处理标识,执行步骤S5,否则通过所述第二终端向所述服务器返回错误信息,所述服务器断开与所述第二终端之间的连接,结束;
步骤S5:所述第一终端根据所述终端数据和所述服务器数据生成签名值,生成一个预设长度的第三随机数作为共享主密钥,根据所述服务器证书的公钥对所述共享主密钥进行加密得到第一加密数据,通过所述第二终端向所述服务器发送所述签名值、所述第一加密数据和所述第一终端保存的终端证书;
步骤S6:所述服务器根据自身保存的认证中心证书对所述终端证书进行验证,判断是否验证成功,是则执行步骤S7,否则断开与所述第二终端之间的连接,结束;
步骤S7:所述服务器根据所述终端证书对所述签名值进行验证,判断是否验证成功,是则根据所述服务器证书的私钥对所述第一加密数据进行解密,得到所述共享主密钥,执行步骤S8,否则断开与所述第二终端之间的连接,结束;
步骤S8:所述服务器根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述共享主密钥生成第一完成消息,通过所述第二终端向所述第一终端发送所述第一完成消息;
步骤S9:所述第一终端根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述共享主密钥对所述第一完成消息进行验证,判断是否验证成功,是则执行步骤S10,否则通过所述第二终端向所述服务器返回错误信息,所述服务器断开与所述第二终端之间的连接,结束;
步骤S10:所述第一终端根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第二预设字符串和所述共享主密钥生成第二完成消息,通过所述第二终端向所述服务器发送所述第二完成消息,根据所述共享主密钥、第三预设字符串、所述第一随机数和所述第二随机数生成第一通信密钥;
步骤S11:所述服务器根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第二预设字符串和所述共享主密钥对所述第二完成消息进行验证,判断是否验证成功,是则根据所述共享主密钥、所述第三预设字符串、所述第一随机数和所述第二随机数生成第二通信密钥,执行步骤S12,否则断开与所述第二终端的连接,结束;
步骤S12:所述服务器使用与所述服务器处理标识对应的所述处理机制和所述第二通信密钥对明文指令进行处理,得到通信指令,通过所述第二终端向所述第一终端发送所述通信指令;
步骤S13:所述第一终端根据所述第一通信密钥对所述通信指令进行验证,判断是否验证成功,是则执行步骤S14,否则通过所述第二终端向所述服务器返回错误信息,所述服务器断开与所述第二终端之间的连接,结束;
步骤S14:所述第一终端使用所述终端处理标识对应的处理机制和所述第一通信密钥对所述通信指令进行处理,得到所述明文指令,根据所述明文指令的内容执行相应操作,得到明文响应,使用所述终端处理标识对应的处理机制和所述第一通信密钥对所述明文响应进行处理,得到通信响应,通过所述第二终端向所述服务器发送所述通信响应;
步骤S15:所述服务器根据所述第二通信密钥对所述通信响应进行验证,判断是否验证成功,是则使用与所述服务器处理标识对应的处理机制和所述第二通信密钥对所述通信响应进行处理,得到所述明文响应,结束;否则向所述第二终端返回错误信息,结束。
2.根据权利要求1所述的方法,其特征在于,所述步骤S0中,所述服务器通过所述第二终端向所述第一终端发送第一获取指令之前包括:
步骤S0-1:所述服务器通过所述第二终端向所述第一终端发送第二获取指令;
步骤S0-2:所述第一终端获取自身的设备信息,通过所述第二终端向所述服务器发送所述设备信息;
步骤S0-3:所述服务器根据所述设备信息判断是否已与所述第一终端建立安全通道,是则根据所述共享主密钥、所述第三预设字符串、所述第一随机数和所述第二随机数,生成所述通信密钥,执行步骤S12,否则执行步骤S0。
3.根据权利要求1所述的方法,其特征在于,所述步骤S1中,所述根据第一随机数和自身保存的处理标识列表生成终端数据具体为:所述第一终端将所述第一随机数和所述处理标识列表进行拼接,得到所述终端数据。
4.根据权利要求1所述的方法,其特征在于,所述服务器根据所述第二随机数和所述服务器处理标识生成服务器数据具体为:所述服务器将所述第二随机数和所述服务器处理标识进行拼接,得到所述服务器数据。
5.根据权利要求1所述的方法,其特征在于,所述第一终端根据所述终端数据和所述服务器数据生成签名值具体为:所述第一终端将所述终端数据和所述服务器数据进行拼接后得到待签名数据,对所述待签名数据进行摘要运算得到第一摘要,使用所述第一终端的私钥对所述第一摘要进行签名运算得到所述签名值;
所述服务器根据所述终端证书对所述签名值进行验证,判断是否验证成功,具体为:
所述服务器将所述终端数据和所述服务器数据进行拼接后得到验证数据,对所述验证数据进行摘要运算得到第一验证摘要,使用所述终端证书中的公钥对所述签名值进行计算,得到所述第一摘要,判断所述第一验证摘要与所述第一摘要是否相同,是则验证成功,否则验证失败。
6.根据权利要求1所述的方法,其特征在于,所述服务器根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述共享主密钥生成第一完成消息,具体为:
所述服务器对所述服务器证书进行摘要运算得到第二摘要,对所述终端证书进行摘要运算得到第三摘要,将所述终端数据、所述服务器数据、所述第二摘要、所述第三摘要、所述签名值和所述第一加密数据进行拼接后得到第一数据,对所述第一数据进行摘要运算得到第四摘要,将所述第一预设字符串和所述第四摘要进行拼接,得到第二数据,使用所述共享主密钥的第一预设部分对所述第二数据进行基于哈希运算的消息认证码运算得到所述第一完成消息;
所述第一终端根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述共享主密钥对所述第一完成消息进行验证,判断是否验证成功,具体为:
所述第一终端对所述服务器证书进行摘要运算得到第二验证摘要,对所述终端证书进行摘要运算得到第三验证摘要,将所述终端数据、所述服务器数据、所述第二验证摘要、所述第三验证摘要、所述签名值和所述第一加密数据进行拼接,得到第一验证数据,对所述第一验证数据进行摘要运算得到第四验证摘要,将所述第一预设字符串和所述第四验证摘要进行拼接后得到第二验证数据,使用所述共享主密钥的第一预设部分对所述第二验证数据进行基于哈希运算的消息认证码运算得到第一验证消息;判断所述第一验证消息与所述第一完成消息是否相同,是则验证成功,否则验证失败。
7.根据权利要求1所述的方法,其特征在于,所述第一终端根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第二预设字符串和所述共享主密钥生成第二完成消息具体为:
所述第一终端对所述服务器证书进行摘要运算得到第五摘要,对所述终端证书进行摘要运算得到第六摘要,将所述终端数据、所述服务器数据、所述第五摘要、所述第六摘要、所述签名值和所述第一加密数据进行拼接后得到第三数据,对所述第三数据进行摘要运算得到第七摘要,将所述第二预设字符串和所述第七摘要进行拼接,得到第四数据,使用所述共享主密钥的第一预设部分对所述第四数据进行基于哈希运算的消息认证码运算得到所述第二完成消息;
所述服务器根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第二预设字符串和所述共享主密钥对所述第二完成消息进行验证,判断是否验证成功,具体为:
所述服务器对所述服务器证书进行摘要运算得到第五验证摘要,对所述终端证书进行摘要运算得到第六验证摘要,将所述终端数据、所述服务器数据、所述第五验证摘要、所述第六验证摘要、所述签名值和所述第一加密数据进行拼接,得到第三验证数据,对所述第三验证数据进行摘要运算得到第七验证摘要,将所述第二预设字符串和所述第七验证摘要进行拼接后得到第四验证数据,使用所述共享主密钥的第一预设部分对所述第四验证数据进行基于哈希运算的消息认证码运算得到第二验证消息;判断所述第二验证消息与所述第二完成消息是否相同,是则验证成功,否则验证失败。
8.根据权利要求1所述的方法,其特征在于,所述第一通信密钥包括第一加密密钥和第一消息认证码密钥;
所述根据所述共享主密钥、第三预设字符串、所述第一随机数和所述第二随机数生成第一通信密钥具体为:
步骤A:将所述第三预设字符串、所述第一随机数和所述第二随机数进行拼接得到第五数据;
步骤B:使用所述共享主密钥的第二预设部分对所述第五数据进行基于哈希运算的消息认证码运算得到第六数据,将所述第六数据的第一部分作为所述第一通信密钥中的所述第一加密密钥,将所述第六数据的第二部分作为所述第一通信密钥中的所述第一消息认证码密钥;
所述第二通信密钥包括第二加密密钥和第二消息认证码密钥;
所述根据所述共享主密钥、第三预设字符串、所述第一随机数和所述第二随机数生成第二通信密钥具体为:
步骤C:将所述第三预设字符串、所述第一随机数和所述第二随机数进行拼接得到第七数据;
步骤D:使用所述共享主密钥的第二预设部分对所述第七数据进行基于哈希运算的消息认证码运算得到第八数据,将所述第八数据的第一部分作为所述第二通信密钥中的所述第二加密密钥,将所述第六数据的第二部分作为所述第二通信密钥中的所述第二消息认证码密钥。
9.根据权利要求8所述的方法,其特征在于,所述服务器使用与所述服务器处理标识对应的所述处理机制和所述第二通信密钥对明文指令进行处理,得到通信指令,具体为:
所述服务器使用与所述服务器处理标识对应的所述处理机制和所述第二通信密钥中的所述第二加密密钥对所述明文指令进行处理,得到密文指令;根据所述第二通信密钥中的所述第二消息认证码密钥对所述密文指令进行消息认证码运算,得到第一认证码;对所述密文指令和所述第一认证码进行组合得到的所述通信指令;
所述根据所述第一通信密钥对所述通信指令进行验证,判断是否验证成功,具体为:
所述第一终端根据所述第一通信密钥中的所述第一消息认证码密钥对所述通信指令中的所述密文指令进行消息认证码运算,得到第二认证码,判断所述第二认证码是否与所述通信指令中的所述第一认证码相同,是则验证成功,否则验证失败。
所述第一终端使用与所述终端处理标识对应的处理机制和所述第一通信密钥对所述通信指令进行处理,得到所述明文指令,具体为:
所述第一终端使用与所述终端处理标识对应的所述处理机制和所述第一通信密钥中的所述第一加密密钥对所述通信指令中的所述密文指令进行处理,得到所述明文指令。
10.根据权利要求8所述的方法,其特征在于,所述使用所述终端处理标识对应的处理机制和所述第一通信密钥对所述明文响应进行处理,得到通信响应,具体为:
所述第一终端使用与所述终端处理标识对应的处理机制和所述第一通信密钥中的所述第一加密密钥对所述明文响应进行处理,得到的密文响应;根据所述第一通信密钥中的所述第一消息认证码密钥对所述密文响应进行消息认证码运算,得到的第三认证码;对所述密文响应和所述第三认证码进行组合得到所述通信响应;
所述根据所述第二通信密钥对所述通信响应进行验证,判断是否验证成功,具体为:
所述服务器根据所述第二通信密钥中的所述第二消息认证码密钥对所述通信响应中的所述密文响应进行消息认证码运算,得到第四认证码,判断所述第四认证码是否与所述通信响应中的所述第三认证码相同,是则验证成功,否则验证失败;
所述使用与所述服务器处理标识对应的处理机制和所述第二通信密钥对所述通信响应进行处理,得到所述明文响应,具体为:
所述服务器使用与所述服务器处理标识对应的所述处理机制和所述第二通信密钥中的所述第二加密密钥对所述通信响应中的所述密文响应进行处理,得到所述明文响应。
11.一种安全通信的系统,其特征在于,包括第一终端、第二终端和服务器;
所述第一终端包括第一接收模块、第一生成模块、第一验证模块、第一设置模块、加密模块、第二验证模块、第三验证模块、第一处理模块和第一发送模块;
所述第一接收模块,用于通过所述第二终端接收来自所述服务器的第一获取指令、服务器数据、服务器证书、第一完成消息和通信指令;
所述第一生成模块,用于当所述第一接收模块接收到所述第一获取指令时,生成第一随机数,根据所述第一随机数和所述第一终端保存的处理标识列表生成终端数据;当所述第一设置模块设置终端处理标识后,根据所述终端数据和所述服务器数据生成签名值,生成一个预设长度的第三随机数作为共享主密钥;当所述第二验证模块对所述第一完成消息验证成功后,根据所述服务器证书、终端证书、所述终端数据、所述服务器数据、所述签名值、所述加密模块加密得到的第一加密数据、第二预设字符串和所述共享主密钥生成第二完成消息,根据所述共享主密钥、第三预设字符串、所述第一随机数和所述服务器数据中的第二随机数生成第一通信密钥;
所述第一验证模块,用于根据所述第一终端保存的认证中心证书对所述第一接收模块接收到的所述服务器证书进行验证,判断是否验证成功;
所述第一设置模块,用于当所述第一验证模块对所述服务器证书验证成功时,根据所述第一接收模块接收到的所述服务器数据获取服务器处理标识,根据所述服务器处理标识设置终端处理标识;
所述加密模块,用于根据所述服务器证书的公钥对所述第一生成模块生成的所述共享主密钥进行加密得到所述第一加密数据;
所述第二验证模块,用于根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述共享主密钥对所述第一接收模块接收到的所述第一完成消息进行验证,判断是否验证成功;
所述第三验证模块,用于根据所述第一通信密钥对所述第一接收模块接收到的所述通信指令进行验证,判断是否验证成功;
所述第一处理模块,用于当所述第三验证模块对所述通信指令验证成功时,使用所述终端处理标识对应的处理机制和所述第一生成模块生成的所述第一通信密钥对所述通信指令进行处理,得到明文指令,根据所述明文指令的内容执行相应操作,得到明文响应,使用所述终端处理标识对应的处理机制和所述第一通信密钥对所述明文响应进行处理,得到通信响应;
所述第一发送模块,用于通过所述第二终端向所述服务器发送所述第一生成模块生成的所述终端数据、所述签名值和所述第二完成消息;通过所述第二终端向所述服务器发送所述终端证书;通过所述第二终端向所述服务器发送所述加密模块加密得到的所述第一加密数据;当所述第一验证模块、所述第二验证模块和所述第三验证模块验证失败时,通过所述第二终端向所述服务器发送错误信息;通过所述第二终端向所述服务器发送所述第一处理模块处理得到的所述通信响应;
所述服务器包括第二接收模块、第一获取模块、检查模块、第二设置模块、第二生成模块、第四验证模块、第五验证模块、解密模块、第六验证模块、第二处理模块、第七验证模块、第三处理模块、第二发送模块和通信中断模块;
所述第二接收模块,用于通过所述第二终端接收来自所述第一终端的所述终端数据、所述终端证书、所述第一加密数据、所述签名值、所述第二完成消息、所述通信响应和所述错误信息;
所述第一获取模块,用于根据所述第二接收模块接收到的所述终端数据获取所述处理标识列表;
所述检查模块,用于检查所述服务器是否支持所述第一获取模块获取到的所述处理标识列表中的标识信息对应的处理机制;
所述第二设置模块,用于当所述检查模块检查到所述服务器支持所述处理标识列表中的标识信息对应的处理机制时,根据所述处理标识列表中与所述服务器支持的处理机制对应的标识信息,设置所述服务器处理标识;
所述第二生成模块,用于当所述第二设置模块设置所述服务器处理标识后,生成所述第二随机数,根据所述第二随机数和所述服务器处理标识生成所述服务器数据;根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第一预设字符串和所述解密模块解密得到的所述共享主密钥生成第一完成消息;当所述第六验证模块对所述第二完成消息验证成功时,根据所述共享主密钥、所述第三预设字符串、所述第一随机数和所述第二随机数生成所述第二通信密钥;
所述第四验证模块,用于根据所述服务器保存的认证中心证书对所述第二接收模块接收到的所述终端证书进行验证,判断是否验证成功;
所述第五验证模块,用于当所述第四验证模块对所述终端证书验证成功时,根据所述终端证书对所述第二接收模块接收到的所述签名值进行验证,判断是否验证成功;
所述解密模块,用于当所述第五验证模块对所述签名值验证成功时,根据所述服务器证书的私钥对所述第二接收模块接收到的所述第一加密数据进行解密,得到所述共享主密钥;
所述第六验证模块,用于根据所述服务器证书、所述终端证书、所述终端数据、所述服务器数据、所述签名值、所述第一加密数据、第二预设字符串和所述共享主密钥对所述第二接收模块接收到的所述第二完成消息进行验证,判断是否验证成功;
所述第二处理模块,用于使用与所述服务器处理标识对应的所述处理机制和所述第二生成模块生成的所述第二通信密钥对明文指令进行处理,得到通信指令;
所述第七验证模块,用于根据所述第二通信密钥对所述第二接收模块接收到的所述通信响应进行验证,判断是否验证成功;
所述第三处理模块,用于当所述第七验证模块对所述通信响应验证成功时,使用与所述服务器处理标识对应的处理机制和所述第二通信密钥对所述第二接收模块接收到的所述通信响应进行处理,得到所述明文响应;
所述第二发送模块,用于通过所述第二终端向所述第一终端发送所述第一获取指令;通过所述第二终端向所述第一终端发送所述第二生成模块生成的所述服务器数据和所述第一完成消息;通过所述第二终端向所述第一终端发送所述服务器保存的服务器证书;通过所述第二终端向所述第一终端发送所述第二处理模块处理得到的所述通信指令;当所述第七验证模块对所述通信响应验证失败时,向所述第二终端返回错误信息;
所述通信中断模块,用于当所述检查模块检查所述服务器不支持所述处理标识列表中的标识信息对应的处理机制时、当所述第二接收模块接收到所述错误信息时、当所述第四验证模块对所述终端证书验证失败时、当所述第五验证模块对所述签名值验证失败时、当所述第六验证模块对所述第二完成消息验证失败时,断开与所述第二终端之间的连接。
12.根据权利要求11所述的系统,其特征在于,所述第二发送模块还用于通过所述第二终端向所述第一终端发送第二获取指令;
所述第一接收模块还用于通过所述第二终端接收来自所述服务器的所述第二获取指令;
所述第一终端还包括第二获取模块,用于当所述第一接收模块接收到所述第二获取指令时,获取所述第一终端的设备信息;
所述第一发送模块,还用于通过所述第二终端向所述服务器发送所述设备信息;
所述服务器还包括第一判断模块,用于根据所述设备信息判断所述服务器是否已与所述第一终端建立安全通道;
所述第二生成模块还用于当所述第一判断模块判断所述服务器已与所述第一终端建立安全通道时,根据所述共享主密钥、所述第三预设字符串、所述第一随机数和所述第二随机数生成所述通信密钥;
所述第二发送模块还用于当所述第一判断模块判断所述服务器未与所述第一终端建立安全通道时,通过所述第二终端向所述第一终端发送所述第一获取指令。
13.根据权利要求11所述的系统,其特征在于,所述第一生成模块包括第一拼接单元,用于将所述第一随机数和所述处理标识列表进行拼接,得到所述终端数据。
14.根据权利要求11所述的系统,其特征在于,所述第二生成模块包括第二拼接单元,用于将所述第二随机数和所述服务器处理标识进行拼接,得到所述服务器数据。
15.根据权利要求11所述的系统,其特征在于,所述第一生成模块包括第三拼接单元、第一摘要单元和签名单元;
所述第三拼接单元,用于当所述第一设置模块设置所述终端处理标识后,将所述终端数据和所述服务器数据进行拼接后得到待签名数据;
所述第一摘要单元,用于对所述第三拼接单元拼接得到的所述待签名数据进行摘要运算得到第一摘要;
所述签名单元,用于使用所述第一终端的私钥对所述第一摘要单元进行摘要运算得到的所述第一摘要进行签名运算得到所述签名值;
所述第五验证模块包括第四拼接单元、第二摘要单元、第一计算单元和第一判断单元;
所述第四拼接单元,用于当所述第四验证模块对所述终端证书验证成功时,将所述终端数据和所述服务器数据进行拼接,得到验证数据;
所述第二摘要单元,用于对所述第四拼接单元拼接得到的所述验证数据进行摘要运算得到第一验证摘要;
所述第一计算单元,用于当所述第二摘要单元运算得到第一验证摘要时,使用所述终端证书中的公钥对所述签名值进行计算,得到所述第一摘要;
所述第一判断单元,用于判断所述第二摘要单元运算得到的所述第一验证摘要与所述第一计算单元计算得到的所述第一摘要是否相同,是则确定对所述签名值验证成功,否则确定对所述签名值验证失败。
16.根据权利要求11所述的系统,其特征在于,所述第二生成模块包括第三摘要单元、第五拼接单元和第二计算单元;
所述第三摘要单元,用于当所述解密模块解密得到所述共享主密钥后,对所述服务器证书进行摘要运算得到第二摘要,对所述终端证书进行摘要运算得到第三摘要;对所述第五拼接单元拼接得到的第一数据进行摘要运算得到第四摘要;
所述第五拼接单元,用于将所述终端数据、所述服务器数据、所述第三摘要单元摘要运算得到的所述第二摘要和所述第三摘要、所述签名值和所述第一加密数据进行拼接,得到所述第一数据;将所述第一预设字符串和所述第三摘要单元摘要运算得到的所述第四摘要进行拼接后得到第二数据;
所述第二计算单元,用于使用所述共享主密钥的第一预设部分对所述第五拼接单元拼接得到的所述第二数据进行基于哈希运算的消息认证码运算得到所述第一完成消息;
所述第二验证模块包括第四摘要单元、第六拼接单元、第三计算单元和第二判断单元;
所述第四摘要单元,用于当所述第一接收模块接收到所述第一完成消息时,对所述服务器证书进行摘要运算得到第二验证摘要,对所述终端证书进行摘要运算得到第三验证摘要;对所述第六拼接单元拼接得到的第一验证数据进行摘要运算得到第四验证摘要;
所述第六拼接单元,用于将所述终端数据、所述服务器数据、所述第四摘要单元摘要运算得到的所述第二验证摘要和所述第三验证摘要、所述签名值和所述第一加密数据进行拼接后得到所述第一验证数据;将所述第一预设字符串和所述第四摘要单元摘要运算得到的所述第四验证摘要进行拼接,得到第二验证数据;
所述第二计算单元,用于使用所述共享主密钥的第一预设部分对所述第六拼接单元拼接得到的所述第二验证数据进行基于哈希运算的消息认证码运算得到第一验证消息;
所述第二判断单元,用于判断所述第二计算单元计算得到的所述第一验证消息与所述第一接收模块接收到的所述第一完成消息是否相同,是则确定对所述第一完成消息验证成功,否则确定对所述第一完成消息验证失败。
17.根据权利要求11所述的系统,其特征在于,所述第一生成模块包括第五摘要单元、第七拼接单元和第三计算单元;
所述第五摘要单元,用于当所述第二验证模块对所述第一完成消息验证成功时,对所述服务器证书进行摘要运算得到第五摘要,对所述终端证书进行摘要运算得到第六摘要;对所述第七拼接单元拼接到的第三数据进行摘要运算得到第七摘要;
所述第七拼接单元,用于将所述终端数据、所述服务器数据、所述第五摘要单元摘要运算得到的所述第五摘要和所述第六摘要、所述签名值和所述第一加密数据进行拼接,得到所述第三数据;将所述第二预设字符串和所述第五摘要单元摘要运算得到的所述第七摘要进行拼接,得到第四数据;
所述第三计算单元,用于使用所述共享主密钥的第一预设部分对所述第七拼接单元拼接到的所述第四数据进行基于哈希运算的消息认证码运算得到所述第二完成消息;
所述第六验证模块包括第六摘要单元、第八拼接单元、第四计算单元和第三判断单元;
所述第六摘要单元,用于当所述第二接收模块接收到所述第二完成消息时,对所述服务器证书进行摘要运算得到第五验证摘要,对所述终端证书进行摘要运算得到第六验证摘要;对所述第八拼接单元拼接得到的第三验证数据进行摘要运算得到第七验证摘要;
所述第八拼接单元,用于将所述终端数据、所述服务器数据、所述第六摘要单元摘要运算得到的所述第五验证摘要和所述第六验证摘要、所述签名值和所述第一加密数据进行拼接,得到第三验证数据;将所述第二预设字符串和所述第六摘要单元摘要运算得到的所述第七验证摘要进行拼接,得到第四验证数据;
所述第四计算单元,用于使用所述共享主密钥的第一预设部分对所述第八拼接单元拼接得到的所述第四验证数据进行基于哈希运算的消息认证码运算得到第二验证消息;
所述第三判断单元,用于判断所述第四计算单元计算得到的所述第二验证消息与所述第二接收模块接收到的所述第二完成消息是否相同,是则确定对所述第二完成消息验证成功,否则确定对所述第二完成消息验证失败。
18.根据权利要求11所述的系统,其特征在于,第一生成模块还包括第九拼接单元和第五计算单元;
所述第九拼接单元,用于当所述第一生成模块生成所述第二完成消息后,将所述第三预设字符串、所述第一随机数和所述第二随机数进行拼接得到第五数据;
所述第五计算单元,用于使用所述共享主密钥的第二预设部分对所述第九拼接单元拼接得到的所述第五数据进行基于哈希运算的消息认证码运算得到第六数据,将所述第六数据的第一部分作为所述第一通信密钥中的第一加密密钥,将所述第六数据的第二部分作为所述第一通信密钥中的第一消息认证码密钥;
第二生成模块还包括第十拼接单元和第六计算单元;
所述第十拼接单元,用于当所述第六验证模块对所述第二完成消息验证成功时,将所述第三预设字符串、所述第一随机数和所述第二随机数进行拼接得到第七数据;
所述第六计算单元,用于使用所述共享主密钥的第二预设部分对所述第十拼接单元拼接得到的所述第七数据进行基于哈希运算的消息认证码运算得到第八数据,将所述第八数据的第一部分作为所述第二通信密钥中的第二加密密钥,将所述第六数据的第二部分作为所述第二通信密钥中的第二消息认证码密钥。
19.根据权利要求18所述的系统,其特征在于,所述第二处理模块包括第一处理单元、第一认证单元和第一组合单元;
所述第一处理单元,用于使用与所述服务器处理标识对应的所述处理机制和所述第二生成模块生成的所述第二通信密钥中的所述第二加密密钥对所述明文指令进行处理,得到密文指令;
所述第一认证单元,用于根据所述第二通信密钥中的所述第二消息认证码密钥对所述第一处理单元处理得到的所述密文指令进行消息认证码运算,得到的第一认证码;
所述第一组合单元,用于对所述密文指令和所述第一认证单元运算得到的所述第一认证码进行组合,得到所述通信指令;
所述第三验证模块包括第二认证单元和第四判断单元;
所述第二认证单元,用于根据所述第一通信密钥中的所述第一消息认证码密钥对所述第一接收模块接收到的所述通信指令中的所述密文指令进行消息认证码运算,得到第二认证码;
所述第四判断单元,用于判断所述第二认证单元运算得到的所述第二认证码是否与所述通信指令中的所述第一认证码相同,是则确定对所述通信指令验证成功,否则确定对所述通信指令验证失败;
所述第一处理模块具体用于当所述第三验证模块对所述通信指令验证成功时,使用与所述终端处理标识对应的所述处理机制和所述第一通信密钥中的所述第一加密密钥对所述通信指令中的所述密文指令进行处理,得到所述明文指令。
20.根据权利要求18所述的系统,其特征在于,所述第一处理模块包括第二处理单元、第三认证单元和第二组合单元;
所述第二处理单元,用于当所述第三验证模块对所述通信指令验证成功时,使用与所述终端处理标识对应的处理机制和所述第一通信密钥中的所述第一加密密钥对所述明文响应进行处理,得到密文响应;
所述第三认证单元,用于根据所述第一通信密钥中的所述第一消息认证码密钥对所述第二处理单元处理得到的所述密文响应进行消息认证码运算,得到的第三认证码;
所述第二组合单元,用于对所述第二处理单元处理得到的所述密文响应和所述第三认证单元运算得到的所述第三认证码进行组合得到的所述通信响应;
所述第七验证模块包括第四认证单元和第五判断单元;
所述第四认证单元,用于根据所述第二通信密钥中的所述第二消息认证码密钥对所述第二接收模块接收到的所述通信响应中的所述密文响应进行消息认证码运算,得到第四认证码;
所述第五判断单元,用于判断所述第四认证单元运算得到的所述第四认证码与所述通信响应中的所述第三认证码是否相同,是则确定对所述通信响应验证成功,否则确定对所述通信响应验证失败;
所述第三处理模块具体用于当所述第七验证模块对所述通信响应验证成功时,使用与所述服务器处理标识对应的所述处理机制和所述第二通信密钥中的所述第二加密密钥对所述通信响应中的所述密文响应进行处理,得到所述明文响应。
CN201410050866.3A 2014-02-14 2014-02-14 一种安全通信的方法和系统 Active CN103795545B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410050866.3A CN103795545B (zh) 2014-02-14 2014-02-14 一种安全通信的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410050866.3A CN103795545B (zh) 2014-02-14 2014-02-14 一种安全通信的方法和系统

Publications (2)

Publication Number Publication Date
CN103795545A true CN103795545A (zh) 2014-05-14
CN103795545B CN103795545B (zh) 2017-01-18

Family

ID=50670872

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410050866.3A Active CN103795545B (zh) 2014-02-14 2014-02-14 一种安全通信的方法和系统

Country Status (1)

Country Link
CN (1) CN103795545B (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104852800A (zh) * 2015-05-25 2015-08-19 小米科技有限责任公司 数据传输方法及装置
CN104852911A (zh) * 2015-04-27 2015-08-19 小米科技有限责任公司 安全验证方法、装置及系统
CN106650404A (zh) * 2016-10-28 2017-05-10 美的智慧家居科技有限公司 终端合法性检验的方法和装置
CN106790279A (zh) * 2017-02-21 2017-05-31 中国信息安全测评中心 一种双向认证方法及通信系统
CN106790278A (zh) * 2017-02-21 2017-05-31 中国信息安全测评中心 一种双向认证方法及通信系统
CN107040536A (zh) * 2017-04-10 2017-08-11 北京德威特继保自动化科技股份有限公司 数据加密方法、装置和系统
CN107113164A (zh) * 2014-12-18 2017-08-29 诺基亚技术有限公司 加密数据的重复删除
CN107210915A (zh) * 2014-10-09 2017-09-26 凯里赛克公司 相互认证
CN107925576A (zh) * 2015-08-31 2018-04-17 松下知识产权经营株式会社 控制器、通信方法、以及通信系统
CN108809643A (zh) * 2018-07-11 2018-11-13 飞天诚信科技股份有限公司 一种设备与云端协商密钥的方法、系统及设备
CN108848070A (zh) * 2018-05-30 2018-11-20 郑州云海信息技术有限公司 一种身份认证方法及系统
CN109644127A (zh) * 2016-07-26 2019-04-16 华为国际有限公司 用于获得设备之间的公共会话密钥的系统和方法
CN109829722A (zh) * 2019-02-22 2019-05-31 兴唐通信科技有限公司 一种电子支付系统的用户身份实名认证方法
CN110502360A (zh) * 2019-08-16 2019-11-26 兆讯恒达微电子技术(北京)有限公司 一种高级加密标准协处理器自检的方法
CN111130772A (zh) * 2019-12-25 2020-05-08 飞天诚信科技股份有限公司 一种终端设备及其管理服务器证书的方法
CN111541716A (zh) * 2020-05-14 2020-08-14 东软睿驰汽车技术(沈阳)有限公司 一种数据传输的方法和相关装置
CN111935712A (zh) * 2020-07-31 2020-11-13 深圳市燃气集团股份有限公司 一种基于NB-IoT通信的数据传输方法、系统及介质
WO2021042851A1 (zh) * 2019-09-06 2021-03-11 平安科技(深圳)有限公司 区块链中数据签名的方法、装置、计算机设备及存储介质
CN113169965A (zh) * 2019-06-28 2021-07-23 Oppo广东移动通信有限公司 一种资源配置方法、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2073430B1 (en) * 2007-12-21 2013-07-24 Research In Motion Limited Methods and systems for secure channel initialization transaction security based on a low entropy shared secret
CN102075522B (zh) * 2010-12-22 2012-07-04 北京航空航天大学 一种结合数字证书和动态密码的安全认证与交易方法
CN103095460B (zh) * 2013-01-22 2015-07-22 飞天诚信科技股份有限公司 一种智能卡安全通讯的方法

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107210915A (zh) * 2014-10-09 2017-09-26 凯里赛克公司 相互认证
US10511596B2 (en) 2014-10-09 2019-12-17 Kelisec Ab Mutual authentication
CN107113164A (zh) * 2014-12-18 2017-08-29 诺基亚技术有限公司 加密数据的重复删除
CN104852911A (zh) * 2015-04-27 2015-08-19 小米科技有限责任公司 安全验证方法、装置及系统
CN104852911B (zh) * 2015-04-27 2019-02-22 北京小米支付技术有限公司 安全验证方法、装置及系统
CN104852800A (zh) * 2015-05-25 2015-08-19 小米科技有限责任公司 数据传输方法及装置
CN107925576A (zh) * 2015-08-31 2018-04-17 松下知识产权经营株式会社 控制器、通信方法、以及通信系统
CN109644127A (zh) * 2016-07-26 2019-04-16 华为国际有限公司 用于获得设备之间的公共会话密钥的系统和方法
CN106650404A (zh) * 2016-10-28 2017-05-10 美的智慧家居科技有限公司 终端合法性检验的方法和装置
CN106790278A (zh) * 2017-02-21 2017-05-31 中国信息安全测评中心 一种双向认证方法及通信系统
CN106790279A (zh) * 2017-02-21 2017-05-31 中国信息安全测评中心 一种双向认证方法及通信系统
CN107040536A (zh) * 2017-04-10 2017-08-11 北京德威特继保自动化科技股份有限公司 数据加密方法、装置和系统
CN108848070A (zh) * 2018-05-30 2018-11-20 郑州云海信息技术有限公司 一种身份认证方法及系统
CN108809643A (zh) * 2018-07-11 2018-11-13 飞天诚信科技股份有限公司 一种设备与云端协商密钥的方法、系统及设备
CN109829722A (zh) * 2019-02-22 2019-05-31 兴唐通信科技有限公司 一种电子支付系统的用户身份实名认证方法
CN113169965A (zh) * 2019-06-28 2021-07-23 Oppo广东移动通信有限公司 一种资源配置方法、设备及存储介质
CN110502360A (zh) * 2019-08-16 2019-11-26 兆讯恒达微电子技术(北京)有限公司 一种高级加密标准协处理器自检的方法
CN110502360B (zh) * 2019-08-16 2022-11-22 兆讯恒达科技股份有限公司 一种高级加密标准协处理器自检的方法
WO2021042851A1 (zh) * 2019-09-06 2021-03-11 平安科技(深圳)有限公司 区块链中数据签名的方法、装置、计算机设备及存储介质
CN111130772A (zh) * 2019-12-25 2020-05-08 飞天诚信科技股份有限公司 一种终端设备及其管理服务器证书的方法
CN111130772B (zh) * 2019-12-25 2022-12-20 飞天诚信科技股份有限公司 一种终端设备及其管理服务器证书的方法
CN111541716A (zh) * 2020-05-14 2020-08-14 东软睿驰汽车技术(沈阳)有限公司 一种数据传输的方法和相关装置
CN111935712A (zh) * 2020-07-31 2020-11-13 深圳市燃气集团股份有限公司 一种基于NB-IoT通信的数据传输方法、系统及介质
WO2022021992A1 (zh) * 2020-07-31 2022-02-03 深圳市燃气集团股份有限公司 一种基于NB-IoT通信的数据传输方法、系统及介质

Also Published As

Publication number Publication date
CN103795545B (zh) 2017-01-18

Similar Documents

Publication Publication Date Title
CN103795545A (zh) 一种安全通信的方法和系统
CN103546289B (zh) 一种基于USBKey的安全传输数据的方法及系统
CN111783068B (zh) 设备认证方法、系统、电子设备及存储介质
CN106788989B (zh) 一种建立安全加密信道的方法及设备
CN106850207B (zh) 无ca的身份认证方法和系统
CN103297403A (zh) 一种实现动态密码认证的方法和系统
US20080130879A1 (en) Method and system for a secure PKI (Public Key Infrastructure) key registration process on mobile environment
US11177963B2 (en) Method for authenticating a user based on an image relation rule and corresponding first user device, server and system
CN101662458A (zh) 一种认证方法
CN103067402A (zh) 数字证书的生成方法和系统
CN105635062A (zh) 网络接入设备的验证方法和装置
CN111131416A (zh) 业务服务的提供方法和装置、存储介质、电子装置
CN104426659A (zh) 动态口令生成方法、认证方法及系统、相应设备
CN106878324B (zh) 短信认证方法、短信认证服务器及终端
CN111130798A (zh) 一种请求鉴权方法及相关设备
CN111131300A (zh) 通信方法、终端及服务器
CN110784865A (zh) 物联网设备的配网方法、终端、物联网设备及配网系统
CN109451504B (zh) 物联网模组鉴权方法及系统
CN113163375B (zh) 一种基于NB-IoT通信模组的空中发证方法和系统
CN114139176A (zh) 一种基于国密的工业互联网核心数据的保护方法及系统
CN104506509B (zh) 一种基于多功能安全认证终端的认证方法
CN105554759A (zh) 一种鉴权方法和鉴权系统
CN102811203A (zh) 互联网中用户身份识别方法、系统及用户终端
CN102045670B (zh) 传输短消息的方法、服务器及智能卡
CN104918245A (zh) 一种身份认证方法、装置、服务器及客户端

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
OL01 Intention to license declared