ECUPrint (Datasets)

Physical Fingerprinting Electronic Control Units on CAN Buses inside Cars and SAE J1939 Compliant Vehicles [pdf]


Abstract: We fingerprint 54 ECUs from 10 cars, one of which is a heavy-duty vehicle compliant to the SAE J1939 standard. These later specifications implemented in commercial vehicles offer concrete sender addresses in every CAN frame, making physical characteristics easier to link to specific ECUs. This is not the case for traffic collected inside passenger cars where the allocation of CAN bus identifiers is non-uniform, without explicit sender and receiver addresses, making ECU identification more challenging. While previous research has shown good separation between ECUs even when single features are used, e.g., skews or maximum voltage level, prior results are based on a small number of cars, while our larger experimental basis proves that single features are likely insufficient to separate between a large number of ECUs. Concretely, for a crisp separation, at least four features seem to be needed, i.e., mean voltage, max voltage, bit time and plateau time, while clock skews or any single voltage feature lead to overlaps. We provide clear experimental bounds on the intra and inter-distances of skews and voltage features, not neglecting environmental variations which may occur when the car is running.


1. Concept

Skew and voltage data is collected from 10 vehicles, ranging from small cars to SUVs and a heavy-duty vehicle, totaling 54 ECUs. In order to enable the CAN data collection we employed two devices: a CANcaseXL and a Pico Scope 5000 Series. The voltage collection setup is shown below: the CAN bus is accessed via the OBD-II pins with the previously mentioned tools.

setup

Voltage data

For each frame carrying a specific ID we have collected samples for an isolated dominant bit which is a transition from recessive to dominant and back (the shape of an isolated bit, along with the features we extract is shown below). We use the following voltage features: i) the mean voltage level, ii) max voltage level and iii) bit time. In addition to these metrics, which are commonly used in other works, we also note that the iv) plateau time of the bit also provides good indications on the sender ECU, so we introduce this as an additional metric.

voltage_bit

Skew vs. voltage data fingerprints

To extract the clock skews, we use the CAN logs which contain the frame identifiers and associated timestamps. In order to perform data collection for skews we used the XL Driver Library and recorded the available CAN frames through the diagnostics port. We logged CAN traffic over periods of 5 to 10 minutes for each vehicle while it was operational. Skews provide a good separation for ECUs in the same vehicle, but there are still slight overlaps between multiple ECUs in distinct vehicles. Merging multiple features, i.e., the mean, max, bit and plateau time, makes the separation much clearer. This is visible in the two images shown below.

skews_distances voltage_distances
                         Skew-based separation                                                  Voltage-based separation

2. Dataset

Dataset content The dataset is structured as described below. We provide the raw CAN voltage samples measured with the PicoScope with a sample interval of 2 nanoseconds (sample rate was set to 500 MS/s) and separate CAN logs with frames collected with a Vector CANCaseXL device. For the Honda Civic and Ford Fiesta additional datasets are available. The first datasets were collected after vehicle startup (cold engine) and other sets after 15 minutes, 30 minutes and 1 hour drive (warm engine). The datasets are available in four distinct packages:

a) CAN voltages collected for 10 cars (181,874 sampled bits). Data is allocated to specific ECUs based on the analysis in our work. Note that this distribution is to the best we could ascertain based on our analysis, we do not claim this separation to be absolute. There are several IDs in folder named unclassified which were on-event and for which skews could not be computed and which are not part of our main analysis.

b) CAN voltages under environmental variations (47,636 sampled bits). These datasets are for 2 of the cars that we analyze: Ford Fiesta and Honda Civic.

c) All voltage as a single archive (229,510 sampled bits) which includes all data for a) and b).

d) CAN logs is the data logged from the bus with the CANCaseXL. For 3 out of the 10 cars (John Deere, Ford Ecosport and Fiesta), the log file contains several IDs which were on-event and for which voltage data was not collected and are not associated to a specific ECU. More details on these are available in the paper.

Summary of devices and associated measurements

Number                  

Vehicle                            

Model year                  

No. of IDs                  

No. of identified ECUs                  

No. of collected bits (voltage)                 

No. of collected frames (skew)                  

(i) Honda Civic 2012-2017 43 6 40,073 1,039,512
(ii) Opel Corsa 2006-2014 29 4 9,187 442,992
(iii) Hyundai i20 2014-2020 40 7 17,767 616,296
(iv) John Deere Tractor 2010-2018 33 3 4,021 154,779
(v) Dacia Duster 2010-2017 12 3 9,086 247,154
(vi) Dacia Logan 2012-2019 46 6 31,579 629,662
(vii) Hyundai ix35 2009-2015 26 6 23,104 847,161
(viii) Ford Fiesta 2017-2020 46 6 43,861 2,243,359
(ix) Ford Kuga 2013-2019 70 9 28,024 1,233,545
(x) Ford Ecosport 2018-2021 87 4 22,808 759,421
Total - - 432 54 229,510 8,213,881



vehicleecus


Numerical data for skews and voltage features determined in our work together with ID classification per ECUs for each vehicle based on the features are presented in the supplemental material.

Data links

[ECUPrint] CAN voltage samples with ECU allocation.zip
[ECUPrint] CAN voltage samples under environmental variations.zip
[ECUPrint] CAN voltage samples (full).zip
[ECUPrint] CAN logs.zip



Folder structure

CAN voltage samples with ECU allocation
|
|------ Dacia Duster
|        |------ ECU1
|        |------ ECU2
|        |------ ECU3
|
|------ Dacia Logan
|        |------ ECU1
|        |------ ECU2
|        |------ ECU3
|        |------ ECU4
|        |------ ECU5
|        |------ ECU6
|
|------ Ford Ecosport
|        |------ ECU1
|        |------ ECU2
|        |------ ECU3
|        |------ ECU4
|        |------ Unclassified
|
|------ Ford Fiesta
|        |------ 1_0min (car start)
|                  |------ ECU1
|                  |------ ECU2
|                  |------ ECU3
|                  |------ ECU4
|                  |------ ECU5
|                  |------ ECU6
|                  |------ Unclassified
|        |------ 2_10min (10 minutes after car start)
|                  |------ ECU1
|                  |------ ECU2
|                  |------ ECU3
|                  |------ ECU4
|                  |------ ECU5
|                  |------ ECU6
|                  |------ Unclassified
|
|------ Ford Kuga
|        |------ ECU1
|        |------ ECU2
|        |------ ECU3
|        |------ ECU4
|        |------ ECU5
|        |------ ECU6
|        |------ ECU7
|        |------ ECU8
|        |------ ECU9
|
|------ Honda Civic
|        |------ ECU1
|        |------ ECU2
|        |------ ECU3
|        |------ ECU4
|        |------ ECU5
|        |------ ECU6
|
|------ Hyundai i20
|        |------ ECU1
|        |------ ECU2
|        |------ ECU3
|        |------ ECU4
|        |------ ECU5
|        |------ ECU6
|        |------ ECU7
|
|------ Hyundai ix35
|        |------ ECU1
|        |------ ECU2
|        |------ ECU3
|        |------ ECU4
|        |------ ECU5
|        |------ ECU6
|
|------ John Deere Tractor
|        |------ ECU1
|        |------ ECU2
|        |------ ECU3
|        |------ Unclassified
|
|------ Opel Corsa
|        |------ ECU1
|        |------ ECU2
|        |------ ECU3
|        |------ ECU4


CAN voltage samples under environmental variations
|
|------ Ford Fiesta
|        |------ 1_30min (30 minutes after car start)
|                  |------ ECU1
|                  |------ ECU2
|                  |------ ECU3
|                  |------ ECU4
|                  |------ ECU5
|                  |------ ECU6
|                  |------ Unclassified
|        |------ 2_60min (60 minutes after car start)
|                  |------ ECU1
|                  |------ ECU2
|                  |------ ECU3
|                  |------ ECU4
|                  |------ ECU5
|                  |------ ECU6
|                  |------ Unclassified
|------ Honda Civic
|        |------ 1_10min_static (10 minutes after car start, stationary car)
|                  |------ ECU1
|                  |------ ECU2
|                  |------ ECU3
|                  |------ ECU4
|                  |------ ECU5
|                  |------ ECU6
|        |------ 2_30min_static (30 minutes after car start, stationary car)
|                  |------ ECU1
|                  |------ ECU2
|                  |------ ECU3
|                  |------ ECU4
|                  |------ ECU5
|                  |------ ECU6
|        |------ 3_60min_static (60 minutes after car start, stationary car)
|                  |------ ECU1
|                  |------ ECU2
|                  |------ ECU3
|                  |------ ECU4
|                  |------ ECU5
|                  |------ ECU6
|        |------ 4_10min_dynamic (10 minutes after car start, moving car)
|                  |------ ECU1
|                  |------ ECU2
|                  |------ ECU3
|                  |------ ECU4
|                  |------ ECU5
|                  |------ ECU6
|        |------ 5_30min_dynamic (30 minutes after car start, moving car)
|                  |------ ECU1
|                  |------ ECU2
|                  |------ ECU3
|                  |------ ECU4
|                  |------ ECU5
|                  |------ ECU6
|        |------ 6_60min_dynamic (60 minutes after car start, moving car)
|                  |------ ECU1
|                  |------ ECU2
|                  |------ ECU3
|                  |------ ECU4
|                  |------ ECU5
|                  |------ ECU6


CAN voltage samples (full)
|
|------ Dacia Duster
|
|------ Dacia Logan
|
|------ Ford Ecosport
|
|------ Ford Fiesta
|        |------ 1_0min (car start)
|        |------ 2_10min (10 minutes after car start)
|        |------ ENVIRONMENTAL_1_30min (30 minutes after car start)
|        |------ ENVIRONMENTAL_2_60min (60 minutes after car start)
|
|------ Ford Kuga
|
|------ Honda Civic
|        |------ 1_0min (car start)
|        |------ ENVIRONMENTAL_1_10min_static (10 minutes after car start, stationary car)
|        |------ ENVIRONMENTAL_2_30min_static (30 minutes after car start, stationary car)
|        |------ ENVIRONMENTAL_3_60min_static (60 minutes after car start, stationary car)
|        |------ ENVIRONMENTAL_4_10min_dynamic (10 minutes after car start, moving car)
|        |------ ENVIRONMENTAL_5_30min_dynamic (30 minutes after car start, moving car)
|        |------ ENVIRONMENTAL_6_60min_dynamic (60 minutes after car start, moving car)
|
|------ Hyundai i20
|
|------ Hyundai ix35
|
|------ John Deere Tractor
|
|------ Opel Corsa


CAN logs
|
|------ Dacia Duster
|
|------ Dacia Logan
|
|------ Ford Ecosport
|
|------ Ford Fiesta
|
|------ Ford Kuga
|
|------ Honda Civic
|
|------ Hyundai i20
|
|------ Hyundai ix35
|
|------ John Deere Tractor
|
|------ Opel Corsa

File structure

CAN logs are stored in txt format and have data structured based on the XL driver library output from Vector (see documents from Vector XL Webpage for more details).

Voltage data is stored in csv format and have some metadata included before the raw voltage samples. The metadata contains the following information in the first rows from each file:

[ID (hexadecimal)],
[ID (decimal)],
[DLC (decimal)],
[Timestamp, Channel A (CANH), Channel B (CANL)],
[Measurement unit],

The metadata is followed by the actual raw voltage samples:

[Voltage data (2000 samples/file for cars and 2700 samples/file for the John Deere tractor)].


Feel free to use our dataset for research purposes by giving credit to our paper below.

3. Publication

L. Popa, B. Groza, C. Jichici and P-S. Murvay, "ECUPrint - Physical Fingerprinting Electronic Control Units on CAN Buses inside Cars and SAE J1939 Compliant Vehicles", IEEE Transactions on Information Forensics & Security, accepted 2022. [pdf]

@article{Popa22ECUPrint,
title={ECUPrint - Physical Fingerprinting Electronic Control Units on CAN Buses inside Cars and SAE J1939 Compliant Vehicles},
author={Popa, Lucian and Groza, Bogdan and Jichici, Camil and Murvay, Pal-Stefan},
journal={IEEE Transactions on Information Forensics & Security},
year={2022},
publisher={IEEE}
}

4. Contact

For any questions about our work and dataset, don't hesitate to contact us:
lucian.popa [at] aut.upt.ro
bogdan.groza [at] aut.upt.ro