- vừa được xem lúc

Password Manager đơn giản chạy trên ESP32 🎃

0 0 2

Người đăng: Đông Trần

Theo Viblo Asia

Khám phá những điều mới mẻ 🎃

Hi anh em dev 👋,

Tình cờ mình nảy ra một ý tưởng khá thú vị, tại sao không biến con ESP32 thành một password manager nhỉ? Thay vì dùng những giải pháp lưu trữ online phổ biến, mình quyết định sử dụng ESP32 để lưu tất cả mật khẩu của mình lại 😎

Với SHA-256 để hash PIN và AES-256 để encrypt passwords, đây là một giải pháp lưu trữ password offline khá an toàn. Cùng tìm hiểu cách implement các tính năng bảo mật trên embedded systems nhé ^^

Mình dùng ESP32C3 nha, hình ảnh em nó đây: System Overview

Project này sẽ giúp bạn hiểu được cách implement các tính năng cơ bản của một password manager: lưu trữ có mã hóa, xác thực người dùng và quản lý dữ liệu an toàn.

Tổng quan hệ thống

System Overview

Project gồm các thành phần chính:

1. Authentication Layer 🔒

  • PIN-based authentication với SHA-256 hashing
  • Lưu trữ PIN đã hash trong SPIFFS
  • Yêu cầu xác thực trước khi truy cập passwords

2. Storage Layer 💾

  • Sử dụng SPIFFS (SPI Flash File System)
  • JSON format để lưu trữ passwords
  • Giới hạn dung lượng và độ dài password

3. Interface Layer 🖥

  • Serial Terminal interface
  • Command-based interaction
  • Error handling và user feedback

Implementation Chi tiết

1. Authentication System

Đầu tiên, mình implement hệ thống xác thực đơn giản dựa trên PIN:

String hashPin(const String &pin)
{ byte shaResult[32]; mbedtls_md_context_t ctx; mbedtls_md_init(&ctx); mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(MBEDTLS_MD_SHA256), 0); mbedtls_md_starts(&ctx); mbedtls_md_update(&ctx, (const unsigned char *)pin.c_str(), pin.length()); mbedtls_md_finish(&ctx, shaResult); mbedtls_md_free(&ctx); String hashString = ""; for (int i = 0; i < sizeof(shaResult); i++) { char str[3]; sprintf(str, "%02x", (int)shaResult[i]); hashString += str; } return hashString;
}

💡 Mình sử dụng thư viện mbedtls để hash PIN với SHA-256, đảm bảo PIN không được lưu dưới dạng plain text.

2. Password Storage

Passwords được lưu trữ trong một JSON file với format đơn giản:

{ "facebook": "my_password_123", "github": "super_secret_456", "gmail": "very_secure_789"
}

Một số giới hạn được áp dụng để bảo vệ bộ nhớ:

  • Tên password tối đa 32 ký tự
  • Độ dài password tối đa 8000 ký tự
  • Tối đa 1000 passwords
  • Tổng dung lượng file không quá 100KB

3. Command Interface

ESP32Pass hỗ trợ 5 lệnh cơ bản:

  1. create: Tạo password mới
  2. get: Lấy password theo tên
  3. delete: Xóa password
  4. list: Liệt kê tất cả passwords
  5. info: Hiển thị thông tin hệ thống

Ví dụ về luồng tạo password mới:

Enter new PIN > ****
✓ PIN created successfully! > create
Enter password name > github
Enter password for 'github' > super_secret_456
✓ Password saved successfully!

Như vậy cơ bản là ta đã xây dựng được thiết bị lưu trữ mật khẩu đơn giản với phần cứng nhỏ gọn có thể đem theo mọi lúc, các bạn nghĩ sao về ý tưởng này 😆 Repository phía dưới, code còn hơi cơ bản, có ý tưởng gì các bạn cùng đóng góp nhé 🥰

https://github.com/dongitran/Esp32Pass

Bình luận

Bài viết tương tự

- vừa được xem lúc

Facebook có biết mật khẩu của tôi không?

Chủ đề hôm nay khá thú vị nhé. Đây là câu hỏi mà tớ luôn thắc mắc từ khi biết dùng internet:. . Liệu Facebook có biết được mật khẩu khi mình tạo tài khoản ở đó không.

0 0 87

- vừa được xem lúc

Hacker sẽ lấy password của bạn thế nào ?

Chắc hẳn ai học tập, làm việc trong ngành IT cũng từng được nghe câu hỏi: "Có biết hack facebook không", "Có lấy được pass của abc không", ... . Rõ ràng là mọi người rất quan tâm đến vấn đề password (

0 0 67

- vừa được xem lúc

Bảo vệ thiết bị và tài khoản online của bạn - Phần 1

Các hacker thường vào thiết bị, máy tính và tài khoản online của bạn bằng cách nào. .

0 0 23

- vừa được xem lúc

Bảo vệ thiết bị và tài khoản online của bạn - Phần 2

Chào bạn đến với bài viết thứ 2 trong series Bảo vệ thiết bị và tài khoản online của bạn. Xem thêm: Bảo vệ thiết bị và tài khoản online của bạn - Phần 1.

0 0 39

- vừa được xem lúc

Cafe chém gió: lưu mật khẩu trong CSDL (Phần 1)

Thỉnh thoảng các trang tin tức, báo mạng, facebook,... có đăng những thông tin về một dịch vụ, mội doanh nghiệp nào đó bị hacker tấn công, đánh cắp và rao bán dữ liệu trên "chợ đen". Đối tượng bị hack

0 0 14

- vừa được xem lúc

Cafe chém gió: lưu mật khẩu trong CSDL (Phần 2)

Thỉnh thoảng các trang tin tức, báo mạng, facebook,... có đăng những thông tin về một dịch vụ, mội doanh nghiệp nào đó bị hacker tấn công, đánh cắp và rao bán dữ liệu trên "chợ đen". Đối tượng bị hack

0 0 16