CN102724211B - 一种密钥协商方法 - Google Patents
一种密钥协商方法 Download PDFInfo
- Publication number
- CN102724211B CN102724211B CN201210225005.5A CN201210225005A CN102724211B CN 102724211 B CN102724211 B CN 102724211B CN 201210225005 A CN201210225005 A CN 201210225005A CN 102724211 B CN102724211 B CN 102724211B
- Authority
- CN
- China
- Prior art keywords
- key
- ecc
- self
- interim
- length
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000004044 response Effects 0.000 claims description 54
- 230000006870 function Effects 0.000 claims description 6
- 238000009795 derivation Methods 0.000 claims description 3
- 238000007689 inspection Methods 0.000 claims description 3
- 230000017702 response to host Effects 0.000 claims description 2
- 230000006854 communication Effects 0.000 abstract description 5
- 238000004891 communication Methods 0.000 abstract description 4
- 239000003999 initiator Substances 0.000 description 79
- 238000005516 engineering process Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种密钥协商方法,属于信息安全领域,所述方法包括,根据接收到的指令判断指令类型,根据不同的指令类型从所述指令中获取协商密钥所需参数,当通信双方都具备了协商密钥所需参数:对方ECC公钥、对方临时ECC公钥、对方ID以及自身ECC密钥对、自身临时ECC密钥对、自身ID时,根据密钥交换算法计算生成会话密钥。本发明提供的方法是一种安全性高的密钥协商方法,通信双方可以在不共享任何秘密的情况下协商出一个会话密钥,具有速度快,资源少,安全性高等特点。
Description
技术领域
本发明属于信息安全技术领域,尤其涉及发起方和响应方通信过程中进行密钥协商的方法。
背景技术
密钥协商是一种密钥建立技术,系统中的两个或多个参与方共同提供信息,各自推导出一个任何一方不能预先确定结果的共享密钥,特别是随着通信环境的日益复杂、信息技术的不断发展和计算能力的不断提高,通信环境中的攻击手段也不断发展,使得很多密钥协商方法都存在不同程度的安全隐患。
传统的密钥协商方法有采用RSA方式,RSA方式是一种基于证书的密钥协商方法,该方法通过为用户签发证书将用户身份和公钥绑定,使用证书前,需向签发证书的数字证书认证中心验证证书的有效性,以确定对方身份的有效性。该验证包括:验证CA签名、验证CA签名的过程可能涉及到证书链、CA交叉认证;验证是否被加入证书撤回目录;验证是否在有效期内。这一系列的验证操作需要耗费很多存储和处理器资源,尤其是对于移动终端有限的处理能力以及移动网络有限的传输速度,资源耗费更加突出。
发明内容
针对现有技术中存在的问题,本发明的目的在于提供一种安全性高的密钥协商方法,通信双方可以在不共享任何秘密的情况下协商出一个会话密钥。
本发明采取的技术方案是:一种密钥协商方法,包括以下步骤,
步骤S1:等待接收上位机下发指令;
步骤S2:检查接收到的所述指令的指令类型;
当所述指令为协商密钥参数命令时,执行步骤S3;当所述指令为计算会话密钥命令时,执行步骤S4-S8;
步骤S3:根据所述指令确定自身ECC密钥对的存储位置和自身ID;生成自身临时ECC密钥对,向上位机返回包含自身临时ECC公钥的第一命令响应,然后返回执行步骤S1;
步骤S4:根据所述指令获取对方ECC公钥、对方临时ECC公钥、对方ID,根据所述指令得到自身ECC密钥对和自身ID;
步骤S5:检查是否存在自身临时ECC密钥对,是则执行下一步,否则返回接收命令错误响应;
步骤S6:获取自身临时ECC密钥对,根据密钥交换算法对所述对方ECC公钥、所述对方临时ECC公钥、所述对方ID以及所述自身ECC密钥对、所述自身临时ECC密钥对、所述自身ID进行计算生成会话密钥并存储;
步骤S7:清除自身临时ECC密钥对;
步骤S8:向上位机返回协商结果响应。
上述步骤2具体包括:
步骤201:检查接收到的所述指令是否完整,如果完整,继续;否则,向上位机返回事先约定的错误码;
步骤202:根据所述指令的第二字节判断指令类型;
如果所述指令的第二字节是第一预设值,则所述指令为协商密钥参数命令;如果所述指令的第二字节是第二预设值, 则所述指令为计算会话密钥命令。
所述检查接收到的所述指令是否完整具体为:
步骤201-1:判断所述指令的总长度是否超过预设长度,如果是,继续;否则,所述指令不完整;
步骤201-2:从所述指令的预设位置提取数据域长度;
步骤201-3:从所述指令的最低位开始提取指定长度数据,判断是否与第二特征串相符,是则继续,否则所述指令不完整;
步骤201-4:验证所述指令的所述预设位置之后所述指定长度数据之前的数据长度是否与所述数据域长度的值相符,如果是,所述指令完整,否则,所述指令不完整。
上述步骤S3中所述生成自身临时ECC密钥对并存储在RAM中具体为:生成一个符合预设数值范围的随机数作为临时ECC私钥,根据所述临时ECC私钥与椭圆曲线算法中的基点计算得到临时ECC公钥,并将所述临时ECC公钥和私钥作为自身临时ECC密钥对存储在RAM中。
上述步骤S3中所述第一命令响应的数据域包括自身临时ECC密钥对的密钥位长度、自身临时ECC公钥、密钥协商句柄。
所述密钥协商句柄为一串随机数或者是一个预设地址。
上述步骤S3中向上位机返回所述第一命令响应之前还包括设置可协商标志位,相应的,步骤S5为:检查是否存在可协商标志位,是则执行下一步,否则返回接收命令错误响应;步骤S8之前还包括清除所述可协商标志位。
上述步骤S4中所述根据所述指令获取对方ECC公钥、对方临时ECC公钥、对方ID具体为:
根据所述指令的数据域的第9-第12字节确定对方ECC密钥对的密钥位长度,在第12字节后连续取位长等于两倍的所述对方ECC密钥对的密钥位长度上的数据,得到所述对方ECC公钥;
根据所述指令的数据域中所述对方ECC公钥位置之后的四个字节确定对方临时ECC密钥对的密钥位长度,从所述对方临时ECC密钥对的密钥位长度之后连续取位长等于两倍的所述对方临时ECC密钥对的密钥位长度上的数据,得到所述对方临时ECC公钥;
从所述指令的数据域中所述对方临时ECC公钥之后连续取4个字节上的数据得到对方ID长度,从所述对方ID长度对应的字节之后连续取等于对方ID长度值个字节上的数据,得到所述对方ID,并将所述对方ID记录在非易失性存储器中。
上述步骤S4中所述根据所述指令得到自身ECC密钥对和自身ID具体为:
根据所述指令的数据域的前4个字节确定自身ECC密钥对的存储位置,根据所述存储位置获取自身ECC密钥对;
从所述指令的数据域的所述对方ID对应的字节之后连续取4个字节上的数据得到自身ID长度,从所述自身ID长度对应的字节之后连续取等于自身ID长度值个字节上的数据,得到所述自身ID,并将所述自身ID记录在非易失性存储器中。
所述步骤S5之前还包括:设备生成自身临时ECC密钥对并存储在RAM中。
上述步骤S8所述返回的协商结果响应中包括对方临时ECC密钥对的密钥位长度、对方临时ECC公钥、会话密钥ID。
或者上述步骤S4中所述根据所述指令得到自身ECC密钥对和自身ID具体为:
判断所述指令的数据域的前4个字节是否对应所述自身ECC密钥对的存储位置,是则根据所述存储位置获取所述自身ECC密钥对,否则报错;
判断非易失性存储器中是否存储有自身ID,是则获取所述自身ID,否则报错。
上述步骤S8所述返回的协商结果响应中包括会话密钥ID。
所述会话密钥ID是步骤S6中所述计算生成的会话密钥的存储位置,所述会话密钥ID的位长为4个字节。
步骤S3所述确定自身ECC密钥对的存储位置具体为:
步骤103-1:根据所述指令的数据域的前2个字节检索应用ID,如果检索到所述应用ID,继续;否则,报错;
步骤103-2:根据所述指令的数据域的第3和第4字节检索容器ID,如果检索到所述容器ID,继续;否则,报错;
步骤103-3:根据所述应用ID和容器ID找到所述存储位置。
步骤S6中所述计算生成会话密钥的过程具体为:在自身临时ECC公钥满足已知椭圆曲线的条件下,调用密码杂凑函数,将自身ID长度值、自身ID、第一参数、第二参数、第三数值、自身ECC公钥顺序拼接得到自身杂凑值,将对方ID长度值、对方ID、第一参数、第二参数、第三数值、对方ECC公钥顺序拼接得到对方杂凑值,将自身临时ECC私钥与第一整数相乘再与自身ECC私钥相加得到第一数值,将对方临时ECC公钥与第二整数相乘再与对方ECC公钥相加得到第二数值,第一数值与第三参数相乘并取整后乘以第二数值得到第三数值,调用密钥派生函数将第三数值、对方杂凑值、自身杂凑值顺序拼接得到所述会话密钥。
步骤S6中所述密钥交换算法采用ECDH算法。
本发明与现有技术相比的有益效果是:相对传统的密钥协商方法,本发明具有速度快,资源少,安全性高等特点。
附图说明
图1是实施例2提供的一种密钥协商方法流程图;
图2是实施例3提供的密钥协商方法中生成密钥协商参数命令的处理流程图;
图3是实施例4提供的密钥协商方法中产生协商数据并计算会话密钥命令的处理流程图;
图4是实施例5提供的密钥协商方法中计算会话密钥命令的处理流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
一种密钥协商方法,包括发起方智能密钥设备生成密钥协商参数的过程、响应方智能密钥设备产生协商数据并计算会话密钥的过程以及发起方智能密钥设备计算会话密钥的过程。实施例1和实施例2以密钥协商方法中设备协商产生会话密钥的过程为重点进行说明,实施例3、4、5分别侧重介绍了实施例2基础上智能密钥设备作为发起方生成密钥协商参数的过程、智能密钥设备作为响应方时计算会话密钥的过程以及作为发起方时计算会话密钥的过程。
实施例1
本实施例提供的一种密钥协商方法,包括以下步骤:
1.等待接收密钥协商的指令;
2.检查接收到的所述指令的指令类型;
3.根据所述指令执行密钥协商操作并返回相应的响应;
4.返回步骤1。
步骤2具体为:
步骤201:检查接收到的指令是否完整。如果完整,继续;否则,向上位机返回事先约定的错误码;
步骤202:根据指令的第二字节判断指令类型;
具体地,在本实施例中,判断方法为(不分先后):
步骤202-1:如果指令的第二字节是预先约定的0x 82,则所述指令为协商密钥参数命令。
步骤202-2:如果指令的第二字节是预先约定的0x 85, 则所述指令为计算会话密钥命令。
其他情况即当指令的第二字节为其他数值时为其他命令,对这些命令的处理不在本方案范围内。
步骤3具体为:
如果所述指令是协商密钥参数命令,则执行步骤301-304,如果所述指令是计算会话密钥命令,则执行步骤305-309;如果所述指令是其他命令,则进行相应处理;
步骤301:生成临时密钥对并存储在RAM中;
具体地,生成符合预设数值范围的第一随机数作为临时ECC私钥,根据临时ECC私钥与椭圆曲线算法中的基点计算得到临时ECC公钥。
步骤302:设置可协商标志位;
步骤303:向主机返回第一命令响应。
所述第一命令响应的数据域包括自身临时ECC密钥对的密钥位长度、自身临时ECC公钥、密钥协商句柄等信息。所述密钥协商句柄为一串随机数或者是一个预设地址。
步骤304:解析所述命令获得对方ECC公钥、对方临时ECC公钥、对方ID;
步骤305:判断是否能够协商密钥,是则继续,否则返回接收错误命令响应;
本实施例中,具体地通过检查是否存在可协商标志位来判断是否能够协商密钥。
当步骤302缺省时,本步骤还可以通过检查RAM中是否存在临时密钥对来判断是否能够协商密钥。
步骤306:获取预存的自身ECC密钥对、自身临时ECC密钥对及自身ID,根据密钥交换算法对解析获得的对方ECC公钥、对方临时ECC公钥、对方ID以及预存的自身ECC密钥对、自身临时ECC密钥对、自身ID进行计算生成会话密钥并存储。
具体地,根据密钥交换算法计算会话密钥过程为:在自身临时ECC公钥满足椭圆曲线的条件下,调用密码杂凑函数,将自身ID长度值、自身ID、第一参数、第二参数、第三数值、自身ECC公钥顺序拼接得到自身杂凑值,将对方ID长度值、对方ID、第一参数、第二参数、第三数值、对方ECC公钥顺序拼接得到对方杂凑值,将自身临时ECC私钥与第一整数相乘再与自身ECC私钥相加得到第一数值,将对方临时ECC公钥与第二整数相乘再与对方ECC公钥相加得到第二数值,第一数值与第三参数相乘并取整后乘以第二数值得到第三数值,调用密钥派生函数将第三数值、对方杂凑值、自身杂凑值顺序拼接得到会话密钥。
本实施例中,所述密钥交换算法可优选为ECDH算法。
步骤307:清除RAM中存储的临时密钥对;
步骤308:清除可协商标志位;
当步骤302缺省时本步骤也可以缺省。
步骤309:向主机返回协商结果响应。
实施例2
本实施例描述的一种密钥协商方法,如图1所示,包括以下步骤:
步骤1:智能密钥设备接收上位机发送的命令;
步骤2:对所述命令进行解析,确定首部预定长度数据、数据域长度值和数据域;
本实施例中,具体地,步骤2中对所述命令进行解析具体还包括验证所述命令是否完整的过程,验证所述命令是否完整的过程在实施例3、4中将进行详细描述。
步骤3:判断所述首部预定长度数据是否与第一预设字符串相符,是则执行步骤4,否则判断所述首部预定长度数据是否与第二预设字符串相符,是则执行步骤7,否则判断所述首部预定长度数据是否与第三预设字符串相符,是则执行步骤11,否则给上位机返回错误信息;
本实施例中,在执行步骤3之前还包括判断是否能够协商密钥,是则继续,否则返回接收错误命令响应;
本实施例中,具体地通过检查是否存在可协商标志位来判断是否接收到正确的命令,进行密钥协商。
本实施例中具体地,判断所述命令的前两个字节是否为0x 80 82,是则执行步骤4,否则判断是否为0x 80 85,是则执行步骤7,否则判断是否为0x 00 85,是则执行步骤11,否则返回错误信息。
步骤4:根据所述命令的数据域确定密钥对的存储位置、会话密钥算法、ID;
其中,所述密钥对包括自身ECC公钥和私钥。
步骤5:智能密钥设备生成第一随机数,将所述第一随机数作为自身临时ECC私钥,根据ECC椭圆曲线的基点和临时ECC私钥相乘计算出自身临时ECC公钥;
步骤6:智能密钥设备生成第一命令响应返回给上位机,返回执行步骤1;
所述第一命令响应的数据域包括临时ECC密钥对的密钥位长度、临时ECC公钥、密钥协商句柄等信息。所述密钥协商句柄为一串随机数或者是一个预设地址。
步骤7:根据所述命令的数据域确定密钥对的存储位置、会话密钥算法、对方ECC公钥、对方临时ECC公钥、自身ID、对方ID;
具体地,根据响应方密钥对的存储位置查找到密钥对,即自身ECC公钥和私钥。
步骤8:智能密钥设备生成第二随机数,将所述第二随机数作为自身临时ECC私钥,根据ECC椭圆曲线的基点和临时ECC私钥计算生成自身临时ECC公钥;
步骤9:智能密钥设备计算生成会话密钥;
本实施了具体的,根据密钥交换算法,对自身ECC公钥和私钥、自身临时ECC公钥和私钥、自身ID、对方ID、对方ECC公钥、对方临时ECC公钥进行计算生成会话密钥。
步骤10:智能密钥设备生成第二命令响应,并将所述第二命令响应返回给上位机,返回执行步骤1;
步骤11:判断所述命令的数据域的前4个字节是否对应密钥对的存储位置,是则继续,否则出错;
具体地,根据密钥对的存储位置查找到自身密钥对,即自身ECC公钥和私钥。
步骤12:判断所述命令的数据域的第5-第8字节是否与所述密钥协商句柄一致,是则继续,否则出错;
步骤13:从所述命令的数据域获取对方ECC公钥、对方临时ECC公钥、对方ID;
步骤14: 智能密钥设备计算生成会话密钥;
本实施例具体的,根据密钥交换算法,对自身ECC公钥和私钥、自身临时ECC公钥和私钥、自身ID、对方ID、对方ECC公钥、对方临时ECC公钥进行计算生成会话密钥。
步骤15:智能密钥设备生成第三命令响应,并将所述第三命令响应返回给上位机,协商结束。
本实施例中具体地,第三命令响应为协商成功或协商失败的响应。
实施例3
在实施例2的基础上,当所述首部预定长度数据与第一预设字符串相符时,发起方智能密钥设备生成密钥协商参数的过程如图2所示,其中发起方用上位机表示,该过程包括以下步骤:
步骤101:发起方智能密钥设备接收上位机发送的生成密钥协商参数命令;
本步骤还包括发起方智能密钥设备根据预先约定的格式判断所述命令是否为ECC生成密钥协商参数命令,判断方法具体为:
如果所述生成密钥协商参数命令首部预定长度的数据与第一特征串相符,则所述生成密钥协商参数命令为ECC生成密钥协商参数命令;如果与上述第一特征串不符,则所述生成密钥协商参数命令不是ECC生成密钥协商参数命令,其处理方式不在本专利范围之内,在此不再赘述。
具体地,在本实施例中,所述预定长度为4,所述第一特征串为十六进制串
80 82 00 00
步骤102:验证所述命令是否完整;
验证方法具体为:
步骤102-1:判断所述命令的总长度是否超过预设长度。如果是,继续;否则,所述命令不完整。
所述命令的高位端前四个字节指示命令的类型,第5个字节至第7个字节为长度域,后续的其余字节为数据域和响应报文数据长度域,其中长度域的值指示后续数据域的字节数,响应报文数据长度域的值指示第一命令响应的数据域的字节数。
优选地,在本实施例中,所述预设长度为10。所述命令的高位端四个字节依次为0x80 、0x82、0x00 、0x00,用于表示所述命令为ECC生成密钥协商参数命令。
步骤102-2:从所述命令的预设位置提取数据域长度;
上述预设位置为所述命令的第6和第7字节。进一步地,在本实施例中,还进行如下判断:如果第5字节的数据不为预先约定的0,则所述命令数据不完整。优选地,在本实施例中,长度即字节数。
将第6字节的数据作为数据域长度的高字节,第7字节的数据作为数据域长度的低字节,叠加后得到数据域长度的值。
例如,第6字节为0x12,第7字节为0x34,则所述数据域长度的值为0x1234(即十进制数4660)。
步骤102-3:从所述命令的最低位开始提取指定长度数据,判断是否与第二特征串相符,是则继续,否则所述命令不完整;
本实施例中具体地,所述指定长度为3个字节,所述第二特征串为0000 00;本实施例中所述第二特征串的值表示第一命令响应的数据域的字节数未知。
步骤102-4: 验证所述命令的所述预设位置之后所述指定长度数据之前的数据长度是否与所述数据域长度的值相符,如果是,所述命令完整,否则,所述命令不完整;
以下步骤均以所述预设位置之后所述第二特征串之前的数据即所述命令的数据域DATA为操作对象。
步骤103:根据所述命令的数据域确定发起方密钥对的存储位置;所述发起方密钥对是指发起方ECC公钥和私钥;
所述命令的数据域的前4个字节用于确定所述存储位置。具体地,在本实施例中,确定所述存储位置的方法具体为:
步骤103-1:根据所述命令的数据域的前2个字节检索应用ID,如果检索到所述应用ID,继续;否则,报错;
步骤103-2:根据所述命令的数据域的第3和第4字节检索容器ID. 如果检索到所述容器ID,继续;否则,报错;
步骤103-3:根据所述应用ID和容器ID找到所述存储位置。
所述ECC生成密钥协商参数命令的数据域中包含所述存储位置的地址信息,即所述存储位置所属的应用及容器的ID号,根据上述ID号从相应的存储位置获取发起方密钥对。
步骤104:根据所述命令的数据域确定会话密钥算法;
具体为:从所述命令的数据域的第5-第8字节获取会话密钥算法标识,根据所述会话密钥算法标识来检索生成会话密钥所使用的算法,如果检索到对应的算法,继续;否则,报错。
本实施例中,根据所述会话密钥算法标识查找到的算法是密钥交换算法,具体为一种基于ECC的密钥交换算法,优选为ECDH算法。
步骤105:从所述命令的数据域获取发起方的ID;
具体为:
步骤105-1:从所述命令的第9-第12字节提取发起方的ID长度值;
步骤105-2:验证所述命令的第12字节之后的数据长度是否与所述发起方的ID长度值相符。如果是,继续,否则,报错。
步骤105-3:将所述命令的第12字节之后的数据作为发起方的ID记录在非易失性存储器中。
步骤106:发起方智能密钥设备生成发起方临时ECC密钥对;
具体为:发起方智能密钥设备生成第一随机数,将所述第一随机数作为发起方临时ECC私钥,计算得到发起方临时ECC公钥。
步骤107:发起方智能密钥设备生成第一命令响应,并将所述第一命令响应发送给上位机。
所述第一命令响应的数据域包括发起方临时ECC密钥对的密钥位长度、发起方临时ECC公钥、密钥协商句柄。具体地,获取所述第一命令响应的数据域的高位端四个字节得到所述发起方临时ECC密钥对的密钥位长度,在所述四个字节之后一次是发起方临时ECC公钥的X坐标值和Y坐标值,紧跟其后的是密钥协商句柄,所述密钥协商句柄为一串随机数或者是一个预设地址。
实施例4
在实施例2的基础上,当所述首部预定长度数据与第二预设字符串相符时,响应方向响应方智能密钥设备下发命令,即进入所述响应方智能密钥设备产生协商数据并计算会话密钥的过程,如图3所示,所述响应方用图中所述上位机表示,则所述过程具体包括:
步骤201:响应方智能密钥设备接收上位机发送的产生协商数据并计算会话密钥命令;
在步骤201之前包括:所述上位机接收发起方发送的密钥协商参数,具体的,所述密钥协商参数包括发起方临时ECC公钥、发起方ID、发起方ECC公钥,所述发起方临时ECC公钥是发起方从接收到第一命令响应中获取的。
步骤202:验证所述命令是否完整,是则继续,否则出错;
验证方法具体为:
步骤202-1:判断所述命令的总长度是否超过预设长度。如果是,继续;否则,所述命令不完整。
所述命令的高位端前四个字节指示命令的类型,第5个字节至第7个字节为长度域,后续的其余字节为数据域和响应报文数据长度域,其中长度域的值指示后续数据域的字节数,响应报文数据长度域的值指示第二命令响应的数据域的字节数。
优选地,在本实施例中,所述预设长度为10。所述命令的高位端四个字节依次为0x80 、0x84、0x00 、0x00,用于表示所述命令为产生协商数据并计算会话密钥命令。
步骤202-2:从所述命令的预设位置提取数据域长度;
上述预设位置为所述命令的第6和第7字节。进一步地,在本实施例中,还进行如下判断:如果第5字节的数据不为预先约定的0,则所述命令数据不完整。优选地,在本实施例中,长度即字节数。
将第6字节的数据作为数据域长度的高字节,第7字节的数据作为数据域长度的低字节,叠加后得到数据域长度的值。
例如,第6字节为0x12,第7字节为0x34,则所述数据域长度的值为0x1234(即十进制数4660)。
步骤202-3:从所述命令的最低位开始提取指定长度数据,判断是否与第二特征串相符,是则继续,否则所述命令不完整;
本实施例中具体地,所述指定长度为3个字节,所述第二特征串为0000 00;本实施例中所述第二特征串的值表示第二命令响应的数据域长度未知。
步骤202-4:验证所述命令的所述预设位置之后所述指定长度数据之前的数据长度是否与所述数据域长度的值相符,如果是,所述命令完整,否则,所述命令不完整;
步骤203:根据所述命令的数据域确定响应方密钥对的存储位置;所述响应方密钥对是指响应方ECC公钥和私钥;
所述命令的数据域的前4个字节用于确定所述存储位置。具体地,在本实施例中,确定所述存储位置的方法同实施例一中步骤103-1至103-3所述,在此不再赘述。
所述产生协商数据并计算会话密钥命令的数据域中包含所述存储位置的地址信息,即所述存储位置所属的应用及容器的ID号,根据上述ID号从相应的存储位置获取响应方密钥对。
步骤204:根据所述命令的数据域确定会话密钥算法;
具体为:所述命令的数据域的第5-第8字节用于标识所述会话密钥算法标识,根据所述会话密钥算法标识来检索生成会话密钥所使用的算法,如果检索到对应的算法,继续;否则,报错。
步骤205:从所述命令的数据域获取发起方ECC公钥;
具体为:
步骤205-1:根据所述命令的数据域的第9-第12字节确定发起方ECC密钥对的密钥位长度;
所述ECC密钥对的密钥位长度以比特为单位,所占比特位数等于两倍的发起方ECC公钥位长度。
步骤205-2:在第12字节后连续取位长等于两倍的所述发起方ECC密钥对的密钥位长度上的数据,得到发起方ECC公钥。
优选地,在本实施例中,所述发起方ECC公钥的前一半内容为所述发起方ECC公钥的X坐标,后一半内容为所述发起方ECC公钥的Y坐标。
步骤206:从所述命令的数据域获取发起方临时ECC公钥;
具体为:
步骤206-1:根据所述命令的数据域的发起方ECC公钥之后的四个字节确定发起方临时ECC密钥对的密钥位长度;
所述发起方临时ECC密钥对的密钥位长度以比特为单位,所占比特位数等于两倍的发起方临时ECC公钥位长度。
步骤206-2:从所述发起方临时ECC密钥对的密钥位长度之后连续取位长等于两倍的所述发起方临时ECC密钥对的密钥位长度上的数据,得到发起方临时ECC公钥。
优选地,在本实施例中,所述发起方临时ECC公钥的前一半内容为所述发起方临时ECC公钥的X坐标,后一半内容为所述发起方临时ECC公钥的Y坐标。
步骤207:从所述命令的数据域获取发起方的ID;
具体为:
步骤207-1:从所述命令的数据域中发起方临时ECC公钥之后连续取4个字节上的数据得到发起方的ID长度;
步骤207-2:从所述发起方的ID长度对应的字节之后连续取等于发起方的ID长度值个字节上的数据得到发起方的ID;并将所所述发起方的ID记录在非易失性存储器中。
步骤208:从所述命令的数据域获取响应方的ID;
具体为:
步骤208-1:从所述命令的数据域中发起方的ID对应的字节之后连续取4个字节上的数据得到响应方的ID长度;
步骤208-2:从所述响应方的ID长度对应的字节之后连续取等于响应方的ID长度值个字节上的数据得到响应方的ID;并将所所述响应方的ID记录在非易失性存储器中。
步骤209:响应方智能密钥设备生成响应方临时ECC密钥对;
具体为:响应方智能密钥设备生成第二随机数,将所述第二随机数作为响应方临时ECC私钥,计算得到响应方临时ECC公钥。
步骤210:响应方智能密钥设备计算生成响应方会话密钥;
具体为,响应方智能密钥设备根据密钥交换算法对发起方ECC公钥、发起方临时ECC公钥、发起方的ID以及响应方ECC密钥对、响应方临时ECC密钥对、响应方的ID计算生成响应方会话密钥并存储。
步骤211:响应方智能密钥设备生成第二命令响应,并将所述第二命令响应发送给上位机。
所述第二命令响应的数据域包括响应方临时ECC密钥对的密钥位长度、响应方临时ECC公钥、会话密钥ID。具体地,将所述第二命令响应的数据域的高位端前四个字节设置为所述响应方临时ECC密钥对的密钥位长度,在所述四个字节之后设置响应方临时ECC公钥的X坐标和Y坐标,紧跟其后的是会话密钥ID,所述会话密钥ID是响应方智能密钥设备计算生成的会话密钥的存储位置,所述会话密钥ID的位长为4个字节。
实施例5
在实施例2的基础上,当所述首部预定长度数据与第三预设字符串相符时,发起方向发起方智能密钥设备下发命令,即进入所述发起方智能密钥设备计算会话密钥的过程,如图4所示,所述发起方用图中所述上位机表示,则所述过程具体包括:
步骤301:发起方智能密钥设备接收上位机发送的计算会话密钥命令;
在步骤301之前包括:所述上位机接收响应方发送的协商数据,具体的,所述协商数据包括响应方临时ECC公钥、响应方ID、响应方ECC公钥。
步骤302:验证所述命令是否完整,是则继续,否则出错;
验证方法具体为:
步骤302-1:判断所述命令的总长度是否超过预设长度。如果是,继续;否则,所述命令不完整。
所述命令的高位端前四个字节指示命令的类型,第5个字节至第7个字节为长度域,后续的其余字节为数据域和响应报文数据长度域,其中长度域的值指示后续数据域的字节数,响应报文数据长度域的值指示第三命令响应的数据域的字节数。
优选地,在本实施例中,所述预设长度为10。所述命令的高位端四个字节依次为0x80 、0x86、0x00 、0x00,用于表示所述命令为计算会话密钥命令。
步骤302-2:从所述命令的预设位置提取数据域长度;
上述预设位置为所述命令的第6和第7字节。进一步地,在本实施例中,还进行如下判断:如果第5字节的数据不为预先约定的0,则所述命令数据不完整。优选地,在本实施例中,长度即字节数。
将第6字节的数据作为数据域长度的高字节,第7字节的数据作为数据域长度的低字节,叠加后得到数据域长度的值。
步骤302-3:从所述命令的最低位开始提取指定长度数据,判断是否与第二特征串相符,是则继续,否则所述命令不完整;
本实施例中具体地,所述指定长度为3个字节,所述第二特征串为0000 04;本实施例中所述第二特征串的值表示第三命令响应的数据域的长度为4个字节。
步骤302-4:验证所述命令的所述预设位置之后所述指定长度数据之前的数据长度是否与所述数据域长度的值相符,如果是,所述命令完整,否则,所述命令不完整;
以下步骤均以所述预设位置之后所述第二特征串之前的数据即所述命令的数据域DATA为操作对象。
步骤303:判断所述命令的数据域的前4个字节是否对应所述发起方密钥对的存储位置,是则继续,否则出错;
步骤304:判断所述命令的数据域的第5-第8字节是否与发起方密钥协商句柄一致,是则继续,否则出错;
步骤305:从所述命令的数据域获取响应方ECC公钥;
步骤306:从所述命令的数据域获取响应方临时ECC公钥;
步骤307:从所述命令的数据域获取响应方的ID;
上述步骤305-307中获取响应方ECC公钥、响应方临时ECC公钥及响应方的ID的细节与步骤205-207原理相同,在此不再赘述。
步骤308:发起方智能密钥设备计算生成发起方会话密钥;
具体地,发起方智能密钥设备根据密钥交换算法对响应方ECC公钥、响应方临时ECC公钥、响应方的ID及发起方ECC公钥和私钥、发起方临时ECC公钥和私钥、发起方的ID进行计算生成发起方会话密钥并存储。
步骤309:发起方智能密钥设备生成第三命令响应,并将所述第三命令响应发送给上位机。
所述第三命令响应的数据域包括四个字节长度的会话密钥ID,所述会话密钥ID是发起方智能密钥设备计算生成的会话密钥的存储位置。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (17)
1.一种密钥协商方法,其特征是:包括以下步骤,
步骤S1:等待接收上位机下发指令;
步骤S2:检查接收到的所述指令的指令类型;
当所述指令为协商密钥参数命令时,执行步骤S3;当所述指令为计算会话密钥命令时,执行步骤S4-S8;
步骤S3:根据所述指令确定自身ECC密钥对的存储位置和自身ID;生成自身临时ECC密钥对,向上位机返回包含自身临时ECC公钥的第一命令响应,然后返回执行步骤S1;
步骤S4:根据所述指令获取对方ECC公钥、对方临时ECC公钥、对方ID,根据所述指令得到自身ECC密钥对和自身ID;
步骤S5:检查是否存在自身临时ECC密钥对,是则执行下一步,否则返回接收命令错误响应;
步骤S6:获取自身临时ECC密钥对,根据密钥交换算法对所述对方ECC公钥、所述对方临时ECC公钥、所述对方ID以及所述自身ECC密钥对、所述自身临时ECC密钥对、所述自身ID进行计算生成会话密钥并存储;
步骤S7:清除自身临时ECC密钥对;
步骤S8:向上位机返回协商结果响应。
2.根据权利要求1所述的一种密钥协商方法,其特征是:所述步骤S2具体包括:
步骤201:检查接收到的所述指令是否完整,如果完整,继续;否则,向上位机返回事先约定的错误码;
步骤202:根据所述指令的第二字节判断指令类型;
如果所述指令的第二字节是第一预设值,则所述指令为协商密钥参数命令;如果所述指令的第二字节是第二预设值,则所述指令为计算会话密钥命令。
3.根据权利要求2所述的一种密钥协商方法,其特征是:
所述检查接收到的所述指令是否完整具体为:
步骤201-1:判断所述指令的总长度是否超过预设长度,如果是,继续;否则,所述指令不完整;
步骤201-2:从所述指令的预设位置提取数据域长度;
步骤201-3:从所述指令的最低位开始提取指定长度数据,判断是否与第二特征串相符,是则继续,否则所述指令不完整;
步骤201-4:验证所述指令的所述预设位置之后所述指定长度数据之前的数据长度是否与所述数据域长度的值相符,如果是,所述指令完整,否则,所述指令不完整。
4.根据权利要求1所述的一种密钥协商方法,其特征是:步骤S3中所述生成自身临时ECC密钥对并存储在RAM中具体为:生成一个符合预设数值范围的随机数作为临时ECC私钥,根据所述临时ECC私钥与椭圆曲线算法中的基点计算得到临时ECC公钥,并将所述临时ECC公钥和私钥作为自身临时ECC密钥对存储在RAM中。
5.根据权利要求1所述的一种密钥协商方法,其特征是:步骤S3中所述第一命令响应的数据域包括自身临时ECC密钥对的密钥位长度、自身临时ECC公钥、密钥协商句柄。
6.根据权利要求5所述的一种密钥协商方法,其特征是:所述密钥协商句柄为一串随机数或者是一个预设地址。
7.根据权利要求1所述的一种密钥协商方法,其特征是:所述步骤S3中向上位机返回所述第一命令响应之前还包括设置可协商标志位,相应的,步骤S5为:检查是否存在可协商标志位,是则执行下一步,否则返回接收命令错误响应;步骤S8之前还包括清除所述可协商标志位。
8.根据权利要求1所述的一种密钥协商方法,其特征是:步骤S4中所述根据所述指令获取对方ECC公钥、对方临时ECC公钥、对方ID具体为:
根据所述指令的数据域的第9-第12字节确定对方ECC密钥对的密钥位长度,在第12字节后连续取位长等于两倍的所述对方ECC密钥对的密钥位长度上的数据,得到所述对方ECC公钥;
根据所述指令的数据域中所述对方ECC公钥的位置之后的四个字节确定对方临时ECC密钥对的密钥位长度,从所述对方临时ECC密钥对的密钥位长度之后连续取位长等于两倍的所述对方临时ECC密钥对的密钥位长度上的数据,得到所述对方临时ECC公钥;
从所述指令的数据域中所述对方临时ECC公钥之后连续取4个字节上的数据得到对方ID长度,从所述对方ID长度对应的字节之后连续取等于对方ID长度值个字节上的数据,得到所述对方ID,并将所述对方ID记录在非易失性存储器中。
9.根据权利要求1所述的一种密钥协商方法,其特征是:步骤S4中所述根据所述指令得到自身ECC密钥对和自身ID具体为:
根据所述指令的数据域的前4个字节确定自身ECC密钥对的存储位置,根据所述存储位置获取自身ECC密钥对;
从所述指令的数据域中所述对方ID对应的字节之后连续取4个字节上的数据得到自身ID长度,从所述自身ID长度对应的字节之后连续取等于自身ID长度值个字节上的数据,得到所述自身ID,并将所述自身ID记录在非易失性存储器中。
10.根据权利要求8或9所述的一种密钥协商方法,其特征是:步骤S5之前还包括:设备生成自身临时ECC密钥对并存储在RAM中。
11.根据权利要求8或9所述的一种密钥协商方法,其特征是:步骤S8所述返回的协商结果响应中包括对方临时ECC密钥对的密钥位长度、对方临时ECC公钥、会话密钥ID。
12.根据权利要求1所述的一种密钥协商方法,其特征是:步骤S4中所述根据所述指令得到自身ECC密钥对和自身ID具体为:
判断所述指令的数据域的前4个字节是否对应所述自身ECC密钥对的存储位置,是则根据所述存储位置获取所述自身ECC密钥对,否则报错;
判断非易失性存储器中是否存储有自身ID,是则获取所述自身ID,否则报错。
13.根据权利要求12所述的一种密钥协商方法,其特征是:步骤S8所述返回的协商结果响应中包括会话密钥ID。
14.根据权利要求13所述的一种密钥协商方法,其特征是:会话密钥ID是步骤S6中所述计算生成的会话密钥的存储位置,所述会话密钥ID的位长为4个字节。
15.根据权利要求1所述的一种密钥协商方法,其特征是:所述确定自身ECC密钥对的存储位置具体为:
步骤103-1:根据所述指令的数据域的前2个字节检索应用ID,如果检索到所述应用ID,继续;否则,报错;
步骤103-2:根据所述指令的数据域的第3和第4字节检索容器ID,如果检索到所述容器ID,继续;否则,报错;
步骤103-3:根据所述应用ID和容器ID找到所述存储位置。
16.根据权利要求1所述的一种密钥协商方法,其特征是:步骤S6所述计算生成会话密钥的过程具体为:在自身临时ECC公钥满足已知椭圆曲线的条件下,调用密码杂凑函数,将自身ID长度值、自身ID、第一参数、第二参数、第三数值、自身ECC公钥顺序拼接得到自身杂凑值,将对方ID长度值、对方ID、第一参数、第二参数、第三数值、对方ECC公钥顺序拼接得到对方杂凑值,将自身临时ECC私钥与第一整数相乘再与自身ECC私钥相加得到第一数值,将对方临时ECC公钥与第二整数相乘再与对方ECC公钥相加得到第二数值,第一数值与第三参数相乘并取整后乘以第二数值得到第三数值,调用密钥派生函数将第三数值、对方杂凑值、自身杂凑值顺序拼接得到所述会话密钥。
17.根据权利要求1所述的一种密钥协商方法,其特征是:所述密钥交换算法采用ECDH算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210225005.5A CN102724211B (zh) | 2012-06-29 | 2012-06-29 | 一种密钥协商方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210225005.5A CN102724211B (zh) | 2012-06-29 | 2012-06-29 | 一种密钥协商方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102724211A CN102724211A (zh) | 2012-10-10 |
CN102724211B true CN102724211B (zh) | 2014-12-10 |
Family
ID=46949873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210225005.5A Active CN102724211B (zh) | 2012-06-29 | 2012-06-29 | 一种密钥协商方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102724211B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103905183B (zh) * | 2014-03-05 | 2017-04-26 | 北京深思数盾科技股份有限公司 | 一种提高嵌入式加密芯片通讯传输安全性的方法 |
CN104639561B (zh) * | 2015-02-27 | 2018-01-05 | 飞天诚信科技股份有限公司 | 一种安全获取密钥的方法 |
CN105610575B (zh) * | 2015-09-22 | 2019-01-08 | 西安电子科技大学 | 空间信息网跨域的端到端密钥交换方法 |
CN106972924B (zh) * | 2017-03-23 | 2020-06-23 | 联想(北京)有限公司 | 加密、解密、电子签章、验证签章的方法及装置 |
WO2018208221A1 (zh) * | 2017-05-09 | 2018-11-15 | 华为国际有限公司 | 网络认证方法、网络设备及终端设备 |
CN108306734B (zh) * | 2017-12-28 | 2021-01-01 | 飞天诚信科技股份有限公司 | 一种通信链路保护方法及装置 |
CN110601825B (zh) * | 2019-08-29 | 2022-09-30 | 北京思源理想控股集团有限公司 | 密文的处理方法及装置、存储介质、电子装置 |
CN111314072B (zh) * | 2020-02-21 | 2021-06-22 | 北京邮电大学 | 一种基于sm2算法的可扩展身份认证方法和系统 |
CN111711785B (zh) * | 2020-06-30 | 2022-07-05 | 苏州科达科技股份有限公司 | 视频会议媒体流密钥更新方法、系统、设备及存储介质 |
WO2022088094A1 (zh) * | 2020-10-30 | 2022-05-05 | 华为技术有限公司 | 一种安全通信方法及装置 |
CN112600668A (zh) * | 2020-12-15 | 2021-04-02 | 上海银基信息安全技术股份有限公司 | 密钥协商方法、装置、电子设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101291214A (zh) * | 2007-04-19 | 2008-10-22 | 华为技术有限公司 | 一种生成组密钥的方法、系统和设备 |
CN101695038A (zh) * | 2009-10-27 | 2010-04-14 | 联想网御科技(北京)有限公司 | 检测ssl加密数据安全性的方法及装置 |
CN102264068A (zh) * | 2010-05-28 | 2011-11-30 | 中国移动通信集团公司 | 共享密钥协商方法与系统、网络平台及终端 |
-
2012
- 2012-06-29 CN CN201210225005.5A patent/CN102724211B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101291214A (zh) * | 2007-04-19 | 2008-10-22 | 华为技术有限公司 | 一种生成组密钥的方法、系统和设备 |
CN101695038A (zh) * | 2009-10-27 | 2010-04-14 | 联想网御科技(北京)有限公司 | 检测ssl加密数据安全性的方法及装置 |
CN102264068A (zh) * | 2010-05-28 | 2011-11-30 | 中国移动通信集团公司 | 共享密钥协商方法与系统、网络平台及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN102724211A (zh) | 2012-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102724211B (zh) | 一种密钥协商方法 | |
US10862959B2 (en) | Consensus system and method for adding data to a blockchain | |
US9313026B2 (en) | Key negotiation method and apparatus according to SM2 key exchange protocol | |
US9705683B2 (en) | Verifiable implicit certificates | |
US11375369B2 (en) | Message authentication method and communication method of communication network system, and communication network system | |
CN103888251A (zh) | 一种云环境中虚拟机可信保障的方法 | |
CN102571357B (zh) | 一种签名的实现方法和装置 | |
US9081969B2 (en) | Apparatus and method for remotely deleting critical information | |
CN106576043A (zh) | 病毒式可分配可信消息传送 | |
Park | One-time password based on hash chain without shared secret and re-registration | |
CN105721153A (zh) | 基于认证信息的密钥交换系统及方法 | |
CN104954130A (zh) | 一种实体鉴别方法及装置 | |
CN104717070B (zh) | 一种利用单向哈希函数关联数字证书的方法 | |
CN116488919B (zh) | 一种数据处理方法、通信节点及存储介质 | |
TW202231018A (zh) | 識別阻斷服務攻擊之技術 | |
Ameri et al. | Provably secure and efficient PUF‐based broadcast authentication schemes for smart grid applications | |
CN112184245B (zh) | 一种跨区块链的交易身份确认方法及装置 | |
EP3361691B1 (en) | Method and device for verifying validity of identity of entity | |
CN109327475B (zh) | 一种多层身份认证方法、装置、设备及存储介质 | |
CN116561791A (zh) | 隐私求交方法、装置及存储介质 | |
CN102137103A (zh) | 通过扩展MIKEY协议实现VoIP媒体流可信传输的方法 | |
CN104917782A (zh) | 云计算环境中一种去中心化的计费结算方法 | |
CN114363094A (zh) | 一种数据分享方法、装置、设备及存储介质 | |
US20070033405A1 (en) | Enhanced key agreement and transport protocol | |
EP3361692B1 (en) | Multi-ttp-based method and device for verifying validity of identity of entity |
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 | ||
CP03 | Change of name, title or address |
Address after: 17th floor, building B, Huizhi building, No.9, Xueqing Road, Haidian District, Beijing 100085 Patentee after: Feitian Technologies Co.,Ltd. Country or region after: China Address before: 100085 17th floor, block B, Huizhi building, No.9 Xueqing Road, Haidian District, Beijing Patentee before: Feitian Technologies Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address | ||
OL01 | Intention to license declared | ||
OL01 | Intention to license declared |