https://github.com/matedev01/joel_atecc608a
USB OTP Security System: A project combining the ESP32-S3 microcontroller, ATECC608A CryptoAuthentication device, Windows driver, and LibUSB for secure communication, OTP generation, and time synchronization. 🚀
https://github.com/matedev01/joel_atecc608a
driver esp32 esp32s3 firmware flash-encrypt hmac libusb otp secure-boot security usb visualgdb
Last synced: 2 months ago
JSON representation
USB OTP Security System: A project combining the ESP32-S3 microcontroller, ATECC608A CryptoAuthentication device, Windows driver, and LibUSB for secure communication, OTP generation, and time synchronization. 🚀
- Host: GitHub
- URL: https://github.com/matedev01/joel_atecc608a
- Owner: matedev01
- Created: 2024-04-13T12:51:49.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-04-16T19:10:28.000Z (about 2 years ago)
- Last Synced: 2025-02-27T00:51:05.704Z (over 1 year ago)
- Topics: driver, esp32, esp32s3, firmware, flash-encrypt, hmac, libusb, otp, secure-boot, security, usb, visualgdb
- Language: C
- Homepage:
- Size: 1.31 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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.