Architecture Overview¶
The EmbSec Kit is a comprehensive embedded security training framework designed to teach security concepts through hands-on labs targeting ARM Cortex-M microcontrollers. This section provides detailed documentation of the system architecture.
System Overview¶
The kit consists of several key components that work together to provide a complete learning environment:
embsec-kit/
├── sdk/ # Core SDK library
├── labs/ # Security lab exercises
├── tools/ # Build and development tools
├── vendor/ # Third-party dependencies (TivaWare)
├── docs/ # Documentation
└── CMake build system # Cross-platform build configuration
Core Design Principles¶
1. Modularity¶
- Clean separation between SDK, labs, and build system
- Each lab is self-contained with its own source, tests, and documentation
- Reusable components through the SDK library
2. Cross-Platform Support¶
- Native ARM Cortex-M3 support (TM4C123GH6PM)
- QEMU emulation for development and testing (LM3S6965)
- Host-based testing framework for CI/CD
3. Security-First Design¶
- Intentional vulnerabilities isolated to individual labs
- Secure SDK implementation as baseline
- Deterministic flag generation for validation
4. Educational Focus¶
- Progressive difficulty across labs
- Clear vulnerability patterns
- Comprehensive testing and validation
Architecture Components¶
Build System¶
The CMake-based build system provides flexible configuration for multiple targets and platforms.
Test Framework¶
Python-based testing infrastructure for automated validation of labs and exploits.
Security Model¶
Design patterns for creating secure educational vulnerabilities.
Platform Differences¶
Handling differences between physical hardware and QEMU emulation.
Key Technologies¶
- Languages: C (embedded), Python (testing), CMake (build)
- Platforms: ARM Cortex-M3 (TM4C123GH6PM, LM3S6965)
- Tools: GCC ARM toolchain, QEMU, GDB, OpenOCD
- Frameworks: TivaWare, Unity (testing)
Development Workflow¶
- SDK Development: Core functionality in
sdk/ - Lab Creation: Individual exercises in
labs/ - Testing: Automated validation via test framework
- Deployment: Docker containers and GitLab CI/CD
Next Steps¶
- Build System Architecture - Understanding the CMake configuration
- Test Framework Design - How automated testing works
- Security Model - Creating educational vulnerabilities
- Platform Differences - Hardware vs emulation considerations