Simulating Satellite-Based Communication Networks for Real-Time Whale Tracking and Marine Conservation
This project implements the Bobb Protocol to enable secure and efficient data transmission through Low Earth Orbit (LEO) satellites. By simulating whale tracking using Raspberry Pi devices, the project showcases a satellite communication model for real-time data transfer in challenging open-sea environments.
The system is primarily designed for marine researchers and conservationists to monitor whale behavior, migration patterns, and their environmental responses using waterproof IoT sensors. The simulation incorporates core security features such as ECDH key exchange, AES-GCM encryption, and HMAC for integrity verification.
The whale tracking system uses waterproof IoT devices equipped with sensors to gather real-time parameters:
The IoT device transmits this data to the nearest LEO satellite using the Bobb Protocol.
Example Data Format:
{
"whale_id": "whale-001",
"timestamp": 1697083106,
"latitude": 34.56,
"longitude": -120.45,
"depth": 200,
"speed": 3.2,
"heart_rate": 50,
"energy_level": 80,
"water_temperature": 18.5,
"heading": 120.5
}
In real LEO systems, satellites rotate and establish connections using line-of-sight. To simulate this:
Discovery Code Example:
def discover_satellites(ip_range):
discovered = []
for ip in ip_range:
if ping(ip):
if verify_bobb_protocol(ip):
discovered.append(ip)
return discovered
The protocol begins with a handshake:
Example Handshake Sequence:
Device A: "Request Connection"
Device B: "Public Key, IP, Metadata"
Device A: "Shared Secret via ECDH"
Secure communication relies on the Elliptic Curve Diffie-Hellman (ECDH) algorithm. After the handshake:
Code for ECDH Key Exchange:
shared_key = ECDH.exchange(device_private_key, satellite_public_key)
encryption_key = HKDF(shared_key)
If the satellite cannot directly reach the base station, it routes data through neighboring satellites. This routing dynamically adjusts based on heartbeat messages:
Heartbeat Code Example:
def send_heartbeat(neighbors):
for neighbor in neighbors:
if not ping(neighbor):
mark_as_disconnected(neighbor)
else:
update_constellation(neighbor)
The Bobb Protocol ensures robust security through:
Example AES-GCM Encryption:
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
encryptor = Cipher(algorithms.AES(encryption_key), modes.GCM(nonce)).encryptor()
encrypted_data = encryptor.update(data) + encryptor.finalize()
Access the full codebase and detailed documentation here: GitHub Repository
Developed with a focus on secure communication and marine conservation research. Explore more on GitHub.