Patent Description:
Recently, many devices called Electronic Control Units (ECUs) are being provided in systems installed in automobiles. A network which connects these ECUs is called an "in-vehicle network". There are many in-vehicle network standards. The standard known as CAN (Controller Area Network), defined by ISO <NUM>-<NUM>, is the most mainstream standard for in-vehicle networks.

In a CAN, a communication path is constituted by two buses, and ECUs connected to the buses are called "nodes". Each node connected to a bus transmits and receives messages called "frames". CAN does not have identifiers indicating transmission destination nodes or transmission source nodes. Instead, a transmitting node adds an ID called a "message ID" to each frame before transmitting the frame, and each receiving node receives only frames which have a predetermined message ID.

As such, there is a threat in that the unauthorized control of an automobile can be achieved by connecting an ECU to a CAN bus and transmitting frames including anomalous control commands by impersonating a legitimate ECU.

In light of this threat, the method disclosed in Patent Literature <NUM> (PTL <NUM>) can be given as an example of a method for detecting unauthorized data, i.e., the infiltration of anomalous control commands, in an in-vehicle network.

However, when a server system outside a vehicle monitors data in an in-vehicle network system, a large amount of data may be transmitted from the in-vehicle network system to the external server system. It is not easy to prepare the resources required to process such a large amount of data.

Patent Literature <NUM> (PTL <NUM>) discloses a method that reduces the amount of data communicated by dividing a large amount of data into pieces of data of a predetermined size, comparing each instance of the divided data with data stored in a server, and when the data matches, only a hash value of the divided data is transmitted, whereas when the data does not match, the divided data is transmitted to the server.

Additionally, the method described in Non Patent Literature <NUM> (NPL <NUM>) can be given as a method for calculating a difference between two types of data. Generally, when there is only a small difference, the difference data skews toward <NUM>, which provides a high data compression rate when applying a compression algorithm such as LHA or Zip to the difference data, and makes it possible to efficiently reduce the amount of data communicated. Patent Literature <NUM> (PTL3) describes an anomaly detection server for detecting any anomaly in frames transmitted over a vehicle onboard network such as a CAN bus system. For this purpose, a gateway, located at the vehicle, determines whether any frame received from the vehicle onboard network is fraudulent and transmits respective log information to the server. The server makes an assessment of frame anomalies and issues the respective warnings to the vehicle and, depending on the severity of a potential attack, to other vehicles of the same type or using the same kind of ECUs. Patent Literature <NUM> (PTL <NUM>) describes a difference messaging protocol that uses prior state information such as a prior message. More specifically, a difference message is constructed by a sender (computer) as a difference between a message and prior state information. The difference message is transmitted to a receiver (computer) instead of the actual message, together with an identifier of the prior state information used to generate the difference message. At the receiver side, the message is reconstructed using the difference message and the prior state information identified by the identifier and stored at the receiver.

NPL <NUM>: Colin Percival, "Binary diff/patch utility" (retrieved Nov. <NUM>, <NUM>, from http://www. daemonology. net/bsdiff/).

However, in-vehicle network logs include data which fluctuates depending on the state of the automobile, as well as time data, and thus with the method of dividing the data into a predetermined size described in the related art, the divided data in a log currently obtained has a low degree of similarity with divided data in logs obtained in the past and stored in the server. This results in an increased difference between the divided data in the log currently obtained and the divided data in logs obtained in the past and stored in the server, which in turn reduces the compression rate of the difference data and makes it necessary to transmit a greater amount of data to the server. There is thus a problem in that the amount of data communicated cannot be efficiently reduced as compared to a case where the logs are transmitted in an undivided state.

Accordingly, the present disclosure provides a vehicle log transmission device and the like capable of effectively reducing an amount of data communicated for a vehicle log transmitted from a vehicle to a server outside the vehicle.

Note that the present invention may be realized by a system, a method, an integrated circuit, a computer program, or a computer-readable recording medium such as a CD-ROM, or may be implemented by any desired combination of systems, devices, methods, integrated circuits, computer programs, and recording media.

A vehicle log transmission device and the like according to an aspect of the present disclosure can effectively reduce an amount of data communicated for a vehicle log transmitted between a vehicle and a server outside the vehicle. As a result, a vehicle log can be transmitted to an external server without preparing resources which enable large vehicle logs to be communicated. This makes it possible to detect the unauthorized data infiltrating the vehicle network using a server outside the vehicle, and can therefore contribute to vehicle safety.

A vehicle log transmission device that transmits a vehicle log to a vehicle log analysis server includes: a vehicle log obtainer that obtains the vehicle log; a vehicle state extractor that extracts a vehicle state from the obtained vehicle log; difference generation log storage that stores a list of difference generation logs, each difference generation log being a vehicle log for each of vehicle states shared between the vehicle log transmission device and the vehicle log analysis server; a difference generation log selector that selects a difference generation log from the list in accordance with the extracted vehicle state; a difference log generator that generates a difference log based on the obtained vehicle log and the selected difference generation log; and a difference log transmitter that transmits, to the vehicle log analysis server, the generated difference log and a difference generation log identifier corresponding to the selected difference generation log.

A log which is likely to arise in a specific vehicle state is shared between the vehicle log transmission device and the vehicle log analysis server as a difference generation log for each vehicle state, and when transmitting the vehicle log to the vehicle log analysis server, the vehicle log transmission device generates the difference log by using different difference generation logs according to the vehicle state at that time. As a result, the vehicle log to be transmitted for that vehicle state and the difference generation log corresponding to that vehicle state resemble each other, which reduces the size of the transmitted difference log, and makes it possible to effectively reduce the amount of communication data for the vehicle log transmitted from the vehicle to a server outside the vehicle (the vehicle log analysis server).

Additionally, the difference generation log storage stores the list of the difference generation logs in each of which a vehicle log previously transmitted to the vehicle log analysis server is associated with a vehicle state at a time of the transmitting.

As a result, a vehicle log transmitted in the past is shared between the vehicle log transmission device and the vehicle log analysis server, and by using the vehicle log transmitted in the past as the difference generation log, it is no longer necessary to set the difference generation log in the vehicle log transmission device in advance, which makes it possible to suppress development costs.

Additionally, the vehicle log may include a plurality of pieces of data respectively associated with IDs indicating a data type; the difference generation log storage may store the list of the difference generation logs both for each of IDs included in the vehicle log and each of vehicle states; the difference generation log selector may select the difference generation log for each ID from the list in accordance with the extracted vehicle state; and the difference log generator may generate the difference log for each ID included in the obtained vehicle log, based on data associated with the ID and the selected difference generation log corresponding to the ID.

By storing the difference generation log for each ID included in the vehicle log in this manner, it is no longer necessary to store all of the plurality of pieces of data included in the vehicle log as the difference generation log, and only the same number of pieces of data as there are ID types need to be stored, which makes it possible to reduce the size of the storage region needed to generate the difference log when the number of the plurality of pieces of data included in the vehicle log is greater than the number of ID types included in the vehicle log.

Additionally, the vehicle log may include a plurality of pieces of data respectively associated with IDs indicating a data type, the plurality of pieces of data being arranged in such a manner that a plurality of the IDs starting with a predetermined ID repeat in a cyclical manner; and the difference generation log selector may select the difference generation log corresponding to the plurality of IDs starting with the predetermined ID from the list in accordance with the extracted vehicle state.

For example, the plurality of pieces of data included in the vehicle log are arranged in such a manner that when a plurality of the IDs starting with a predetermined ID are taken as a single cycle, the plurality of IDs repeat in a cyclical manner, and similar data repeats for each of the plurality of IDs. Thus by using the predetermined ID as the ID from which both the vehicle log and the difference generation log start, the plurality of IDs in a single cycle included in the vehicle log and the plurality of IDs in a single cycle included in the difference generation log match, and the difference between the vehicle log and the difference generation log is reduced, which makes it possible to even more effectively reduce the amount of communication data for the vehicle log transmitted from the vehicle to a server outside the vehicle. Additionally, in the plurality of pieces of data included in the vehicle log, similar data is repeated every plurality of IDs in a single cycle, which makes it possible to reduce the amount of information aside from the data corresponding to the plurality of IDs in the single cycle.

Additionally, the difference generation log storage may store the list of the difference generation logs which have been subjected to replacement processing for replacing a value of data with a predetermined value or rounding processing for rounding a value of data; and the difference log generator may further generate the difference log after subjecting the obtained vehicle log to the replacement processing or the rounding processing.

Accordingly, by setting values in data regions, such as a counter or a checksum, which are likely to differ between the vehicle log and the difference generation log to the same predetermined value in both the vehicle log and the difference generation log, by rounding off fine values, such as sensor information, which are not needed to detect an anomaly from the vehicle log, and so on, the vehicle log to be transmitted and the difference generation log will resemble each other. The transmitted difference log is reduced in size as a result, which makes it possible to even more effectively reduce the amount of communication data for the vehicle log transmitted from the vehicle to a server outside the vehicle.

Additionally, the vehicle log may include a plurality of pieces of data respectively associated with of time information; the difference generation log storage may store the list of the difference generation logs in which the time information has been replaced with index information; the difference log generator may further generate the difference log after replacing the time information included in the obtained vehicle log with the index information; and the difference log transmitter may further transmit, to the vehicle log analysis server, a time list expressing a correspondence relationship between the time information and the index information.

Accordingly, by replacing the values of time information highly likely to be different between the vehicle log and the difference generation log with index information in the vehicle log and the difference generation log, the vehicle log and the difference generation log will resemble each other even more. The transmitted difference log is reduced in size as a result, which makes it possible to even more effectively reduce the amount of communication data for the vehicle log transmitted from the vehicle to a server outside the vehicle.

Additionally, the vehicle log may include the plurality of pieces of data respectively associated with IDs indicating a data type; the difference generation log storage may store the list of the difference generation logs sorted by a magnitude of a value of the ID, with difference generation logs having the same ID being sorted by data size; and the difference log generator may further generate the difference log after replacing the time information with index information for the obtained vehicle log and sorting by the magnitude of the value of the ID, with difference generation logs having the same ID being sorted by data size.

Accordingly, by sorting the vehicle log and the difference generation log in order from the highest to lowest ID (and in order from the largest to smallest data, when the IDs are the same), the likelihood that the vehicle log and the difference generation log will match increases, even when data including a specific ID arises irregularly and the order in which IDs appear is not constant, when variable-valued data is included in the vehicle log, and so on. The difference between the vehicle log and the difference generation log can therefore be reduced, and thus the transmitted difference log is reduced in size, which makes it possible to even more effectively reduce the amount of communication data for the vehicle log transmitted from the vehicle to a server outside the vehicle.

Additionally, the difference log generator may use the selected difference generation log as a data compression dictionary, compress the obtained vehicle log according to a predetermined compression algorithm, and generate the compressed vehicle log as the difference log.

It is therefore not necessary to prepare a dictionary with a high compression rate in advance for each vehicle state, and the data can be compressed efficiently, which makes it possible to reduce development costs.

A vehicle log analysis system includes a vehicle log transmission device and a vehicle log analysis server. The vehicle log analysis system transmits a vehicle log from the vehicle log analysis server to the vehicle log analysis server. The vehicle log transmission device includes: a vehicle log obtainer that obtains the vehicle log; a vehicle state extractor that extracts a vehicle state from the obtained vehicle log; difference generation log storage that stores a list of difference generation logs, each difference generation log being a vehicle log for each of vehicle states shared between the vehicle log transmission device and the vehicle log analysis server; a difference generation log selector that selects a difference generation log from the list in accordance with the extracted vehicle state; a difference log generator that generates a difference log based on the obtained vehicle log and the selected difference generation log; and a difference log transmitter that transmits, to the vehicle log analysis server, the generated difference log and a difference generation log identifier corresponding to the selected difference generation log. The vehicle log analysis server includes: a difference log receiver that receives the difference log and the difference generation log identifier transmitted from the difference log transmitter; restoration log storage that stores the list; and a vehicle log restorer that specifies the difference generation log used to generate the difference log from the difference generation log identifier and the list, and restores the vehicle log based on the difference log and the specified difference generation log.

Additionally, the difference generation log storage and the restoration log storage may store the list of the difference generation logs in which a vehicle log previously transmitted to the vehicle log analysis server is associated with a vehicle state at a time of the transmitting.

Additionally, the vehicle log may include a plurality of pieces of data respectively associated with IDs indicating a data type; the difference generation log storage and the restoration log storage may store the list of difference generation logs both for each of IDs included in the vehicle log and each of vehicle states; the difference generation log selector may select the difference generation log for each ID from the list in accordance with the extracted vehicle state; the difference log generator may generate the difference log for each ID included in the vehicle log that has been obtained, based on data associated with the ID and the selected difference generation log corresponding to the ID; and the vehicle log restorer may restore the vehicle log for each ID included in the difference log, based on data associated with the ID and the specified difference generation log corresponding to the ID.

Additionally, the vehicle log may include a plurality of pieces of data respectively associated with IDs indicating a data type, the plurality of pieces of data being arranged in such a manner that a plurality of the IDs starting with a predetermined ID repeat in a cyclical manner; the difference generation log selector may select the difference generation log corresponding to a plurality of IDs starting with the predetermined ID from the list in accordance with the extracted vehicle state; and the vehicle log restorer may specify the difference generation logs corresponding to a plurality of IDs starting from the predetermined ID, and restore the vehicle log based on the difference log and the specified difference generation log.

Additionally, the difference generation log storage and the restoration log storage may store the list of the difference generation logs which have been subjected to replacement processing for replacing a data value with a predetermined value or rounding processing for rounding a data value; and the difference log generator may further generate the difference log after subjecting the obtained vehicle log to the replacement processing or the rounding processing.

Accordingly, by setting values in data regions, such as a counter or a checksum, which are likely to differ between the vehicle log and the difference generation log, to the same predetermined value in both the vehicle log and the difference generation log, by rounding off fine values, such as sensor information, which are not needed to detect an anomaly from the vehicle log, and so on, the vehicle log to be transmitted and the difference generation log will resemble each other. The transmitted difference log is reduced in size as a result, which makes it possible to even more effectively reduce the amount of communication data for the vehicle log transmitted from the vehicle to a server outside the vehicle.

Additionally, the vehicle log may include a plurality of pieces of data respectively associated with time information; the difference generation log storage and the restoration log storage may store the list of the difference generation logs in which the time information has been replaced with index information; the difference log generator may further generate the difference log after replacing the time information included in the obtained vehicle log with the index information; the difference log transmitter may further transmit, to the vehicle log analysis server, a time list expressing a correspondence relationship between the time information and the index information; and the vehicle log restorer may further restore the vehicle log by referring to the transmitted time list and replacing the index information with the time information.

Additionally, the vehicle log may include the plurality of pieces of data respectively associated with IDs indicating a data type; the difference generation log storage and the restoration log storage may store the list of the difference generation logs sorted by a magnitude of a value of the ID, with difference generation logs having the same ID being sorted by data size; the difference log generator may further generate the difference log after replacing the time information with index information for the obtained vehicle log and sorting the difference generation logs by the magnitude of the value of the ID, with difference generation logs having the same ID being sorted by data size; and the vehicle log restorer may further restore the vehicle log by referring to the transmitted time list, replacing the index information with the time information, and sorting the vehicle log in order from the earliest time.

Additionally, the difference log generator may use the selected Additionally, the difference log generator may use the selected difference generation log as a data compression dictionary, compress the obtained vehicle log according to a predetermined compression algorithm, and generate the compressed vehicle log as the difference log; and the vehicle log restorer may restore the vehicle log by using the specified difference generation log as a data compression dictionary and decompressing the difference log according to the predetermined compression algorithm.

Additionally, the vehicle state extractor extracts at least one of a vehicle speed, a driving assistance mode, an autonomous driving mode, a travel location, weather, or temperature, included in the vehicle log, as the vehicle state.

Through this, when the vehicle has a function unique to when the vehicle is stopped or a function unique to when the vehicle is traveling at a high speed, preparing difference generation logs for each vehicle speed results in the logs produced by the unique functions resembling each other for each vehicle speed. Additionally, when the vehicle has a function unique to when a driving assistance mode is active or a function unique to when an autonomous driving mode is active, preparing difference generation logs for each travel mode of the vehicle results in the logs produced by the unique functions resembling each other for each travel mode of the vehicle. Additionally, by preparing difference generation logs for each travel area of the vehicle, logs of the vehicle traveling by preparing difference generation logs for each temperature, weather, or the like for the vehicle, logs of air conditioner control for the vehicle traveling at the same temperature, logs for wiper control of the vehicle traveling in the same weather, and so on will resemble each other. In this manner, the vehicle speed, driving assistance mode, autonomous driving mode, travel location, weather, or temperature serving as vehicle states are highly correlated with vehicle logs, and because difference logs transmitted for the same vehicle states are smaller, the amount of communication data for the vehicle log transmitted from the vehicle to a server outside the vehicle can be even more effectively reduced.

Additionally, the vehicle log obtainer may obtain, as the vehicle log, at least one of the following: an in-vehicle network log according to the CAN or CAN-FD protocol, the in-vehicle network log including a frame ID as the ID of the vehicle log; an in-vehicle network log according to the FlexRay (registered trademark) protocol, the in-vehicle network log including a slot ID as the ID of the vehicle log; an in-vehicle network log according to the Ethernet (registered trademark) protocol, the in-vehicle network log including an IP address as the ID of the vehicle log; and a system operation log including a process number as the ID of the vehicle log.

Accordingly, by obtaining the vehicle logs using a specific protocol or system, the vehicle log formats can be unified, and because difference logs transmitted for the same vehicle states are smaller as a result, the amount of communication data for the vehicle log transmitted from the vehicle to a server outside the vehicle can be even more effectively reduced.

Additionally, the vehicle log analysis server may further include: an anomalous log detector that monitors the restored vehicle log and detects a case where the restored vehicle log contains evidence of an attack as an anomaly; and an anomaly notifier that notifies a predetermined notification target.

Through this, when an anomaly in terms of security has been detected from a restored vehicle log, the vehicle can notify a predetermined notification target of the anomaly.

Additionally, a vehicle log transmission/reception method includes a vehicle log transmitting method performed by a vehicle log transmission device and a vehicle log receiving method performed by a vehicle log analysis server. The vehicle log transmission/reception method transmits a vehicle log from the vehicle log transmission device to the vehicle log analysis server. The vehicle log transmission device includes difference generation log storage that stores a list of difference generation logs, each difference generation log being a vehicle log for each of vehicle states shared between the vehicle log transmission device and the vehicle log analysis server. The vehicle log analysis server includes restoration log storage that stores the list. The vehicle log transmitting method includes: obtaining the vehicle log; extracting a vehicle state from the obtained vehicle log; selecting a difference generation log from the list in accordance with the extracted vehicle state; generating a difference log based on the obtained vehicle log and the selected difference generation log; and transmitting, to the vehicle log analysis server, the generated difference log and a difference generation log identifier corresponding to the selected difference generation log. The vehicle log receiving method includes: receiving the difference log and the difference generation log identifier transmitted in the transmitting; and specifying the difference generation log used to generate the difference log from the difference generation log identifier and the list, and restoring the vehicle log based on the difference log and the specified difference generation log.

Note that these comprehensive or specific aspects may be realized by a system, a method, an integrated circuit, a computer program, or a computer-readable recording medium such as a CD-ROM, or may be implemented by any desired combination of systems, devices, methods, integrated circuits, computer programs, or recording media.

A vehicle log transmission device, a vehicle log analysis system, and a vehicle log transmission/reception method according to embodiments will be described hereinafter with reference to the drawings. Each of the following embodiments describes a specific example of the present disclosure. As such, the numerical values, constituent elements, arrangements and connection states of constituent elements, steps serving as elements of processing, orders of steps, and the like in the following embodiments are merely examples, and are not intended to limit the present disclosure. Additionally, of the constituent elements in the following embodiments, constituent elements not denoted in the independent claims are considered to be optional constituent elements. Additionally, the drawings are schematic diagrams, and are not necessarily exact illustrations.

<FIG> is an overall schematic diagram illustrating vehicle log analysis system <NUM> according to Embodiment <NUM> of the present disclosure.

In <FIG>, vehicle log analysis system <NUM> is constituted by vehicle log analysis server <NUM> and vehicle <NUM>, and vehicle log analysis server <NUM> and vehicle <NUM> are connected over external network <NUM>. External network <NUM> is the Internet, for example. A communication method of external network <NUM> may be wired or wireless. Additionally, the wireless communication method may be an existing technology such as Wi-Fi (registered trademark), <NUM>/LTE (Long Term Evolution), or the like.

Vehicle <NUM> includes vehicle log transmission device <NUM>, ECU 30a, ECU 30b, ECU 30c, sensor 40a, engine 40b, and steering 40c.

Vehicle log transmission device <NUM> is connected to vehicle log analysis server <NUM> over external network <NUM>.

In vehicle <NUM>, vehicle log transmission device <NUM>, ECU 30a, ECU 30b, and ECU 30c are connected to each other over vehicle network <NUM>. Vehicle network <NUM> is a CAN, for example. Note that vehicle network <NUM> may use a communication protocol such as CAN-FD, FlexRay, Ethernet, or the like.

ECU 30a is connected to sensor 40a, ECU 30b is connected to engine 40b, and ECU 30c is connected to steering 40c.

ECUs 30a, 30b, and 30c obtain states of the devices to which those ECUs are respectively connected, and periodically send messages expressing the obtained states to vehicle network <NUM>.

ECU 30a obtains sensor information measured by sensor 40a, which measures acceleration of vehicle <NUM>, and sends a message including a data value expressing the sensor information to vehicle network <NUM>.

ECU 30b obtains a rotation rate, which is one state of engine 40b, and sends a message including a data value expressing the rotation rate to vehicle network <NUM>. ECU 30b also controls the rotation rate of engine 40b based on information pertaining to engine 40b obtained from vehicle network <NUM>.

ECU 30c obtains a steering angle of steering 40c, and sends a message including a data value expressing the steering angle to vehicle network <NUM>. ECU 30c also controls the steering angle of steering 40c based on information pertaining to steering 40c obtained from vehicle network <NUM>.

Hereinafter, ECU 30a, ECU 30b, and ECU 30c connected to vehicle network <NUM>, as well as sensor 40a, engine 40b, and steering 40c, will be collectively referred to as "vehicle system <NUM>".

Vehicle log transmission device <NUM> obtains a vehicle log from ECUs 30a, 30b, and 30c, and sends the obtained vehicle log to vehicle log analysis server <NUM> using a communication protocol such as HTTPS. Details of the vehicle log, as well as details of the method for transmitting the vehicle log, will be given later.

Vehicle log analysis server <NUM> is a server, located outside vehicle <NUM>, which receives the vehicle log from vehicle log transmission device <NUM>, analyzes the received vehicle log, and detects a security threat, i.e., detects an anomaly in vehicle <NUM>.

Vehicle log transmission device <NUM> will be described next.

<FIG> is a block diagram illustrating vehicle log transmission device <NUM> according to Embodiment <NUM> of the present disclosure. Vehicle log transmission device <NUM> is a device that transmits the vehicle log to vehicle log analysis server <NUM>. As illustrated in <FIG>, vehicle log transmission device <NUM> includes vehicle log obtainer <NUM>, vehicle state extractor <NUM>, difference generation log storage <NUM>, difference generation log selector <NUM>, difference log generator <NUM>, and difference log transmitter <NUM>.

Vehicle log obtainer <NUM> is connected to vehicle system <NUM> over vehicle network <NUM>. Vehicle log obtainer <NUM> obtains the vehicle log, which includes a plurality of pieces of data pertaining to operations of vehicle <NUM>, and communicates the obtained vehicle log to vehicle state extractor <NUM> and difference log generator <NUM>. Note that the vehicle log may include a plurality of pieces of data associated with corresponding IDs indicating data types. Additionally, the vehicle log may include a plurality of pieces of data associated with corresponding IDs indicating data types, the plurality of pieces of data being arranged in such a manner that when a plurality of the IDs starting with a predetermined ID are taken as a single cycle, the plurality of IDs repeat in a cyclical manner. Additionally, the vehicle log may include a plurality of pieces of data associated with corresponding pieces of time information.

Vehicle state extractor <NUM> obtains a vehicle state included in the vehicle log obtained by vehicle log obtainer <NUM>, and communicates the obtained vehicle state to difference generation log selector <NUM>.

Here, "vehicle state" is a state of vehicle <NUM>, and in the present embodiment, refers to at least one piece of information among a speed of vehicle <NUM>, a travel mode of vehicle <NUM> (e.g., a driving assistance mode, an autonomous driving mode, or the like), a travel area, a temperature, and weather. For example, vehicle state extractor <NUM> extracts at least one of the vehicle speed, the driving assistance mode, the autonomous driving mode, a travel location, the weather, and the temperature, which are included in the vehicle log, as the vehicle state. Note that vehicle state extractor <NUM> may extract a vehicle speed range. For example, when the vehicle speed is <NUM>/h, vehicle state extractor <NUM> may extract a vehicle speed range of <NUM> to <NUM>/h. Vehicle state extractor <NUM> may also extract a temperature range. For example, when the temperature is <NUM> degrees, vehicle state extractor <NUM> may extract a temperature range of <NUM> to <NUM> degrees. Additionally, the location of the vehicle state in the vehicle log is defined in a vehicle log definition table in advance, and vehicle state extractor <NUM> can extract the vehicle state by using the vehicle log definition table to refer to the location of the vehicle log. Details of the vehicle log definition table will be given later.

Difference generation log storage <NUM> stores a list of difference generation logs, which are vehicle logs for each of vehicle states shared between vehicle log transmission device <NUM> and vehicle log analysis server <NUM>. For example, difference generation log storage <NUM> may store a list of difference generation logs in which vehicle logs transmitted to vehicle log analysis server <NUM> in the past are associated with the vehicle states from when those vehicle logs were transmitted. Additionally, for example, difference generation log storage <NUM> may store a list of difference generation logs for each of IDs included in the vehicle logs and each of vehicle states. Additionally, for example, difference generation log storage <NUM> may store a list of difference generation logs which have been subjected to replacement processing for replacing data values with predetermined values or rounding processing for rounding the data values. Additionally, for example, difference generation log storage <NUM> may store a list of difference generation logs in which the time information has been replaced with index information. Additionally, for example, difference generation log storage <NUM> may store a list of difference generation logs sorted by the magnitude of a value of the ID, where logs having the same ID are sorted by data size.

Difference generation log selector <NUM> receives the vehicle state extracted by vehicle state extractor <NUM> and selects a difference generation log from the list stored in difference generation log storage <NUM> in accordance with the extracted vehicle state. For example, difference generation log selector <NUM> selects the difference generation log corresponding to the extracted vehicle state. Difference generation log selector <NUM> then communicates a number of the selected difference generation log to difference log generator <NUM> and difference log transmitter <NUM>.

Difference log generator <NUM> generates a difference log based on the vehicle log obtained by vehicle log obtainer <NUM> and the difference generation log selected by difference generation log selector <NUM>. Specifically, difference log generator <NUM> receives the vehicle log from vehicle log obtainer <NUM>, receives the number of the difference generation log from difference generation log selector <NUM>, and obtains a difference generation log corresponding to the number of the difference generation log from difference generation log storage <NUM>. Then, for example, difference log generator <NUM> processes the vehicle log in accordance with rules, calculates a difference between the processed vehicle log and the difference generation log, and communicates a difference log, which is a result of the calculation, and vehicle log processing rules, which are the rules used to process the vehicle log, to difference log transmitter <NUM>. Details of the vehicle log processing rules and the difference log will be given later. For example, difference log generator <NUM> may generate the difference log for each ID included in the obtained vehicle log, based on data associated with the ID and the selected difference generation log corresponding to the ID. Additionally, for example, difference log generator <NUM> may further generate the difference log after subjecting the obtained vehicle log to replacement processing or rounding processing. Additionally, for example, difference log generator <NUM> may further generate the difference log after replacing the time information included in the obtained vehicle log with index information. Additionally, for example, difference log generator <NUM> may further generate the difference log after replacing the time information with index information for the obtained vehicle log and sorting by the magnitude of a value of the ID, where logs having the same ID are sorted by data size. Additionally, for example, difference log generator <NUM> may use the selected difference generation log as a data compression dictionary to compress the obtained vehicle log according to a predetermined compression algorithm, and generate the compressed vehicle log as the difference log.

Difference log transmitter <NUM> transmits the difference log generated by difference log generator <NUM>, and a difference generation log identifier corresponding to the difference generation log selected by difference generation log selector <NUM>, to the vehicle log analysis server. Specifically, difference log transmitter <NUM> receives the number of the difference generation log from difference generation log selector <NUM> as the difference generation log identifier, receives the difference log from difference log generator <NUM>, losslessly-compresses the difference log, and transmits the losslessly-compressed difference log and the number of the difference generation log to vehicle log analysis server <NUM>.

<FIG> is a block diagram illustrating vehicle log analysis server <NUM> according to Embodiment <NUM> of the present disclosure. Vehicle log analysis server <NUM> is a device that receives the vehicle log from vehicle log transmission device <NUM>. As illustrated in <FIG>, vehicle log analysis server <NUM> includes difference log receiver <NUM>, restoration log storage <NUM>, vehicle log restorer <NUM>, vehicle log storage <NUM>, anomalous log detector <NUM>, and anomaly notifier <NUM>.

Difference log receiver <NUM> is connected to external network <NUM>, receives the losslessly-compressed difference log and the difference generation log identifier (the number of the difference generation log) transmitted from vehicle log transmission device <NUM> (difference log transmitter <NUM>) over external network <NUM>, decompresses the losslessly-compressed difference log, and communicates the decompressed difference log and the number of the difference generation log to vehicle log restorer <NUM>.

Restoration log storage <NUM> stores a list of difference generation logs that is the same as the list of the difference generation log stored in the difference generation log storage of vehicle log transmission device <NUM>. In other words, restoration log storage <NUM> stores a list of difference generation logs, which are vehicle logs for each of vehicle states shared between vehicle log transmission device <NUM> and vehicle log analysis server <NUM>. For example, restoration log storage <NUM> may store a list of difference generation logs in which vehicle logs transmitted to vehicle log analysis server <NUM> in the past are associated with the vehicle states from when those vehicle logs were transmitted. Additionally, for example, restoration log storage <NUM> may store a list of difference generation logs for each of IDs included in the vehicle logs and each of vehicle states. Additionally, for example, restoration log storage <NUM> may store a list of difference generation logs which have been subjected to replacement processing for replacing data values with predetermined values or rounding processing for rounding the data values. Additionally, for example, restoration log storage <NUM> may store a list of difference generation logs in which the time information has been replaced with index information. Additionally, for example, restoration log storage <NUM> may store a list of difference generation logs sorted by the magnitude of a value of the ID, where logs having the same ID are sorted by data size.

Vehicle log restorer <NUM> specifies a difference generation log used to generate the difference log, from the difference generation log identifier and the list stored in restoration log storage <NUM>, and restores the vehicle log based on the difference log and the specified difference generation log. Specifically, vehicle log restorer <NUM> receives the difference log and the number of the difference generation log from difference log receiver <NUM>, obtains the difference generation log corresponding to the number of the difference generation log from restoration log storage <NUM>, calculates a difference between the difference log and the difference generation log, and restores the vehicle log. For example, vehicle log restorer <NUM> may restore the vehicle log for each ID included in the obtained difference log, based on data associated with the ID and the specified difference generation log corresponding to the ID. Additionally, for example, vehicle log restorer <NUM> may specify difference generation logs corresponding to a plurality of IDs starting from a predetermined ID, and restore the vehicle log based on the difference log and the specified difference generation log. Additionally, for example, vehicle log restorer <NUM> may further restore the vehicle log by referring to a time list which has been transmitted and replacing index information with time information. Additionally, for example, vehicle log restorer <NUM> may further restore the vehicle log by referring to a time list which has been transmitted, replacing index information with time information, and sorting by the earliest time. Additionally, for example, vehicle log restorer <NUM> may restore the vehicle log by using a specified difference generation log as a data compression dictionary and decompressing the difference log according to a predetermined compression algorithm. Furthermore, vehicle log restorer <NUM> records the vehicle log in vehicle log storage <NUM>. Details of the method for restoring the vehicle log will be given later.

Vehicle log storage <NUM> stores the restored vehicle log.

Anomalous log detector <NUM> monitors the restored vehicle logs stored in vehicle log storage <NUM>, detects a vehicle log which includes evidence of an attack as an anomalous log, and communicates the anomalous log to anomaly notifier <NUM>. For example, when the vehicle logs include a log manipulated by a vehicle apparatus at a timing different from a normal processing sequence, a log in which network communication including control values has been performed outside a normal range, and so on, anomalous log detector <NUM> assumes this is evidence of a cyber attack on vehicle <NUM>, and detects this as a security threat.

Anomaly notifier <NUM> notifies a predetermined notification target that there is an anomaly in the vehicle. Specifically, anomaly notifier <NUM> has a function for receiving the anomalous vehicle log from anomalous log detector <NUM> and notifying, for example, an operator using vehicle log analysis server <NUM>, a driver of the vehicle, or the like, who act as the predetermined notification target, of the anomaly.

<FIG> is a diagram illustrating an example of the vehicle log obtained by vehicle log obtainer <NUM> according to Embodiment <NUM> of the present disclosure. The vehicle log includes a plurality of pieces of data associated with corresponding IDs indicating data types. The vehicle log illustrated in <FIG> includes ID <NUM>, ID <NUM>, ID <NUM>, and ID <NUM> as the IDs. Additionally, the vehicle log illustrated in <FIG> includes a plurality of pieces of data, each piece of data having <NUM> bytes. When the <NUM>-byte data is taken as a single piece of data, an ID is associated with that single piece of data. Additionally, as illustrated in <FIG>, the plurality of pieces of data are arranged in such a manner that when a plurality of the IDs starting with a predetermined ID are taken as a single cycle, the plurality of IDs repeat in a cyclical manner. For example, assuming the predetermined ID is ID <NUM>, the plurality of pieces of data are arranged in such a manner that when ID <NUM>, ID <NUM>, ID <NUM>, and ID <NUM> are taken as a single cycle starting with ID <NUM>, ID <NUM>, ID <NUM>, ID <NUM>, and ID <NUM> repeat in a cyclical manner. Note that the predetermined ID is not limited to ID <NUM>. For example, assuming the predetermined ID is ID <NUM>, the plurality of pieces of data are arranged in such a manner that when ID <NUM>, ID <NUM>, ID <NUM>, and ID <NUM> are taken as a single cycle starting with ID <NUM>, ID <NUM>, ID <NUM>, ID <NUM>, and ID <NUM> repeat in a cyclical manner. Additionally, as illustrated in <FIG>, the plurality of pieces of data are associated with corresponding pieces of time information. For example, a time such as "<NUM>:<NUM>:<NUM>" (<NUM> hours, <NUM> minutes, <NUM> seconds) is the time information. In <FIG>, the vehicle log is constituted by a set including a time, an ID, and <NUM>-byte data (eight pieces of <NUM>-byte data). The time is the time at which the vehicle log was generated.

The ID is an identifier indicating the type of the data, and for example, specifies an event or a message serving as the basis for generating the vehicle log. For example, the ID is a process number when the vehicle log is an event indicating an ECU system operation; the ID is a frame ID when the vehicle log is a message based on the CAN or CAN-FD communication protocol; the ID is a slot ID when the vehicle log is a message based on the FlexRay communication protocol; and the ID is an IP address when the vehicle log is a message based on the Ethernet communication protocol.

Each of the plurality of pieces of data is, for example, <NUM>-byte data constituted by hexadecimal values from 0x00 to 0xFF for each single byte. In <FIG>, the data is indicated without the 0x hexadecimal notation. For example, in <FIG>, the first line in the vehicle log is an event or message generated at time "<NUM>:<NUM>:<NUM>", where the ID is "ID <NUM>", the first byte is "<NUM>" in hexadecimal notation, the second byte is "<NUM>" in hexadecimal notation, the third byte is "<NUM>" in hexadecimal notation, the fourth byte is "<NUM>" in hexadecimal notation, the fifth byte is "<NUM>" in hexadecimal notation, the sixth byte is "<NUM>" in hexadecimal notation, the seventh byte is "<NUM>" in hexadecimal notation, and the eighth byte is "<NUM>" in hexadecimal notation.

What the data value of each byte in the vehicle log represents is found by referring to the vehicle log definition table. Details of the vehicle log definition table will be given later.

Additionally, in <FIG>, the vehicle log having an ID of "ID <NUM>" is also generated at times "<NUM>:<NUM>:<NUM>", "<NUM>:<NUM>:<NUM>", and the like after being generated at time "<NUM>:<NUM>:<NUM>", which indicates that the event or message having an ID of "ID <NUM>" is being generated periodically.

Additionally, in <FIG>, the vehicle log having an ID of "ID <NUM>" is indicated as having been generated after the event or message having an ID of "ID <NUM>". In other words, the plurality of pieces of data are arranged in such a manner that the plurality of IDs (here, ID <NUM>, ID <NUM>, ID <NUM>, and ID <NUM>) repeat in a cyclical manner.

In this manner, the generation time and data of an event or message can be confirmed by referring to the vehicle log. Accordingly, whether or not vehicle system <NUM> has operated at a timing different from a normal processing sequence, whether or not network communication including a control value outside of normal range was performed, and so on can be determined using the vehicle log, which makes it possible to detect security threats.

<FIG> is a diagram illustrating an example of the vehicle log definition table used by vehicle state extractor <NUM> and difference log generator <NUM> according to Embodiment <NUM> of the present disclosure. The vehicle log definition table is a table that defines data types indicating what the data value of each byte represents for each ID in the vehicle log.

In <FIG>, when the ID is "ID <NUM>", the first byte defines "counter", and the second to eighth bytes define "vehicle number".

When the ID is "ID <NUM>", the first byte defines "counter", the second byte defines "checksum", the third and fourth bytes define "speed", the fifth byte defines "shift", and the sixth to eighth bytes are unused and are therefore undefined.

When the ID is "ID <NUM>", the first byte defines "counter", the second byte defines "checksum", the third and fourth bytes define "steering angle", and the fifth to eighth bytes are unused and are therefore undefined.

Next, when the ID is "ID <NUM>", the first byte defines "counter", the second byte defines "vehicle state", the third and fourth bytes define "location information", the fifth byte defines "wipers", the sixth byte defines "air conditioner", and the seventh and eighth bytes are unused and are therefore undefined.

The "vehicle number" which is defined is a <NUM>-byte value, and is a fixed value for each vehicle. The "speed", "steering angle", and "location information" which are defined are <NUM>-byte values, and are values from <NUM> to FFFF. The "checksum" and "counter" which are defined are <NUM>-byte values, and are values from <NUM> to FF. The "vehicle state" which is defined indicates "stopped" when the value is "<NUM>", "cruise control mode" when the value is "<NUM>", "Japan, Osaka Pref. , Osaka City" when the value is "<NUM>", and "rain, <NUM> degrees" when the value is "<NUM>". The "wipers" and "air conditioner" which are defined indicate "running" when the value is "<NUM>" and "not running" when the value is "<NUM>". The "shift" which is defined indicates "parking" when the value is "<NUM>" and "drive" when the value is "<NUM>". Here, "cruise control mode" is a mode in which vehicle <NUM> is caused to travel autonomously while following a vehicle in front of vehicle <NUM>.

By referring to the vehicle log and the vehicle log definition table, vehicle state extractor <NUM> can confirm, for example, where in the vehicle log the counter, checksum, and vehicle state are stored.

The vehicle log processing rules will be described next. The vehicle log processing rules are rules indicating what kind of rules were used when difference log generator <NUM> generated the processed vehicle log from the vehicle log. The vehicle log processing rules are generated when difference log generator <NUM> generates the processed vehicle log from the vehicle log.

<FIG> is a diagram illustrating an example of the vehicle log processing rules used by difference log generator <NUM> according to Embodiment <NUM> of the present disclosure. In <FIG>, the vehicle log processing rules are constituted by a set of a processing item, processing Y/N, a value before processing, and a value after processing.

The processing item is one of "time index", "ID sorting (ascending order)", "data sorting (ascending order)", and "data replacement". The vehicle log processing rules indicate rules for processing the vehicle log in order from the top.

"Time index" indicates rules for processing that replaces the times in the vehicle logs with index information. For example, in <FIG>, time index indicates rules for assigning serial numbers (T11, T12, and so on up to T54) to the times for each ID.

"ID sorting (ascending order)" indicates rules for processing the vehicle logs to be sorted in order from the lowest ID. Although <FIG> illustrates "ID sorting (ascending order)" as one example, when the logs are sorted in order from the highest ID, this is indicated as "ID sorting (descending order)".

"Data sorting (ascending order)" indicates rules for processing the vehicle logs having the same ID to be sorted in order from the lowest data for a specific byte, e.g., the fourth byte. Although <FIG> illustrates "data sorting (ascending order)" as one example, when the logs having the same ID are sorted in order from the highest data for a specific byte, this is indicated as "data sorting (descending order)".

"Data replacement" indicates a rule for processing that replaces the entirety of a data region corresponding to a specific data type (e.g., counter and checksum) denoted in the vehicle log definition table with a specific value (e.g., <NUM>).

Next, processing Y/N is either "yes" or "no", and indicates whether or not the rules have been applied to the corresponding processing item. When the rules have been applied to the corresponding processing item, processing Y/N is "yes", whereas when the rules have not been applied to the corresponding processing item, processing Y/N is "no".

The value before processing indicates the original value for the corresponding processing item in the vehicle log, whereas the value after processing indicates a value after processing the corresponding processing item in the vehicle log (i.e., the value in the processed vehicle log).

In <FIG>, processing Y/N is "yes" for the processing item "time index". For the value before processing of "<NUM>:<NUM>:<NUM>", the value after processing is "T11", and for the value before processing of "<NUM>:<NUM>:<NUM>", the value after processing is "T12".

In <FIG>, processing Y/N is "yes" for the processing items "ID sorting (ascending order)" and "data sorting (ascending order)". The value before processing and the value after processing are both "-", and "-" indicates a rule that the values are not to be replaced. This is because although the data is sorted with "ID sorting (ascending order)" and "data sorting (ascending order)", the data values themselves are not replaced.

Additionally, processing Y/N is "yes" for the processing item "data replacement" and the values before processing indicate the values of "counter" and "checksum", and this indicates a rule that the values of "counter" and "checksum" after processing are replaced with "<NUM>".

By sharing the vehicle log processing rules between vehicle log transmission device <NUM> and vehicle log analysis server <NUM>, the processed vehicle log processed by vehicle log transmission device <NUM> can be restored to the original vehicle log by vehicle log analysis server <NUM>. Note that when the processed vehicle log has been generated using predetermined rules and the difference generation log is generated using the predetermined rules, a time list indicating a correspondence relationship between at least the time information and the index information may be transmitted from vehicle log transmission device <NUM> to vehicle log analysis server <NUM> as the vehicle log processing rules when the predetermined rules are already held in vehicle log transmission device <NUM> and vehicle log analysis server <NUM> in advance. This is because vehicle log analysis server <NUM> can restore information aside from the time information using predetermined rules.

<FIG> is a diagram illustrating an example of the processed vehicle log generated by difference log generator <NUM> according to Embodiment <NUM> of the present disclosure. <FIG> is an example of the processed vehicle log obtained when the vehicle log illustrated in <FIG> is processed according to the vehicle log processing rules illustrated in <FIG>. In <FIG>, the processed vehicle log is constituted by a set including a time, an ID, and <NUM>-byte data, in the same manner as the vehicle log.

In <FIG>, the time in the processed vehicle log has been converted to a time index (T11, T12, and so on up to T54) in accordance with the "time index" rule in the vehicle log processing rules illustrated in <FIG>. For example, time "T11" is a time index obtained when replacing the time "<NUM>:<NUM>:<NUM>".

Furthermore, the processed vehicle log is sorted in order from the lowest ID.

The values of the data of the fourth byte in the lines with times "T53", "T13", and "T23" for the processed vehicle log having an ID of "ID <NUM>" are "<NUM>", "<NUM>", and "<NUM>", respectively, and are sorted in order from the lowest data of the fourth byte for that same ID, in accordance with the rule "data sorting (ascending order)" in the vehicle log processing rules illustrated in <FIG>.

According to the vehicle log definition table illustrated in <FIG>, the first byte in the processed vehicle log is "counter", and the values of the data are all replaced with "<NUM>" according to the rule "data replacement" in the vehicle log processing rules illustrated in <FIG>.

As described above, in the processed vehicle log, values which are highly likely to change when a vehicle log is generated, such as time, counter, checksum, event occurrence time, and the like, are converted to an index or are replaced with "<NUM>" or the like. Note that in the processed vehicle log, rounding processing may be performed to round detailed values from sensors of the like.

The difference generation log will be described next. The difference generation log is constituted by a set of an ID and data corresponding to the ID which can arise in each vehicle state. In the difference generation log, values which are highly likely to take on the same data values as in the vehicle log are set for each ID and each vehicle state.

For example, when the vehicle state is "stopped", it is likely that the speed of vehicle <NUM> is <NUM> and the shift state is parking.

Additionally, when the vehicle state is "cruise control mode", it is likely that the speed is a high speed greater than or equal to a predetermined speed and the shift state is drive, because that mode is often set when vehicle <NUM> is traveling on a highway.

Furthermore, when the vehicle state is "Japan, Osaka Pref. , Osaka City", it is likely that the speed of vehicle <NUM> is a low speed less than or equal to a predetermined speed, because the location of vehicle <NUM> is an urban area with many pedestrians.

When the vehicle state is "rain, <NUM> degrees", it is likely that the wipers are running and the air conditioner is not running in vehicle <NUM>.

<FIG> is a diagram illustrating an example of the difference generation log stored by difference generation log storage <NUM> according to Embodiment <NUM> of the present disclosure. In <FIG>, the difference generation log has numbers assigned to each vehicle state, and is constituted by sets of IDs and <NUM>-byte data. As with the vehicle log, what the data value of each byte in the difference generation log represents is found by referring to the vehicle log definition table.

In <FIG>, the difference generation log having the number "<NUM>" is a difference generation log in which the vehicle state is "stopped". In the second set, the ID is "ID <NUM>", the value of counter in the first byte is "<NUM>", the value of checksum in the second byte is "<NUM>", the values of speed in the third and fourth bytes are "<NUM>" and "<NUM>", and the value of shift in the fifth byte is "parking", indicated by "<NUM>".

The difference generation log having the number "<NUM>" is a difference generation log in which the vehicle state is "cruise control mode". In the second set, the ID is "ID <NUM>", the value of counter in the first byte is "<NUM>", the value of checksum in the second byte is "<NUM>", the values of speed in the third and fourth bytes are "<NUM>" and "<NUM>", and the value of shift in the fifth byte is "drive", indicated by "<NUM>".

The difference generation log having the number "<NUM>" is a difference generation log in which the vehicle state is "Japan, Osaka Pref. , Osaka City". In the fourth set, the ID is "ID <NUM>", the value of counter in the first byte is "<NUM>", the value of vehicle state in the second byte is "<NUM>", indicating "Japan, Osaka Pref. , Osaka City", the values of location information in the third and fourth bytes are "<NUM>" and "<NUM>", the value of wipers in the fifth byte is "<NUM>", indicating not running, and the value of air conditioner in the sixth byte is "<NUM>", indicating not running.

The difference generation log having the number "<NUM>" is a difference generation log in which the vehicle state is "rain, <NUM> degrees". In the fourth set, the ID is "ID <NUM>", the value of counter in the first byte is "<NUM>", the value of vehicle state in the second byte is "<NUM>", indicating "rain, <NUM> degrees", the values of location information in the third and fourth bytes are "<NUM>" and "<NUM>", the value of wipers in the fifth byte is "<NUM>", indicating running, and the value of air conditioner in the sixth byte is "<NUM>", indicating not running.

The difference log will be described in detail next. Difference log generator <NUM> generates the difference log from the processed vehicle log using the difference generation log. The difference log is generated so as to reduce differences from the difference generation log. This is because as the difference decreases, the data compression rate of the difference log increases, which makes it possible to reduce the amount of communication. Based on the vehicle state of vehicle <NUM>, the difference generation log of the corresponding vehicle state is used to generate the difference log.

<FIG> is a diagram illustrating an example of the difference log generated by difference log generator <NUM> according to Embodiment <NUM> of the present disclosure.

In <FIG>, the difference log is constituted by a set including a time, an ID, and <NUM>-byte data, in the same manner as the processed vehicle log. In <FIG>, the difference log is a difference log generated using the processed vehicle log illustrated in <FIG> and the difference generation log illustrated in <FIG>. In <FIG>, the vehicle state in the second byte of the processed vehicle log having an ID of "ID <NUM>" is "<NUM>", indicating cruise control mode. Accordingly, the difference generation log for cruise control mode, for which the difference generation log number is "<NUM>", is used to generate the difference log.

The difference log is a result of performing an exclusive OR operation using the value of each single byte corresponding to the ID of the processed vehicle log and the value of each single byte of the data in the difference generation log having the same ID value.

An exclusive OR operation is used to generate the difference log in this manner because when restoring the processed vehicle log on the vehicle log analysis server <NUM> side using the difference log and the difference generation log, vehicle log analysis server <NUM> also performs an exclusive OR operation using the value of each single byte corresponding to the ID of the difference log and the value of each single byte corresponding to the data in the difference generation log.

In <FIG>, the data from the first to eighth bytes is "<NUM>" for the ID "ID <NUM>" at the time "T11" in the difference log. In <FIG>, for the ID "ID <NUM>" at the time "T11" in the processed vehicle log, the first byte is "<NUM>", the second byte is "<NUM>", the third byte is "<NUM>", and the fourth to eighth bytes are "<NUM>", and for the ID "ID <NUM>" in the difference generation log having a difference generation log number of "<NUM>" in <FIG>, the first byte is "<NUM>", the second byte is "<NUM>", the third byte is "<NUM>", and the fourth to eighth bytes are "<NUM>". As such, the values resulting from an exclusive OR operation on these values are "<NUM>" for the first to eighth bytes.

For the ID "ID <NUM>" at time "T11" in the difference log, the first to eighth bytes are "<NUM>"; for the ID "ID <NUM>" of the difference generation log having a difference generation log number of "<NUM>", the first byte is "<NUM>", the second byte is "<NUM>", the third byte is "<NUM>", and the fourth to eighth bytes are "<NUM>". The values resulting from the exclusive OR operation performed on these values in the difference log and the difference generation log are, for ID "ID <NUM>" at time "T11" in the processed vehicle log, "<NUM>" for the first byte, "<NUM>" for the second byte, "<NUM>" for the third byte, and "<NUM>" for the fourth to eighth bytes, and thus the processed vehicle log can be restored from the difference log.

In <FIG>, for the ID "ID <NUM>" at time "T22" in the difference log, the data is "<NUM>" for the first to third bytes and the fifth to eighth bytes, and only the fourth byte is "<NUM>". In <FIG>, for the ID "ID <NUM>" at time "T22" in the processed vehicle log, the first, second, and sixth to eighth bytes are "<NUM>", the third and fourth bytes, which indicate speed, are "<NUM>" and "<NUM>", and the fifth byte, indicating shift, is "<NUM>". For the ID "ID <NUM>" in the difference generation log having a difference generation log number of "<NUM>" in <FIG>, the first, second, and sixth to eighth bytes are "<NUM>", the third and fourth bytes are "<NUM>" and "<NUM>", and the fifth byte is "<NUM>". As such, the values resulting from an exclusive OR operation on these values are "<NUM>" for the first to third bytes and the fifth to eighth bytes, and "<NUM>" for the fourth byte.

For the ID "ID <NUM>" at time "T22" in the difference log, the first to third and fifth to eighth bytes are "<NUM>", and the fourth byte is "<NUM>"; for the ID "ID <NUM>" of the difference generation log having a difference generation log number of "<NUM>", the first, second, and sixth to eighth bytes are "<NUM>", the third and fourth bytes are "<NUM>" and "<NUM>", and the fifth bytes is "<NUM>". The values resulting from the exclusive OR operation performed on these values in the difference log and the difference generation log are, for ID "ID <NUM>" at time "T22" in the processed vehicle log, "<NUM>" for the first to third and fifth to eighth bytes and "<NUM>" for the fourth byte, and thus the processed vehicle log can be restored from the difference log.

Processing through which vehicle log transmission device <NUM> generates and transmits the difference log will be described next.

<FIG> is a diagram illustrating a processing sequence through which vehicle log transmission device <NUM> generates and transmits the difference log according to Embodiment <NUM> of the present disclosure.

(S1001) Vehicle log obtainer <NUM> of vehicle log transmission device <NUM> obtains the vehicle log and communicates the vehicle log to vehicle state extractor <NUM>.

(S1002) Vehicle state extractor <NUM> receives the vehicle log, refers to the vehicle log definition table, and extracts the vehicle state from the vehicle log.

(S1003) Vehicle state extractor <NUM> communicates the extracted vehicle state to difference generation log selector <NUM>.

(S1004) Difference generation log selector <NUM> receives the vehicle state.

(S1005) Difference generation log selector <NUM> selects the difference generation log corresponding to the received vehicle state, and communicates the number of the selected difference generation log to difference log generator <NUM>.

(S1006) Difference log generator <NUM> receives the number of the difference generation log and obtains the difference generation log corresponding to the number of the difference generation log from difference generation log storage <NUM>.

(S1007) Vehicle log obtainer <NUM> communicates the vehicle log to difference log generator <NUM>.

(S1008) Difference log generator <NUM> receives the communicated vehicle log.

(S1009) Difference log generator <NUM> generates the processed vehicle log from the received vehicle log. The rules used when generating the processed vehicle log are taken as the vehicle log processing rules. Furthermore, difference log generator <NUM> generates the difference log using the processed vehicle log and the difference generation log, and communicates the difference log, the number of the difference generation log, and the vehicle log processing rule to difference log transmitter <NUM>.

(S1010) Difference log transmitter <NUM> receives the communicated difference log, difference generation log number, and vehicle log processing rules.

(S1011) Difference log transmitter <NUM> compresses the received difference log, and transmits the compressed difference log, the difference generation log number, and the vehicle log processing rules to vehicle log analysis server <NUM>.

Processing through which vehicle log analysis server <NUM> receives the difference log and performs anomaly detection processing will be described next.

<FIG> is a diagram illustrating a processing sequence through which vehicle log analysis server <NUM> receives the difference log according to Embodiment <NUM> of the present disclosure.

(S1102) Difference log receiver <NUM> receives the compressed difference log, the difference generation log number, and the vehicle log processing rules, decompresses the compressed difference log, and communicates the decompressed difference log, the difference generation log number, and the vehicle log processing rules to vehicle log restorer <NUM>.

(S1103) Vehicle log restorer <NUM> receives the communicated difference log, difference generation log number, and vehicle log processing rules, and obtains the difference generation log corresponding to the number of the difference generation log from restoration log storage <NUM>.

(S1104) Vehicle log restorer <NUM> restores the vehicle log from the difference log and the difference generation log, stores the vehicle log in vehicle log storage <NUM>, and communicates the vehicle log to anomalous log detector <NUM>.

(S1105) Anomalous log detector <NUM> receives the communicated vehicle log.

(S1106) Anomalous log detector <NUM> detects whether or not the received vehicle log contains an anomaly, and when the vehicle log contains an anomaly, communicates the anomaly to anomaly notifier <NUM>.

(S1107) Anomaly notifier <NUM> receives the communicated anomaly, and communicates the anomaly to a user of vehicle log analysis server <NUM> or the driver of vehicle <NUM> in which the anomalous vehicle log was generated.

Processing through which difference log generator <NUM> generates the processed vehicle log from the vehicle log according to the rules will be described next. The rules are settings made by a user of vehicle log analysis system <NUM>, a user of vehicle <NUM>, or the like, for example.

<FIG> is a flowchart illustrating the processed vehicle log generation processing performed by difference log generator <NUM> according to Embodiment <NUM> of the present disclosure.

(S1201) Difference log generator <NUM> obtains the vehicle log from vehicle log obtainer <NUM>.

(S1202) Difference log generator <NUM> determines whether or not to process the "time" in the vehicle log in accordance with the rules. When difference log generator <NUM> determines that the "time" in the vehicle log is to be processed (YES), the processing of step S1203 is performed. When difference log generator <NUM> determines that the "time" in the vehicle log is not to be processed (NO), the vehicle log processing rules are generated with the processing item being "time index" and processing Y/N being "no". Difference log generator <NUM> then performs the processing of step S1205.

(S1203) Difference log generator <NUM> generates a time list with the processing item being "time index", processing Y/N being "yes", the time of the vehicle log being the value before processing, and the serial numbers of the time index being the value after processing.

When difference log generator <NUM> determines that the "time" in the vehicle log is to be processed, this means, for example, that the stated rule is a rule (a setting) that the "time" in the vehicle log is to be processed. Additionally, when difference log generator <NUM> determines that the "time" in the vehicle log is not to be processed, this means, for example, that the stated rule is a rule (a setting) that the "time" in the vehicle log is not to be processed. The vehicle log processing rules generated in step S1203 correspond to the "time index" line in <FIG>, and these vehicle log processing rules are an example of the time list indicating the correspondence relationship between the time information and the index information. From this time list, it can be seen, for example, that the time "<NUM>:<NUM>:<NUM>" and the time index "T11" correspond.

(S1204) Difference log generator <NUM> refers to the value before processing and the value after processing in the time list, and replaces the time in the vehicle log with the serial numbers of the time index, which is the value after processing.

(S1205) Difference log generator <NUM> determines whether or not to sort the "ID" in the vehicle log in order from the lowest ID in accordance with the rules. When difference log generator <NUM> determines to sort the "ID" in the vehicle log (YES), the vehicle log processing rules are generated with the processing item being "ID sorting (ascending order)", processing Y/N being "yes", the value before processing being "-", and the value after processing being "-". Difference log generator <NUM> then performs the processing of step S1206. When difference log generator <NUM> determines not to sort the "ID" in the vehicle log (NO), the vehicle log processing rules are generated with the processing item being "ID sorting (ascending order)" and processing Y/N being "no". Difference log generator <NUM> then performs the processing of step S1207.

When difference log generator <NUM> determines to sort the "ID" in the vehicle log, this means, for example, that the stated rule is a rule (a setting) that the "ID" in the vehicle log is to be sorted. Additionally, when difference log generator <NUM> determines to not sort the "ID" in the vehicle log, this means, for example, that the stated rule is a rule (a setting) that the "ID" in the vehicle log is not to be sorted. The vehicle log processing rules generated after the determination in step S1205 correspond to the line for "ID sorting (ascending order)" in <FIG>.

(S1206) Difference log generator <NUM> sorts the vehicle logs in order from the lowest ID.

(S1207) Difference log generator <NUM> determines whether or not to sort the "data" in the vehicle log in order from the smallest data in accordance with the rules. When difference log generator <NUM> determines to sort the "data" in the vehicle log (YES), the vehicle log processing rules are generated with the processing item being "data sorting (ascending order)", processing Y/N being "yes", the value before processing being "-", and the value after processing being "-". Difference log generator <NUM> then performs the processing of step S1208. When difference log generator <NUM> determines not to sort the "data" in the vehicle log (NO), the vehicle log processing rules are generated with the processing item being "data sorting (ascending order)" and processing Y/N being "no". Difference log generator <NUM> then performs the processing of step S1209.

When difference log generator <NUM> determines to sort the "data" in the vehicle log, this means, for example, that the stated rule is a rule (a setting) that the "data" in the vehicle log is to be sorted. Additionally, when difference log generator <NUM> determines to not sort the "data" in the vehicle log, this means, for example, that the stated rule is a rule (a setting) that the "data" in the vehicle log is not to be sorted. The vehicle log processing rules generated after the determination in step S1207 correspond to the line for "data sorting (ascending order)" in <FIG>.

(S1208) Difference log generator <NUM> sorts the vehicle logs in order from the smallest data.

(S1209) Difference log generator <NUM> determines whether or not to process predetermined "data" in the vehicle log in accordance with the rules. When difference log generator <NUM> determines to process the predetermined "data" in the vehicle log (YES), the vehicle log processing rules are generated with the processing item being "data replacement", processing Y/N being "yes", the value before processing being "counter", the value after processing being "<NUM>", the value before processing being "checksum", and the value after processing being "<NUM>". Difference log generator <NUM> then performs the processing of step S1210. When difference log generator <NUM> determines not to process the predetermined "data" in the vehicle log (NO), the vehicle log processing rules are generated with the processing item being "data replacement" and processing Y/N being "no". Difference log generator <NUM> then performs the processing of step S1211.

When difference log generator <NUM> determines to process the predetermined "data" in the vehicle log, this means, for example, that the stated rule is a rule (a setting) that the predetermined "data" in the vehicle log is to be processed. Additionally, when difference log generator <NUM> determines not to process the predetermined "data" in the vehicle log, this means, for example, that the stated rule is a rule (a setting) that the predetermined "data" in the vehicle log is not to be processed. The vehicle log processing rules generated after the determination in step S1209 correspond to the line for "data replacement" in <FIG>.

(S1210) Difference log generator <NUM> replaces the value of counter with "<NUM>" and the value of checksum with "<NUM>" in the vehicle log.

(S1211) Difference log generator <NUM> stores the processed vehicle log obtained by processing the vehicle log.

Processing through which vehicle log transmission device <NUM> generates the difference log from the processed vehicle log using the difference generation log will be described next. <FIG> is a flowchart illustrating the difference log generation processing performed by vehicle log transmission device <NUM> according to Embodiment <NUM> of the present disclosure.

(S1301) Vehicle state extractor <NUM> of vehicle log transmission device <NUM> obtains the vehicle state from the obtained vehicle log. Vehicle state extractor <NUM> communicates the obtained vehicle state to difference generation log selector <NUM>.

(S1302) Difference generation log selector <NUM> determines what state the communicated vehicle state is. Difference generation log selector <NUM> performs the processing of step S1303 when the vehicle state is "stopped", performs step S1304 when the vehicle state is "cruise control mode", performs step S1305 when the vehicle state is "Japan, Osaka Pref. , Osaka City", and performs step S1306 when the vehicle state is "rain, <NUM> degrees".

(S1303) Difference generation log selector <NUM> selects the difference generation log of "stopped", having the difference generation log number of "<NUM>", from difference generation log storage <NUM>. Difference generation log selector <NUM> communicates the number of the selected difference generation log to difference log generator <NUM>.

(S1304) Difference generation log selector <NUM> selects the difference generation log of "cruise control mode", having the difference generation log number of "<NUM>", from difference generation log storage <NUM>. Difference generation log selector <NUM> communicates the number of the selected difference generation log to difference log generator <NUM>.

(S1305) Difference generation log selector <NUM> selects the difference generation log of "Japan, Osaka Pref. , Osaka City", having the difference generation log number of "<NUM>", from difference generation log storage <NUM>. Difference generation log selector <NUM> communicates the number of the selected difference generation log to difference log generator <NUM>.

(S1306) Difference generation log selector <NUM> selects the difference generation log of "rain, <NUM> degrees", having the difference generation log number of "<NUM>", from difference generation log storage <NUM>. Difference generation log selector <NUM> communicates the number of the selected difference generation log to difference log generator <NUM>.

(S1307) Difference log generator <NUM> generates the processed vehicle log by processing the vehicle log, and generates the difference log by calculating, for each ID, a difference between the processed vehicle log and the difference generation log corresponding to the number of the difference generation log which has been communicated.

Processing through which vehicle log analysis server <NUM> restores the difference log, transmitted from vehicle log transmission device <NUM>, into the vehicle log will be described next.

<FIG> is a flowchart illustrating the vehicle log restoration processing performed by vehicle log restorer <NUM> according to Embodiment <NUM> of the present disclosure.

(S1401) Vehicle log restorer <NUM> obtains the difference log and the vehicle log processing rules from difference log receiver <NUM>, and furthermore obtains the difference generation log from restoration log storage <NUM>.

(S1402) Vehicle log restorer <NUM> performs an exclusive OR operation on the difference log and the difference generation log, and restores the processed vehicle log.

(S1403) Vehicle log restorer <NUM> determines whether or not processing Y/N is "yes" for the processing item "time index" in the vehicle log processing rules. When vehicle log restorer <NUM> determines that this is "yes" (YES), the processing of step S1404 is performed, whereas when vehicle log restorer <NUM> determines that this is "no" (NO), the processing of step S1405 is performed. determines that this is "no" (NO), the processing of step S1405 is performed.

(S1404) If the time (time index) in the processed vehicle log matches the value after processing for the processing item "time index" in the vehicle log processing rules, vehicle log restorer <NUM> replaces the time in the processed vehicle log with the value before processing for the processing item "time index" in the vehicle log processing rules.

(S1405) Vehicle log restorer <NUM> sorts the processed vehicle log in order by the earliest time.

(S1406) Vehicle log restorer <NUM> stores the processed vehicle log obtained after the processing of steps S1403 to S1405 has been performed as the vehicle log.

As described thus far, Embodiment <NUM> has been given as an example of the technique according to the present disclosure. However, the technique in the present disclosure is not limited thereto, and can also be applied in embodiments in which modifications, are made within the scope of the appended claims. For example, variations such as those described below are also included in the embodiments of the present disclosure.

It is generally known that compression rates can be improved by using data resembling the data to be compressed as a compression dictionary. For example, when the data included in a compression dictionary is divided into units of N bytes and the divided data of every N bytes is associated with an identifier of the divided data, if the data to be compressed is divided into units of N bytes and the divided data to be compressed matches the divided data in the compression dictionary, the data can be replaced with the identifier of the divided data.

In other words, if the data is similar, much of the divided data can be replaced with identifiers, which makes efficient data compression possible.

(<NUM>) Although the foregoing embodiment describes the difference generation log as being shared between vehicle log transmission device <NUM> and vehicle log analysis server <NUM> in advance, the difference generation log may be shared dynamically between vehicle log transmission device <NUM> and vehicle log analysis server <NUM>. For example, the vehicle log transmitted from vehicle log transmission device <NUM> to vehicle log analysis server <NUM>, and the vehicle state at the time of that transmission, may be stored in difference generation log storage <NUM> and restoration log storage <NUM> as the difference generation log. In this case, it is not absolutely necessary for difference generation log storage <NUM> and restoration log storage <NUM> to store the difference generation log for each ID.

When the difference generation log is not stored for each ID, difference log generator <NUM> generates the difference log by calculating a difference between each line of the processed vehicle log to be transmitted and the difference generation log, in order from the first line, and vehicle log restorer <NUM> then restores the vehicle log by calculating the difference between each line of the difference log and the difference generation log in order from the first line. This makes it unnecessary to set the difference generation log for each vehicle state in advance, which suppresses development costs.

Additionally, when difference generation log storage <NUM> and restoration log storage <NUM> do not store the difference generation log for each ID, difference log generator <NUM> may delete lines in the difference generation log from the last line so as to have the same number of lines or data size as the processed vehicle log to be transmitted. In this case, in the vehicle log processing rules, "difference generation log deletion" is denoted for "processing item", "yes" for "processing Y/N", the deleted number of lines or data size for "value before processing", and "-" for "value after processing". The difference log may be generated by calculating a difference between each line of the processed vehicle log to be transmitted and the difference generation log, in order from the first line; vehicle log restorer <NUM> may then refer to the vehicle log processing rules, and when "processing Y/N" is "yes" for "difference generation log deletion", the number of lines or the equivalent data size may be deleted from the last line in the difference generation log, and the vehicle log may be restored by calculating the difference between each line of the difference log and the difference generation log in order from the first line.

Additionally, when difference generation log storage <NUM> and restoration log storage <NUM> do not store the difference generation log for each ID, difference log generator <NUM> may delete lines in the difference generation log from the first line in such a manner that the ID included in the first line of the difference generation log matches the ID included in the first line of the processed vehicle log to be transmitted or a predetermined ID. In this case, in the vehicle log processing rules, "difference generation log ID matching" is denoted for "processing item", "yes" for "processing Y/N", the deleted number of lines for "value before processing", and "-" for "value after processing". The difference log may be generated by calculating a difference between each line of the processed vehicle log to be transmitted and the difference generation log, in order from the first line; vehicle log restorer <NUM> may then refer to the vehicle log processing rules, and when "processing Y/N" is "yes" for "difference generation log ID matching", the number of lines denoted in the vehicle log processing rules may be deleted from the first line in the difference generation log, and the vehicle log may be restored by calculating the difference between each line of the difference log and the difference generation log in order from the first line.

Additionally, difference generation log storage <NUM> and restoration log storage <NUM> may store the difference generation log dynamically for each ID. When a plurality of one-line logs having the same ID are present in the vehicle log, the average value of each first line or byte, a median value of each byte, or a most frequently-appearing value for each byte, among the one-line logs having the same ID, may be employed and stored for each ID.

Specifically, the method includes a vehicle log transmitting method performed by vehicle log transmission device <NUM> and a vehicle log receiving method performed by vehicle log analysis server <NUM>. The vehicle log transmission/reception method transmits a vehicle log from vehicle log transmission device <NUM> to vehicle log analysis server <NUM>. Vehicle log transmission device <NUM> includes difference generation log storage <NUM> that stores a list of difference generation logs, each difference generation log being a vehicle log for each of vehicle states shared between vehicle log transmission device <NUM> and vehicle log analysis server <NUM>. Vehicle log analysis server <NUM> includes restoration log storage <NUM> that stores the list. As illustrated in <FIG>, the vehicle log transmitting method includes: obtaining the vehicle log (step S1001); extracting a vehicle state from the obtained vehicle log (step S1002); selecting a difference generation log from the list in accordance with the extracted vehicle state (step S1005); generating a difference log based on the obtained vehicle log and the selected difference generation log (step S1009); and transmitting, to vehicle log analysis server <NUM>, the generated difference log and a difference generation log identifier corresponding to the selected difference generation log (step S1011). As illustrated in <FIG>, the vehicle log receiving method includes: receiving the difference log and the difference generation log identifier transmitted in the transmitting (step S1102); and specifying the difference generation log used to generate the difference log from the difference generation log identifier and the list, and restoring the vehicle log based on the difference log and the specified difference generation log (steps S1103 and S1104).

(<NUM>) As one aspect of the present disclosure, the vehicle log transmission/reception method may be a program (a computer program) that implements these methods on a computer, or a digital signal constituting the computer program. Additionally, one aspect of the present disclosure may be computer programs or digital signals recorded in a computer-readable recording medium such as a flexible disk, hard disk, CD-ROM, MO, DVD, DVD-ROM, DVD-RAM, BD (Blu-ray (registered trademark) Disc), semiconductor memory, or the like. The constituent elements may also be the digital signals recorded in such a recording medium. Additionally, one aspect of the present disclosure may be realized by transmitting the computer program or digital signal via a telecommunication line, a wireless or wired communication line, a network such as the Internet, a data broadcast, or the like. Additionally, one aspect of the present disclosure may be a computer system including a microprocessor and memory, where the memory records the above-described computer program and the microprocessor operates in accordance with the computer program. Additionally, the present disclosure may be implemented by another independent computer system, by recording the program or the digital signal in the recording medium and transferring the recording medium, or by transferring the program or the digital signal over the network or the like. network or the like.

Claim 1:
A vehicle log transmission device that transmits a vehicle log to a vehicle log analysis server (<NUM>), the vehicle log transmission device comprising:
a vehicle log obtainer (<NUM>) that obtains the vehicle log; and
a log transmitter;
characterized by
a vehicle state extractor (<NUM>) that extracts a vehicle state from the obtained vehicle log;
a difference generation log storage (<NUM>) that stores a list of difference generation logs, each difference generation log being a vehicle log for a different vehicle state shared between the vehicle log transmission device and the vehicle log analysis server (<NUM>);
a difference generation log selector (<NUM>) that selects a difference generation log from the list in accordance with the extracted vehicle state; and
a difference log generator (<NUM>) that generates a difference log based on the obtained vehicle log and the selected difference generation log; and in that
said log transmitter is a difference log transmitter (<NUM>) that transmits, to the vehicle log analysis server (<NUM>), the generated difference log and a difference generation log identifier corresponding to the selected difference generation log, and
the vehicle state extractor extracts at least one of a vehicle speed, a driving assistance mode, an autonomous driving mode, a travel location, weather, or temperature, included in the vehicle log, as the vehicle state.