Skip to content

Latest commit

 

History

History
45 lines (35 loc) · 2.76 KB

README.md

File metadata and controls

45 lines (35 loc) · 2.76 KB

USB OTP Security System 🚀

Overview

This project focuses on secure communication between a Windows driver and a hardware device using the CP2102N USB-UART bridge. The primary goals are to generate a 10-bit OTP (One-Time Password) based on date-time, hardware ID, and a private key, and to ensure secure boot and flash encryption. Additionally, the project involves time synchronization with NTP servers and verification of OTP passwords using a challenge-response model.

  1. Project Overview:

    • Provide a brief introduction to your project. Explain its purpose, key features, and any relevant context.
    • Mention that the project involves communication between a Windows driver and a device using the CP2102N USB-UART bridge.
  2. Hardware and Software Requirements:

    • List the hardware components (e.g., CP2102N, ATECC608A, esp32-s3, DS1339U-33+T&R) required for your project.
    • Specify any software dependencies (e.g., ESP-IDF, Windows 10 drivers).
  3. Communication with Windows Driver:

    • Describe how the CP2102N USB-UART bridge facilitates communication between the device and the Windows driver.
    • Mention the shared VID/PID and the use of uart_async_rxtxtasks.
  4. OTP Generation and Security:

    • Explain how the 10-bit OTP is generated based on date-time, hardware ID, and a private key.
    • Discuss the importance of secure boot and flash encryption.
  5. ATECC608A Integration:

    • Detail how the private key is stored in the ATECC608A CryptoAuthentication device.
    • Highlight the steps involved in saving the private key if the Windows driver sends it.
  6. OTP Verification and Challenge-Response Model:

    • Describe how the OTP password is verified using a challenge-response security model.
    • Explain the role of HMAC authentication codes.
  7. Time Synchronization with NTP Servers:

    • Discuss the need to sync the device's RTC (DS1339U-33+T&R) with NTP servers.
    • Specify the NTP servers (e.g., ntp.time.nl, ntp1.time.nl, ntp2.time.nl) you plan to use.
  8. Hardware Connections:

    • Provide a visual representation or a table showing how the ATECC608A, esp32-s3, DS1339U-33+T&R, and CP2102N are connected.
    • Include pin mappings (e.g., I2C SCL/SDA, GPIO connections).
  9. Example Code and Implementation:

    • Create a dedicated section with step-by-step instructions for setting up the project.
    • Include code snippets or links to relevant files (e.g., ESP-IDF code, Windows driver code).
    • Explain how to compile and run the project.
    • Consider creating a separate folder in your repository for code examples.
  10. Final Notes and Acknowledgments:

    • Conclude your README with any additional information, acknowledgments, or credits.
    • Encourage contributions, bug reports, and feedback from the community.