-
GUI Implementation:
- The GUI shall be implemented using Tkinter.
-
Serial Port Selector:
- The GUI shall include a dropdown menu to enumerate and select available serial ports.
-
Session Management:
- It shall include a button to establish and close sessions, with the label dynamically changing based on session status.
-
UI State Management:
- Temperature and LED control buttons shall be disabled when no session is established.
-
Temperature and LED Control:
- The GUI shall include a button to request temperature from the ESP32.
- A button to toggle the LED on the ESP32 shall be included.
-
Logging and Display:
- A clear Log lable shall be included to clear logs.
- A read-only textbox shall be included to display temperature, LED state, and other program states.
-
Serial Protocol Implementation:
- Communication shall be handled via a serial protocol with the ESP32.
- The design shall allow for the future addition of more protocols if needed.
-
Request-Response Mechanism:
- The client shall send requests to the server and handle responses.
- The server shall respond to the client's requests efficiently.
- The client shall process and display the responses from the server.
-
Encryption Protocols:
- All communications shall be secured using HMAC-SHA256, AES-256, and RSA-2048 encryption protocols.
- The design shall permit the addition of more security protocols in the future if needed.
-
HMAC-SHA256 Usage:
- All communications shall be hashed using the HMAC-SHA256 protocol for integrity.
-
RSA and AES Key Management:
- AES-256 keys shall be encrypted and decrypted using the RSA-2048 protocol.
- The system shall manage the lifecycle of AES-256 and RSA-2048 keys, including generation, distribution, storage, rotation, and revocation.
-
Key Lifecycle Managment:
- AES-256 keys shall be randomly generated for each session and not reused across sessions.
- RSA-2048 keys shall have a predefined expiration period and be renewed upon expiry.
- Secure storage of keys shall be implemented, with AES keys stored in volatile memory and RSA keys in secure, non-volatile storage.
- A defined strategy for key rotation and revocation shall be included.
-
Session Establishment:
- Detailed steps for establishing a secure session:
-
Server Actions:
- The Server shall generate and send a random AES-256 key and IV(Initialization Vector) to the client.
- The Server shall decrypt received encrypted AES-256 key and IV(Initialization Vector) from the client.
- The Server shall encrypt and send back the Session ID generated by the client.
- The Server shall etect and handle invalid Session ID and IV.
-
Client Actions:
- The Client shall encrypt and send back the received AES-256 key and IV(Initialization Vector) to the server.
- The Client shall generate and send a random Session ID to the server.
- The Client shall decrypt the Session ID received from the server.
- The Client shall request and establish a session with the server.
- The Client shall process the server's response to establish a session.
-
- Detailed steps for establishing a secure session:
-
Single Session Handling:
- The server shall handle only one client session at a time to ensure focused and secure communication.
-
Session Expiration:
- Sessions shall expire after a predefined period of inactivity (e.g., 1 minute) to enhance security.
-
Process Client Requests:
- The server shall handle requests for temperature reading and LED control efficiently.
- The server shall ensure that requests are processed in a timely manner.
-
Security Protocol Compliance:
- The server shall ensure all communications are secured using HMAC-SHA256, AES-256, and RSA-2048 encryption protocols.
-
LED Control:
- The server shall interface with the LED on the ESP32 based on client requests to toggle its state.
-
Temperature Sensor Integration:
- The server shall retrieve temperature data from the ESP32's temperature sensor and send it to the client upon request.
-
Installation and Setup:
- The project shall provide clear instructions for installing the project and its dependencies.
-
Dependencies:
- The project shall list all required Python packages (e.g., pyserial, python-mbedtls) and C++ libraries (e.g., mbedTLS, Arduino Core for ESP32).
-
Environment Setup:
- The project shall provide detailed instructions for setting up the development and execution environment, including PlatformIO setup for the ESP32-EVB board.
- Comprehensive Documentation:
- The project shall include documentation for each module and its functionalities.
- UML diagrams for the system architecture and sequence diagrams for the communication protocol shall be provided.
- Instructions for setup and usage shall be provided.
- The documentation shall be comprehensive and easy to understand.