Home

MITRE eCTF 2025

🏴 The embedded cybersecurity competition is an annual semester-long CTF run by MITRE Corporation. It is an attack-defense CTF which makes participants dive into cryptography and embedded firmware, and design a secure system that holds up to attack against other universities. MSU students have been taking part in the eCTF since 2022!

The 2025 competition ran from January 15th through April 16th with an Award Ceremony on April 25th. MSU's team finished 21st out 116 international teams, with 4 out of 5 defense flags intact throughout the whole competition!

A picture of the eCTF 2025 MSU team members in a classroom
Our 2025 eCTF team!

In the 2025 eCTF, teams designed and implemented a Satellite TV system. The system had to securely encode and decode satellite TV data streams while protecting against unauthorized access to protected channels.

The main challenge for this year's competition was broadcast encryption, where the same data stream is shared from the satellite with every client (decoder), and has to be decoded by only authorized clients without the use of bi-directional communication.

High level system overview of the eCTF 2025 scenario featuring the Uplink, Satellite, TV, and Decoder
The components in the 2025 scenario

This ruled out simpler schemes like challenge-response and required us to come up with a key distribution and encryption mechanism that uniquely applied to the situation at hand - effectively sharing a unique password per frame for channels with up to 2^64 frames, and a subscription to an arbitrary start and end timestamp.

A binary tree diagram demonstrating the hash tree construction
The binary hash tree in question

We did this by using a downwards hash tree, which was a binary tree where the root node was successively hashed with unique "left" and "right" values to derive children nodes. The height of the tree was 64, which meant there were 2^64 leaves - each representing a frame in our scenario. This way, having access to a parent node let you decrypt every frame under its descendants, while going the other way around was infeasible by needing to compute a hash pre-image. This meant we could grant decoders fine-grained access to a range of frames from 0 to 2^64, each with a unique decryption password, by sharing on average only ~70 unique values!

Our design was also coded in Rust to avoid common memory safety pitfalls, and as an experience for getting more familiar with the language in an embedded context 🦀


Our design

Design Document
Poster featuring details about our design

Team Members

Udbhav Saxena (Lead), Adrian Self, Maksim Savich, Charles Selipsky, Samuel Lain Hedden, Doruk Alp Mutlu, Fatima Saad, Mariana Vangelov, Matteo Krivitzky, Jonathan Bolton, Felipe Marques Allevato, Shamar Dotson, Raj Dhullipalla, Aditya Chaudhari, Aashish Harishchandre, Lucas Bosca, Caroline Huang, Conner O'Sullivan

Advisor: Dr. Qiben (Ben) Yan