摘" 要:由于多人共用同一辆汽车的情况广泛存在,以车牌号为唯一标识生成的逻辑实体难以支持自动缴费等需要同时标识汽车和汽车当前使用人的车联网应用。为了解决这个问题,对SM2两方协同密码算法进行了研究,该算法生成一种安全可信的“人车”逻辑实体,标识该逻辑实体的私钥必须在用户私有智能设备(如:智能手机、智能手环等)和用户汽车共同参与计算时才能使用,为业务提供身份认证、加密传输、加密存储等全面支持。
关键词:SM2两方协同密码算法;数字签名算法;公钥加密算法;密钥交换协议;逻辑实体
中图分类号:TP309" 文献标识码:A" 文章编号:2096-4706(2024)18-0020-05
Research on Constructing “Person-Vehicle” Logical Entity by the Two-party Algorithm SM2 in Internet of Vehicles
LI Zujin, ZOU Heliang, LIU Lei
(Digital Guangdong Network Construction Co., Ltd., Guangzhou" 510030, China)
Abstract: As a vehicle is usually used by several users, using license plate number as the unique identity of logical entity is hard to support Internet of Vehicles applications such as autopay, which need both the vehicles identity and the vehicle users identity. In order to solve the problem, two-party algorithm SM2 is researched. The algorithm generates a “person-vehicle” logical entity using private key as the unique identity. The private key can only be used when both the users private devices (such as smart phone and smart wristband) and the vehicle join the computing, so as to provide comprehensive support such as identify authentication, transport encryption and storage encryption for the business.
Keywords: two-party algorithm SM2; Digital Signature Algorithm; Public Key Encryption Algorithm; Key Exchange Protocol; logical entity
0" 引" 言
为深入贯彻党的二十大和中央经济工作会议精神,落实《中共中央国务院关于构建数据基础制度更好发挥数据要素作用的意见》,充分发挥数据要素乘数效应,赋能经济社会发展,国家数据局会同有关部门制定了《“数据要素×”三年行动计划(2024—2026年)》,其中为数据要素×交通运输制定了以下行动计划:“提升多式联运效能,推进货运寄递数据、运单数据、结算数据、保险数据、货运跟踪数据等共享互认,实现托运人一次委托、费用一次结算、货物一次保险、多式联运经营人全程负责。推进航运贸易便利化,推动航运贸易数据与电子发票核验、经营主体身份核验、报关报检状态数据等的可信融合应用,加快推广电子提单、信用证、电子放货等业务应用。提升航运服务能力,支持海洋地理空间、卫星遥感、定位导航、气象等数据与船舶航行位置、水域、航速、装卸作业数据融合,创新商渔船防碰撞、航运路线规划、港口智慧安检等应用。挖掘数据复用价值,融合“两客一危”、网络货运等重点车辆数据,构建覆盖车辆营运行为、事故统计等高质量动态数据集,为差异化信贷、保险服务、二手车消费等提供数据支撑。支持交通运输龙头企业推进高质量数据集建设和复用,加强人工智能工具应用,助力企业提升运输效率。推进智能网联汽车创新发展,支持自动驾驶汽车在特定区域、特定时段进行商业化试运营试点,打通车企、第三方平台、运输企业等主体间的数据壁垒,促进道路基础设施数据、交通流量数据、驾驶行为数据等多源数据融合应用,提高智能汽车创新服务、主动安全防控等水平。”
以ETC为例,一个车牌号只能绑定一张ETC卡,而一张ETC卡只能绑定一个银行扣款账号,当多个司机轮流驾驶同一辆车时,就无法让这些司机用自己的银行卡为该车缴费,这导致大量的货车、出租车、网约车在进出高速公路收费站时没有使用ETC缴费,而是排队使用人工缴费,降低了通行效率。所以需要一种方案可以生成同时标识汽车和汽车当前使用人的“人车”逻辑实体,该逻辑实体可以为应用同时提供安全可信的车辆信息和车辆当前使用人信息。
本文提出使用SM2两方协同密码算法来解决这个问题。SM2两方协同密码算法的私钥必须在两个参与方(如:人和车)同时参与计算时才能得到正确的私钥计算结果,从密码学原理上确保了特定的人和车对该私钥的唯一控制权。SM2的协同计算已有多种实现算法[1-8],但目前这些算法只支持SM2签名验签、加密解密,不支持数据加密传输所需的密钥交换。本文提出的协同密码算法创新性的在支持SM2签名验签、加密解密的基础上新增支持了密钥交换协议,全面支持SM2椭圆曲线公钥密码算法的所有应用场景。
1" SM2协同密码算法
1.1" 生成密钥对
将参与协同计算的两端设为A方和B方,协同生成密钥对是由A方独立用随机数发生器生成私钥分量d1并计算得到公钥分量P1,然后A方将公钥分量P1发送给B方。B方独立用随机数发生器生成私钥分量d2,并使用来自A方的公钥分量P1合成计算出完整公钥P,对外公开完整公钥P。
A方详细计算如下:
A1:用随机数发生器产生整数d1∈[1,n-1]作为A方的私钥分量。
A2:计算椭圆曲线点P1=[d1-1]G作为A方的公钥分量。
A3:A方将公钥分量P1发送给B方。
B方详细计算如下:
B1:用随机数发生器产生整数d2∈[1,n-1]作为B方的私钥分量。
B2:计算椭圆曲线点P1=[d2-1]P1-G作为完整公钥并对外公开。
将这里A2步骤中P1的计算过程代入到B2步骤中可知完整公钥P=[d2-1·d1-1-1]G,这等效于P所对应的完整私钥为(d2-1·d1-1-1)modn,但完整私钥不会出现在A方和B方中的任意一方。
1.2" 签名验签
将参与协同计算的两端设为A方和B方,协同签名是由A方用随机数发生器生成随机数k1并计算签名分量Q1,然后A方将待签名消息摘要e和签名分量Q1发送给B方。详细计算如下:
A1:置。
A2:计算待签名消息摘要。
A3:用随机数发生器产生随机数k1∈[1,n-1]。
A4:计算椭圆曲线点Q1=[k1]G。
A5:将e和Q1发送给B方。
B方用随机数发生器生成随机数k2和随机数k3,使用来自A方的签名分量Q1和待签名消息摘要e计算出签名结果中的r以及部分签名结果s2、s3,然后B方将r、s2、s3发送给A方。详细计算如下:
B1:用随机数发生器产生随机数k2∈[1,n-1]。
B2:用随机数发生器产生随机数k4∈[1,n-1]。
B3:计算椭圆曲线点Q2=[k2]G。
B4:计算椭圆曲线点(x1,y1)=[k3]Q1+Q2,将x1的数据类型转换为整数。
B5:计算r=(e+x1)modn,若r=0或r+k2=n则返回B1。
B6:计算s2=d2·k3modn。
B7:计算s3=d2·(r+k2)modn。
B8:将r、s2、s3发送给A方;
A方根据来自B方的r、s2、s3计算出最终的签名(r,s)。详细计算如下:
A6:计算s=(d1·k1·s2+d1·s3-r)modn,若s=0则返回A3。
A7:将r、s的数据类型转换为字节串,消息M的签名为(r,s)。
协同签名的结果能用SM2标准验签算法[9]使用公钥P来验证签名。
1.3" 加密解密
SM2标准加密算法[9]使用随机生成的随机数k和公钥P计算出密文中的C1=[k]G,并且计算出用于派生加密密钥的椭圆曲线点(x2,y2)=[k]P,协同解密时只要能恢复出椭圆曲线点(x2,y2)就能成功解密。
将参与协同计算的两端设为A方和B方,协同签解密由A方计算解密分量T1并将T1发送给B方。B方计算解密分量T2并将T2发送给A方。A方使用密文中的C1和来自B方的T2恢复出椭圆曲线点(x2,y2),即可成功解密。详细计算如下:
A方:
A1:从密文C中取出比特串C1,将C1的数据类型转换为椭圆曲线上的点,验证C1是否满足椭圆曲线方程,若不满足则报错并退出。
A2:计算椭圆曲线点S=[h]C1,若S是无穷远点,则报错并退出。
A3:计算椭圆曲线点T1=[d1-1]C1作为A方的解密分量。
A4:A方将解密分量T1发送给B方。
B方:
B1:计算椭圆曲线点T2=[d2-1]T1作为B方的解密分量。
B2:B方将解密分量T2发送给A方。
A方:
A5:计算椭圆曲线点,将坐标、的数据类型转换为比特串。
A6:计算t=KDF(),若t为全0比特串,则报错并退出。
A7:从密文C中取出比特串C2,计算。
A8:计算,从密文C中取出比特串C3,若u≠C3,则报错并退出。
A9:输出明文M′。
1.4" 密钥交换协议
密钥交换协议由A发起方和B响应方参与。本文以A发起方使用协同密码算法B响应方使用SM2标准算法[9]为例进行说明。因为A发起方和B响应方在计算上的对称性,同样也适用于A发起方使用SM2标准算法B响应方使用协同密码算法、A发起方和B响应方都使用协同密码算法的情况,本文不再重复描述。
将A发起方参与协同计算的两端设为a方和b方。a方使用协同计算独立生成私钥分量d1。b方使用协同计算独立生成私钥分量d2和完整公钥PA=(d2-1·d1-1-1)G,对应的完整私钥为dA=(d2-1·d1-1-1)modn。此外,b方还使用SM2标准算法生成临时公私钥RA和rA。b方将完整公钥PA和临时公钥RA发送给B响应方发起密钥交换。
A发起方的b方:
A-b-1:用随机数发生器产生随机数rA∈[1,n-1]。
A-b-2:计算棚圆曲线点RA=[rA]G=(x1,y1)。
A-b-3:将完整公钥PA和RA发送给B响应方。
B响应方使用SM2标准算法与A发起方进行密钥交换,使用标准算法计算椭圆曲线点V。详细计算如下:
B响应方:
B1:用随机数发生器产生随机数rB∈[1,n-1]。
B2:计算椭圆曲线点RB=[rB]G=(x2,y2)。
B3:从RB中取出域元素x2,将x2的数据类型转换为整数,计算。
B4:计算。
B5:验证RA是否满足椭圆曲线方程,若不满足则协商失败:否则从RA中取出域元素x1,将x1的数据类型转换为整数,计算。
B6:计算椭圆曲线点
,若V是无穷远点,则B协商失败:否则将xV、yV的数据类型转换为比特串。
B7:计算。
B8:(选项)将RA的坐标x1、y1和RB的坐标x2、y2的数据类型转换为比特串,计算。
B9:将PB、RB、(选项SB)发送给A发起方的b方。
A发起方的b方将公钥PB和临时公钥RB转发给A发起方的a方。
A-b-4:将公钥PB和临时公钥RB转发给A发起方的a方。
A发起方的a方使用私钥分量d1对公钥PB和临时公钥RB进行计算,将计算结果发送给A发起方的b方。详细计算如下:
A发起方的a方:
A-a-1:计算棚圆曲线点PBa=[d1-1]PB。
A-a-2:计算棚圆曲线点RBa=[d1-1]RB。
A-a-3:将PBa和RBa发送给A发起方的a方。
A发起方的b方使用私钥分量d2对来自a方的PBa和RBa进行计算,然后在b方组合成椭圆曲线点U。详细计算如下:
A-b-5:计算棚圆曲线点PBab=[d1-1]PBa。
A-b-6:计算棚圆曲线点RBab=[d1-1]RBa。
A-b-7:从RA中取出域元素x1,将x1的数据类型转换为整数,计算。
A-b-8:验证RB是否满足椭圆曲线方程,若不满足则协商失败; 否则从RB中取出域元素x2,将x2的数据类型转换为整数,计算。
A-b-9:计算棚圆曲线点:
若U为无穷远点,则A协商失败,否则将xU、yU的数据类型转换为比特串。
A-b-10:计算。
A-b-11:(选项)将RA的坐标x1、y1和RB的坐标x2、y2的数据类型转换为比特串,计算
,并检验S1=SB是否成立,若等式不成立则从B到A的密钥确认失败。
A-b-12:(选项)计算,并将SA发送给B响应方。
B响应方:
B10:(选项)计算,并检验S2=SA是否成立,若等式不成立则从A到B的密钥确认失败。
2" 构造“人车”逻辑实体
2.1" 逻辑实体生成
“人车”逻辑实体的生成基于车辆和车辆使用人的共同参与。车辆使用人的智能手机与车辆的智能车机通过蓝牙或无线Wi-Fi进行连接,使用协同密码算法生成SM2私钥分量及其SM2公钥,生成流程请如图1所示。然后智能车机将SM2公钥、使用人身份信息、车辆信息发给数字证书认证中心(CA),CA签发并返回SM2实体证书[10]。最后,智能手机SM2私钥分量、智能车机SM2私钥分量、SM2实体证书这三部分便构成了“人车”逻辑实体。车联网中需要同时关联车辆和车辆使用人的应用都可基于该逻辑实体来安全可信的实现。
2.2" 实体身份认证
“人车”逻辑实体的身份认证基于车辆使用人的智能手机与车辆的智能车机进行SM2协同签名来实现,签名流程请如图2所示。应用服务器使用实体证书对SM2协同签名结果进行SM2验证签名,验证通过后,即可将实体证书中的使用人身份信息、车辆信息作为可信的实体信息。
2.3" 实体解密数据
应用服务器使用实体证书对敏感数据进行数字信封加密,加密结果只能被“人车”逻辑实体解密。“人车”逻辑实体对数字信封的解密基于车辆使用人的智能手机与车辆的智能车机进行SM2协同解密来实现,解密流程请如图3所示。
2.4" 实体安全通信
“人车”逻辑实体在与应用服务器进行安全通信前要先通过密钥交换来协商出会话密钥,安全通信使用会话密钥来保护通信数据。车辆使用人的智能手机与车辆的智能车机作为密钥交换的发起方,使用SM2协同密码算法进行密钥交换。应用服务器作为密钥交换的响应方,使用SM2标准密码算法进行密钥交换。密钥交换流程请如图4所示。
3" 结" 论
本文以智能手机和智能车机为例对通过SM2两方协同密码算法构造车联网“人车”逻辑实体进行了研究。在实际车联网应用中,SM2两方协同密码算法中的两个参与方还可以推广到智能车机与智能车钥匙、智能车机与车载ETC设备、智能手机与车载ETC设备等更为广泛的情形。
参考文献:
[1] 尚铭,马原,林璟锵,等.SM2椭圆曲线门限密码算法 [J].密码学报,2014,1(2):155-166.
[2] 林璟锵,马原,荆继武,等.适用于云计算的基于SM2算法的签名及解密方法和系统:CN104243456A [P].2014-12-24.
[3] 张永强,刘镪.SM2算法协同签名及解密方法、装置与系统:201710546334.2 [P].2017.
[4] 苏吟雪,田海博.基于SM2的双方共同签名协议及其应用 [J].计算机学报,2020,43(4):701-710.
[5] 唐张颖,王志伟.门限SM2签名方案 [J].南京邮电大学学报:自然科学版,2022,42(4):85-95.
[6] 马莉媛,黄勃.采用SGX的云端SM2两方协作签名算法 [J].重庆邮电大学学报:自然科学版,2022,34(6):1065-1070.
[7] 白雪,秦宝东,郭瑞,等.基于SM2的两方协作盲签名协议 [J].网络与信息安全学报,2022,8(6):39-51.
[8] HAN G,BAI X,GENG S L,et al. Efficient Two-party SM2 Signing Protocol Based on Secret Sharing [J].Journal of Systems Architecture,2022,132:102738(2022-10-07).https://doi.org/10.1016/j.sysarc.2022.102738.
[9] 国家密码管理局.椭圆曲线公钥密码算法:GM/T 0003-2012 SM2 [S].中华人民共和国密码行业标准,2012.
[10] 欧海文,王誉晓,欧阳琛,等.基于SM2算法的数字证书解析及有效性验证 [J].计算机应用,2016,36(S1):46-48+94.
作者简介:李祖金(1986—),男,汉族,湖北荆州人,正高级工程师,硕士,研究方向:数字政府、数字信任、数字身份、国产密码应用、信息安全;邹鹤良(1986—),男,汉族,江西吉安人,工程师,硕士,研究方向:密码算法、密码应用、应用开发;刘磊(1979—),男,汉族,重庆人,工程师,硕士,研究方向:信息安全技术。