Announcement Date | Jan. 22, 2022 |
Submission Date | Feb. 4, 2022 |
Submission Time | 11:59 PM PT |
Total Points | 15 |
In this MP, we will use and modify some of the basic misbehavior detection (MBD) applications in the vehicular networks. To gain familiarity, we will use pre-implemented MBD applications and examine how they work.
omnetpp.ini
files residing in the scenario directories.
We will again modify this file as first thing to set up attacks and some additional loggings. Go to Desktop/v2x_simulator/F2MD/F2MD/veins-f2md/f2md-networks/IRTSystemXScenario/omnetpp.ini
sim-time-limit
to 1200s
for a 20 minute simulation:appl.MixLocalAttacks = true
to use a mix of all attack types in the list.appl.LOCAL_ATTACKER_PROB = 0.3
to set 30% of all vehicles as attackers. appl.writeVeremi = true
to have all vehicles record their received message logs seperately to f2md-results file.
appl.writeBSMsV1 = true
to record MBD BSM logs.
appl.writeListBSMsV1 = true
to record aggregated MBD BSM logs.
appl.writeReportsV1 = true
to record MBD reports by vehicles.
appl.writeListReportsV1 = true
to record aggregated MBD BSM logs.
appl.EnableV1 = true
to enable V1 app socket of our misbehavior detection app to listen to simulation messages.
appl.SaveStatsV1 = true
to record MBD app logs.
appl.appTypeV1 = 0
which is the simple thresholding MBD application. It essentially checks the message plausibilities and marks message as attacks plausibility score falls below certain threshold.
appl.checksVersionV1 = 0
which is the simple legacy plausibility calculations. Essentially, these checks calculate certain plausibility measures for each message and adding 0 or 1, depending on if the message seems plausible or malicious.
MDBSMs_V1
: This is the seperate and timed records of all BSMs over the simulation, received by the Misbehaivor App. For instance, as the naming convention, MDBSM_V1_8-7028_10218_1090
file refers to BSM records sent at t= 8.7028 seconds sent by vehicle with pseudonym ID 1090 and received by vehicle with pseudonym ID 10218. Pseudonym is a temporary certificate that vehicle uses as ID, and mapping from real IDs to pseudonyms are avaiable in all logs.
MDBSMsList
: This is the records of all BSMs over the simulation, received by the Misbehaivor App, per vheicle pseudonym. It is essentially an aggregated version of records at (a). For instance, as the naming convention, MDBSM_V1_1090
file refers to BSM records received by vehicle with pseudonym ID 1090 during simulation.
MDReports
: This is the collective misbehavior reports generated by our detection app. For instance, as the naming convention, MDReport_V1_28-2104_10154_10331
file refers to misbehavior report sent at t= 28.2104 seconds sent by vehicle with pseudonym ID 10154, reporting the vehicle with pseudonym ID 10331 for misbehavior. Pseudonym is a temporary certificate that vehicle uses as ID, and mapping from real IDs to pseudonyms are avaiable in all logs.
MDBSM_V1_10452
) has the following record structure, with keys as BSMPrint
:
Metadata
: Credentials for the set of received messages. Here, the receiver has ID:45, pseudonym:10452, is an attacker itself (hard way to extract labels), and this BSMPrint
includes messages received at t=26.21 seconds.
BSMCheck
: Plausibility of self messages, we will not use this information for now. But essentially, some plausibility checks have low scores for vehicles that are attackers itself, which allow for detection.
BSMs
: List of received BSMs sent by other vehicles. Each BSM has following fields:
MDReport_V1_..
, explained in Section 2-c, check if the sender is marked as an attacker or genuine for each message. Compare these reports for each BSM with the ground truth labels from Part 3 (vehicle-based labels), and Part 4-c (BSM-based labels). Create a confusion matrix with the number of True positive, True Negative, False Positive and False Negative reports.
For more information on confusion matrix, refer to scikit-learn:confusion_matrix.
Attack Type | True Positive | False Positive | False Negative |
A1 (Constant Position) | #TP-A1 (X%) | #FP-A1 (X%) | #FN-A1 (X%) |
A2 (Constant Position Offset) | #TP-A2 (X%) | #FP-A2 (X%) | #FN-A2 (X%) |
... | ... | ... | ... |
A10 (Disruptive) | #TP-A10 (X%) | #FP-A10 (X%) | #FN-A10 (X%) |
PositionConsistancyCheck
, SpeedConsistancyCheck
, and PositionSpeedConsistancyCheck
functions and list&comment on at least 4 attacks (from A1 through A10) that these checks can be useful.
Threshold
parameter that our thresholdApp uses, i.e. do we catch more attackers, do we get more false positives etc.?