Skip to content

Latest commit

 

History

History
118 lines (83 loc) · 5.21 KB

File metadata and controls

118 lines (83 loc) · 5.21 KB

Project Requirements

Client Side Requirements

GUI Implementation using Tkinter (gui.py)

  • 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.

Communication Handling (communication.py)

  • 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.

Security Management (security.py)

  • 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.

Server Side Requirements

Session Management

  • 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.

Response Handling

  • 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.

Hardware Interface

  • 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.

General Requirements

Installation and Setup

  • 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.

Documentation and Testing

  • 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.