Skip to content

Repository files navigation

🚁 SSI Architecture for Drones & AI Data Ingestion

This project acts as a Proof of Concept (PoC) for a Master's Thesis (TFM). It implements a Self-Sovereign Identity (SSI) architecture to secure the data ingestion pipeline from IoT devices (Drones) to AI training datasets.

The system ensures that only authorized devices with valid Verifiable Credentials (VCs) can contribute data to the system, preventing data poisoning and ensuring integrity.

📦 Project Structure

The project is organized as a monorepo with three main packages:

  • packages/shared: Common cryptographic kernel and Veramo agent configuration.
  • packages/server (Verifier): receives telemetry, verifies credentials, and saves valid data to a CSV dataset.
  • packages/authority (Issuer): trusted entity that issues flight licenses (VCs).
  • packages/drone (Holder/Prover): IoT device that holds the license and signs telemetry data.

📋 Prerequisites

  • Node.js: Version 18 or higher.
  • Git: To clone the repository.

⚙️ 1. Installation

Since this is a monorepo, you must install dependencies in a specific order.

Step A: Install common dependencies

In the project root:

npm install

Step B: Build the Shared Kernel

This is critical. The shared library must be built before the agents can run.

cd packages/shared
npm install
npm run build

Step C: Install Agents

Install dependencies for the three individual components:

# Install Servercd server
npm install
# Install Authoritycd authority
npm install
# Install Dronecd drone
npm install

🚀 2. Quick Start Guide

To run the full ecosystem, you will need 3 separate terminal windows.

🖥️ TERMINAL 1: The Infrastructure (Server)

The server must be running to receive data.

# Navigate to the server foldercd packages/server
# Start the server
npm start

⚠️ IMPORTANT: The server will display its DID (Decentralized Identifier).

  • Example: did:key:z6Mk...
  • Copy this DID. You will need it to configure the drone.
  • Keep this terminal open.

🚁 TERMINAL 2: Drone Provisioning (Setup)

We simulate unboxing a new drone. It needs to geerate its identity and be configured.

# Navigate to the drone foldercd packages/drone
# Run the setup wizard
npm run setup

⚠️ IMPORTANT: The script will generate a new DID for the drone.

  • Copy the Drone DID displayed on the screen.
  • DO NOT close this terminal. The script is paused, waiting for you to get a license.

🏛️ TERMINAL 3: Issuing the License (Authority)

The Authority certifies the drone.

# Navigate to the authority foldercd packages/authority
# Run the issuer agent
npm start

⚠️ IMPORTANT: It will ask for the Drone DID. Paste the DID you copied in Terminal 2. Then, copy the entire JWT String generated.

🏁 Finalizing Configuration

Go back to TERMINAL 2 (where the Drone setup is paused).

  • Paste the SERVER DID (from Terminal 1).
  • Paste the License JWT (from Terminal 3).
  • The system will verify and save the configuration.

📡 3. Operation (Flight)

Now that the drone is provisioned and licensed, it can operate autonomously.

In Terminal 2 (packages/drone), run:

npm start

Expected Output

  • Drone: It will load its identity and license from the local database, sign the telemetry, and send it to the server.
  • Server: It will receive the message, cryptographically verify the license, and if valid, append the data to drones-dataset.csv

About

Self-Sovereign Identity for authentication, authorization, and secure communication of drones

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages