1.本发明涉及智能网联车技术领域,具体涉及一种基于配置的指令下发安全控制系统、方法及存储介质。
背景技术:2.随着社会的发展,汽车的生产、制造、销售和使用也越来越智能化,在自动驾驶领域的远程控车方面,汽车生产商和用户对于功能的安全性要求也越来越高。在保证使用功能正常的前提下,对安全性也提出了新的要求,在安全性得到保证的前提下,对安全控制的灵活性和可配置性也有了更高的需求。
3.在用户使用远程控车功能并且下发控车指令的过程中,云端如何去辨别用户的身份是否合法,如何去分析用户的行为是否有异常、是否存在安全隐患,如何对可能出现的安全风险进行控制,如何保证这种对安全的控制方法是灵活可配置的且同时兼容地支持多个软件迭代版本,这些问题是车辆远程控制软件开发方所必须要考虑的。同时随着迭代的推进,用户需求和市场需求是不断更新的,安全控制方法也不能一成不变,所以控车安全涉及到的控制方法也必须是可配置的。
4.对于上述问题,申请号为cn202111234542.1的发明申请中公开了一种安全的远程驾驶系统,包括:被控车端,用于接收指令数据,并执行指令数据以控制车辆行驶;远程驾驶舱,与被控车端通信连接,以输出指令数据;安全控制系统,通信连接于被控车端和远程驾驶舱之间,以验证远程驾驶舱的权限,并同时存储指令数据。该方法的安全的远程驾驶系统,通过安全控制系统的设置,便可有效的提升远程驾驶的安全性,但是该方法实际使用时也存在下面的问题:1、该方法不可配置,不能随着市场和用户需求的改变灵活调整;2该方法为单一版本,不能兼容移动应用常见的多版本并存模式;3、该方法针对所有的控车指令都是采用的相同的验证方法,使用起来不够灵活。
技术实现要素:5.针对现有技术存在的上述不足,本发明要解决的技术问题是:如何提供一种能够随着市场和用户需求的改变灵活调整,兼容移动应用常见的多版本并存模式,同时针对不同的控车指令采用不同的验证方法,使用更加灵活的基于配置的指令下发安全控制系统和方法。
6.为了解决上述技术问题,本发明采用如下技术方案:一种基于配置的指令下发安全控制系统,包括用户端和车机端,所述用户端设有控车应用程序,所述车机端包括控车码设置模块、版本设置模块、关键控车指令设置模块、常规控车指令设置模块、以及控车指令下发时间和次数设置模块;所述控车码设置模块用于进行车辆的控车码的设置;所述版本设置模块用于对所述车机端的版本进行设置,以与所述用户端的控制应用程序的版本相适应;
所述关键控车指令设置模块用于对车辆的关键控车指令进行设置;所述常规控车指令设置模块用于车辆的常规控车指令进行设置;所述控车指令下发时间和次数设置模块用于对控车指令的下发时间和下发次数进行设置。
7.基于配置的指令下发安全控制方法,采用上述的基于配置的指令下发安全控制系统,所述指令下发安全控制方法为:通过所述关键控车指令设置模块对关键控车指令的名称进行设置,通过所述控车指令下发时间和次数设置模块对关键控车指令的循环时间、关键控车指令的限制次数、以及关键控车指令在循环时间段内的首次下发是否需要通过控车码校验进行设置,且关键控车指令在循环时间段内的首次下发均需要通过控车码进行校验;通过所述常规控车指令设置模块对常规控车指令的名称进行设置,通过所述控车指令下发时间和次数设置模块对常规控车指令的循环时间、常规控车指令的限制次数、以及常规控车指令在循环时间段内的首次下发是否需要通过控车码校验进行设置,且常规控车指令在循环时间段内的首次下发无需通过控车码进行校验,但常规控车指令在循环时间内的调用次数超过限制次数时将进行控车码的校验。
8.优选的,所述指令下发安全控制方法包括关键控车指令控制方法和常规控车指令控制方法,所述常规控车指令控制方法包括以下步骤:步骤1)所述用户端下发常规控车指令到所述车机端;步骤2)所述车机端判断该常规控车指令是否为首次下发,若是则执行步骤3),若否则执行步骤4);步骤3)执行常规控车指令的首次下发流程后结束;步骤4)执行常规控车指令的非首次下发流程后结束。
9.优选的,步骤3)中包括以下步骤:步骤3.1)将该常规控车指令的调用次数记为1,并以该常规控车指令的循环时间作为过期时间;步骤3.2)该常规控车指令在首次下发是否需要通过控车码进行校验,若是则执行步骤3.3),若否则执行步骤3.4);步骤3.3)所述用户端发送控车码,所述车机端校验控车码是否正确,若是则执行步骤3.4),若否则执行步骤3.5);步骤3.4)该常规控车指令的用户请求通过校验,然后执行步骤3.6);步骤3.5)驳回该常规控车指令的用户请求,然后执行步骤3.6);步骤3.6)结束。
10.优选的,步骤4)中包括以下步骤)步骤4.1)将该常规控车指令的调用次数加1;步骤4.2)判断该常规控车指令的调用次数是否超过其限制次数,若是则执行步骤4.3),若否则执行步骤4.5);步骤4.3)所述用户端发送控车码,所述车机端校验控车码是否正确,若是则执行步骤4.4),若否则执行步骤4.6);步骤4.4)将该常规控车指令的调用次数重新记为1,并以该常规控车指令的循环
时间作为过期时间后执行步骤4.5);步骤4.5)该常规控车指令的用户请求通过校验,然后执行步骤4.7);步骤4.6)驳回该常规控车指令的用户请求,然后执行步骤4.7);步骤4.7)结束。
11.优选的,所述关键控车指令控制方法包括以下步骤:步骤s1)所述用户端下发关键控车指令到所述车机端;步骤s2)所述车机端判断该关键控车指令的调用次数是否超过该关键控车指令的限制次数,若是则执行步骤s3),若否则执行步骤s4);步骤s3)判定为用户异常行为,执行该关键控车指令的异常下发流程后结束;步骤s4)执行该关键控车指令的正常下发流程后结束。
12.优选的,步骤s3)中包括以下步骤:步骤s3.1)将该关键控车指令的调用次数记为1,并以该关键控车指令的循环时间作为过期时间;步骤s3.2)所述用户端发送控车码,所述车机端校验控车码是否正确,若是则执行步骤s3.3),若否则执行步骤s3.4);步骤s3.3)清除缓存,将该关键控车指令的调用总次数记为1,成功次数记为1,失败次数记为0,并重新配置该关键控车指令的过期时间后执行步骤s3.5);步骤s3.4)将该关键控车指令的调用总次数加1,失败次数加1,该关键控车指令的成功次数和过期时间保持不变后执行步骤s3.6);步骤s3.5)该关键控车指令的用户请求通过校验,然后执行步骤s3.7);步骤s3.6)驳回该关键控车指令的用户请求,然后执行步骤s3.7);步骤s3.7)结束。
13.优选的,步骤s4)中包括以下步骤:步骤s4.1)该关键控车指令的成功次数是否为0,若是则执行步骤s4.2),若否则执行步骤s4.3);步骤s4.2)所述用户端发送控车码,所述车机端校验控车码是否正确,若是则执行步骤s4.4),若否则执行步骤s4.5);步骤s4.3)所述用户端发送控车码,所述车机端校验控车码是否正确,若是则执行步骤s4.6),若否则执行步骤s4.7);步骤s4.4)清除缓存,将该关键控车指令的调用总次数记为1,成功次数记为1,失败次数记为0,并重新配置该关键控车指令的过期时间后执行步骤s4.8);步骤s4.5)将该关键控车指令的调用总次数加1,失败次数加1,该关键控车指令的成功次数和过期时间保持不变后执行步骤s4.9);步骤s4.6)将该关键控车指令的调用总次数加1,成功次数加1,该关键控车指令的失败次数和过期时间保持不变后执行步骤s4.8):步骤s4.7)将该关键控车指令的调用总次数加1,失败次数加1,该关键控车指令的成功次数和过期时间保持不变后执行步骤s4.8);步骤s4.8)该关键控车指令的用户请求通过校验,然后执行步骤s4.10);步骤s4.9)驳回该关键控车指令的用户请求,然后执行步骤s4.10);
步骤s4.10)结束。
14.一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序被处理器运行时,执行上述的基于配置的指令下发安全控制方法。
15.与现有技术相比,本发明具有以下优点:1、本发明中几乎所有的安全验证策略都是可配置的,通过配置可以决定每一个控车指令的安全等级,通过以上配置,可以按照相应的判断来获取、修改缓存的流程,就可以完成对控车指令下发的安全控制。
16.2、本发明在时间上兼容多个版本,在配置上灵活可变,不仅能够随着市场和用户需求的改变灵活调整,兼容移动应用常见的多版本并存模式,同时还可以对不同的控车指令采用不同的验证方法,进而为用户提供更安全,更灵活,更人性化的服务,并且本发明的控制方法已经在实战应用中经受住了市场的考验,适应了市场的需求。
附图说明
17.图1为本发明基于配置的指令下发安全控制系统的系统框图;图2为本发明基于配置的指令下发安全控制方法中的配置示例;图3为本发明基于配置的指令下发安全控制方法中常规控车指令的判断流程图;图4为本发明基于配置的指令下发安全控制方法中关键控车指令的判断流程图。
具体实施方式
18.下面将结合附图及实施例对本发明作进一步说明。
19.如附图1所示,一种基于配置的指令下发安全控制系统,包括用户端和车机端,用户端设有控车应用程序,用户端可以是手机端,也可以是云端等;车机端包括控车码设置模块、版本设置模块、关键控车指令设置模块、常规控车指令设置模块、以及控车指令下发时间和次数设置模块;控车码设置模块用于进行车辆的控车码的设置;具体的,每个用户都可以针对自己的某辆车设置一个自己专用的控车码。用户在下发远程控车指令的时候,本发明对用户提供的控车码比照用户已设置的控车码进行校验,从而判断用户是否是合法用户。但为了提高用户体验,为用户提供更通畅的控车流程,对用户的每次指令下发都发起控车码校验请求显然是不必要也不合理的,所以需要只针对若干与安全强相关的指令进行控车码的校验即可。
20.版本设置模块用于对车机端的版本进行设置,以与用户端的控制应用程序的版本相适应;具体的,由于用户端(如手机端)的应用程序更新迭代较快,不同的用户很可能在使用不同版本的用户端应用程序,所以需要有不同版本的配置去兼容目前市面上所有版本的用户端控车应用程序,在不同的版本配置中,同一个控车指令对于控车码的校验需求也可能不相同,如鸣笛指令在其中一个版本中需要用户通过控车码的校验,而在另一个版本中控车码的校验就是可忽略的。
21.关键控车指令设置模块用于对车辆的关键控车指令(types组)进行设置;具体的,对于在一段时间内必须提供控车码校验的关键控车指令,这些指令的下发在一段时间内是必须要求用户通过控车码校验的,否则驳回指令,不予执行;这些指令通常是与控车安全强
相关的指令,如解锁车门,启动引擎等。
22.常规控车指令设置模块用于车辆的常规控车指令(group组)进行设置;具体的,对于控车码校验可忽略的常规控车指令,这些指令的下发通常不需要提供控车码校验;但是对一段时间内指令下发的次数依然有限制,如闪灯指令和鸣笛指令等。
23.控车指令下发时间和次数设置模块用于对控车指令的下发时间和下发次数进行设置;具体的,通过限制在某一段时间内,是否需要通过控车码校验,且下发某控车指令的次数的上限,如半小时之内,启动引擎指令必须先通过控车码校验,且指令下发次数不能超过100次等配置;若用户下发控车指令却未通过控车码校验,则驳回指令不予执行;若在配置时间段内用户下发控车指令次数超过限制,则对用户重新发起控车指令校验要求。
24.通过以上这些配置,按照相应的判断和获取、修改缓存的流程,就可以完成对控车指令下发的安全控制。
25.另外,在本实施例中还提供一种基于配置的指令下发安全控制方法,采用上述的基于配置的指令下发安全控制系统,指令下发安全控制方法为:通过关键控车指令设置模块对关键控车指令(types组)的名称(type字段)进行设置,通过控车指令下发时间和次数设置模块对关键控车指令的循环时间(seconds字段)、关键控车指令的限制次数(times字段)、以及关键控车指令在循环时间段内的首次下发时是否需要通过控车码校验(ignorefirst字段)进行设置,其中ignorefirst值为true时为不需要,为false时则需要;且关键控车指令在循环时间段内的首次下发均需要通过控车码进行校验;通过常规控车指令设置模块对常规控车指令(group组)的名称进行设置,通过控车指令下发时间和次数设置模块对常规控车指令的循环时间(seconds字段)、常规控车指令的限制次数(times字段)、以及常规控车指令在循环时间段内的首次下发时是否需要通过控车码校验(ignorefirst字段)进行设置,其中ignorefirst值为true时为不需要,为false时则需要,且常规控车指令在循环时间段内的首次下发无需通过控车码进行校验,但常规控车指令在循环时间内的调用次数超过限制次数时将进行控车码的校验。
26.具体的,如图2所示,该方法中主要的配置第一阶为版本号,即图中的v3和reserved,两个版本中的配置格式都是相同的,把指令分为关键控车指令即types组和常规控车指令即group组指令,在types组中,type字段为关键控车指令名称,seconds字段为关键控车指令循环时间,times字段为关键控车指令限制次数,ignorefirst字段则说明该关键控车指令在时间段内的首次下发是否需要用户通过控车码校验,值为true时不需要,值为false时则需要。group组指令中,name字段为常规控车指令的分组名,seconds字段为常规控车指令循环时间,times字段为常规控车指令限制次数,types字段为常规控车指令的集合,ignorefirst字段则说明该常规控车指令在时间段内的首次下发是否需要用户通过控车码校验,值为true时不需要,值为false时则需要。
27.另外,本发明将控车码校验是否可忽略的情况分为两种来讨论,第一种情况是针对安全强相关控车指令即关键控车指令的控车码是否可忽略的逻辑,称之为types组。第二种是针对安全弱相关控车指令即常规控车指令的控车码是否可忽略的逻辑,称之为group组。推荐的配置是,常规控车指令group组中的指令,都统一忽略控车指令首次输入的控车码校验,但是保留一段时间之内的控车码校验次数上限;也就是说,在group组之内的控车
指令,常规情况下不需要进行控车码校验,若是在某一设定的时间段内(例如30分钟),指令调用次数超过了某一设定的次数(例如100次),则系统可以判定用户调用为异常行为,从而对用户发起控车码校验要求,以校验用户是否合法。而types分组中的指令,则每一个控车指令都有其自身的控车码可忽略逻辑设定,以及各自的使用频次上限设定。目前group组的指令涵盖了大部分常规的控车指令,而types指令则是为了在关键的控车指令上进行特殊设置以满足控车的更高的安全需求。通常推荐将types中的指令配置为需要用户首次输入控车码,否则该指令就可以归入group组指令中了。
28.当需要明确控车码是否可忽略时,该方法可以根据指令属于types组和group组来分别进行讨论。由于不同的迭代版本有不同的控车码是否可忽略逻辑配置,所以该方法也需要根据版本号来取得对应的配置。且由于控车码是否可忽略的逻辑中,有一个要求是判断首次是否可忽略,也就是说,在一段时间以内,用户是否需要在首次下发某控车指令的时候通过控车码校验,所以该方法也需要引入缓存的机制去记录用户的控车指令下发历史。
29.如附图3所示,在本实施例中,指令下发安全控制方法包括关键控车指令控制方法和常规控车指令控制方法,常规控车指令控制方法包括以下步骤:步骤1)用户端下发常规控车指令到车机端;步骤2)车机端通过检查缓存中的控车指令下发次数n来判断该常规控车指令是否为首次下发,若是即n为空则执行步骤3),若否则执行步骤4);步骤3)执行常规控车指令的首次下发流程后结束;步骤4)执行常规控车指令的非首次下发流程后结束。
30.在本实施例中,步骤3)中包括以下步骤:步骤3.1)将该常规控车指令的调用次数n记为1,并以该常规控车指令的循环时间seconds作为过期时间;步骤3.2)该常规控车指令在首次下发是否需要通过控车码进行校验,若是则执行步骤3.3),若否则执行步骤3.4);步骤3.3)用户端发送控车码,车机端校验控车码是否正确,若是则执行步骤3.4),若否则执行步骤3.5);步骤3.4)该常规控车指令的用户请求通过校验,然后执行步骤3.6);步骤3.5)驳回该常规控车指令的用户请求,然后执行步骤3.6);步骤3.6)结束。
31.在本实施例中,步骤4)中包括以下步骤)步骤4.1)将该常规控车指令的调用次数n加1;步骤4.2)判断该常规控车指令的调用次数n是否超过其限制次数,若是则执行步骤4.3),若否则执行步骤4.5);步骤4.3)用户端发送控车码,车机端校验控车码是否正确,若是则执行步骤4.4),若否则执行步骤4.6);步骤4.4)将该常规控车指令的调用次数n重新记为1,并以该常规控车指令的循环时间seconds作为过期时间后执行步骤4.5);步骤4.5)该常规控车指令的用户请求通过校验,然后执行步骤4.7);步骤4.6)驳回该常规控车指令的用户请求,然后执行步骤4.7);
步骤4.7)结束。
32.具体的,针对group组的指令,当该方法根据对于版本拿到对于配置,且已经明确用户当前下发的指令属于group组的常规控车指令,这时该方法就需要结合缓存中已有的历史指令下发记录,和当前用户控车码的校验结果来计算出用户当前指令的控车码是否可忽略。举例,如果当前缓存中的记录为空,说明当下的控车指令为当下时间段内,用户首次下发的控车指令,那么控车码是否可忽略,就可以根据配置中的ignorefirst字段得出结果,并且将当前的指令下发算作一次操作存入缓存,设置该缓存对应的过期时间为配置中的seconds字段。再次举例,如果当前缓存中已有该用户下发该指令的次数记录,则说明当下用户下发的控车指令为当下时间段内的非首次指令,该方法依然需要将用户的该次指令下发存入缓存计数器中,然后对缓存中计数器的次数进行判断,若次数未超过配置的最大次数上限,则该次指令下发的控车码校验是可忽略的,若该次指令下发已经超过了配置中的次数限制,那么为了安全考虑,该方法将当前调用判定为用户异常操作,从而要求用户通过控车码的校验。这里注意,如果用户当前下发指令的频次已经超限,且提供了正确的控车码校验结果,则该方法重新将缓存中的计数器置为1次,缓存记录的过期时间重新设置为配置中的seconds字段。
33.如附图4所示,在本实施例中,关键控车指令控制方法包括以下步骤:步骤s1)用户端下发关键控车指令到车机端;步骤s2)车机端通过缓存中的调用总次数判断该关键控车指令的调用次数是否超过该关键控车指令的限制次数,若是则执行步骤s3),若否则执行步骤s4);步骤s3)判定为用户异常行为,执行该关键控车指令的异常下发流程后结束;步骤s4)执行该关键控车指令的正常下发流程后结束。
34.在本实施例中,步骤s3)中包括以下步骤:步骤s3.1)将该关键控车指令的调用次数n记为1,并以该关键控车指令的循环时间seconds作为过期时间;步骤s3.2)用户端发送控车码,车机端校验控车码是否正确,若是则执行步骤s3.3),若否则执行步骤s3.4);步骤s3.3)清除缓存,重新循环,将该关键控车指令的调用总次数记为1,成功次数记为1,失败次数记为0,并重新配置该关键控车指令的过期时间后执行步骤s3.5);步骤s3.4)将该关键控车指令的调用总次数加1,失败次数加1,该关键控车指令的成功次数和过期时间保持不变后执行步骤s3.6);步骤s3.5)该关键控车指令的用户请求通过校验,然后执行步骤s3.7);步骤s3.6)驳回该关键控车指令的用户请求,然后执行步骤s3.7);步骤s3.7)结束。
35.在本实施例中,步骤s4)中包括以下步骤:步骤s4.1)该关键控车指令的成功次数是否为0,若是则执行步骤s4.2),若否则执行步骤s4.3);步骤s4.2)用户端发送控车码,车机端校验控车码是否正确,若是则执行步骤s4.4),若否则执行步骤s4.5);步骤s4.3)用户端发送控车码,车机端校验控车码是否正确,若是则执行步骤
s4.6),若否则执行步骤s4.7);步骤s4.4)清除缓存,将该关键控车指令的调用总次数记为1,成功次数记为1,失败次数记为0,并重新配置该关键控车指令的过期时间后执行步骤s4.8);步骤s4.5)将该关键控车指令的调用总次数加1,失败次数加1,该关键控车指令的成功次数和过期时间保持不变后执行步骤s4.9);步骤s4.6)将该关键控车指令的调用总次数加1,成功次数加1,该关键控车指令的失败次数和过期时间保持不变后执行步骤s4.8):步骤s4.7)将该关键控车指令的调用总次数加1,失败次数加1,该关键控车指令的成功次数和过期时间保持不变后执行步骤s4.8);步骤s4.8)该关键控车指令的用户请求通过校验,然后执行步骤s4.10);步骤s4.9)驳回该关键控车指令的用户请求,然后执行步骤s4.10);步骤s4.10)结束。
36.具体的,针对types组中的指令,则有更复杂的缓存设置逻辑。在缓存中,该方法会存储三个数据:关键控车指令的调用总次数,关键控车指令校验成功次数和关键控车指令校验失败次数。首先,在判断types组指令的控车码是否可忽略之前,该方法需要准备好与当前的版本号对应的types组指令控车码可忽略逻辑配置,以及当前用户下发指令的控车码校验结果。若当前下发的指令属于types组中的指令,该方法需要首先获取该用户针对该指令的下发情况的缓存。然后该方法分不同的情况讨论:若缓存中总下发关键控车指令的次数已经超过了限制次数,该方法会将其判定为用户行为异常,则无论如何都需要用户通过控车码校验了。同时该方法也需要根据当前控车码的校验结果来更新缓存。若当前控车码是正确的,该方法就会清除缓存中的记录并重新开始记录新的一段时间,即将缓存中的总次数设置为1,成功次数置为1,失败次数置为0,缓存的过期时间设置为配置中对应的seconds字段。若当前控车校验未通过,则该方法将当前缓存中的总次数和失败次数都加1,缓存过期时间不变。
37.若缓存中用户下发关键控车指令的次数未超过配置中的限制次数。又要分成两种情况讨论:一种情况是,缓存中的成功次数大于0,说明这次的指令为当前时间段内该用户的非首次成功指令。由于当前指令并非首次成功的指令,则该方法将之看作常规的中间次数指令,而这样的指令,都是不需要控车码校验的。但是依然需要根据控车码校验的情况对缓存进行更新,更新规则为:总次数加1,若控车码校验结果正确,则成功次数加1,反之则失败次数加1,缓存过期时间不变。另一种情况是,缓存中的成功次数为0,说明当前指令下发为当前时间段内的首次。若当前控车码校验结果正确,则当前为该时间段内的首次正确输入控车码,该方法将清除缓存,重新开始一个循环,也就是将缓存中的总次数置为1,成功次数置为1,失败次数置为0,缓存的过期时间设置为设置中对应的seconds字段。若当前控车码的校验结果未通过,则该方法将当前缓存中的总次数和失败次数都加1,缓存过期时间不变。
38.另外,本发明还提供一种存储介质,存储介质存储有一个或者多个程序,一个或者多个程序被处理器运行时,执行上述的基于配置的指令下发安全控制方法。
39.与现有技术相比,本发明中几乎所有的安全验证策略都是可配置的,通过配置可以决定每一个控车指令的安全等级,通过以上配置,可以按照相应的判断来获取、修改缓存
的流程,就可以完成对控车指令下发的安全控制。本发明在时间上兼容多个版本,在配置上灵活可变,不仅能够随着市场和用户需求的改变灵活调整,兼容移动应用常见的多版本并存模式,同时还可以对不同的控车指令采用不同的验证方法,进而为用户提供更安全,更灵活,更人性化的服务,并且本发明的控制方法已经在实战应用中经受住了市场的考验,适应了市场的需求。
40.最后需要说明的是,以上实施例仅用以说明本发明的技术方案而非限制技术方案,本领域的普通技术人员应当理解,那些对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,均应涵盖在本发明的权利要求范围当中。