Tạo tài khoản

Chỉnh sửa lần cuối Jun 19, 2022
Tạo tài khoản

Tại Locker, quá trình tạo tài khoản sẽ gồm 2 giai đoạn chính:

  1. Tạo tài khoản cơ sở
  1. Tạo Master Password

Tạo tài khoản cơ sở

Ở bước này, người dùng sẽ được yêu cầu nhập các thông tin cơ bản bao gồm: Email, mật khẩu tài khoản (account password) và một số thông tin cá nhân khác. Người dùng cũng có thể tạo tài khoản thông qua các phương pháp OAuth mà chúng tôi cung cấp bao gồm Google, Facebook, GitHub hay AppleID.

Notion image

Tạo Master Password

Master Password hay Mật khẩu chính là chìa khóa để mã hóa và giải mã tất cả dữ liệu của người dùng tại Locker.

Cần phân biệt Master Password và Account Password được tạo ở bước trên. Trong khi Account Password dùng để xác thực ở vòng ngoài, không tham gia vào quá trình mã hóa dữ liệu và có thể được cấp lại thì Master Password dùng để tham gia vào mọi quá trình mã hóa, hay giải mã; điều quan trọng là Master Password không thể được cấp lại nếu người dùng quên nó.

Tạo và lưu trữ khóa mã hóa

Locker sử dụng thuật toán Khởi tạo Khóa PBKDF2 với giá trị vòng lặp mặc định là 100.000 để mở rộng Master Password với salt là Địa chỉ email của người dùng. Giá trị nhận được sẽ là 256-bit Master Key.

Master Key sau đó cũng được mở rộng lên 512-bit thành Stretched Master Key bằng thuật toán HMAC-based Extract-and-Expand Key Derivation Function (HKDF).

💡
Master Key và Stretched Master Key không bao giờ được truyền đến và lưu trữ trên máy chủ Locker.

Bên cạnh đó, một Symmetric Key (Khóa đối xứng) 512-bit và Vectơ khởi tạo được sinh ra bằng Cryptographically-secure pseudorandom number generator (CSPRNG). Khóa đối xứng được mã hóa bằng Thuật toán mã hóa AES-256-CBC với key là Stretched Master Key và IV là Vectơ khởi tạo. Kết quả chúng ta thu được Encrypted Symmetric Key, đây là giá trị tương ứng với mỗi người dùng và sẽ được lưu lại máy chủ Locker.

Một mã băm của Master Password cũng được tạo bằng PBKDF-SHA256 với payload là Master Key và salt là Master Password. Giá trị này sau đó được gửi đến máy chủ Locker khi tạo và đăng nhập tài khoản để xác thực tài khoản người dùng. Sau khi được truyền đến máy chủ, nó tiếp tục bị băm tiếp bằng PBKDF2-SHA256 với một salt ngẫu nhiên và 216.000 lần lặp trước khi được lưu vào cơ sở dữ liệu.

Một cặp khóa bất đối xứng (cặp khóa RSA)cũng được tạo khi người dùng đăng ký tài khoản của họ. Cặp khóa RSA này được sử dụng cho mục đích chia sẻ dữ liệu trong Nhóm người dùng được mô tả ở phần sau.