Skip to content

Working Example

VidhyaTV edited this page Aug 17, 2020 · 40 revisions

Delivery Drone

To illustrate VERDICT, an architecture model of a representative delivery drone system was constructed. This model was created in AADL within the OSATE toolchain. The drone system is a part of the delivery operation which consists of a van with packages to be delivered and one or more of these delivery drones. After the van arrives at a location that is close to multiple delivery sites, the delivery drones are initialized with their current position, delivery location, and the package to be delivered is loaded up. After a delivery drone is launched, it uses the inputs from the GPS and IMU to navigate to the delivery location. When the drone reaches the delivery location, it uses its Camera to capture an image of the receiving site to confirm that it is free of obstacles and it is safe for the package to be dropped off. For a high-value package, the Delivery Planner will use the Radio to get confirmation from the operator in the van. If there are no obstacles on the receiving site and confirmation (if needed) is received from the operator, then the Delivery Planner will activate the Delivery Item Mechanism to drop off the package. The Delivery Drone also needs to avoid certain locations and airspace, for example airports, schools and government buildings. The GPS and IMU are subcomponents of GNC to illustrate model hierarchy.

Delivery_Drone_Intro

To analyze the system design of the Delivery Drone using VERDICT, the system designer will have to model the system architecture in AADL, specify the properties of the system and its sub-components in VERDICT annex along with the defense properties, and specify safety and cyber requirements at the system and sub-component level.

Step 1: Create the architectural model of the system in AADL.

The system designer creates the architectural model of the delivery drone in AADL modeling language.

Delivery_Drone_AADL Delivery_Drone_AADL

Step 2: Declare and set VERDICT properties.

The following figure shows Component, Cyber Defense and Design Assurance Level (DAL) properties being applied to the radio AADL model component.

Delivery_Drone_Properties

Step 3: Capture Mission, Cyber and Safety Requirements at system level.

Next, define the Mission, Cyber and Safety Requirements at the system level using the VERDICT annex.

Delivery_Drone_Mission_Cyber_Safety_Requirements

Step 4: Capture Cyber and Safety Relations at component level.

Delivery_Drone_Cyber_Safety_Relations

Step 5: Run VERDICT MBAA.

Run_MBAA

Feedback on each mission, cyber and safety requirement – localized to components is returned.

Right click on a failed requirement to view failure paths.

MBAA_Results_2

List of failure paths are displayed.

MBAA_Results_3

At this point, the user can manually update the Cyber Defenses in the AADL Model. Once the defenses have been implemented, update the AADL model accordingly and rerun MBAA.

As an alternative to the manual analysis iteration loop, VERDICT also provides an automated Synthesis capability. The Synthesis feature allows the user to select a cost model for each of the defenses, then automatically generate a solution that satisfies all of the resiliency constraints with the minimum cost. The following figure shows the pull down menu used to configure and run VERDICT Synthesis. Select "Use Implemented Defenses" if you want the tool to consider the defenses already captured in the model.

Synthesis_Configuration

The following figure shows the results from Synthesis. The tool recommends adding tamper protection to 4 components and increasing the memory defense on the radio from design assurance level 5 to 7.

Synthesis_Results

VERDICT provides feedback to the designer in the console, in generated fault and attack-defense trees, and it also generates assurance case fragments. The following figure shows example results from running the "Create GSN Assurance Case Fragments" function. The GSN output is also saved in xml format.

GSN_Results

GSN_Results

Step 6: Extending the Architectural Model with Behavior

Add behavior for the components in the architectural model of the Delivery Drone system. For example, for the component "DeliveryItemMechanism", if a delivery command is issued, the delivery status must become different from not started. This is formalized by adding the following guarantee (in AGREE) to the AADL model,

guarantee "If delivery command is issued, status is different from NOT_STARTED": 
true -> (release_cmd => delivery_status_out <> Agree_Constants::NOT_STARTED_STATUS);

Step 7: Specifying the property of interest formally

The next step is to review the list of safety functional requirements for the system that may affect its integrity and formalize them as formal cyber-resiliency properties in the AGREE language.

For instance, let's consider the cyber-requirement for the Delivery Drone that requires P7: The drone never initiates packet release to an off-limits location. This cyber-requirement is expressed using the following guarantee:

eq started: bool = (delivery_status <> Agree_Constants::NOT_STARTED_STATUS);

guarantee "P7: The drone never initiates packet release to an off-limits location": 
  started => not Agree_Nodes::InRestrictedArea(delivery_location);

node InRestrictedArea(p: Data_Types::Position.impl) returns (f: bool);
let
    f = (X0 <= p.x and p.x <= X1) and 
    (Y0 <= p.y and p.y <= Y1);
tel;

Step 8: Run CRV - Behavioral Analysis in the Benign Scenario

Once the properties of interest are specified formally, to check if the system design model satisfies the properties in a benign scenario, that is, without considering the effects of any threat model open the CRV Settings window:

CRV Settings Menu Option

Make sure no Threat Model is selected, Merit Assignment is enabled, and save the settings:

CRV Settings

Select Delivery Drone model on the left pane, and click on Run Cyber Resilience Verifier (CRV) the Verdict menu:

RunCRV

CRV will find scenarios where properties are violated:

CRVNegativeResults

In case of violations, right click over the property and select View Counter-example to display a sequence of input values that lead the system to the violation of the property. Examining the trace, one can identify and fix the reason for the violation. Re-running CRV after the fix, should result in property satisfaction.

CRVPositiveResults

Right clicking over the property and selecting View Inductive Validity Core, displays a set of components that are responsible for the satisfaction of the property.

CRV_IVC

Step 9: Run CRV - Behavioral Analysis under an Adversarial Environment

To analyze the behavioral model under an adversarial environment, repeat the steps described in the previous, but all threat models should be selected along with the Blame Assignment option.

CRVSettingsBlameAssignments

Run CRV with the new settings and review the results.

CRV_BlameAssignmentResult

Right click over the property and select View Counter-Example to display trace that leads the system to the violation of the property.

CRVBlame_CounterExample

Once the vulnerable components and ports are identified, the user can address the root cause of the attack. Once the root cause is identified and mitigated, rerun CRV to ensure property satisfaction.

CRVBlame_CounterExample

Return to Home