Replay & Abuse Defense: Stateless nhưng không ngây thơ

OBELISK bảo vệ chống replay và abuse bằng capability token ngắn hạn, nonce, time window, header crypto và rate-limit ngữ cảnh – stateless nhưng kiểm soát chặt, giới hạn thiệt hại mà không cần session hay state lưu trữ, phù hợp dữ liệu nhạy cảm.

Replay & Abuse Defense: Stateless nhưng không ngây thơ

Trong hệ thống bảo mật dữ liệu nhạy cảm, "secure" không chỉ là có TLS hay token. Câu hỏi thực tế: Nếu attacker capture request hợp lệ và replay thì sao?

Hầu hết hệ thống trả lời yếu ớt:

  • ❌ "Có TLS rồi" – Nhưng TLS không chống replay.
  • ❌ "Có token rồi" – Token dài hạn dễ lạm dụng.
  • ❌ "Có rate limit" – Không hiểu ngữ cảnh quyền hạn.

OBELISK giả định: Mọi request hợp lệ đều có thể bị capture và replay. Vấn đề không phải ngăn replay tuyệt đối, mà giới hạn thiệt hại khi replay xảy ra.

1️⃣ Threat Model của Replay & Abuse

OBELISK giả định attacker có thể:

  • ✅ Sniff packet ở client side
  • ✅ Capture request hợp lệ
  • ✅ Replay nhiều lần
  • ✅ Flood hệ thống bằng request "đúng định dạng"
  • ✅ Reverse client để hiểu protocol

Không giả định:

  • Crypto bị phá
  • TLS bị MITM toàn diện
  • Kernel bị chiếm lâu dài

Mục tiêu:

  • ✅ Replay không mở rộng quyền
  • ✅ Abuse không mở rộng phạm vi
  • ✅ Flood không chạm data plane
  • ✅ Stateless nhưng vẫn kiểm soát chặt chẽ

2️⃣ Vì Sao Session-Based Defense Thất Bại

Cách truyền thống: Login → Tạo session → Gắn quyền → Giữ state server-side.

Vấn đề:

  • ❌ Session hijack → Toàn quyền
  • ❌ State lưu trữ → Bug, khó scale
  • ❌ Session sống lâu → Blast radius lớn
  • ❌ Revocation phức tạp

OBELISK bỏ session hoàn toàn – không phải "ngầu", mà vì session là single point of failure cho replay.

3️⃣ Capability Là Nền Tảng Chống Lạm Dụng

OBELISK dùng capability token thay vì access token. Mỗi capability:

  • ✅ Chỉ cho 1 hành động
  • ✅ Trên 1 resource
  • ✅ Trong thời gian rất ngắn

Ví dụ: "READ object X, offset 0–1MB, trong 10 giây".

Nếu replay:

  • Chỉ đọc đúng đoạn đó
  • Chỉ trong thời gian đó
  • Không mở rộng sang object khác

👉 Replay không làm hệ thống nguy hiểm hơn ban đầu.

4️⃣ Stateless ≠ Không Kiểm Soát

OBELISK stateless, nhưng không mù quáng. Mỗi request mang đủ info để verify:

  • Action
  • Resource
  • Time window
  • Nonce
  • AEAD proof

Server verify mà không cần DB lookup.

Lợi ích:

  • ✅ Scale tốt
  • ✅ Không session store để tấn công
  • ✅ Tránh memory exhaustion

5️⃣ Time Window – Giới Hạn Replay Theo Thời Gian

Replay không loại bỏ hoàn toàn → Giới hạn giá trị của nó.

Nguyên tắc:

  • ✅ Capability có not_before
  • not_after
  • ✅ Window ngắn (vài giây đến vài chục giây)

Replay sau window → Reject. Replay trong window → Chỉ làm đúng việc được cấp.

Không token "dùng mãi mãi".

6️⃣ Nonce – Không Để Request Giống Nhau

Mỗi capability chứa nonce ngẫu nhiên.

Nonce giúp:

  • ✅ Tránh reuse request nguyên
  • ✅ Tránh cache replay thô

Không lưu nonce server-side – vì chỉ có giá trị trong time window ngắn.

Kết hợp nonce + time window + action/resource binding → Replay kém hiệu quả.

7️⃣ Header Crypto – Request Phải "Đúng Ngữ Cảnh"

Ngoài capability, request có header crypto:

  • Timestamp
  • Body hash
  • HMAC/AEAD trên toàn request

Ngăn:

  • ✅ Sửa payload
  • ✅ Đổi method
  • ✅ Trộn capability với request khác

Request hợp lệ phải đúng hình dạng + ngữ cảnh.

8️⃣ Chống Abuse Ở Cấp Độ Quyền, Không Chỉ IP

Rate limit truyền thống: Dựa IP, không hiểu nội dung.

OBELISK limit theo:

  • ✅ Action
  • ✅ Resource
  • ✅ Capability scope

Ví dụ:

  • READ chỉ gọi N lần/capability
  • WRITE giới hạn băng thông
  • LIST giới hạn số object

👉 Abuse bị chặn trước khi chạm data thật.

9️⃣ Flood Không Được Chạm Data Plane

Chuỗi phòng thủ: SPA → PF → TLS → Header crypto → Capability verify → Data execution

Flood chết ở:

  • ✅ SPA/PF rate-limit
  • ✅ Header crypto verify

Data plane chỉ thấy request đã lọc sạch.

🔟 Vì Sao Không Dùng JWT / OAuth / Macaroons

JWT/OAuth: Token lâu, scope rộng, revoke khó, replay = toàn quyền.

Macaroons: Tốt attenuation nhưng phức tạp, dễ misuse, khó audit.

OBELISK chọn capability đơn giản:

  • Deterministic
  • Dễ audit
  • Ít chỗ sai

Trong môi trường nhạy cảm: Ít phép màu = Ít thảm họa.

1️⃣1️⃣ Khi Replay Xảy Ra, Chuyện Gì KHÔNG Xảy Ra

Replay trong OBELISK không dẫn đến:

  • ❌ Leo thang quyền
  • ❌ Truy cập dữ liệu khác
  • ❌ Persistence
  • ❌ Lateral movement

Chỉ lặp lại hành động đã cấp trong thời gian ngắn.

Nếu vẫn không chấp nhận → Vấn đề ở quyền ban đầu, không phải replay.

1️⃣2️⃣ Kết Luận

OBELISK không "ngăn replay bằng mọi giá" – mà giới hạn giá trị replay & abuse.

Stateless đúng cách: Kiểm soát bằng toán học, thời gian, và design – không phải session hay niềm tin.

Replay & Abuse Defense đảm bảo: Mọi request đều an toàn theo thiết kế, ngay cả khi bị capture.