用于在分布式系统中执行身份检查的方法和系统与流程-j9九游会真人

文档序号:35714170发布日期:2023-10-12 18:02阅读:29来源:国知局


1.本公开涉及分布式系统,并且尤其涉及分布式系统中的通信安全。


背景技术:

2.现代车辆有许多传感器。然而,这样的传感器可以分布在车辆上的各种计算节点内,其中每个计算节点可以访问零个、一个或多个传感器驱动。这样的传感器节点还可以具有不同的制造方,并且使用不同的操作系统进行操作。类似地,其他分布式系统可以具有多个节点,其中节点需要彼此通信。
3.确定相互作用的软件实体的身份是软件系统安全的重要基础。例如,对某些数据或动作的请求可能被准许,也可能不被准许,这取决于对该请求作出的软件模块的身份。在现代大型软件系统中,模块之间通过发出上述请求进行交互。因此,以安全但高效的方式确定请求者的身份至关重要。
附图说明
4.参考附图将更好地理解本公开,其中:
5.图1是示出计算机系统内的示例计算节点的框图。
6.图2是示出两个计算机节点的框图,其中每个计算机节点使用远程代理来将其他节点上的块呈现为其相应节点内的模块的本地块。
7.图3是示出在一个模块和第二模块之间发送的消息的数据流示图。
8.图4是示出两个计算机节点的框图,这两个计算机节点使用节点内每个模块上的远程代理来将其他节点上的块呈现为本地此类模块。
9.图5是能够与本公开的实施例一起使用的简化计算设备的框图。
具体实施方式
10.本公开提供了一种在第一节点上的远程代理处的方法,该方法包括:在远程代理处从第一节点上的第一模块接收第一消息,第一消息被定向到第二节点上的第二模块;利用操作系统验证在远程代理处验证第一消息;基于远程代理处的清单来确定第二节点;使用针对第一节点的私钥对第一消息进行签名;以及将第一消息发送到第二节点。
11.本公开还提供了一种计算机系统内的第一计算节点,第一计算节点包括:处理器;以及通信子系统,其中第一计算节点被配置为:在第一计算节点上的远程代理处接收来自第一计算节点上的第一模块的第一消息,第一消息被定向到第二计算节点上的第二模块;利用操作系统验证在远程代理处验证第一消息;基于远程代理处的清单确定第二计算节点;使用针对第一计算节点的私钥对第一消息进行签名;以及将第一消息发送到第二计算节点。
12.本公开还提供了一种用于存储指令代码的计算机可读介质,指令代码在由计算机系统内的第一计算节点的处理器执行时,使第一计算节点以:在第一计算节点上的远程代
理处接收来自第一计算节点上的第一模块的第一消息,第一消息被定向到第二计算节点上的第二模块;利用操作系统验证在远程代理处验证第一消息;基于远程代理处的清单来确定第二计算节点;使用针对第一计算节点的私钥对第一消息进行签名;以及将第一消息发送到第二计算节点。
13.在软件系统中,以安全但有效的方式确定请求者的身份是重要的。现代操作系统(os)具有标识软件组件以实施安全策略的机制。例如,大多数桌面操作系统都有一种方法来标识运行程序的用户,使得一个用户不能篡改另一个用户的数据或程序。在大多数unix系统中,用户标识符(uid)用于标识拥有文件或进程的用户。大多数操作系统都采取措施保护uid不被篡改。
14.这样的身份机制在操作系统中的实现是高效的,并且已经经受住了数十年的攻击。因此,对于构建在这种操作系统之上的软件系统来说,使用操作系统支持的标识符来标识组件是有意义的。例如,在安卓
tm
操作系统中,平台使用每个已安装组件的uid来标识该组件。
15.然而,在一些分布式系统中,可能存在运行不同操作系统的多个节点。软件模块可以跨os部署,但可能仍需要相互交互并提出请求。在这方面,根据本公开,提供了方法和系统以允许在运行不同操作系统的不同计算节点上的模块之间进行安全但高效的通信。
16.示例分布式系统
17.将关于具有分布式节点的汽车系统来描述本公开。然而,这仅仅是为了说明的目的而提供的,并且本文描述的方法和系统同样可以与任何其他分布式系统一起使用。
18.例如,现在参考图1,其示出节点110。本文使用的节点可以是一个或一组电子控制单元、中央处理单元或内核控制等选项,并且可以被认为是单个计算单元。
19.在图1的示例中,节点110包括服务管理器120,其可以与该节点连接到的传感器的驱动交互。例如,节点110可以访问位置传感器,例如全球定位系统(gps)芯片组,如框122所示。
20.为了允许节点110与其他节点上的模块交互并提供与计算系统的功能,可以在节点110上提供硬件抽象层(hal),其包括hal服务130。每个hal服务130负责集成传感器,并且可以提供各种功能,包括:集成到底层传感器;归一化传感器数据;和/或如果需要,在安全认证软件和非认证软件之间提供屏障。hal服务的其他功能也是可能的。
21.在图1的示例中,hal被提供用于相机信息,如框132所示。
22.虽然图1的示例示出了具有单个服务和单个hal的节点110,但这仅仅是为了说明目的而提供的。节点110可以具有没有hal的单个服务、没有服务的单个hal、没有hal的多个服务、没有服务的多个hal、和/或服务和hal的组合。
23.可以使用节点110的系统的一个示例是车辆的应用开发环境。这样的应用开发环境可以开发用于用户体验的应用,包括舒适、导航、娱乐信息等,用于安全的应用、用于车队管理的应用、用于性能监测的应用或用于车辆环境的其他此类应用。具体地,车辆提供多个传感器,并且不同的制造方、型号或品牌可能使用具有不同数据格式或值的不同传感器,从而根据这些传感器创建碎片化的传感器读数。这种碎片化阻碍了利用车辆数据的应用生态系统的培育。此外,低水平的传感器数据往往过于细粒度,很难用于应用。
24.在这方面,硬件抽象层可用于提供可封装与底层传感器驱动的交互的独立于硬件
的传感器接口/抽象。在各种计算节点中使用硬件抽象创建了一种平台,该平台可扩展的,可以在模块之间提供屏障,以例如强制实施与其他系统分开的安全认证系统等选项。
25.应用不直接与传感器硬件交互来访问传感器数据,而是利用硬件抽象层。这种分离提供了hal(传感器集成和归一化传感器数据)和其他抽象(如车辆抽象层(val))的职责之间的明确区分,象用于管理对车辆数据的访问并提供增值洞察。
26.具体地,洞察可以利用来自多个hal的传感器数据,以便提供车辆抽象和增值洞察。val中的车辆洞察服务可以控制对归一化形式的车辆数据的访问,并提供增值推断。洞察服务的示例可以包括位置服务,其可以以一致的格式提供坐标位置数据以及诸如地理围栏之类的洞察;座椅服务,其可以提供大量座椅信息,诸如安全带状态、重量、位置和儿童锁状态;相机服务,其可以为车内的相机以及可能的功能(诸如转换和/或剪裁)提供视频流;电池服务,其可以提供对电池的洞察和访问,诸如充电状态/消耗/预计剩余小时数/预计范围;门服务,其可以提供车门和门状态的抽象;等等。
27.洞察服务可以利用来自多个hal的传感器数据来提供车辆抽象和增值洞察。更高层次的数据洞察使应用开发人员能够创造未来的汽车体验。洞察是用来描述对基本传感器数据的任何增值解释的术语。洞察可以像数据聚合或关联一样简单,也可以像人工智能和机器学习一样复杂。例如,对于温度传感器,提供用于通知的高和低的水印可能被认为是一种“洞察”。对于位置服务来说-地理围栏是一种洞察,对于相机来说-乘客识别可能被认为是一种洞察。
28.因此,这种应用开发环境需要具有图1中描述的服务和hal管理器的节点。然而,在可能的系统中,节点110将需要与诸如其他ecu、cpu或计算系统的其他节点通信,其中这些ecu、cpu或计算系统可能使用与节点110的操作系统不同的操作系统。然而,对于安全性而言,重要的是节点110上的进程、应用和模块识别请求者,以避免篡改数据和进程,并确保仅以授权的方式完成对进程和数据的访问。
29.远程代理模型
30.根据本公开的实施例,利用包括uid和组标识符(gid)的现有os机制来提供节点内的安全性。这种机制是众所周知的,并且容易使用。本公开利用远程代理来覆盖这样的机制,以弥合不同节点的操作系统安装的安全缺口。
31.现在参考图2。在图2的实施例中,节点210提供具有服务管理器220和传感器(即,位置传感器)的服务,如框222所示。
32.此外,节点210包括具有hal管理器230的hal和相机的传感器信息,如框232所示。
33.对于进入节点210的服务请求,存在单个网络入口点,即远程代理240。远程代理240是计算系统其余部分的节点210的代表,并向节点210内的模块提供剩余计算系统的表示。远程代理240被部署在其上并且唯一标识该节点的凭证所信任。
34.类似地,节点245包括具有服务管理器250的服务。在图2的示例中,服务包括相机传感器,如框252所示。
35.此外,在图2的示例中,节点245包括具有hal管理器260的hal。在这种情况下,hal表示gps,如框262所示。
36.节点245还包括远程代理270,其代表整个计算系统的其余部分中的节点245,反之亦然。
37.远程代理240是能够代表将被远程接受的节点签署分组的唯一模块。在这方面,计算系统上的信任节点被提供有它们期望与之通信的对等体的公钥或凭证。
38.在另一方面,还提供信任节点以在本地托管特定的一组服务。在远程节点清单中捕获节点的这些属性,并由远程代理240和270使用它们来知道将服务请求定向到哪里。例如,可以向远程代理240提供下面表1中的清单,反映节点210可以与节点245通信,并且节点245提供可以从远程节点访问的某些类型的服务和hal。
[0039][0040]
表1:计算系统中另一节点的远程清单
[0041]
如上面的表1所示,节点210,并且具体是远程代理240,被允许与节点245通信,并且可以预期从节点245接收作为服务的相机视图,以及从节点245接收gps hal。向节点210提供节点245的公钥以验证消息的来源。在表1的示例中,表1中的公钥可以表示可以在特定实施例中使用的规范,例如因特网工程任务组(ietf)请求注解(rfc)7517。
[0042]
类似地,如果期望远程代理270与节点210通信,则可以为远程代理270提供或存储用于节点210的清单。例如,关于下面的表2示出了这样的清单。
[0043][0044]
表2:计算系统中另一节点的远程清单
[0045]
在这种情况下,节点245,并且具体是远程代理270,被允许与节点210通信,并且可以期望从节点210接收作为服务的位置,以及从节点210接收相机hal。向节点245提供节点210的公钥,以验证消息的来源。
[0046]
来自第一节点中的服务或hal的对另一节点上的服务或hal的请求经由信任远程代理被路由。现在参考图3。
[0047]
在图3的实施例中,节点310包括至少一个hal或服务312以及远程代理314。
[0048]
类似地,节点320包括远程代理322和至少一个hal或服务324。
[0049]
来自节点310中的服务、对在另一节点上的hal的请求经由远程代理被路由。本地服务可用的代理的接口是表示可在整个系统中使用的服务的服务代理。
[0050]
具体地,如图2所示,除了服务和hal管理器之外,节点上还存在远程代理。因此,本地注册不会离开节点。分配给远程代理的组id和权限是远程代理连接到的服务的联合。
[0051]
具体地,hal或服务312具有对hal或服务324的请求。hal或服务312将远程代理314视为该请求的目的地,并因此向远程代理314发送具有其用户标识符的请求,如消息330所示。
[0052]
远程代理314利用远程代理314内的清单来查找消息330中请求的hal或服务。在这种情况下,清单查找发现具有所需信息的服务或hal在节点320上。远程代理314然后可以向远程代理322发出请求,如消息332所示。在某些情况下,消息332用清单中发现的远程代理322的公钥加密。在其他情况下,请求可以被签名,并且远程代理322可以使用在节点310的清单中找到的节点310的公钥来验证签名。
[0053]
在远程代理322接收到消息332并解密和/或验证该消息后,它就可以基于节点310的清单来检查该消息是否打算由节点320接收。如果节点320可以在消息332中有效地接收请求,则远程代理322然后可以利用操作系统验证方法,诸如远程代理322的gid或uid,将请求发送到hal或服务324。
[0054]
hal或服务324识别本地请求,并因此在消息340中提供响应。消息340被发送,就好像它是具有hal或服务324的uid的操作系统上的本地消息。
[0055]
远程代理322接收并识别消息340中的响应。此后,它可以使用在节点310的清单中找到的公钥来加密该响应。备选地或附加地,节点320,并且具体是远程代理322,可以利用其私钥来签署消息。然后可以将该响应作为消息342发送回远程代理314。
[0056]
远程代理314接收消息342,并且可以解密和/或验证该消息。此后,远程代理314可以向hal或服务312发送响应,如消息344所示。
[0057]
消息344被视为本地消息,并且可以包含远程代理314的gid或uid。因此,使用标准操作系统程序在hal或服务312处对其进行验证。
[0058]
基于以上,当对远程服务进行查找时,管理器因此将请求发送到远程代理。部署修复清单并将其分发给其他节点。所有服务和hal的抽象使得所有事务在应用程序接口(api)方面表现为都是本地的。
[0059]
此外,根据图3的实施例,远程代理具有其自己的uid。此uid被分配给授予远程代理所代表的远程服务的权限。当对从远程代理接收的请求执行权限检查时,权限管理器将检查相关的权限授予。远程代理本身实现了远程服务以及它们可以基于清单发出的请求的表。
[0060]
参考图2的实施例,如果节点210的远程代理从节点245接收到声称来自相机hal的消息,则该消息将被拒绝,因为节点245的清单没有列出相机hal,例如如表1所示。
[0061]
类似地,在消息或请求被转发到远程模块之前,远程代理检查来自节点内的本地模块的请求是否源自在节点配置中列出的声称的uid。
[0062]
以此方式,从任何hal或服务的观点来看,所有消息都可以被视为本地消息,因此可以以安全且高效的方式完成请求方的身份验证。
[0063]
在备选实施例中,每个服务或hal可以包含或包括远程代理,而不是系统内节点的单个远程代理。在其他情况下,服务或hal的子集或组可以利用单个代理,而其他子集或组使用不同的代理。
[0064]
现在参考图4。在图4的示例中,节点410包括具有服务管理器420的服务。在这种情况下,服务是位置服务,如框422所示。
[0065]
此外,节点410包括具有hal管理器430的hal。在图4的示例中,hal用于相机,如框432所示。
[0066]
服务包括远程代理440,而hal包括远程代理442。
[0067]
类似地,节点445包括具有服务管理器450的服务,并且在图4的情况下,服务针对相机提供,如框452所示。
[0068]
节点445还包括具有hal管理器460的hal。在图4的示例中,hal用于位置或gps传感器,如框462所示。
[0069]
服务包括远程代理470,并且hal包括远程代理472。
[0070]
在图4的示例中,远程代理440可以接收远程代理470以及远程代理472的清单。在这种情况下,远程代理440可以利用清单中的信息将请求定向到节点445上的特定代理。具有hal管理器430的hal和具有服务管理器420的服务之间的本地请求依然将利用如上所述的本地操作系统验证技术。
[0071]
节点410的组件与远程代理(诸如远程代理440或470)之间的通信将利用操作系统技术。不同节点上的远程代理之间的通信可以被加密和/或签名。因此,图3的过程将适用于图4的实施例。
[0072]
基于以上,利用不同操作系统的远程节点上的服务或硬件抽象层可被视为本地服务或硬件抽象层,其中远程代理充当本地模块并表示来自其他节点的此类服务或硬件抽象层。因此,应用程序接口和通信是利用操作系统技术以安全的方式完成的,并且表现为对节点内的各种模块是本地的。
[0073]
远程代理被提供或配置有指示由计算系统内的其他节点提供的服务或抽象层的类型的清单,以及用于与这些其他节点通信以允许以安全方式完成通信的密钥。
[0074]
上述ecu、节点和其他计算平台可以使用任何计算设备来实现。参考图5示出了计算设备的一个简化图示。图5的计算设备可以是任何固定或移动计算设备。
[0075]
在图5中,设备510包括处理器520和通信子系统530,其中处理器520和通信子系统530协作以执行上述实施例的方法。通信子系统530允许设备510与其他设备或网络元件通信,并且可以根据所执行的通信类型而变化。此外,通信子系统530可以包括多种通信技术,包括任何有线或无线通信技术。
[0076]
处理器520被配置为执行可编程逻辑,该可编程逻辑可以与数据一起存储在设备510上,并且在图5的示例中示出为存储器532。存储器532可以是任何有形的、非瞬态的计算机可读存储介质,其存储指令代码,该指令代码当由处理器520执行时,使设备510执行本公开的方法。计算机可读存储介质可以是有形的或瞬态/非瞬态介质,诸如光(例如,cd、dvd等)、磁(例如,磁带)、闪存驱动器、硬盘驱动器或本领域中已知的其他存储器。
[0077]
备选地,或除了存储器532之外,设备510可以例如通过通信子系统530从外部存储介质访问数据或可编程逻辑。
[0078]
在图5的示例中,一个或多个传感器540可以与计算设备相关联。然而,这是可选的,并且在某些情况下,计算设备510将不与传感器相关联。
[0079]
在一个实施例中,设备510的各种元件之间的通信可以通过内部总线560。然而,其他形式的通信也是可能的。
[0080]
本文描述的实施例是具有与本技术的技术的元素相对应的元素的结构、系统或方法的示例。该书面描述可以使本领域的技术人员能够制作和使用具有同样对应于本技术的技术的元素的替换元素的实施例。因此,本技术的技术的预期范围包括与本文描述的本技术的技术没有不同的其他结构、系统或方法,并且还包括与本文描述的本技术的技术没有
实质性差异的其他结构、系统或方法。
[0081]
虽然在附图中以特定顺序描述操作,但这不应被理解为要求以所示的特定顺序或按顺序执行这些操作,或要求执行所有所示的操作以获得期望的结果。在某些情况下,可以使用多任务和并行处理。此外,上述实现中的各种系统组件的分离不应被理解为要求在所有实现中进行这种分离,并且应当理解,所描述的程序组件和系统通常可以集成在一起在单个软件产品中或打包到多个软件产品中。
[0082]
此外,在各种实现中描述和图示为离散或分开的技术、系统、子系统和方法可以与其他系统、模块、技术或方法组合或集成。示出或讨论为相互耦合或直接耦合或相互通信的其他项目可以是间接耦合或通过某些接口、设备或中间组件进行通信的,无论是电的、机械的或其他的。改变、替换和更改的其他示例可以由本领域的技术人员确定并且可以进行。
[0083]
虽然上述详细描述已经示出、描述并指出了应用于各种实施方式的本发明的基本新颖特征,但是应当理解,本领域技术人员可以对所示系统的形式和细节进行各种省略、替换和改变。此外,方法步骤的顺序不是由它们在权利要求中出现的顺序所暗示的。
[0084]
当消息被发送到电子设备/从电子设备发送时,这样的操作可能不是立即的或直接来自服务器。它们可以从支持本文描述的设备/方法/系统的服务器或其他计算系统基础设施同步或异步地递送。前述步骤可以全部或部分地包括去往/来自设备/基础设施的同步/异步通信。此外,来自电子设备的通信可以是到网络上的一个或多个端点的。这些端点可以由服务器、分布式计算系统、流处理器等来服务。内容递送网络(cdn)还可以向电子设备提供通信。例如,与典型的服务器响应不同,服务器还可以提供或指示内容递送网络(cdn)的数据以等待稍后由电子设备下载,例如电子设备的后续活动。因此,数据可以作为系统的一部分或独立于系统而直接从服务器或其他基础设施(例如,分布式基础设施或cdn)发送。
[0085]
通常,存储介质可以包括以下各项的任何或一些组合:半导体存储设备,诸如动态或静态随机存取存储器(dram或sram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)和闪存;磁盘,诸如固定、软盘和可移除盘;另一磁介质,包括磁带;光学介质,诸如压缩盘(cd)或数字视频盘(dvd);或另一类型的存储设备。注意,上面讨论的指令可以在一个计算机可读或机器可读存储介质上提供,或者备选地,可以在分布在可能具有多个节点的大型系统中的多个计算机可读或机器可读存储介质上提供。这种计算机可读或机器可读的一个或多个存储介质被认为是物品(或制品)的一部分。物品或制品可以指任何制造的单个组件或多个组件。一个或多个存储介质可以位于运行机器可读指令的机器中,或者位于可以通过网络从其下载机器可读指令以执行的远程站点。
[0086]
在前述描述中,阐述了许多细节以提供对本文公开的主题的理解。然而,可以在没有这些细节的情况下实践这些实现。其他实现可以包括对上面讨论的细节的修改和变化。所附权利要求旨在涵盖此类修改和变化。
当前第1页1  
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
网站地图