Secure Controller Area Network (CAN) Transceiver
The secure CAN transceiver addresses vulnerabilities in traditional CAN bus systems by encoding authentication bits and using a bit signature algorithm to authenticate and verify CAN frames, ensuring secure vehicle operations and data integrity.
Patent Information
- Application Number
- JP2023541826
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-01-08
- Filing Date
- 2021-09-03
- Publication Date
- 2025-09-26
- Estimated Expiration
- 2041-09-03
AI Technical Summary
Traditional CAN bus systems in vehicles are vulnerable to attacks, allowing attackers to inject false data and compromise vehicle operations, steal information, and manipulate vehicle functions.
Implementing a secure CAN transceiver that encodes authentication bits into CAN frames, verifying their presence, and using a bit signature algorithm to ensure data integrity and prevent unauthorized access.
Enhances security by authenticating CAN bus frames, preventing unauthorized data injection and replay attacks, thus safeguarding vehicle operations and user information.
Smart Images

Figure 0007744993000001 
Figure 0007744993000002 
Figure 0007744993000003
Abstract
Description
[Background technology]
[0001] Generally, vehicles or transportation means, such as cars, motorcycles, trucks, airplanes, trains, etc., provide transportation needs for passengers and / or goods in a variety of ways. Functionality associated with the transportation means can be identified and utilized by various computing devices, such as smartphones or computers, located on and / or remote from the transportation means. Summary of the Invention
[0002] An exemplary embodiment provides a method including one or more of: generating a data frame for transmission over a Controller Area Network (CAN) bus of a vehicle, the data frame including data stored in a plurality of fields; encoding at least one authentication bit into values in data fields of the generated data frame, the at least one authentication bit including a digital signature based on a pre-defined key for the at least one authentication bit; and transmitting the generated data frame with the at least one authentication bit including the digital signature over the CAN bus.
[0003] Another exemplary embodiment provides a vehicle including a processor configured to do one or more of: generate a data frame for transmission over a Controller Area Network (CAN) bus of the vehicle, the data frame including data stored in a plurality of fields; encode at least one authentication bit into values in data fields of the generated data frame, the at least one authentication bit including a digital signature based on a pre-defined key for the at least one authentication bit; and transmit the generated data frame with the at least one authentication bit including the digital signature over the CAN bus.
[0004] A further exemplary embodiment provides a non-transitory computer-readable medium comprising instructions that, when read by a processor, cause the processor to perform one or more of: generating a data frame for transmission over a Controller Area Network (CAN) bus of a vehicle, the data frame including data stored in a plurality of fields; encoding at least one authentication bit into values in data fields of the generated data frame, the at least one authentication bit including a digital signature based on a pre-defined key for the at least one authentication bit; and transmitting the generated data frame with the at least one authentication bit including the digital signature over the CAN bus. [Brief explanation of the drawings]
[0005] [Figure 1A] FIG. 1A is a diagram illustrating a network of devices connected via a CAN bus and implementing secure CAN transceivers, according to an exemplary embodiment. [Figure 1B] FIG. 1B is a diagram illustrating a process of an ECU communicating with a CAN bus, where the ECU includes a secure CAN transceiver, according to an exemplary embodiment. [Figure 1C] FIG. 1C illustrates a process for a secure CAN transceiver to generate and receive authentication bits according to an exemplary embodiment. [Figure 1D] FIG. 1D is a diagram illustrating a data frame for transmission on a CAN bus according to an example embodiment. [Figure 1E] FIG. 1E is a diagram illustrating a printed circuit board (PCB) configuration including a secure CAN transceiver, according to an exemplary embodiment. [Figure 2A] FIG. 2A is a diagram illustrating a transportation network diagram according to an exemplary embodiment. [Figure 2B] FIG. 2B is a diagram illustrating another transportation network diagram according to an exemplary embodiment. [Figure 2C]FIG. 2C is a diagram illustrating yet another transportation network diagram according to an exemplary embodiment. [Figure 2D] FIG. 2D is a diagram illustrating a further transportation network diagram according to an exemplary embodiment. [Figure 2E] FIG. 2E illustrates a further transportation network diagram according to an exemplary embodiment. [Figure 2F] FIG. 2F is a diagram depicting powering of one or more elements according to an exemplary embodiment. [Figure 2G] FIG. 2G is a diagram depicting interconnections between different elements in a transportation network according to an exemplary embodiment. [Figure 2H] FIG. 2H is a further diagram depicting interconnections between different elements in a transportation network according to an exemplary embodiment. [Figure 2I] FIG. 2I is a further diagram depicting interconnections between elements in a transportation network according to an illustrative embodiment. [Figure 3] FIG. 3 is a diagram illustrating a method for encoding authentication bits in a CAN frame according to an exemplary embodiment. [Figure 4] FIG. 4 is a diagram illustrating an example machine learning vehicle network, according to an exemplary embodiment. [Figure 5A] FIG. 5A illustrates an example vehicle configuration for managing database transactions associated with a vehicle, according to an example embodiment. [Figure 5B] FIG. 5B illustrates another exemplary vehicle configuration for managing database transactions between various vehicles, according to an exemplary embodiment. [Figure 6A] FIG. 6A is a diagram illustrating an architectural configuration of a blockchain, according to an example embodiment. [Figure 6B] FIG. 6B is a diagram illustrating another blockchain configuration, according to an example embodiment. [Figure 6C] FIG. 6C illustrates a blockchain configuration for storing blockchain transaction data, according to an exemplary embodiment. [Figure 6D] FIG. 6D is a diagram illustrating an exemplary data block, according to an exemplary embodiment. [Figure 7] FIG. 7 illustrates an example system that supports one or more of the example embodiments. [Figure 8] FIG. 8 is a diagram illustrating an example of a security processor, according to an exemplary embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0006] It will be readily understood that the components, as generally described and illustrated in the figures herein, could be arranged and designed in a wide variety of different configurations. Thus, the following detailed description of at least one embodiment of a method, apparatus, non-transitory computer-readable medium, and system, as illustrated in the accompanying figures, is not intended to limit the scope of the claimed application but is merely representative of selected embodiments.
[0007] Communications between a vehicle and particular entities, such as remote servers, other vehicles, and local computing devices (e.g., smartphones, personal computers, computers integrated into the vehicle, etc.), may be received and processed by one or more "components," which may be hardware, firmware, software, or a combination thereof. A component may be part of any of these entities or computing devices, or some other computing device. In one example, consensus decisions related to blockchain transactions may be performed by a computing device or component associated with the vehicle and one or more of the components located outside or remote from the vehicle.
[0008] The features, structures, or characteristics described throughout this specification may be combined in any suitable manner in one or more embodiments. For example, the use of the phrase "exemplary embodiment," "some embodiments," or other similar terminology throughout this specification indicates that a particular feature, structure, or characteristic described in connection with an embodiment may be included in at least one embodiment. Thus, the appearances of the phrases "exemplary embodiment," "in some embodiments," "in other embodiments," or other similar terminology throughout this specification do not necessarily all refer to the same group of embodiments, and the described features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. In the figures, any connections between elements may enable one-way and / or two-way communication, even if the depicted connections are represented by one-way or two-way arrows. In current solutions, the transportation vehicle may include one or more of a car, a truck, a pedestrian area battery electric vehicle (BEV), an e-Palette, a fuel cell bus, a motorcycle, a scooter, a bicycle, a boat, a recreational vehicle, an airplane, and any object that can be used to transport people and / or goods from one place to another.
[0009] Additionally, although the term "message" may be used in describing the embodiments, other types of network data may also be used, such as packets, frames, datagrams, etc. Furthermore, although particular types of messages and signaling may be depicted in preferred embodiments, they are not limited to particular types of messages and signaling.
[0010] Exemplary embodiments provide methods, systems, components, non-transitory computer-readable media, devices, vehicles, and / or networks that provide a secure CAN transceiver that encodes an authentication bit in a CAN frame.
[0011] Various embodiments may include at least one of a vehicle (also referred to herein as a vehicle or passenger car), a data collection system, a data monitoring system, a verification system, an authentication system, and a vehicle data distribution system. Vehicle status data may be received in the form of communication messages, such as wireless data network communications and / or wired communication messages, and processed to identify vehicle / vehicle status states and provide feedback regarding vehicle status and / or changes. In one example, a user profile may be applied to a particular vehicle / vehicle to authorize current vehicle events, service stops at service stations, authorize subsequent vehicle rental services, and enable vehicle-to-vehicle communications.
[0012] Within a communications infrastructure, a distributed database is a distributed storage system that includes multiple nodes communicating with each other. A blockchain is an example of a distributed database and includes an append-only, immutable data structure (i.e., a distributed ledger) that allows records to be maintained among untrusted parties, referred to herein as peers, nodes, or peer nodes. Each peer maintains a copy of the database records, and no peer can modify a database record without reaching consensus among the distributed peers. For example, peers may execute a consensus protocol to validate blockchain storage entries, organize the storage entries into blocks, and build a hash chain through the blocks. This process forms a ledger by ordering the storage entries as necessary for consistency. In a public, or permissionless, blockchain, anyone can participate without a specific identity. Public blockchains can be involved in cryptocurrencies and can use consensus based on various protocols, such as proof-of-work (PoW). Conversely, a permissioned blockchain database can secure interactions between groups of entities that share a common goal but do not or cannot fully trust each other, such as entities exchanging funds, goods, information, and the like. The solution can function in permissioned and / or permissionless blockchain settings.
[0013] Smart contracts are trusted, decentralized applications that leverage the tamper-resistant properties of a shared or distributed ledger (which can be in the form of a blockchain) and an underlying agreement between member nodes, called an endorsement or endorsement policy. Generally, blockchain entries are "approved" before being committed to the blockchain, and entries that are not endorsed are ignored. A typical endorsement policy allows the smart contract executable code to specify endorsers for the entry in the form of a set of peer nodes required for endorsement. When a client submits an entry to a peer specified in the endorsement policy, the endorsement policy is executed to validate the entry. After validation, the entry enters an ordering phase in which a consensus protocol is used to generate an ordered sequence of endorsed entries organized into blocks.
[0014] A node is a communicating entity in a blockchain system. A "node" may perform a logical function, in the sense that multiple nodes of different types can run on the same physical server. Nodes are organized within a trust domain and associated with logical entities that control the node in various ways. Nodes may include different types, such as client or submitting client nodes, which submit entry calls to endorsers (e.g., peers) and broadcast entry proposals to an ordering service (e.g., ordering node). Another type of node is a peer node, which can receive client-submitted entries, commit the entries, and maintain a ledger state and copy of the blockchain entries. A peer may also have the role of an endorser. An ordering service node, or orderer, is a node that performs communication services for all nodes and provides delivery guarantees, such as broadcasting to each of the peer nodes in the system, when committing entries and modifying the blockchain world state. The world state may constitute the initial blockchain entry, which typically includes control and configuration information.
[0015] A ledger is an ordered, tamper-resistant record of all state transitions of a blockchain. State transitions can occur as a result of smart contract executable code invocations (i.e., entries) submitted by participating parties (e.g., client nodes, ordering nodes, endorser nodes, peer nodes, etc.). An entry can result in a set of key-value pairs of assets being committed to the ledger as one or more operands, such as creation, update, deletion, and the like. A ledger includes a blockchain (also called a chain) that is used to store immutably ordered records in blocks. A ledger also includes a state database that maintains the current state of the blockchain. There is typically one ledger per channel. Each peer node maintains a copy of the ledger for each channel in which it is a member.
[0016] A chain is an entry log constructed as hash-linked blocks, where each block contains a sequence of N entries, where N is 1 or greater. The block header contains a hash of the block's entries and a hash of the previous block's header. In this way, all entries in the ledger can be ordered and cryptographically linked. Therefore, it is impossible to tamper with the ledger data without breaking the hash links. The hash of the most recently added blockchain block represents all entries on the chain that came before it, ensuring that all peer nodes are in a consistent and trusted state. The chain can be stored on the peer node file system (i.e., local, attached storage, cloud, etc.) to efficiently support the append-only nature of blockchain workloads.
[0017] The current state of the immutable ledger represents the most recent values for all keys contained in the chain's entry log. The current state is sometimes referred to as the world state, as it represents the most recent key values known to the channel. Invocations of smart contract executables execute entries against the ledger's current state data. To facilitate efficient interactions between these smart contract executables, the most recent values for keys may be stored in a state database. The state database may simply be an indexed view into the chain's entry log, and therefore may be regenerated from the chain at any time. The state database may be automatically restored (or generated if necessary) upon peer node startup and before entries are accepted.
[0018] Blockchains differ from traditional databases in that they are not centralized storage, but rather distributed, immutable, and secure storage, and nodes must share changes to records in storage. Some properties inherent in blockchains and that help make them possible include, but are not limited to, immutable ledgers, smart contracts, security, privacy, decentralization, consensus, endorsement, accessibility, and the like.
[0019] Vehicles may require service at specific intervals, and requests for service may require authentication before being allowed to receive service. The service center may also provide service to vehicles in a nearby area based on the vehicle's current route plan and the relative level of service requirement (e.g., urgent, critical, moderate, minor, etc.). Vehicle requests may be monitored via one or more vehicle and / or roadway sensors or cameras that report sensed data to a central controller computer device within the vehicle and / or remote from the vehicle. This data is forwarded to a management server for review and action. Sensors may be located on one or more of the interior of the vehicle, the exterior of the vehicle, on fixed objects remote from the vehicle, and on another vehicle near the vehicle. Sensors may also be associated with vehicle speed, vehicle braking, vehicle acceleration, fuel level, requests for service, vehicle gear shifting, vehicle steering, and the like. Sensors as described herein may also be devices, such as wireless devices, within the vehicle and / or near the vehicle. Additionally, sensor information may be used to identify whether the vehicle is operating safely and whether the occupant has engaged in any unexpected vehicle situations, such as during vehicle access and / or usage. Vehicle information collected before, during, and / or after vehicle operation may be identified and stored in transactions on a shared / distributed ledger, which may be created and committed to an immutable ledger as determined in a "decentralized" manner by a permission-granting consortium, and thus by a blockchain membership group, etc.
[0020] Each interested party (i.e., owner, user, company, agency, etc.) may want to limit the exposure of private information, and therefore, blockchain and its immutability can be used to manage permissions for each specific user-vehicle profile. Smart contracts can be used to provide compensation, quantify user profile scores / ratings / reviews, apply vehicle event permissions, determine when service is needed, identify collision events and / or degradation events, identify events that pose safety concerns, identify event participants, and distribute such vehicle event data to registered entities seeking access. Results can also be identified, and necessary information can be shared among registered companies and / or individuals based on a consensus method associated with the blockchain. Traditional centralized databases cannot achieve such a method.
[0021] To create maps of terrain and roads that the vehicle can use for navigation and other purposes, the various driving systems of the present solution may utilize software, sensor arrays, and machine learning capabilities, light detection and ranging (LIDAR) projectors, radar, ultrasonic sensors, etc. In some embodiments, instead of LIDAR, GPS, maps, cameras, sensors, and the like may also be used in autonomous vehicles.
[0022] The data shared and received as described herein may be stored in a database, which generally maintains the data in a specific location within a single database (e.g., a database server). This location is often a central computer, such as a desktop central processing unit (CPU), a server CPU, or a mainframe computer. Information stored in a centralized database is typically accessible from multiple different points. Centralized databases are easier to manage, maintain, and control, and are particularly useful for security purposes because they are in a single location. In a centralized database, having all data in a single storage location also means that a given data set has only one primary record, thereby minimizing data redundancy. Blockchains can be used to store data and transactions related to transportation means.
[0023] A CAN bus typically includes multiple electronic control units (ECUs) connected to each other via a hardware bus. The ECUs may represent various functions in a vehicle, such as cruise control, steering, braking, lighting, air conditioning, and ignition. However, traditional CAN bus systems can be compromised. For example, an attacker may physically install a CAN tool (e.g., GC-CAN-USB, CANable, etc.) or a wire tap into the vehicle and inject data into the CAN bus via the OBD-II port. As another example, an attacker may inject an ECU into the CAN bus. In such a situation, the data in the CAN frames can be manipulated to compromise (e.g., disable, modify, etc.) the operation of the vehicle and steal information about the vehicle user and the vehicle.
[0024] Exemplary embodiments overcome these shortcomings through a secure CAN transceiver that can be integrated into an ECU and used to introduce authentication bits into data frames used for communication by the ECU on a CAN bus. The size of a CAN frame can be limited to a predetermined size (e.g., 8 bytes). The secure transceiver can address this by simply introducing one or a few bits into the CAN frame. For example, one or more authentication bits can be inserted into one or more predetermined fields of the CAN frame, such as an arbiter field, a control field, a data field, a CRC field, or the like. In addition to encoding the authentication bits into the CAN frame, the secure transceiver can verify that the incoming CAN frame has the appropriate authentication bits.
[0025] According to various embodiments, a secure CAN transceiver may encode an authentication bit ("auth bit") into a side channel, thereby providing the ability to authenticate CAN bus frames, also referred to herein as CAN frames. The auth bit is generated via a secure CAN transceiver located within an ECU between a microcontroller unit (MCU) and the CAN bus. The secure CAN transceiver generates and applies the auth bit, and the MCU configures the authentication logic via special configuration frames sent from the MCU to the secure CAN transceiver. Frames that do not satisfy the auth bit check are dropped.
[0026] In some embodiments, the authentication bits function as a digital signature. For example, the number of authentication bits used, the location of the authentication bits within the CAN frame (e.g., which field, which bit position, etc.), and the like, may represent a pre-defined signature added to the CAN frame by the ECU transmitting the CAN frame. The pre-defined signature may be verified by the receiving ECU. In some embodiments, the signature may be dynamically modified each time a new frame is transmitted using a bit signature algorithm known by the ECU. For example, the number and / or location of the authentication bits may be dynamically modified each time a new CAN frame is transmitted. Each time a CAN frame is transmitted, the CAN frame is received by all ECUs on the CAN bus. Here, each ECU may increment a counter (e.g., by 1), and a new signature may be created using the bit signature algorithm to modify the digital signature. Thus, if an attacker / eavesdropper obtains a CAN frame with the authentication bits in the CAN frame, the attacker will not have the correct signature because the correct signature will be changed in the new CAN frame.
[0027] In an exemplary embodiment, an ECU refers to an embedded system within a vehicle's electronics that controls one or more electrical systems or subsystems within the vehicle. Types of ECUs include, but are not limited to, engine control modules (ECMs), powertrain control modules (PCMs), transmission control modules (TCMs), brake control modules (BCMs or EBCMs), central control modules (CCMs), central timing modules (CTMs), general electronic modules (GEMs), body control modules (BCMs), suspension control modules (SCMs), control units, and the like. Collectively, these systems are sometimes referred to as the vehicle's computer. Some modern vehicles have up to 80 or more ECUs, and the number and complexity continues to increase.
[0028] The CAN bus is a vehicle bus designed to allow microcontrollers and devices to communicate with each other's applications without the need for a central host computer. As an example, a group of ECUs (devices) may be electrically connected to each other via a CAN bus. Devices attached to the CAN bus may send messages, described herein as data frames (e.g., CAN frames), to each other. Data frames may be transmitted over the CAN bus. In some cases, frames are received by all devices connected to the CAN bus, including the transmitting device. CAN frames traditionally have a limit of 94 bits (8 bytes).
[0029] 1A illustrates a network 100A of devices connected via a CAN bus 109 and implementing a secure CAN transceiver 108, according to an exemplary embodiment. Referring to FIG. 1A, ECU 101 and ECU 107 are embedded devices in a vehicle (not shown). ECUs 101 and 107 may represent any of the modules described above, such as engine control, steering, transmission, and the like. ECUs 101 and 107 are authorized to communicate with CAN bus 109 and with each other.
[0030] However, in this example, the attacker has attached a CAN tool 104 to a physical port (e.g., an OSB-II port) and is attempting to use the CAN tool 104 to send unauthorized information (data frame B) to ECU 107. In addition, the attacker has also introduced an ECU 105 into the vehicle that is not authorized to communicate over CAN bus 109. In this case, the attacker may attempt to inject false data (data frame C) to disable ECU 107 and / or ECU 101 communications.
[0031] To prevent these types of attacks, exemplary embodiments provide secure transceivers 102 and 108, which are further described in Figures 1B, 1C, and 1E. In this example, ECU 101 transmits data frame A to ECU 107 over CAN bus 109. Before transmitting data frame A to ECU 107, secure transceiver 102 of ECU 101 encodes an authentication bit into data frame A. When data frame A is received by ECU 107, secure transceiver 108 may verify that the required authentication bit is present in data frame A. Upon verification, secure transceiver 108 determines that the data frame is valid.
[0032] On the other hand, when the CAN tool 104 attempts to inject a false data frame B into the CAN bus 109, the CAN tool 104 does not know the required authentication bit. Therefore, the false data frame B does not have the required authentication bit. In this case, the secure transceiver 108 of the ECU 107 cannot verify the data frame B from the CAN tool 104 because the data frame B does not have the required authentication bit. Therefore, the data frame B is not transmitted to the ECU 107. 7 may be rejected, dropped, or otherwise discarded by ECU 10. 1 also receives the false data frame B, and the secure transceiver 102 also detects data frame B as invalid because it lacks the required authentication bits.
[0033] However, ECU 105 may know the authentication bit. 1When ECU 107 transmits data frame A, data frame A may also be transmitted to all other ECUs on CAN bus 109, including ECU 105. Thus, ECU 105 may know the authentication bit. In this case, ECU 105 may be implemented with a fake transceiver 106. Here, ECU 105 may attempt to inject fake data (data frame C) into CAN bus 109 using the authentication bit it knows from data frame A. To counter this, secure transceivers 102 and 108 may be programmed with a previously distributed digital key and a bit signature algorithm. Here, secure transceivers 102 and 108 may store the authentication bits in the data frame according to a pattern or location specified by the bit signature algorithm. The digital signature may be based on a previously distributed digital key. If the digital signatures (e.g., authentication bit position and amount) do not match, the data frame is rejected. Additionally, each time a data frame is transmitted over the CAN bus 109, each of the secure transceivers 102 and 108 may increment a counter, which causes the bit signature algorithm to change the digital signature being added. In this case, the ECU 105 does not know the bit signature algorithm and attempts to use the previous signature used on data frame A on fake data frame C. However, because the bit signature algorithm has changed (the signature on data frame C should be different from data frame A), the secure transceivers 102 and 108 will detect the duplicate digital signature and invalidate the fake data frame C. This prevents replay attacks.
[0034] 1B illustrates a process 100B of an ECU communicating with a CAN bus, according to an exemplary embodiment, where the ECU includes a secure CAN transceiver 130. Referring to FIG. 1B, the ECU may be any of the ECUs 101 and 107 shown and described with respect to FIG. 1A. Referring to FIG. 1B, the ECU includes a microcontroller unit (MCU) 120 that configures the secure CAN transceiver 130 to add authentication bits to data frames transmitted over the CAN bus 109. In this example, the MCU 120 may generate and send data frames to the secure CAN transceiver 130 for transmission over the CAN bus 109, as is conventional with CAN transceivers. However, in this example, the MCU 120 may also send configuration frames to the secure CAN transceiver 130.
[0035] For example, the MCU 120 may include special configuration logic that generates configuration data having authentication bit information and signature information to be transmitted from the MCU 120 to the secure CAN transceiver 130 and configures the secure CAN transceiver 130 to add and / or verify the authentication bit in a data frame. The configuration frame may be transmitted from the MCU 120 to the secure CAN transceiver 130 using an unused, high-numbered CAN ID known (predetermined) to the secure CAN transceiver 130. The secure CAN transceiver 130 may then detect the frame received using the high-numbered CAN ID as being unique to a configuration, extract the configuration information therefrom, and apply the configuration when generating the next data frame. The configuration frame may specify a location within the generated data frame for locating the authentication bit. The location of the authentication bit represents a digital signature.
[0036] In exemplary embodiments, secure CAN transceiver 130 may support various data rates and may support a variable number of authentication bits. For example, in some embodiments, at least one authentication bit may be implemented in each of multiple fields of a data frame. As another example, at least one authentication bit may only be added to one field, or multiple authentication bits may be implemented in a single field, combinations thereof, and the like.
[0037] The secure CAN transceiver 130 may be used as a substitute for a conventional CAN transceiver. The secure CAN transceiver 130 may also have a switch or other mechanism that allows the secure CAN transceiver 130 to function based on the authentication bits or to function without using the authentication bits. In other words, the secure CAN transceiver may include a switch that allows the secure CAN transceiver 130 to operate in a conventional manner in one setting and in an authentication bit manner in another setting.
[0038] The secure CAN transceiver 130 may drop frames that do not satisfy the authentication bit check, minimize latency, automatically generate a digital signature of the authentication bit given a digital key, allow manual authentication bits for specific CAN IDs, automatically handle replay mitigation using a counter / LFSR, generate and store a CAN ID whitelist to pass certain frames without checking the authentication bit, and the like. The whitelist may be pre-distributed and may include a list of ECUs, devices, etc. that are allowed to transmit data frames without adding the authentication bit. The whitelist may be managed and updated by the MCU and the like. In some embodiments, the secure CAN transceiver may configure CAN frames provided by the MCU with a special CAN ID (e.g., an unused CAN ID). For example, the unused CAN ID may simply be a special CAN ID assigned for use by the MCU. By using the special CAN ID, the CAN transceiver may automatically detect that the CAN frame is used to configure the authentication bit / digital signature. The secure CAN transceiver may use both the CAN high wire and the CAN low wire to adjust the authentication bit. In some embodiments, the secure CAN transceiver may encode on every transition.
[0039] FIG. 1C illustrates a process 100C of a secure CAN transceiver 130 for generating and receiving authentication bits, according to an exemplary embodiment. Referring to FIG. 1C, the secure CAN transceiver 130 includes a transmitter 132 for transmitting data frames onto a CAN bus (not shown). For example, the data frames may be generated by and provided from an MCU (not shown). In this example, the secure CAN transceiver includes an authentication generator 136 configured to add (e.g., encode) authentication bits within the data frames transmitted by the transmitter 132. Furthermore, the authentication generator 136 may position the authentication bits within the data frames and generate a digital signature based on a signature algorithm. The authentication bits may be encoded by the authentication generator 136 as described in the exemplary embodiment.
[0040] Similarly, secure CAN transceiver 130 includes receiver 134 for receiving data frames from the CAN bus. For example, the received data frames may be transmitted by other ECUs, devices, etc. connected to the CAN bus. In this case, secure CAN transceiver 130 further includes authentication validator 138, which includes logic for verifying both the authentication bits included in the received data frames and the digital signature associated with the data frames. Furthermore, secure CAN transceiver 130 also includes key algorithm unit 137, which stores a digital key that may be distributed to ECUs in advance and includes a signature algorithm that modifies the digital signature based on a predetermined algorithm. Thus, each frame may include a different signature of the authentication bits based on the same digital key. Both authentication generator 136 and authentication validator 138 are connected to key algorithm unit 137 and may receive updates to the digital signature. In some embodiments, an MCU (not shown) may provide signature updates to key algorithm unit 137, although it should be understood that embodiments are not limited thereto.
[0041] 1D is a diagram illustrating a data frame 140 for transmission on a CAN bus, according to an example embodiment. Referring to FIG. 1D, CAN bus frame 140 includes an arbitration field 141, a control field 142, a data field 143, a cyclic redundancy check (CRC) field 144, and an end frame 145. Not shown in the example of FIG. 1D is an acknowledgement bit, which may be located after CRC field 144.
[0042] According to various embodiments, the authentication bits described herein may be encoded into the CAN bus frame 140 shown in FIG. 1D via a side channel mechanism. The side channel mechanism adjusts the transmission of the CAN bus frame 140 to encode the authentication bits while still allowing the CAN bus frame 140 to be received and processed as a normal CAN frame. In this case, a receiver compliant with the side channel mechanism can extract the normal CAN frame (CAN bus frame 140) and the side channel information encoded in the transmission for use as authentication information. In contrast, a standard CAN receiver simply receives the normal CAN bus frame 140 without the authentication information encoded in the normal CAN bus frame 140.
[0043] 1E shows a printed circuit board (PCB) configuration 100E including a secure CAN transceiver 172, according to an exemplary embodiment. In this alternative embodiment, instead of replacing the conventional CAN transceiver with a secure CAN transceiver, PCB 170 includes both secure CAN transceiver 172 and a conventional CAN transceiver 174. In addition, PCB 170 includes an interface 171 for receiving CAN frames and configuration frames from MCU 160. PCB 170 also includes a level shifter 173, as is known in the art.
[0044] FIG. 2A illustrates a vehicle network diagram 200, according to an exemplary embodiment. The network includes elements including a vehicle node 202 including a processor 204 and a vehicle node 202' including a processor 204'. The vehicle nodes 202, 202' communicate with each other via the processors 204, 204' and other elements (not shown) including transceivers, transmitters, receivers, storage, sensors, and other elements capable of providing communication. Communication between the vehicle nodes 202, 202' may occur directly, via private and / or public networks (not shown), or via elements including one or more of other vehicle nodes and processors, memory, and software. While depicted as a single vehicle node and processor, multiple vehicle nodes and processors may be present. One or more of the applications, functions, steps, solutions, etc. described and / or depicted herein may be utilized and / or provided by the elements.
[0045] 2B shows another vehicle network diagram 210, according to an exemplary embodiment. The network comprises elements including a vehicle node 202 including a processor 204 and a vehicle node 202' including a processor 204'. The vehicle nodes 202, 202' communicate with each other via the processors 204, 204' and via other elements (not shown) including transceivers, transmitters, receivers, storage, sensors, and other elements capable of providing communication. Communication between the vehicle nodes 202, 202' may occur directly, via private and / or public networks (not shown), or via other vehicle nodes and elements comprising one or more of a processor, memory, and software. The processors 204, 204′ may further communicate with one or more elements 230 including sensors 212, wired devices 214, wireless devices 216, databases 218, mobile phones 220, vehicle nodes 222, computers 224, I / O devices 226, and voice applications 228. The processors 204, 204′ may further communicate with elements comprising one or more of a processor, memory, and software.
[0046] Although depicted as a single vehicle node, processor, and element, there may be multiple vehicle nodes, processors, and elements. Information or communication may originate to and / or from any of processors 204, 204′ and element 230. For example, mobile phone 220 may provide information to processor 204, which may cause vehicle node 202 to initiate an action and further provide information or additional information to processor 204′, which may cause vehicle node 202′ to initiate an action and further provide information or additional information to mobile phone 220, vehicle node 222, and / or computer 224. One or more of the applications, functions, steps, solutions, etc. described and / or depicted herein may be utilized and / or provided by the present elements.
[0047] In some embodiments, the computer 224 shown in Figure 2B may include a security processor 810 as shown in example process 800 of Figure 8. In particular, the security processor 810 may perform authorization, authentication, cryptography (e.g., encryption), and the like for data transmissions sent between the ECU and other devices on the vehicle's CAN bus, and for data messages sent between different vehicles.
[0048] 8 , security processor 810 may include authorization module 812, authentication module 814, and cryptography module 816. Security processor 810 may be implemented within a vehicle's computer and may communicate with other elements of the vehicle, such as ECU / CAN network 820 and wired and wireless devices 830, such as wireless network interfaces, input ports, and the like. Security processor 810 may ensure that data frames (e.g., CAN frames, etc.) transmitted internally within the vehicle (e.g., via ECU / CAN network 820) are secure. Similarly, security processor 810 may ensure that messages transmitted between different vehicles and to devices attached or connected via wires to the vehicle's computer are also secure.
[0049] For example, the authorization module 812 may store passwords, usernames, PIN codes, biometric scans, and the like for various users of the vehicle. The authorization module 812 may determine whether a user (or technician) has permission to access certain settings, such as the vehicle's computer. In some embodiments, the authorization module may communicate with a network interface to download any necessary authorization information from an external server. When a user requests to make a change to the vehicle's settings or modify the vehicle's technical details through a console or GUI within the vehicle or through an attached / connected device, the authorization module 812 may require the user to identify themselves in some way before the settings are changed. For example, the authorization module 812 may require a username, password, PIN code, biometric scan, a predefined line drawing or gesture, and the like. In response, the authorization module 812 may determine whether the user has the necessary permission (e.g., access) being requested.
[0050] The authentication module 814 may be used to authenticate internal communications between ECUs on a vehicle's CAN network. As an example, the authentication module 814 may provide information for authenticating communications between ECUs. As an example, the authentication module 814 may send a bit signature algorithm to the ECUs on the CAN network. The ECUs may use the bit signature algorithm to insert authentication bits into the CAN field of a CAN frame. All ECUs on the CAN network typically receive each CAN frame. Each time a new CAN frame is generated by one of the ECUs, the bit signature algorithm may dynamically change the position, amount, etc. of the authentication bits. The authentication module 814 may also provide a list of ECUs that are exempt (safe list) and do not need to use authentication bits. The authentication module 814 may communicate with a remote server to retrieve updates to the bit signature algorithm and the like.
[0051] The encryption module 816 may store asymmetric key pairs used by the vehicle to communicate with other external user devices and vehicles. For example, the encryption module 816 may provide a private key used by the vehicle to encrypt / decrypt communications, while a corresponding public key may be provided to other user devices and vehicles to enable the other devices to decrypt / encrypt communications. The encryption module 816 may communicate with a remote server to receive new keys, updates to keys, keys for new vehicles, users, etc., and the like. The encryption module 816 may also send any updates to the local private / public key pair to the remote server.
[0052] 2C illustrates yet another vehicle network diagram 240, according to an exemplary embodiment. The network comprises elements including a vehicle node 202, which includes a processor 204 and a non-transitory computer-readable medium 242C. The processor 204 is communicatively coupled to the computer-readable medium 242C and to element 230 (depicted in FIG. 2B).
[0053] Referring to FIG. 2C, processor 204 may perform one or more of: generating a data frame for transmission over a vehicle controller area network (CAN) bus at 244C, the data frame including data stored in a plurality of fields; encoding at least one authentication bit into a value in a data field of the generated data frame at 246C, the at least one authentication bit including a digital signature based on a predefined key for the at least one authentication bit; and transmitting the generated data frame with the at least one authentication bit including the digital signature over the CAN bus at 248C.
[0054] 2D illustrates a further vehicle network diagram 250 according to an exemplary embodiment. The network comprises elements including a vehicle node 202, which includes a processor 204 and a non-transitory computer-readable medium 242D. The processor 204 is communicatively coupled to the computer-readable medium 242D and to element 230 (depicted in FIG. 2B).
[0055] In FIG. 2D , processor 204 may perform one or more of: receiving a configuration frame from a microcontroller unit (MCU) at 244D, the configuration frame comprising a special, unused CAN identifier that identifies the configuration frame as including configuration data for authentication bits, and configuring the position of the authentication bits in the generated data frame based on the configuration data; receiving a data frame over the CAN bus at 246D, determining that a predetermined field in the received data frame does not include a required authentication bit, and rejecting the data frame in response to the determination; receiving a data frame over the CAN bus at 248D, determining that the received data frame does not include a required digital signature or includes an incorrect digital signature, and rejecting the data frame in response to the determination; and receiving a data frame over the CAN bus that does not include an authentication bit, determining that an identifier of an electronic control unit (ECU) that transmitted the received data frame is on a whitelist, and accepting the data frame without the authentication bit in response to the determination, at 250D.
[0056] 2E illustrates a further vehicle network diagram 260, according to an example embodiment. Referring to FIG. 2E, network diagram 260 includes a vehicle node 202 connected to other vehicle nodes 202′ and an update server node 203 via a blockchain network 206. Vehicle nodes 202 and 202′ may represent vehicles / vehicles. Blockchain network 206 may have a ledger 208 for storing software update verification data and a source of verification for future use (e.g., in audits).
[0057] While only one vehicle node 202 is described in detail in this example, multiple such nodes may be connected to the blockchain 206. It should be understood that the vehicle node 202 may include additional components, and that some of the components described herein may be removed and / or modified without departing from the scope of the present application. The vehicle node 202 may comprise a computing device or server computer, or the like, and may include a processor 204, which may be a semiconductor-based microprocessor, a central processing unit (CPU), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), and / or another hardware device. While a single processor 204 is depicted, it should be understood that the vehicle node 202 may include multiple processors, multiple cores, or the like without departing from the scope of the present application.
[0058] In FIG. 2E, processor 204 performs one or more of incrementing a counter value in response to transmitting the generated data frame over the CAN bus at 244E, modifying the digital signature for the at least one authentication bit based on a predetermined scheme in response to the increment, encoding the next generated data frame with the authentication bit based on the modified digital signature, and simultaneously transmitting the generated data frame with the at least one authentication bit over a CAN high wire of the CAN bus and over a CAN low wire of the CAN bus at 246E.
[0059] The processor and / or computer-readable medium may reside, in whole or in part, within or outside the node of the vehicle. The steps or functions stored on the computer-readable medium may be performed, in whole or in part, by any of the processors and / or elements, in any order. Furthermore, one or more steps or functions may be added, omitted, combined, performed later, etc.
[0060] 2F shows a diagram 265 depicting the powering of one or more elements. In one embodiment, a vehicle 266 may provide power stored in its batteries to one or more elements, including other vehicles 268, charging stations 270, and a power grid 272. The power grid 272 may be connected to one or more of the charging stations 270, which may be connected to one or more of the vehicles 268. This configuration allows for the distribution of electricity / power received from the vehicle 266. The vehicle 266 may also communicate with the other vehicles 268 via vehicle-to-vehicle (V2V) technology, cellular, Wi-Fi, and the like, or the like. The vehicle 266 may also communicate with the other vehicles 268, charging stations 270, and / or the power grid 272 wirelessly and / or in a wired manner. In one embodiment, vehicle 266 is routed (or routes itself) to power grid 272, charging stations 270, or other vehicles 268 in a safe and efficient manner. Using one or more embodiments of the present solution, vehicle 266 may provide energy to one or more of the elements depicted herein in various advantageous ways as described and / or depicted herein. Additionally, vehicle safety and efficiency may be enhanced, and environmental impacts may be positively impacted as described and / or depicted herein.
[0061] The term "energy" may be used to refer to any form of energy received, stored, used, shared, and / or lost by a vehicle. Energy may be referenced in conjunction with a voltage source and / or a current supply from a charge provided from an entity to a vehicle during a charging / use operation. Energy may also be in the form of fossil fuels (e.g., for use in hybrid vehicles) or from alternative power sources, including, but not limited to, lithium-based, nickel-based, hydrogen fuel cells, atomic / nuclear energy, fusion-based energy sources, and energy generated in situ during energy sharing and / or use operations to increase or decrease the energy level of one or more vehicles at a given time.
[0062] In one embodiment, charging station 270 manages the amount of energy transferred from vehicle 266 so that vehicle 266 has enough charge remaining to reach its destination. In one embodiment, wireless connectivity is used to wirelessly direct the amount of energy transferred between vehicles 268 that may be traveling together. In one embodiment, an idle vehicle, such as vehicle 266 (which may be autonomous), provides an amount of energy to charging station 270 and is instructed to return to its original location (e.g., its original location or a different destination). In one embodiment, a portable energy storage unit (not shown) is used to collect excess energy from at least one other vehicle 268 and transfer the stored excess energy at charging station 270. In one embodiment, the amount of energy to transfer to charging station 270 is determined based on factors such as distance, time, and traffic conditions, road conditions, environmental / weather conditions, vehicle conditions (e.g., weight), the schedule of the occupant using the vehicle, and the expected schedule of the occupant waiting for the vehicle. In one embodiment, vehicle 268 , charging station 270 , and / or power grid 272 may provide energy to vehicle 266 .
[0063] In one embodiment, the solutions described and depicted herein may be utilized to determine the impact of loads on a vehicle and / or system, provide energy to a vehicle and / or system based on future needs and / or priorities, provide information between a device including a module and a vehicle, and enable a processor of the device to wirelessly communicate with the vehicle regarding the amount of energy stored in the vehicle's battery. In one embodiment, the solutions may also be utilized to provide charging from a vehicle to a location based on factors such as the temperature of the location, the cost of energy, and the power level of the location. In one embodiment, the solutions may also be utilized to manage the amount of energy remaining in the vehicle after a portion of the charge has been transferred to a charging station. In one embodiment, the solutions may also be utilized to notify the vehicle to provide the amount of energy in the on-board battery, the amount of energy to transfer being based on the vehicle's distance to the energy-receiving module.
[0064] In one embodiment, the solution may also be utilized to use a portable energy storage unit to travel to a vehicle that has excess energy and deposits the stored energy to the grid using the determined route. In one embodiment, the solution may also be utilized to determine the priority of a vehicle's determination of its need to provide energy to the grid and the priority of the vehicle's current needs, such as the priority of passengers or future passengers or current or future cargo. In one embodiment, the solution may also be utilized to determine, when a vehicle is not being utilized, a decision to maneuver to a location to discharge excess energy to the energy grid and then return to the previous location. In one embodiment, the solution may also be utilized to determine the amount of energy a vehicle needs to provide needed energy to another vehicle through an energy transfer between vehicles based on one or more conditions, such as weather, traffic, road conditions, vehicle status, occupants and / or items in the other vehicle, and to instruct the vehicle to route and provide energy to the other vehicle. In one embodiment, the solution may also be utilized to transfer energy from one moving vehicle to another moving vehicle. In one embodiment, the solution may also be utilized to extract energy by a vehicle based on the vehicle's energy consumption to reach and service a meeting point with another vehicle and its estimated energy consumption to return to its original location. In one embodiment, the solution may also be utilized to provide a remaining distance needed to a charging station that determines the amount of energy to be extracted from the vehicle, with the remaining charge being based on the remaining distance. In one embodiment, the solution may also be utilized to manage a vehicle being charged simultaneously at multiple points, such as by both a charging station via a wired connection and another vehicle via a wireless connection. In one embodiment, the solution may also be utilized to apply priorities to the distribution of energy to the vehicle, with priority given to vehicles that provide a portion of their stored vehicle charge to another entity, such as the power grid, a home, and the like.Moreover, the solution as described and depicted with respect to FIG. 2F may be utilized in this network and / or system, as well as other networks and / or systems.
[0065] FIG. 2G is a diagram 275 illustrating the interconnections between different elements 275. The solution may be stored, in whole or in part, on and / or executed by one or more computing devices 278′, 279′, 281′, 282′, 283′, 284′, 276′, 285′, 287′, and 277′ associated with various entities, all communicatively connected and in communication with a network 286. A database 287 is communicatively connected to the network and allows for the storage and retrieval of data. In one embodiment, the database is an immutable ledger. One or more of the various entities may be a vehicle 276, one or more service providers 279, one or more public buildings 281, one or more transportation infrastructure 282, one or more residential buildings 283, a power grid / charging station 284, a microphone 285, and / or another vehicle 277. Other entities and / or devices may also interact with the solution, such as one or more private users using a smartphone 278, a laptop 280, and / or a wearable device. The smartphone 278, the laptop 280, the microphone 285, and other devices may be connected to one or more of the connected computing devices 278′, 279′, 281′, 282′, 283′, 284′, 276′, 285′, 287′, and 277′. One or more public buildings 281 may include various institutions. One or more public buildings 281 may utilize computing devices 281′. One or more service providers 279 may include dealerships, tow truck services, collision centers, or other repair shops. One or more service providers 279 may utilize computing devices 279′. These various computing devices may be directly and / or communicatively connected to one another, such as via wired networks, wireless networks, blockchain networks, and the like. In one embodiment, the microphone 285 may be utilized as a virtual assistant. In one embodiment, the one or more traffic infrastructure 282 may include one or more traffic signals, one or more sensors including one or more cameras, vehicle speed sensors or traffic sensors, and / or other traffic infrastructure.One or more transportation infrastructures 282 may utilize computing devices 282'.
[0066] In one embodiment, vehicles 277 / 276 are capable of transporting people, objects, permanently or temporarily attached equipment, and the like. In one embodiment, vehicles 277 may communicate with vehicles 276 through computers associated with each vehicle 276′ and 277′ via V2V communications and may be referred to as vehicles, cars, vehicles, automobiles, and the like. Vehicles 276 / 277 may be self-propelled, wheeled vehicles such as cars, sport utility vehicles, trucks, buses, vans, or other motor- or battery-powered or fuel-cell-powered vehicles. For example, vehicles 276 / 277 may be electric vehicles, hybrid vehicles, hydrogen fuel cell vehicles, plug-in hybrid vehicles, or any other type of vehicle having a fuel cell stack, motor, and / or generator. Other examples of vehicles include bicycles, scooters, trains, airplanes, or boats, and any other form of vehicle capable of transportation. Vehicles 276 / 277 may be semi-autonomous or autonomous. For example, vehicle 276 / 277 may be self-piloted and operated without human input. An autonomous vehicle may have and use one or more sensors and / or navigation units to navigate autonomously.
[0067] In one embodiment, the solution described and depicted herein may be utilized to determine access to a vehicle via blockchain consensus. In one embodiment, the solution may also be utilized to perform profile verification before allowing a vehicle occupant to use the vehicle. In one embodiment, the solution may also be utilized to have the vehicle indicate (visually, but in another embodiment verbally, etc.) on or from the vehicle actions (which may be pre-recorded) that the user must perform and confirm as correct. In one embodiment, the solution may also be utilized to provide the vehicle with the ability to bifurcate data based on a risk level associated with the data and the driving environment, and distribute a portion of the bifurcate data with a lower risk level in a safe driving environment to the occupant, and later distribute the remaining portion of the bifurcate data with a higher risk level to the occupant after the occupant has left the vehicle. In one embodiment, the solution may also be utilized to address vehicle movement across (country / state / etc.) borders and apply new area rules to the vehicle using blockchain and / or smart contracts.
[0068] In one embodiment, the solution may also be utilized to allow a vehicle to continue operating outside of a boundary if a consensus is reached by the vehicle based on the vehicle's operation and vehicle occupant characteristics. In one embodiment, the solution may also be utilized to analyze the vehicle's available data upload / download rate, file size, and the speed / direction the vehicle is traveling to determine the distance required to complete the data upload / download and assign a secure area boundary for the data upload / download to be performed. In one embodiment, the solution may also be utilized to instruct the subject vehicle and other nearby vehicles to safely execute a normally dangerous maneuver and allow the subject vehicle to exit in a safe manner, such as when the system determines that an exit is imminent and the vehicle does not appear ready to exit (e.g., is in the wrong lane or traveling at an inappropriate speed for the next exit). In one embodiment, the solution may also be utilized to verify the diagnosis of other vehicles using one or more vehicles while both the one or more vehicles and the other vehicles are traveling.
[0069] In one embodiment, the solution may also be used to detect lane usage at a certain location and time and notify the vehicle occupant or instruct the vehicle to recommend or not recommend a lane change. In one embodiment, the solution may also be used to eliminate the need to send information via email and the need for the driver / occupant to respond by making payments via email or in person. In one embodiment, the solution may also be used to provide services to the vehicle occupant, where the services provided are subscription-based and permissions are obtained from other vehicles connected to the occupant's profile. In one embodiment, the solution may also be used to record changes in the status of rented objects. In one embodiment, the solution may also be used to seek blockchain consensus from other vehicles near the damaged vehicle. In one embodiment, the solution may also be used to receive media that may be related to the accident from a server, such as an insurance entity server, or from a vehicle computer. The server accesses one or more media files to access damage to the vehicle and stores the damage assessment on the blockchain. In one embodiment, the solution may also be utilized to gain consensus and determine the severity of an event from multiple devices at various times prior to the vehicle-related event.
[0070] In one embodiment, the solution may also be utilized to solve the problem of a lack of video evidence of vehicle-related accidents. The solution details inquiries by vehicles involved in an accident regarding media related to the accident from other vehicles that may have been near the accident. In one embodiment, the solution may also be utilized to record specific portions of the damaged vehicle using vehicles and other devices (e.g., pedestrian cell phones, streetlight cameras, etc.).
[0071] In one embodiment, the solution may also be utilized to alert occupants if the vehicle is maneuvering toward a dangerous area and / or event, allowing the vehicle to notify the occupants or a central controller of potentially dangerous areas on or near the current vehicle path. In one embodiment, the solution may also be utilized to detect when the vehicle is traveling at a high speed and that at least one other vehicle is being used to assist in slowing the vehicle in a manner that minimizes impact to traffic. In one embodiment, the solution may also be utilized to identify a dangerous driving situation, where media is captured by a vehicle involved in the dangerous driving situation. A geofence is established based on the distance of the dangerous driving situation, and additional media is captured by at least one other vehicle within the established geofence. In one embodiment, the solution may also be utilized to send a notification to one or more occupants of the vehicle that the vehicle is approaching a traffic control sign on the road, and then receive an indication of poor driving from other nearby vehicles if the vehicle goes beyond the sign. In one embodiment, the solution may also be utilized to partially disable a vehicle by (in certain embodiments) limiting speed, limiting proximity to another vehicle, limiting speed to a maximum, and only allowing a given number of miles per time period.
[0072] In one embodiment, the solution may also be utilized to correct problems with a vehicle when it is not operating correctly, overcoming the need to rely on software updates. Through observations of other vehicles along the route, a server receives data from multiple other vehicles that may be observing unsafe or erroneous operation of the vehicle. Through analysis, the observations may result in notification to the vehicle if the data suggests unsafe or erroneous operation. In one embodiment, the solution may also be utilized to provide notification between a vehicle and a dangerous situation that may involve persons unrelated to the vehicle. In one embodiment, the solution may also be utilized to transmit data to a server by either a device associated with a vehicle incident or a device near the incident. Based on the severity of the incident or near the incident, the server notifies the sender of the data. In one embodiment, the solution may also be utilized to provide recommendations for vehicle operation to either the driver or passengers of the vehicle based on analysis of the data. In one embodiment, the solution may also be utilized to establish geofences associated with physical structures to determine payment liability for the vehicle. In one embodiment, the solution may also be utilized to coordinate the availability of a vehicle to be dropped off at a location using both the current state of the location and future states proposed using navigation destinations of other vehicles. In one embodiment, the solution may also be utilized to coordinate the ability to automatically arrange for a vehicle to be dropped off at a location, such as a transportation rental entity.
[0073] In one embodiment, the solution may also be used to move a vehicle to a different location based on a user event. More specifically, the system tracks the user's device and modifies the vehicle to be moved closer to the user based on the results of the original event or a modified event. In one embodiment, the solution may also be used to enable verification of available locations within an area through vehicles present in the area. The approximate time when a location may become available is also determined based on verification from the vehicles present. In one embodiment, the solution may also be used to move a vehicle to a closer parking space if a parking space becomes available and the elapsed time since initial parking is less than the average time of the event. Furthermore, the solution may move a vehicle to a final parking space if the event is completed or depending on the location of a device associated with at least one occupant of the vehicle. In one embodiment, the solution may also be used to plan parking ahead of upcoming congestion. The system may interact with vehicles to offer services at less than the regular rate and / or guide vehicles to alternative parking locations based on vehicle priority, thereby improving pre-arrival parking optimization.
[0074] In one embodiment, the solution may also be used to sell fractional ownership of a vehicle or determine pricing and availability for ride-sharing applications. In one embodiment, the solution may also be used to provide accurate and timely reporting of dealership sales activities, far superior to what is currently available. In one embodiment, the solution may also be used to enable dealerships to request assets via the blockchain. By using the blockchain, consensus is reached before any asset is moved. Furthermore, the process may be automated and payment may be initiated via the blockchain. In one embodiment, the solution may also be used to arrange for agreements to be made with multiple entities (such as service centers), consensus is reached, and an action (such as a diagnostic) is performed. In one embodiment, the solution may also be used to associate a digital key with multiple users. A first user may be the operator of the vehicle, and a second user is the party responsible for the vehicle. The key is authorized by a server, and the proximity of the key is verified against the location of the service provider. In one embodiment, the solution may also be used to determine services needed at the vehicle's destination. One or more service locations capable of providing the required service are located within an area on the route to the destination and available for performance of the service. The vehicle navigation is updated with the determined service locations. A smart contract containing a compensation value for the service is identified, and a blockchain transaction is stored in a distributed ledger for transactions.
[0075] In one embodiment, the solution may also be used to link a service provider's vehicle with a vehicle occupant's profile to determine services and goods that may be of interest to the occupant in the vehicle. The services and goods are determined by the occupant's history and / or preferences. The vehicle then receives an offer from the service provider's vehicle and, in another embodiment, meets with the vehicle to provide the service / goods. In one embodiment, the solution may also be used to detect vehicles within a certain range and send a service offer to the vehicle (such as a maintenance offer, a product offer, or the like). An agreement is made between the system and the vehicle, and a service provider is selected by the system to provide the agreement. In one embodiment, the solution may also be used to assign one or more vehicles as road managers, who assist in traffic control. Road managers may generate road indicators (such as signal lights, displays, sounds, etc.) to assist traffic flow. In one embodiment, the solution may also be used to alert the vehicle driver via a device, which may be a traffic light or near an intersection. An alert is sent in the event that a traffic light turns green and the vehicle ahead of it in the list of vehicles does not move.
[0076] FIG. 2H is another block diagram 290 illustrating the interconnections between different elements in one example. A vehicle 276 is depicted, including ECUs 295, 296 and a head unit (otherwise known as an infotainment system) 297. An electronic control unit (ECU) is a system embedded in automotive electronics that controls one or more of the electrical systems or subsystems within the vehicle. ECUs may include, but are not limited to, managing the vehicle's engine, braking system, transmission system, door locks, dashboard, airbag system, infotainment system, electronic differential, and active suspension. The ECUs are connected to the vehicle's controller area network (CAN) bus 294. The ECUs may also communicate with a vehicle computer 298 via the CAN bus 294. The vehicle's processor / sensor 298 (e.g., the vehicle computer) may communicate with external elements, such as a server 293, via a network 292 (e.g., the Internet). Each ECU 295, 296 and head unit 297 may contain its own security policy. The security policy defines the permissible processes that can be executed in the appropriate context. In one embodiment, the security policy may be provided partially or entirely within the vehicle computer 298.
[0077] Each of the ECUs 295, 296 and the head unit 297 may include a custom security function element 299 that defines approved processes and the contexts in which those processes are allowed to operate. Context-based authorization, which determines whether a process can be executed, allows the ECU to maintain secure operation and prevent unauthorized access from elements such as the vehicle's controller area network (CAN bus). If the ECU encounters an unauthorized process, the ECU may prevent the process from operating. An automotive ECU may use various contexts to determine whether a process is operating within its permitted boundaries, such as nearby contexts such as nearby objects, distance to approaching objects, speed, and trajectory relative to other moving objects; operational contexts such as an indication of whether the vehicle is moving or parked, the vehicle's current speed, and transmission status; user-related contexts such as devices connected to the vehicle via wireless protocols, use of infotainment, cruise control, parking assistance, and driving assistance; location-based contexts; and / or other contexts.
[0078] In one embodiment, the solution described and depicted herein may be utilized to partially disable a vehicle by (in certain embodiments) limiting speed, limiting proximity to other vehicles, limiting speed to a maximum, and only allowing a given number of miles per time period. In one embodiment, the solution may also be utilized to facilitate vehicle ownership exchange using blockchain, where data is transmitted to a server by either a device associated with a vehicle accident or a device near the accident. Based on the severity of the accident or near-accident, the server notifies the sender of the data. In one embodiment, the solution may also be utilized to help a vehicle avoid an accident, such as if the vehicle is involved in an accident, by the server querying other vehicles near the accident. The server attempts to obtain data from other vehicles, allowing the server to understand the nature of the accident from multiple perspectives. In one embodiment, the solution may also be utilized to determine that a sound from a vehicle is abnormal and transmit data related to the sound and the location of a possible source to a server, which may determine the possible cause and avoid a potentially dangerous situation. In one embodiment, the solution may also be utilized to establish a location boundary through the system if the vehicle is involved in an accident. This boundary is based on decibels associated with the accident. Multimedia content for devices within the boundary is obtained to assist in further understanding the unfolding of the accident. In one embodiment, the solution may also be utilized to associate vehicles with the accident and then capture media obtained by devices near the location of the accident. The captured media is saved as media segments. The media segments are sent to another computing device which creates a sound profile of the accident. This sound profile will assist in understanding further details surrounding the accident.
[0079] In one embodiment, the solution may also be utilized to record areas where a potential event occurred, such as when a vehicle comes into or may come into contact with another vehicle (whether in motion or parked), utilizing sensors to record audio, video, motion, etc., and the system captures data from sensors that may be present on one or more of the vehicles and / or on fixed or moving objects. In one embodiment, the solution may also be utilized to determine if a vehicle has been damaged by using sensor data to identify new conditions for the vehicle during a vehicle event and comparing the conditions to the vehicle's condition profile, thereby enabling the safe and secure capture of important data from vehicles that are about to be involved in an adverse event.
[0080] In one embodiment, the solution may also be used to alert a vehicle occupant if the vehicle determines via one or more sensors that the vehicle is approaching a one-way street in an incorrect manner or traveling the wrong way. The vehicle has sensors / cameras / maps that interact with the solution's system. The system knows the geographic location of one-way streets. The system may audibly notify the occupant, for example, "approaching a one-way street." In one embodiment, the solution may also be used to enable vehicles to earn rewards, allowing autonomous vehicle owners to monetize the data collected and stored by their vehicle's sensors, creating incentives for vehicle owners to share their data and provide additional data to entities that can improve future vehicle performance, provide services to vehicle owners, etc.
[0081] In one embodiment, the solution may also be utilized to increase or decrease vehicle functionality depending on the vehicle's operation over a period of time. In one embodiment, the solution may also be utilized to assign fractional ownership to a vehicle. Sensor data associated with one or more vehicles and devices proximate to the vehicle is used to determine the status of the vehicle. Fractional ownership of the vehicle is determined based on the status, and new responsibility for the vehicle is established. In one embodiment, the solution may also be utilized to provide data to a replacement / upfitting part, the data attempting to override the replacement / upfit part's authorized functionality and, in response to the authorized functionality not being overridden, authorizing the part's use of the replacement / upfit part's authorized functionality.
[0082] In one embodiment, the solution may also be utilized to provide an individual with assurance that the occupant is in the vehicle and should reach a specific destination. Furthermore, the system ensures that the driver (in the case of a non-autonomous vehicle) and / or other occupants are authorized to interact with the occupant. Pickup, drop-off, and location are also mentioned. All of the above are immutably stored on the blockchain. In one embodiment, the solution may also be utilized to determine driver characteristics through analysis of driving style and other factors to take action if the driver is not driving as usual, such as if the driver has previously driven in certain conditions, e.g., during the day, at night, in rain, in snow, etc. Furthermore, vehicle attributes are also considered. Attributes may include weather, whether headlights are on, whether navigation is in use, whether a HUD is in use, whether media is playing at a certain volume, etc. In one embodiment, the solution may also be utilized to notify occupants in a vehicle of a dangerous situation if items in the vehicle indicate that the occupant may not be aware of the dangerous situation.
[0083] In one embodiment, the solution may also be utilized to attach calibration devices to fixed equipment on the vehicle, allowing various sensors on the vehicle to automatically self-calibrate based on what should be detected by the calibration devices compared to what is actually detected. In one embodiment, the solution may also be utilized to enable remote diagnostic capabilities, requiring consensus from multiple service centers using blockchain when a vehicle requiring service transmits malfunction information, where consensus is required from other service centers regarding severity thresholds for the data. Once consensus is received, the service center may transmit the malfunction's security level to the blockchain where it is stored. In one embodiment, the solution may also be utilized to determine differences between sensor data external to the vehicle and the vehicle's own sensor data. The vehicle requests software from a server to correct the problem. In one embodiment, the solution may also be utilized to enable messaging for vehicles near or within an area when an event (e.g., a collision) occurs.
[0084] Referring to FIG. 2I, a connected vehicle operating environment 290A is shown, according to some embodiments. As depicted, vehicle 276 includes a controller area network (CAN) bus 291A connecting vehicle elements 292A-299A. Other elements may be connected to the CAN bus but are not depicted herein. Depicted elements connected to the CAN bus include a sensor set 292A, an electronic control unit 293A, an autonomous function or advanced driver assistance system (ADAS) 294A, and a navigation system 295A. In some embodiments, vehicle 276 includes a processor 296A, memory 297A, a communication unit 298A, and an electronic display 299A.
[0085] Processor 296A may include an arithmetic logic unit, microprocessor, general purpose controller, and / or similar processor array to perform calculations and provide electronic display signals to display unit 299A. Processor 296A processes data signals and may include a variety of computing architectures, including complex instruction set computer (CISC) architecture, reduced instruction set computer (RISC) architecture, or architectures implementing a combination of instruction sets. Vehicle 276 may include one or more processors 296A. Other processors, operating systems, sensors, displays, and physical configurations (not depicted) communicatively coupled to each other may be used in the present solution.
[0086] Memory 297A is non-transitory memory that stores instructions or data that can be accessed and executed by processor 296A. The instructions and / or data may include code for performing the techniques described herein. Memory 297A may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory, or some other memory device. In some embodiments, memory 297A may also include non-volatile memory or similar permanent storage devices and media, which may include a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device for permanently storing information. A portion of memory 297A may be reserved for use as a buffer or virtual random access memory (virtual RAM). Vehicle 276 may include one or more memories 297A without departing from this solution.
[0087] The memory 297A of the vehicle 276 may store one or more of the following types of data: navigation route data 295A and autonomous function data 294A. In some embodiments, the memory 297A stores data that may be necessary for the navigation application 295A to provide functionality.
[0088] Navigation system 295A may represent at least one navigation route including a start point and an end point. In some embodiments, navigation system 295A of vehicle 276 receives a request from a user for a navigation route, the request including a start point and an end point. Navigation system 295A may query (via network 292) a real-time data server 293, such as a server providing driving directions, for navigation route data corresponding to the navigation route including the start point and the end point. Real-time data server 293 transmits the navigation route data to vehicle 276 via wireless network 292, and communication system 298A stores navigation data 295A in memory 297A of vehicle 276.
[0089] ECU 293A controls the operation of many of the systems of vehicle 276, including ADAS system 294A. ECU 293A may disable any unsafe and / or unselected autonomous functions during a journey controlled by ADAS system 294A in response to commands received from navigation system 295A. In this manner, navigation system 295A may control whether ADAS system 294A is activated or enabled so that ADAS system 294A can operate on a given navigation route.
[0090] Sensor set 292A may include any sensor in vehicle 276 that generates sensor data. For example, sensor set 292A may include short-range and long-range sensors. In some embodiments, sensor set 292A of vehicle 276 may include one or more of the following vehicle sensors: a camera, a LIDAR sensor, an ultrasonic sensor, an automobile engine sensor, a radar sensor, a laser altimeter, a manifold absolute pressure sensor, an infrared detector, a motion detector, a thermostat, an audio detector, a carbon monoxide sensor, a carbon dioxide sensor, an oxygen sensor, a mass airflow sensor, an engine coolant temperature sensor, a throttle position sensor, a crankshaft position sensor, a valve timer, an air-fuel ratio meter, a blind spot meter, a curb feeler, a fault detector, a Hall effect sensor, a parking sensor, a speed gun, a speedometer, a speed sensor, a tire pressure monitoring sensor, a torque sensor, a transmission fluid temperature sensor, a turbine speed sensor (TSS), a variable reluctance sensor, a vehicle speed sensor (VSS), a moisture sensor, a wheel speed sensor, a GPS sensor, a mapping function, and any other type of automotive sensor. The navigation system 295A may store the sensor data in memory 297A.
[0091] Communications unit 298A transmits and receives data to and from network 292 or another communications channel. In some embodiments, communications unit 298A may include a DSRC transceiver, a DSRC receiver, and other hardware or software necessary to make vehicle 276 a DSRC-equipped device.
[0092] Vehicle 276 may communicate with other vehicles 277 via V2V technology. In one embodiment, V2V communication includes detecting radar information corresponding to a relative distance to an external object, receiving GPS information of the vehicle, setting an area as an area where other vehicle 277 is located based on the detected radar information, calculating a probability that the GPS information of the target vehicle is located in the set area, and identifying the vehicle and / or object corresponding to the radar information and GPS information of the target vehicle based on the calculated probability.
[0093] In one embodiment, the solution described and depicted herein may be utilized to manage emergency deployment and vehicle functionality when a vehicle is determined to have entered an area without network access. In one embodiment, the solution may also be utilized to manage and provide functionality (such as voice, video, navigation, etc.) in a vehicle without network connectivity. In one embodiment, the solution may also be utilized to determine when a profile of a person near the vehicle matches profile attributes of a profile of at least one occupant within the vehicle. A notification is sent from the vehicle to establish communication.
[0094] In one embodiment, the solution may also be utilized to analyze the availability of occupants in each vehicle where voice communication is available based on the time remaining in the vehicle and the context of the communication being performed. In one embodiment, the solution may also be utilized to determine two threat levels of obstacles in a roadway and receive gestures that may indicate that the obstacle does not reach a threshold warning and proceed along the roadway by the vehicle. In one embodiment, the solution may also be utilized to delete sensitive data from a vehicle if the vehicle is damaged in a way that renders it unusable.
[0095] In one embodiment, the solution may also be utilized to verify that customer data to be removed is truly removed from all necessary locations within an enterprise demonstrating GDPR compliance. In one embodiment, the solution may also be utilized to provide compensation from one vehicle to another vehicle in exchange for safety-related data, important notifications, etc., to enhance the autonomy capabilities of lower-level autonomous vehicles. In one embodiment, the solution may also be utilized to provide the vehicle with the ability to receive data based on a first biometric associated with the occupant. The vehicle then decrypts the encrypted data based on verification of a second biometric, where the second biometric is a continuation of the first biometric. The vehicle provides the decrypted data to the occupant only if the occupant is able to receive it, deletes the sensitive portion of the decrypted data when the sensitive portion is provided, and deletes the non-sensitive portion after a time period associated with the biometric has elapsed. In one embodiment, the solution may also be utilized to enable the vehicle to verify an individual based on weight and grip pressure applied to the vehicle's steering wheel. In one embodiment, the solution may also be utilized to provide existing but not currently enabled features to a passenger vehicle, presenting features to vehicle occupants that reflect their characteristics.
[0096] In one embodiment, the solution may also be utilized to enable reflection of modifications to the vehicle, particularly the interior of the vehicle and the exterior of the vehicle, to assist at least one occupant in one embodiment. In another embodiment, recreation of a occupant's work environment and / or home environment is disclosed. If the vehicle determines that the user is in "work mode" or "home mode," the system may attempt to "recreate" the user's work / home environment while the user is within the vehicle. All data related to the interior and exterior of the vehicle and the various occupants using the vehicle is stored on a blockchain and executed via smart contracts. In one embodiment, the solution may also be utilized to detect occupant gestures and assist in communication with nearby vehicles, so that the vehicle can be steered accordingly. In one embodiment, the solution may also be utilized to provide the vehicle with the ability to detect intended gestures using a gesture definition data store. In one embodiment, the solution may also be utilized to provide the vehicle with the ability to take various actions based on the user's cadence and gestures. In one embodiment, the solution may also be utilized to ensure that a vehicle driver currently engaged in various operations (e.g., driving while talking to a navigation system, etc.) does not exceed an unsafe number of operations before allowing a gesture.
[0097] In one embodiment, the solution may also be utilized to assign a status to each occupant in the vehicle and validate gestures from the occupants based on the occupant's status. In one embodiment, the solution may also be utilized to collect details of sounds associated with the collision (such as location, direction, whether they are getting louder or quieter, from which device, type, manufacturer, owner, and data associated with the device such as the number of sounds occurring simultaneously and the time the sounds were emitted) and provide the system with a location where analysis of the data assists in determining details about the collision. In one embodiment, the solution may also be utilized to provide a determination that operation of the vehicle is unsafe. A vehicle includes multiple components that interact to control the vehicle, each component associated with a separate component key. An encryption key is transmitted to the vehicle to reduce the functionality of the vehicle. In response to receiving the encryption key, the vehicle disables one or more of the component keys. Disabling one or more component keys results in one or more of restricting the vehicle from moving faster than a given speed, restricting the vehicle from moving closer than a certain distance to another vehicle, and restricting the vehicle from moving farther than a threshold distance.
[0098] In one embodiment, the solution may also be utilized to provide an indication from one specific vehicle (trying to vacate) to another specific vehicle (trying to occupy), with blockchain being used to perform authentication and reconciliation. In one embodiment, the solution may also be utilized to determine partial responsibility for a vehicle. In cases where multiple people own a single vehicle, vehicle usage may change over time and be used by the system to update fractional ownership. Other embodiments are included in applications involving minimum vehicle ownership based on vehicle availability and vehicle driver determination, as well as other factors, rather than vehicle usage.
[0099] In one embodiment, the solution may also be utilized within a vehicle to allow a user to authorize their subscription with a limited group of people, such as family or friends. For example, a user may wish to share their membership status, in which case the associated transaction is stored in a blockchain or traditional database. When subscription material is requested by a user who is not the primary subscriber, the blockchain node (i.e., the vehicle) may verify that the person requesting the service is an authorized person with whom the subscriber shared their profile. In one embodiment, the solution may also be utilized to allow a person to reach their intended destination using paratransit. Functional relationship values (e.g., values indicating various parameters and their importance in determining what type of alternative transportation to use) are used in determining paratransit. In one embodiment, the solution may also be utilized to allow occupants involved in an accident to access other transportation to continue to their original destination.
[0100] In one embodiment, the solution may also be used to communicate software / firmware uploads to a first subset of vehicles. The first set of vehicles test the update, and if the test is successful, the update is communicated to an additional set of vehicles. In one embodiment, the solution may also be used to communicate software / firmware updates from a master vehicle to vehicles, with the update being communicated through a network of vehicles, such as the first subset, then a larger subset. A portion of the update may be sent first, and then the remaining portion may be sent from the same vehicle or another vehicle. In one embodiment, the solution may also be used to provide updates for the vehicle's computer to the vehicle and the vehicle operator's / occupant's devices. The update may be approved by all drivers and / or all occupants. The software update is provided to the vehicle and device. The user does not need to do anything other than be near the vehicle; the functionality occurs automatically. A notification is sent to the device indicating the software update is complete. In one embodiment, the solution may also be utilized to verify that an OTA software update is performed by an authorized technician and that the originator of the verification code, the procedure for receiving the software update over the air, the information contained in the software update, and the status related to the results of the verification are generated by one or more vehicle components.
[0101] In one embodiment, the solution may also be utilized to provide the ability for a second component to parse software updates located in a first component, then identify a first portion of critical updates and a second portion of non-critical updates, assign the identified first portion to one process in the vehicle, run the identified first portion in the one process for a period of time, and, depending on a positive outcome based on the period, run the identified first portion in another process after the period of time. In one embodiment, the solution may also be utilized to provide a selection of services to the vehicle occupant, the services based on a profile of the vehicle occupant and a shared profile shared with the occupant's profile. In one embodiment, the solution may also be utilized to store user profile data on a blockchain and intelligently present offers and recommendations to the user based on the user's automatically collected purchase history and preferences obtained from the user profile on the blockchain.
[0102] 3 illustrates a method 300 for encoding an authentication bit in a CAN frame, according to an example embodiment. Referring to FIG. 3 , at 302, the method may include generating a data frame for transmission over a vehicle's Controller Area Network (CAN) bus, the data frame including data stored in multiple fields. For example, the data frame may include multiple bits (e.g., an 8-byte data frame) commonly transmitted on a CAN bus in an automobile or other vehicle. The data frame may include multiple predefined fields, including an arbitration field, a control field, a data field, a CRC field, and the like.
[0103] At 304, the method may include encoding at least one authentication bit into a value in a data field of the generated data frame, the at least one authentication bit including a digital signature based on a predetermined key for the at least one authentication bit. For example, the encoding may include encoding at least one authentication bit into each of an arbitration field, a control field, a data field, and a CRC field of the generated data frame. 8 In the method, the method may include transmitting, over a CAN bus, a generated data frame having at least one authentication bit and a digital signature.
[0104] In some embodiments, the method may further include receiving a configuration frame from a microcontroller unit (MCU), the configuration frame comprising a special unused CAN identifier that identifies that the configuration frame includes configuration data for authentication bits, and configuring the position of the authentication bits in the generated data frame based on the configuration data.
[0105] In some embodiments, the method may further include receiving a data frame over a CAN bus, determining that a predetermined field in the received data frame does not include a required authentication bit, and rejecting the data frame in response to the determination. In some embodiments, the method may further include receiving a data frame over a CAN bus, determining that the received data frame does not include a required digital signature or includes an incorrect digital signature, and rejecting the data frame in response to the determination. In some embodiments, the method may further include receiving a data frame over a CAN bus that does not include an authentication bit, determining that an identifier of an electronic control unit (ECU) that transmitted the received data frame is on a whitelist, and accepting the data frame without the authentication bit in response to the determination.
[0106] In some embodiments, the method may further include incrementing a counter value in response to transmitting the generated data frame over the CAN bus, modifying a digital signature for the at least one authentication bit based on a predetermined scheme in response to the increment, and encoding the authentication bit into a subsequently generated data frame based on the modified digital signature. For example, the encoding may include modifying a position or amount of authentication bits used in the data frame. In some embodiments, the transmitting may include transmitting the generated data frame having the at least one authentication bit over a CAN high wire of the CAN bus and generating and transmitting another data frame having the at least one authentication bit over a CAN low wire of the CAN bus.
[0107] 4 shows a diagram of a machine learning vehicle network 400, according to an example embodiment. Network 400 includes vehicle nodes 402 coupled with machine learning subsystems 406. The vehicle nodes include one or more sensors 404.
[0108] The machine learning subsystem 406 includes a learning model 408, which is a mathematical artifact created by a machine learning training system 410 that generates predictions by finding patterns in one or more training datasets. In some embodiments, the machine learning subsystem 406 resides within the vehicle node 402. In other embodiments, the machine learning subsystem 406 resides outside the vehicle node 402.
[0109] Vehicle node 402 sends data from one or more sensors 404 to machine learning subsystem 406. Machine learning subsystem 406 provides the data from one or more sensors 404 to learning model 408, which returns one or more predictions. Machine learning subsystem 406 sends one or more instructions to vehicle node 402 based on the predictions from learning model 408.
[0110] In further embodiments, vehicle nodes 402 may transmit data from one or more sensors 404 to machine learning training system 410. In yet another embodiment, machine learning subsystem 406 may transmit data from sensors 404 to machine learning subsystem 410. One or more of the applications, functions, steps, solutions, etc. described and / or depicted herein may utilize machine learning network 400 as described herein.
[0111] FIG. 5A illustrates an example vehicle configuration 500 for managing database transactions associated with a vehicle, according to an exemplary embodiment. Referring to FIG. 5A , as a particular vehicle / vehicle 525 engages in a transaction (e.g., vehicle service, dealership transaction, delivery / pickup, vehicle service, etc.), the vehicle may receive assets (510) and / or issue / transfer assets (512) depending on the transaction. A vehicle processor 526 resides within the vehicle 525, and communication exists between the vehicle processor 526 and a database 530, and between the vehicle processor 526 and a transaction module 520. The transaction module 520 may record information such as assets, parties, credits, service descriptions, dates, times, locations, outcomes, notifications, unexpected events, etc. Those transactions in the transaction module 520 may be replicated in the database 530. The database 530 may be one of an SQL database, an RDBMS, a relational database, a non-relational database, a blockchain, a distributed ledger, and may be on-board the vehicle, may not be on-board the vehicle, may be accessible directly and / or through a network, or may be accessible to the vehicle.
[0112] FIG. 5B illustrates an exemplary vehicle configuration 550 for managing database transactions between various vehicles, according to an exemplary embodiment. If a vehicle reaches a situation where service needs to be shared with another vehicle, the vehicle 525 may engage another vehicle 508 to perform various operations, such as sharing, forwarding, or retrieving a service request. For example, the vehicle 508 may be due for battery charging and / or have tire issues and may be on route to pick up a delivery package. A vehicle processor 528 resides within the vehicle 508, and communication exists between the vehicle processor 528, the database 554, and the transaction module 552. The vehicle 508 may notify other vehicles 525 in its network that operate on its blockchain member services. A vehicle processor 526 resides within the vehicle 525, and communication exists between the vehicle processor 526 and the database 530 and between the vehicle processor 526 and the transaction module 520. Vehicle 525 may then receive information via wireless communication request to perform package pickup from vehicle 508 and / or from a server (not shown). The transaction is recorded in transaction modules 552 and 520 of both vehicles. Credits are transferred from vehicle 508 to vehicle 525, and a record of the transferred service is recorded in databases 530 / 554, assuming the blockchains are different from each other, or recorded in the same blockchain used by all members. Database 554 may be one of an SQL database, an RDBMS, a relational database, a non-relational database, a blockchain, a distributed ledger, and may be on-board the vehicle, off-board the vehicle, and may be accessible directly and / or through a network.
[0113] FIG. 6A illustrates a blockchain architecture configuration 600 according to an example embodiment. Referring to FIG. 6A, the blockchain architecture 600 may include a group of blockchain member nodes 602-606 as part of a particular blockchain element, e.g., a blockchain group 610. In an example embodiment, a permissioned blockchain is accessible only to members who have permission to access the blockchain data, rather than all parties. Blockchain nodes participate in numerous activities, such as the addition and validation process (consensus) of blockchain entries. One or more of the blockchain nodes may approve entries based on an endorsement policy and provide an ordering service for all blockchain nodes. Blockchain nodes may initiate blockchain operations (e.g., authentication) and attempt to write to the blockchain immutable ledger stored in the blockchain, a copy of which may also be stored on the underlying physical infrastructure.
[0114] Once a transaction is received and approved by a consensus model determined by member nodes, the blockchain transaction 620 is stored in computer memory. The approved transaction 626 is stored in the blockchain's current block and committed to the blockchain via a commit procedure, which involves performing a hash of the transaction's data content in the current block and referencing the previous hash in the previous block. Within the blockchain, there may be one or more smart contracts 630 that define the terms of transaction agreement and operation, such as registered recipients, vehicle capabilities, requirements, permissions, sensor thresholds, etc., contained in smart contract executable application code 632. The code may be configured to identify whether a requesting entity is registered to receive vehicle services, which service features the entity is eligible / required to receive given the entity's profile status, and whether to monitor the entity's operation at a later time. For example, if a service event occurs and the user is in the vehicle, sensor data monitoring may be activated and a particular parameter, such as the vehicle's charge level, may be identified as being above / below a particular threshold for a particular period of time, which may then result in a change in the current state, which may require sending an alert to a controlling party (i.e., the vehicle owner, the vehicle operator, a server, etc.), so that a service can be identified and stored for reference. The vehicle sensor data collected may be based on the type of sensor data used to gather information about the vehicle's state. The sensor data may also be the basis for vehicle event data 634, such as where traveled, average speed, top speed, acceleration, whether there have been any collisions, whether the expected route has been taken, where the next destination is, whether safety measures have been implemented, whether the vehicle has sufficient charge / fuel, etc. All such information may be the basis for smart contract terms 630, which are then stored on the blockchain.For example, sensor thresholds stored in a smart contract can be used as the basis for whether a service needs to be detected and when and where the service should be performed.
[0115] FIG. 6B illustrates a shared ledger configuration, according to an example embodiment. Referring to FIG. 6B, example blockchain logic 640 includes a blockchain application interface 642 as an API or plug-in application that couples to computing devices and execution platforms for specific transactions. The blockchain configuration 640 may include one or more applications coupled to the application programming interface (API) to access and execute stored program / application code (e.g., smart contract executable code, smart contracts, etc.), which may be created according to customized configurations desired by participants, maintain their own state, control their own assets, and receive external information. This may be deployed and installed as an entry by appending it to the distributed ledger on all blockchain nodes.
[0116] Smart contract application code 644 provides the foundation for blockchain transactions by establishing application code that, when executed, enables transaction conditions and states. Smart contracts 630, when executed, generate specific approved transactions 626, which are then forwarded to a blockchain platform 652. The platform includes security / authorization 658, a computing device 656 that runs transaction management 656, and a storage unit 654 as memory that stores transactions and smart contracts in the blockchain.
[0117] A blockchain platform may include various layers of blockchain data, services (e.g., cryptographic trust services, virtual execution environments, etc.), and an underlying physical computer infrastructure that can be used to receive and store new entries and provide access to auditors seeking to access data entries. The blockchain may expose interfaces that provide access to the virtual execution environments necessary to process program code and interact with the physical infrastructure. Cryptographic trust services may be used to verify entries, such as asset exchange entries, and keep information private.
[0118] The blockchain architecture configurations of Figures 6A and 6B may process and execute program / application code through one or more interfaces and services exposed by the blockchain platform. As a non-limiting example, smart contracts may be created to implement reminders, updates, and / or other notifications of changes, updates, etc. The smart contract itself may be used to identify rules associated with approval and access ledger requirements and usage. For example, information may include new entries that may be processed by one or more processing entities (e.g., processors, virtual machines, etc.) included in the blockchain layer. Results may include decisions to reject or approve new entries based on criteria established in the smart contract and / or peer consensus. Physical infrastructure may be utilized to retrieve any of the data or information described herein.
[0119] Within smart contract executable code, smart contracts may be authored via high-level application and programming languages and then written into blocks within a blockchain. Smart contracts may include executable code that is registered, stored, and / or replicated using a blockchain (e.g., a decentralized network of blockchain peers). An entry is the execution of smart contract code, which may be executed in response to conditions associated with the smart contract being met. Execution of a smart contract may result in reliable modifications to the state of a digital blockchain ledger. Modifications to the blockchain ledger resulting from smart contract execution may be automatically replicated throughout the decentralized network of blockchain peers via one or more consensus protocols.
[0120] A smart contract may write data to the blockchain in the form of key-value pairs. Additionally, smart contract code may read values stored on the blockchain and use those values in the operation of an application. Smart contract code may write the output of various logical operations into the blockchain. The code may be used to create temporary data structures within a virtual machine or other computing platform. Data written to the blockchain may be public and / or encrypted and kept private. The temporary data used / generated by the smart contract is kept in memory by the provided execution environment and then deleted once the needed data is identified on the blockchain.
[0121] The smart contract executable code may include a code interpretation of the smart contract along with additional functionality. As described herein, the smart contract executable code may be program code deployed on a computational network, which together are executed and verified by a chain validator during a consensus process. The smart contract executable code receives the hash and retrieves from the blockchain a hash associated with a data template created by using a previously stored function extractor. If the hash of the hash identifier matches the hash created from the stored identifier template data, the smart contract executable code sends an authorization key to the requested service. The smart contract executable code may write data associated with cryptographic details to the blockchain.
[0122] FIG. 6C illustrates a blockchain configuration that stores blockchain transaction data, according to an exemplary embodiment. Referring to FIG. 6C, the exemplary configuration 660 provides a vehicle 662, a user device 664, and a server 666 that share information with a distributed ledger (i.e., blockchain) 668. The server may represent a service provider entity that queries a vehicle service provider to share user profile rating information when a known, established user profile attempts to rent a vehicle with an established rating profile. The server 666 may receive and process data related to the vehicle's service requirements. When a service event occurs, such as vehicle sensor data indicating the need for fuel / charging, maintenance service, etc., smart contracts may be used to invoke rules, thresholds, collection of sensor information, etc., that can be used to invoke a vehicle service event. Blockchain transaction data 670 is stored for each transaction, such as an access event, a subsequent update to the vehicle's service status, an event update, etc. The transaction may include the parties involved, requirements (e.g., age 18, eligible candidate for service, valid driver's license, etc.), coverage level, distance traveled during the event, registered recipients authorized to access the event and provide vehicle service, rights / permissions, sensor data retrieved during the vehicle event operation to record details of the upcoming service event and identify the vehicle's condition status, and thresholds used to make a determination as to whether the service event is completed and whether the vehicle's condition status has changed.
[0123] FIG. 6D illustrates a blockchain block 680 and the contents of block structures 682A-682n that may be added to a distributed ledger, according to an example embodiment. Referring to FIG. 6D , a client (not shown) may submit entries to a blockchain node to perform activities on the blockchain. As an example, a client may be an application that acts on behalf of a requester, such as a device, person, or entity, to propose entries to the blockchain. Multiple blockchain peers (e.g., blockchain nodes) may maintain a copy of the blockchain network state and the distributed ledger. Various types of blockchain nodes / peers may exist in a blockchain network, including endorsing peers that simulate and approve entries proposed by clients, and committing peers that confirm the endorsements, validate the entries, and commit the entries to the distributed ledger. In this example, a blockchain node may perform the role of an endorser node, a committer node, or both.
[0124] The system includes a blockchain that stores immutably ordered records in blocks and a state database (current world state) that maintains the current state of the blockchain. One distributed ledger may exist per channel, with each peer maintaining its own copy of the distributed ledger for each channel in which it is a member. The blockchain is an entry log structured as hash-linked blocks, with each block containing a sequence of N entries. Blocks may contain various components, such as those shown in Figure 6D. Block combinations may be generated by appending the hash of the previous block's header to the current block's block header. In this way, all entries on the blockchain are ordered and cryptographically linked, preventing tampering with blockchain data without breaking the hash link. Furthermore, because they are linked, the latest block in the blockchain represents all entries that occurred before it. The blockchain may be stored on a peer file system (local or attached storage) to support append-only blockchain workloads.
[0125] The current state of the blockchain and distributed ledger may be stored in a state database, where the current state data represents the most recent values for all keys to date contained in the blockchain's on-chain entry log. Invocations of smart contract executable code execute entries against the current state in the state database. To make these smart contract executable code interactions highly efficient, the most recent values for all keys are stored in the state database. The state database may contain an indexed view into the blockchain's entry log and therefore can be regenerated off-chain at any time. The state database may be automatically restored (or generated if necessary) upon peer startup, before entries are accepted.
[0126] The endorsing node receives entries from clients and approves the entries based on the simulated results. The endorsing node holds a smart contract that simulates the entry proposal. When the endorsing node approves an entry, it creates an entry endorsement, which is a signed response from the endorsing node to the client application indicating the endorsement of the simulated entry. The manner in which an entry is approved depends on the endorsement policy, which may be specified in the smart contract executable code. An example of an endorsement policy is "a majority of endorsing peers must approve the entry." Different channels may have different endorsement policies. The approved entry is forwarded by the client application to the ordering service.
[0127] The ordering service accepts approved entries, orders the entries into blocks, and distributes the blocks to committing peers. For example, the ordering service may initiate a new block when a threshold number of entries is reached, a timer times out, or another condition occurs. In this example, a blockchain node is a committing peer that receives data block 682A for storage on the blockchain. The ordering service may consist of a cluster of orderers. The ordering service does not process entries, smart contracts, or maintain a shared ledger. Rather, the ordering service may accept approved entries and specify the order in which those entries are committed to the distributed ledger. The architecture of a blockchain network may be designed so that specific implementations of "ordering" (e.g., Solo, Kafka, BFT, etc.) are pluggable components.
[0128] Entries are written to the distributed ledger in a consistent order. The order of entries is established to ensure that updates to the state database are valid when the entries are committed to the network. Unlike cryptocurrency blockchain systems (e.g., Bitcoin) where ordering occurs through solving cryptographic puzzles or through mining, in this example, the parties to the distributed ledger can choose the ordering mechanism that best suits their network.
[0129] Referring to FIG. 6D , block 682A (also referred to as a data block) stored on a blockchain and / or distributed ledger may include multiple data segments, such as block headers 684A-684n, transaction-specific data 686A-686n, and block metadata 688A-688n. It should be understood that the various blocks and their contents depicted, such as block 682A and its contents, are for illustrative purposes only and are not meant to limit the scope of the illustrative embodiments. In some cases, both block header 684A and block metadata 688A may be smaller than transaction-specific data 686A, which stores entry data, although this is not a requirement. Block 682A may store transaction information for N entries (e.g., 100, 500, 1000, 2000, 3000, etc.) in block data 690A-690n. Block 682A may also include a link to a previous block (e.g., on the blockchain) in block header 684A. In particular, the block header 684A may include a hash of the header of the previous block. The block header 684A may also include a unique block number, a hash of the block data 690A of the current block 682A, and the like. The block numbers of the blocks 682A may be unique and assigned in increasing / consecutive order starting from zero. The first block in a blockchain may be referred to as the genesis block, which contains information about the blockchain, its members, the data stored therein, etc.
[0130] The block data 690A may store entry information for each entry recorded in the block. For example, the entry data may include one or more of the following: entry type, version, timestamp, distributed ledger channel ID, entry ID, epoch, payload visibility, smart contract executable path (deployment send), smart contract executable name, smart contract executable version, inputs (smart contract executable and function), client (creator) identification such as public key and certificate, client signature, endorser identity, endorser signature, proposal hash, smart contract executable event, response status, namespace, read set (e.g., list of keys and versions read by the entry), write set (e.g., list of keys and values), start key, end key, list of keys, Merkle tree query summary, and the like. Entry data may be stored for each of the N entries.
[0131] In some embodiments, block data 690A may also store transaction-specific data 686A that adds additional information to the block's hash link chain in the blockchain. Thus, data 686A may be stored in an immutable log of blocks on a distributed ledger. Some of the benefits of storing such data 686A are reflected in various embodiments disclosed and depicted herein. Block metadata 688A may store multiple fields of metadata (e.g., as a byte array, etc.). The metadata fields may include a signature at the creation of the block, a reference to the last constituent block, an entry filter that identifies valid and invalid entries in the block, the last surviving offset of the ordering service that ordered the block, and the like. The signature, last constituent block, and orderer metadata may be added by the ordering service. Alternatively, a block committer (e.g., a blockchain node) may add valid / invalid information based on endorsement policies, validation of read / write sets, and the like. The entry filter may be added to block data 690A. 9 It may contain a byte array of size equal to the number of entries in 0A and a verification code that identifies whether the entry was valid / invalid.
[0132] The other blocks 682B-682n in the blockchain also have headers, files, and values. However, unlike the first block 682A, the headers 684 in the other blocks B Each of blocks ~684n contains the hash value of the immediately preceding block. The hash value of the immediately preceding block may simply be the hash of the previous block's header, or it may be the hash value of the entire previous block. By including the hash value of the previous block in each of the remaining blocks, tracking can be performed block by block, from the Nth block back to the genesis block (and associated original file), as shown by arrow 692, establishing an auditable and immutable chain of custody.
[0133] The above embodiments may be implemented in hardware, in a computer program executed by a processor, in firmware, or a combination of the above. The computer program may be embodied on a computer-readable medium, such as a storage medium. For example, the computer program may reside in random access memory ("RAM"), flash memory, read-only memory ("ROM"), erasable programmable read-only memory ("EPROM"), electrically erasable programmable read-only memory ("EEPROM"), registers, a hard disk, a removable disk, a compact disk read-only memory ("CD-ROM"), or any other form of storage medium known in the art.
[0134] A suitable storage medium may be coupled to the processor such that the processor can read information from, and write information to, the storage medium. Alternatively, the storage medium may be integrated into the processor. The processor and the storage medium may reside in an application-specific integrated circuit ("ASIC"). Alternatively, the processor and the storage medium may reside as discrete components. For example, FIG. 7 shows an exemplary computer system architecture 700, which may represent any of the components described above or may be integrated into any of the components described above.
[0135] 7 is not intended to suggest any limitation as to the scope of use or functionality of the embodiments of the present application described herein, although computing node 700 may nonetheless implement and / or perform any of the functionality described herein.
[0136] Within computing node 700 is computer system / server 702, which is capable of operating in many other general-purpose or special-purpose computing system environments or configurations. Examples of well-known computing systems, environments, and / or configurations that may be suitable for use with computer system / server 702 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, distributed cloud computing environments that include any of the above systems or devices, and the like.
[0137] The computer system / server 702 may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Typically, program modules may include routines, programs, objects, components, logic, data structures, etc. that perform particular tasks or implement particular abstract data types. The computer system / server 702 may be implemented in a distributed cloud computing environment where tasks are performed by remote processing devices coupled through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media, including memory storage devices.
[0138] 7, a computer system / server 702 in a cloud computing node 700 is shown in the form of a general-purpose computing device. Components of the computer system / server 702 may include, but are not limited to, one or more processors or processing units 704, a system memory 706, and a bus connecting various system components, including the system memory 706, to the processor 704.
[0139] A bus may represent any one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures, including, by way of example and without limitation, an Industry Standard Architecture (ISA) bus, a MicroChannel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus.
[0140] Computer system / server 702 typically includes a variety of computer system-readable media. Such media may be any available media accessible by computer system / server 702, including both volatile and nonvolatile media, removable and non-removable media. In one embodiment, system memory 706 implements the flow diagrams of other figures. System memory 706 may include computer system-readable media in the form of volatile memory, such as random access memory (RAM) 708 and / or cache memory 710. Computer system / server 702 may further include other removable / non-removable volatile / non-volatile computer system storage media. By way of example only, memory 706 may be provided to read from and write to non-removable, non-volatile magnetic media (not shown, typically referred to as a "hard drive"). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk") and an optical disk drive for reading from and writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical media, may be provided. In such cases, each may be connected to the bus by one or more data media interfaces. As further depicted and described below, memory 706 may include at least one program product having a set (e.g., at least one) program module configured to perform the functions of various embodiments of the present application.
[0141] A program / utility having a set of program modules (at least one) may be stored in memory 706, as well as, by way of example and not limitation, an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, program data, or any combination thereof may include an implementation of a network environment. The program modules generally perform the functions and / or methods of the various embodiments of the present application as described herein.
[0142] As will be appreciated by one skilled in the art, aspects of the present application may be embodied as a system, method, or computer program product. Accordingly, aspects of the present application may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects, all of which may be generally referred to herein as a "circuit," "module," or "system." Furthermore, aspects of the present application may take the form of a computer program product embodied in one or more computer-readable medium(s), the computer-readable medium(s) having computer-readable program code embodied thereon.
[0143] The computer system / server 702 may also communicate with one or more external devices via I / O devices 712 (such as I / O adapters), which may include a keyboard, pointing device, display, voice recognition module, etc., one or more devices that allow a user to interact with the computer system / server 702, and / or any device (e.g., a network card, modem, etc.) that allows the computer system / server 702 to communicate with one or more other computing devices. Such communication may occur through I / O interfaces of the devices 712. Furthermore, the computer system / server 702 may communicate with one or more networks, such as a local area network (LAN), a general wide network (WAN), and / or a public network (e.g., the Internet), via a network adapter. As depicted, the devices 712 communicate with other components of the computer system / server 702 via a bus. It should be understood that other hardware and / or software components, not shown, may be used with the computer system / server 702. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archiving storage systems.
[0144] While at least one preferred embodiment of the system, method, and non-transitory computer-readable medium has been illustrated in the accompanying drawings and described in the foregoing detailed description, it will be understood that the present application is not limited to the disclosed embodiments, but is capable of many rearrangements, modifications, and substitutions as set forth and defined by the following claims. For example, the capabilities of the various illustrated systems may be performed by one or more of the modules or components described herein, or in a distributed architecture, and may include a transmitter, a receiver, or a pair thereof. For example, all or part of the functionality performed by individual modules may be performed by one or more of these modules. Furthermore, the functionality described herein may be performed at various times and in conjunction with various events internal or external to the modules or components. Furthermore, information transmitted between various modules may be transmitted between modules via at least one of a data network, the Internet, a voice network, an Internet Protocol network, a wireless device, a wired device, and / or multiple protocols. Furthermore, messages sent or received by any of the modules may be transmitted or received directly and / or via one or more of the other modules.
[0145] Those skilled in the art will appreciate that the "system" may be embodied as a personal computer, a server, a console, a personal digital assistant (PDA), a mobile phone, a tablet computing device, a smartphone, or any other suitable computing device or combination of devices. Presenting the above-described functions as being performed by the "system" is not intended to limit the scope of the present application in any way, but rather to provide one example of many embodiments. Indeed, the methods, systems, and apparatuses disclosed herein may be implemented in both local and distributed fashions consistent with computing technology.
[0146] It should be noted that some of the features of the systems described herein are presented as modules to more specifically emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom very large scale integrated (VLSI) circuits or gate arrays, or off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented within programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices, graphics processing units, or the like.
[0147] Modules may also be implemented at least partially in software for execution by various types of processors. For example, an identified unit of executable code may comprise one or more physical or logical blocks of computer instructions, which may be organized, for example, as an object, procedure, or function. Nevertheless, the executable files of an identified module need not be physically located together, but may comprise different instructions stored in different locations that, when logically combined, comprise the module and achieve the specified purpose for the module. Furthermore, modules may be stored on a computer-readable medium, which may be, for example, a hard disk drive, a flash device, a random access memory (RAM), a tape, or any other such medium used to store data.
[0148] Indeed, a module of executable code may be a single instruction or many instructions, and may even be distributed among several different code segments, among different programs, and across several memory devices. Similarly, computational data may be identified and illustrated herein in modules, and may be embodied in any suitable form and organized within any suitable type of data structure. Computational data may be collected as a single data set or distributed among different locations, including different storage devices, and may exist at least in part as simple electronic signals over a system or network.
[0149] It will be readily understood that the components of the present application, as generally described and illustrated in the figures herein, could be arranged and designed in a wide variety of different configurations, and thus, the detailed description of the embodiments is not intended to limit the scope of the present application as claimed, but is merely representative of selected embodiments of the present application.
[0150] Those skilled in the art will readily appreciate that the foregoing may be performed in a different order of steps and / or with hardware elements in different configurations than those disclosed. Thus, while the present application has been described based on these preferred embodiments, certain modifications, variations, and alternative constructions will be apparent to those skilled in the art.
[0151] While preferred embodiments of the present application have been described, it should be understood that the described embodiments are exemplary only, and that the scope of the present application should be determined solely by the appended claims, taking into account the full range of equivalents and modifications (e.g., protocols, hardware devices, software platforms, etc.) to which such claims apply. The present disclosure includes the following aspects. Example 1 generating a data frame for transmission over a controller area network (CAN) bus of a vehicle, the data frame including data stored in a plurality of fields; encoding at least one authentication bit into a value in a data field of the generated data frame, the at least one authentication bit comprising a digital signature based on a predefined key for the at least one authentication bit; transmitting the generated data frame over the CAN bus, the data frame having the at least one authentication bit including the digital signature; A method comprising: Example 2 2. The method of Example 1, further comprising: receiving a configuration frame from a microcontroller unit (MCU), the configuration frame comprising a special, unused CAN identifier that identifies the configuration frame as including configuration data for the authentication bit; and configuring a position of the authentication bit in the generated data frame based on the configuration data. Example 3 receiving a data frame over the CAN bus; determining that a predetermined field in the received data frame does not include a required authentication bit; rejecting the data frame in response to the determination; The method of Example 1, further comprising: Example 4 receiving a data frame over the CAN bus; determining that the received data frame does not contain a required digital signature or contains an incorrect digital signature; rejecting the data frame in response to the determination; The method of Example 1, further comprising: Example 5 receiving a data frame over the CAN bus that does not include an authentication bit; determining that an identifier of an electronic control unit (ECU) that transmitted the received data frame is on a whitelist; In response to the determination, accepting the data frame without the authentication bit; The method of Example 1, further comprising: Example 6 incrementing a counter value in response to transmitting the generated data frame over the CAN bus; modifying the digital signature for the at least one authentication bit according to a predetermined scheme in response to the increase; encoding an authentication bit into a subsequently generated data frame based on the modified digital signature; The method of Example 1, further comprising: Example 7 2. The method of claim 1, wherein the transmitting includes simultaneously transmitting the generated data frame having the at least one authentication bit over a CAN high wire of the CAN bus and over a CAN low wire of the CAN bus. Example 8 1. A means of transport comprising: generating a data frame for transmission over a controller area network (CAN) bus of a vehicle, the data frame including data stored in a plurality of fields; encoding at least one authentication bit into a value in a data field of the generated data frame, the at least one authentication bit comprising a digital signature based on a predefined key for the at least one authentication bit; transmitting the generated data frame over the CAN bus, the data frame having the at least one authentication bit including the digital signature; 12. A vehicle comprising: a processor configured to: Example 9 9. The vehicle of Example 8, wherein the processor is configured to: receive a configuration frame from a microcontroller unit (MCU), the configuration frame comprising a special, unused CAN identifier that identifies the configuration frame as including configuration data for the authentication bit; and configure a position of the authentication bit within the generated data frame based on the configuration data. Example 10 The processor further comprises: receiving a data frame over the CAN bus; determining that a predetermined field in the received data frame does not include a required authentication bit; rejecting the data frame in response to the determination; 9. The vehicle of Example 8, configured to: Example 11 The processor further comprises: receiving a data frame over the CAN bus; determining that the received data frame does not contain a required digital signature or contains an incorrect digital signature; rejecting the data frame in response to the determination; 9. The vehicle of Example 8, configured to: Example 12 The processor further comprises: receiving a data frame over the CAN bus that does not include an authentication bit; determining that an identifier of an electronic control unit (ECU) that transmitted the received data frame is on a whitelist; accepting the data frame without the authentication bit in response to the determination; 9. The vehicle of Example 8, configured to: Example 13 The processor further comprises: incrementing a counter value in response to transmitting the generated data frame over the CAN bus; modifying the digital signature for the at least one authentication bit according to a predetermined scheme in response to the increase; encoding an authentication bit into a subsequently generated data frame based on the modified digital signature; 9. The vehicle of Example 8, configured to: Example 14 9. The vehicle of Example 8, wherein the processor is configured to simultaneously transmit the generated data frame having the at least one authentication bit over a CAN high wire of the CAN bus and over a CAN low wire of the CAN bus. Example 15 1. A non-transitory computer-readable medium comprising instructions that, when read by a processor, cause the processor to perform a method, the method comprising: generating a data frame for transmission over a controller area network (CAN) bus of a vehicle, the data frame including data stored in a plurality of fields; encoding at least one authentication bit into a value in a data field of the generated data frame, the at least one authentication bit comprising a digital signature based on a predefined key for the at least one authentication bit; transmitting the generated data frame over the CAN bus, the data frame having the at least one authentication bit including the digital signature; 1. A non-transitory computer-readable medium comprising: Example 16 16. The non-transitory computer-readable medium of Example 15, wherein the method further includes receiving a configuration frame from a microcontroller unit (MCU), the configuration frame comprising a special, unused CAN identifier that identifies the configuration frame as including configuration data for the authentication bit; and configuring a position of the authentication bit in the generated data frame based on the configuration data. Example 17 The method comprises: receiving a data frame over the CAN bus; determining that a predetermined field in the received data frame does not include a required authentication bit; rejecting the data frame in response to the determination; 16. The non-transitory computer-readable medium of Example 15, further comprising: Example 18 The method comprises: receiving a data frame over the CAN bus; determining that the received data frame does not contain a required digital signature or contains an incorrect digital signature; rejecting the data frame in response to the determination; 16. The non-transitory computer-readable medium of Example 15, further comprising: Example 19 The method comprises: receiving a data frame over the CAN bus that does not include an authentication bit; determining that an identifier of an electronic control unit (ECU) that transmitted the received data frame is on a whitelist; accepting the data frame without the authentication bit in response to the determination; 16. The non-transitory computer-readable medium of Example 15, further comprising: Example 20 The method comprises: incrementing a counter value in response to transmitting the generated data frame over the CAN bus; modifying the digital signature for the at least one authentication bit according to a predetermined scheme in response to the increase; encoding an authentication bit into a subsequently generated data frame based on the modified digital signature; 16. The non-transitory computer-readable medium of Example 15, further comprising:
Claims
1. generating a data frame for transmission over a controller area network (CAN) bus of a vehicle, the data frame including data stored in a plurality of fields; encoding at least one authentication bit into a value within a data field of the generated data frame, the at least one authentication bit including a digital signature based on a predetermined key for the at least one authentication bit, the digital signature being represented by a position of the authentication bit, which may specify any location within the data frame; transmitting the generated data frame having the at least one authentication bit including the digital signature over the CAN bus; A computer-implemented method comprising:
2. 2. The method of claim 1, further comprising: receiving a configuration frame from a microcontroller unit (MCU), the configuration frame comprising a special, unused CAN identifier that identifies the configuration frame as including configuration data for the authentication bit; and configuring a position of the authentication bit in the generated data frame based on the configuration data.
3. receiving a data frame via the CAN bus; determining that a predetermined field in the received data frame does not include a required authentication bit; rejecting the data frame in response to the determination; The method of claim 1 further comprising:
4. receiving a data frame via the CAN bus; determining that the received data frame does not contain a required digital signature or contains an incorrect digital signature; rejecting the data frame in response to the determination; The method of claim 1 further comprising:
5. receiving a data frame over the CAN bus that does not include an authentication bit; determining that an identifier of an electronic control unit (ECU) that transmitted the received data frame is on a whitelist; In response to the determination, accepting the data frame without the authentication bit; The method of claim 1 further comprising:
6. incrementing a counter value in response to transmitting the generated data frame over the CAN bus; modifying the digital signature for the at least one authentication bit according to a predetermined scheme in response to the increase; encoding an authentication bit into a subsequently generated data frame based on the modified digital signature; The method of claim 1 further comprising:
7. 2. The method of claim 1 , wherein said transmitting comprises simultaneously transmitting the generated data frame with the at least one authentication bit over a CAN High wire of the CAN bus and over a CAN Low wire of the CAN bus.
8. 1. A means of transport comprising: generating a data frame for transmission over a controller area network (CAN) bus of a vehicle, the data frame including data stored in a plurality of fields; encoding at least one authentication bit into a value within a data field of the generated data frame, the at least one authentication bit including a digital signature based on a predetermined key for the at least one authentication bit, the digital signature being represented by a position of the authentication bit, which may specify any location within the data frame; transmitting the generated data frame having the at least one authentication bit including the digital signature over the CAN bus; 12. A vehicle comprising: a processor configured to:
9. 9. The vehicle of claim 8, wherein the processor is configured to: receive a configuration frame from a microcontroller unit (MCU), the configuration frame comprising a special, unused CAN identifier that identifies the configuration frame as containing configuration data for the authentication bit; and configure a position of the authentication bit in the generated data frame based on the configuration data.
10. The processor further comprises: receiving a data frame via the CAN bus; determining that a predetermined field in the received data frame does not include a required authentication bit; rejecting the data frame in response to the determination; 9. The vehicle of claim 8, configured to:
11. The processor further comprises: receiving a data frame via the CAN bus; determining that the received data frame does not contain a required digital signature or contains an incorrect digital signature; rejecting the data frame in response to the determination; 9. The vehicle of claim 8, configured to:
12. The processor further comprises: receiving a data frame over the CAN bus that does not include an authentication bit; determining that an identifier of an electronic control unit (ECU) that transmitted the received data frame is on a whitelist; In response to the determination, accepting the data frame without the authentication bit; 9. The vehicle of claim 8, configured to:
13. The processor further comprises: incrementing a counter value in response to transmitting the generated data frame over the CAN bus; modifying the digital signature for the at least one authentication bit according to a predetermined scheme in response to the increase; encoding an authentication bit into a subsequently generated data frame based on the modified digital signature; 9. The vehicle of claim 8, configured to:
14. 9. The vehicle of claim 8, wherein the processor is configured to simultaneously transmit the generated data frame having the at least one authentication bit over a CAN High wire of the CAN bus and over a CAN Low wire of the CAN bus.
15. 1. A non-transitory computer-readable medium comprising instructions that, when read by a processor, cause the processor to perform a method, the method comprising: generating a data frame for transmission over a controller area network (CAN) bus of a vehicle, the data frame including data stored in a plurality of fields; encoding at least one authentication bit into a value within a data field of the generated data frame, the at least one authentication bit including a digital signature based on a predetermined key for the at least one authentication bit, the digital signature being represented by a position of the authentication bit, which may specify any location within the data frame; transmitting the generated data frame having the at least one authentication bit including the digital signature over the CAN bus; 1. A non-transitory computer-readable medium comprising:
Citation Information
Patent Citations
Vehicle network system
JP2012186635A
Pin-configurable internal bus termination system
JP2016136382A
Communication system, communication program, communication method, and communication device
JP2017126966A
Method of performing HARQ in wireless communication system
US20110013613A1
Communication system, vehicle-mounted terminal, roadside device
WO2011148744A1