SEAL-X-ROS is a work in progress project to integrates the Microsoft SEAL (Simple Encrypted Arithmetic Library) with ROS2 (Robot Operating System), providing a framework for implementing fully homomorphic encryption in ROS-based applications. This project was developed as part of my final year project for my Master of engineering.
The package is built to share data between a client node (encryption and decryption) and a server node (computations on encrypted data) using services. As of right it is just a proof of concept and I have not yet added all of the functionality that I have planned.
- ROS 2 (tested with Humble)
- Microsoft SEAL 4.1
- Zstandard (tested with 1.4.8)
- C++17 or higher
- Install Microsoft SEAL following the instructions at SEAL GitHub. You need to turn the option
SEAL_USE_ZSTD
toON
as SEAL-X-ROS uses zstandard compression. - Clone this repository into your ROS workspace (e.g.,
ros2_ws/src/
).git clone https://github.com/jdumezy/seal-x-ros.git
- Build your ROS workspace.
colcon build --packages-select seal_x_ros
Open two terminals in your ROS2 workspace and source ROS2:
source /opt/ros/humble/setup.zsh
Then run the setup
script:
source install/setup.zsh
Finally, launch a client and a server node, one in each terminal:
ros2 run seal_x_ros sxr_client_node
ros2 run seal_x_ros sxr_server_node
Contributions to the SEAL-X-ROS are welcome. Please submit a pull request or open an issue for any features, bugs, or improvements.
This project is licensed under the MIT License. See the LICENSE file for more details.