stackdex

Cách bảo mật hoạt động

Stackdex dùng mô hình zero-knowledge — server không bao giờ thấy mật khẩu, API key hay ghi chú credential của bạn ở dạng đọc được.

Hai lớp tách biệt

  • Login layer: email + password Supabase Auth — chỉ để vào app.
  • Encryption layer: passphrase riêng, không bao giờ rời khỏi browser.

Hai lớp hoàn toàn độc lập. Biết password login không giúp decrypt được credentials.

Argon2id + AES-256-GCM

Client derive key từ passphrase bằng Argon2id (memory-hard, chống brute-force GPU). Credentials encrypt bằng AES-256-GCM trước khi insert Postgres. Server chỉ thấy ciphertext base64.

Server thấy gì, không thấy gì

Server THẤY: email login, tên domain, ngày hết hạn, chi phí, nhà cung cấp. Những field này lưu plaintext để query/sort/send email nhắc hạn.

Server KHÔNG THẤY: mật khẩu, API key, ghi chú credentials. Những field này encrypt client-side, server chỉ lưu ciphertext.

Recovery key — giữ như két sắt

Lúc setup, Stackdex generate một recovery key (32 byte hex) và buộc bạn acknowledge đã lưu. Đây là cách duy nhất khôi phục nếu quên passphrase. Mất recovery key + quên passphrase = mất data. Server không giữ bản copy.

Infrastructure

  • Postgres với Row Level Security (RLS) — mỗi user chỉ query được data của chính mình.
  • HTTPS/TLS toàn bộ endpoints (Let's Encrypt auto-renew).
  • Audit log qua Postgres trigger — ghi mọi INSERT/UPDATE/DELETE.
  • Backup tự động có kiểm tra khả năng restore.

Báo cáo lỗ hổng

Nếu bạn phát hiện lỗ hổng bảo mật, gửi email tới security@iampk.dev. Tôi sẽ phản hồi trong 48h.