This repository presents a simulation framework for a privacy-preserving control system in which only the system state is encrypted, while the feedback gain remains in plaintext.
The goal is to study how encrypted state evolution can be incorporated into a discrete-time feedback control loop while preserving acceptable tracking performance.
This work is part of my M.Tech project in Communication Signal Processing and Machine Learning at IIT Dharwad.
Consider the discrete-time linear system:
In this work, we consider the special case:
so that the output becomes:
A state-feedback control law is used:
Since
where:
-
$x_k$ is the state vector -
$u_k$ is the control input -
$r$ is the reference -
$K$ is the feedback gain matrix
In this version of the project, only the state vector is encrypted. The gain (K) remains in plaintext.
This version focuses on encrypting only the state because:
- It is simpler to implement and explain
- It avoids expensive homomorphic multiplication between the encrypted state and the encrypted gain
- It provides a clean first step toward privacy-preserving control
- It forms the foundation for a future full-encryption extension
The encrypted state evolves recursively as:
where:
-
$V_x[k]$ : encrypted state -
$S_x$ : secret integer matrix -
$m_x[k]$ : integer-encoded or quantized state -
$e[k]$ : small noise vector -
$q$ : large prime modulus
The recovered (approximate) state is then used to compute the control input using the plaintext gain
- discrete-time linear system simulation
- plaintext state-feedback control
- recursive state encryption
- modular arithmetic with large prime modulus
- approximate state recovery
- comparison between plaintext and recovered/encrypted-domain behaviour
- Initialize system matrices
$A, B, K$ - Simulate the plaintext system
- Quantise and encrypt the state
- Update encrypted state recursively
- Recover approximate state
- Compute control input
- Compare plaintext and recovered trajectories
encrypted-control-system-state-encryption/
├── README.md
├── LICENSE
├── .gitignore
├── matlab/
├── python/
├── docs/
└── results/