SecLab
Cryptography & SecretschallengeĐộ khó 4/537 phút

Thử thách: xoay một khoá đã bị lộ

Mục tiêu: Sau bài này bạn viết được kế hoạch xoay khoá cho một hệ thống đang chạy, kèm thứ tự và điểm không thể quay lại.

V14V11A04:2025SSDF RV
Bước 1 / 5 · read3 phút

Mục tiêu

Bốn bài trước dạy chọn nguyên hàm, giữ secret, mã hoá lưu trữ và TLS. Bài này kiểm thứ khó nhất trong mật mã ứng dụng và cũng là thứ ít được dạy nhất: xoay một khoá trên một hệ thống đang chạy, không có downtime, không mất dữ liệu.

Vì sao nó khó: xoay khoá không phải một thao tác mà là một quá trình có trạng thái trung gian, và trong trạng thái đó hệ thống phải đọc được cả dữ liệu cũ và mới. Làm sai thứ tự thì hoặc bạn mất dữ liệu, hoặc bạn có downtime, hoặc bạn tưởng đã xoay xong mà chưa.

Tình huống — 07:40 sáng thứ Ba. Một thành viên nhóm vừa nhận ra rằng ba tháng trước, một commit đã đưa appsettings.Production.json vào repo. File đó chứa:

SecretDùng ở đâuCó bao nhiêu dữ liệu phụ thuộc
Crypto:CardKeyMã hoá cột payments.card_number_encrypted2,4 triệu bản ghi
Jwt:SigningKey (HS256)Ký access token của chính taMọi token đang lưu hành, sống 15 phút
Db:ConnectionStringPostgres, tài khoản app_api
Partner:ApiKeyGọi API đối tác

Repo là private, nhưng nó có bốn fork nội bộ và CI cache đầy đủ.

Việc phải làm. Viết kế hoạch xoay cho cả bốn, và với mỗi cái trả lời:

  1. Thứ tự — cái nào trước, và vì sao?
  2. Xoay được không có downtime không? Nếu không thì cần bao lâu?
  3. Điểm không thể quay lại ở đâu — sau bước nào thì không rollback được?
  4. Làm sao biết là đã xong?

Câu 3 là câu tính điểm, và nó là câu người ta không hỏi cho tới khi rollback thất bại.

Xem lộ trình

Bình luận

Tham gia thảo luận
Đăng ký để bình luận

Bình luận cần tài khoản đã hoàn thành ít nhất một bài học. Điều kiện đó là thứ giữ cho luồng thảo luận này còn đáng đọc: mỗi ý kiến gắn với một người có thể bị hỏi lại, và reputation tích luỹ theo thời gian.

Đăng kýĐăng nhập

Bạn vẫn đọc được toàn bộ bình luận dưới đây mà không cần tài khoản. Đăng nhập xong bạn sẽ quay lại đúng chỗ này, không phải đầu trang.

Đang tải bình luận…