Streaming Video Mã Hoá — HLS AES-128 Đa Khoá Giải Thích

Streaming Video Mã Hoá trên AVCaption

Mỗi video upload lên AVCaption đều được mã hoá trước khi tới edge CDN. Việc giải mã khi phát diễn ra ở phía client trong trình duyệt qua Web Crypto API, và khoá được gửi qua signed URL ngắn hạn ràng buộc với domain của bạn.

Trang này đi qua từng bước thực sự đang xảy ra.

Pipeline mã hoá

Khi bạn upload một video lên AVCaption:

  1. Mã hoá GPU — file nguồn được mã hoá thành các biến thể HLS adaptive bitrate (360p, 540p, 720p, 1080p, 4K) bằng NVIDIA NVENC.
  2. Cắt segment — mỗi biến thể được cắt thành segment HLS, thường mỗi cái 6 giây.
  3. Mã hoá theo lô — segment được nhóm thành lô 10 cái (60 giây phát). Mỗi lô nhận một khoá AES-128 mới được sinh.
  4. Upload CDN — segment đã mã hoá được upload lên Cloudflare R2 và phục vụ qua CF CDN toàn cầu với cache mạnh.
  5. Key vault — khoá mã hoá được lưu riêng, không bao giờ ở CDN, không bao giờ chung với segment.

Khi người xem nhấn play:

  1. Yêu cầu token — player yêu cầu playback token từ /api/stream/{embed_token}/token. Server xác thực embed token, domain yêu cầu (đối chiếu whitelist), và rate limit.
  2. Master playlist — player tải HLS master .m3u8 và chọn biến thể theo băng thông.
  3. Lấy khoá theo lô — với mỗi lô segment cần thiết, player yêu cầu khoá tương ứng từ /api/stream/{embed_token}/key/{batch}. Mỗi URL khoá được ký bằng playback token và chỉ có hiệu lực trong phiên đó.
  4. Giải mã phía client — Web Crypto API của trình duyệt giải mã segment trong bộ nhớ và đưa vào element video. Khoá không lưu xuống đĩa.

Vì sao đa khoá quan trọng

Mã hoá đơn khoá (mô hình đơn giản nhiều nền tảng dùng) nghĩa là: một video, một khoá, một URL. Nếu URL đó rò rỉ, toàn bộ video giải mã được mãi mãi.

Mã hoá đa khoá theo lô nghĩa là: một video, nhiều khoá, nhiều URL ngắn hạn. Nếu một URL rò rỉ, chỉ lô đó (khoảng 60 giây phim) bị lộ. Lô tiếp theo cần một yêu cầu khoá mới, mà người làm rò rỉ không thể tạo nếu không có playback token mới.

Việc này nâng cao chi phí vi phạm đáng kể. Công cụ rip tự động chạy được với nền tảng đơn khoá (biến thể yt-dlp, downloader extension trình duyệt) phải được dựng lại cho từng mục tiêu đa khoá — và phần lớn không bận tâm.

Signed playback token

Mỗi embed token có metadata:

  • Origin được phép (whitelist domain của bạn)
  • Định danh người xem tuỳ chọn (dùng cho watermark động ở Enterprise)
  • Cửa sổ hết hạn (mặc định 24 giờ)
  • Gợi ý rate limit

Khoá ký nằm hoàn toàn ở server. Token giả không qua được xác thực lúc gửi yêu cầu.

Nếu bạn phục vụ nội dung gated (chỉ thành viên, truy cập khoá học), ứng dụng của bạn sinh embed token mới cho mỗi phiên đã xác thực, để token hết hạn khi phiên hết hạn. REST API của AVCaption mở chức năng sinh embed token cho khách Enterprise.

Whitelist domain

Mặc định, mọi iframe nhúng đều chỉ chấp nhận hotlink — trình duyệt gửi header Referer với origin đang nhúng, và stream API của AVCaption xác thực origin đó với whitelist trước khi phát hành master playlist.

Với gói Premium và Enterprise bạn có thể chỉ định chính xác domain nào được phép. Bất kỳ ai nhúng iframe trên domain ngoài whitelist nhận 403 ngay lập tức.

Đây là lớp chặn được phần lớn vi phạm: scraper lấy URL iframe và nhúng lên trang khác chỉ nhận 403 và player không bao giờ tải.

So với các nền tảng khác

Cách tiếp cận Ví dụ Độ mạnh Khi nào hợp
Chỉ signed URL Wistia, đường CF Stream cơ bản Yếu nhất — bắt được URL là giải mã được toàn bộ video Video marketing, ít rủi ro piracy
AES-128 đơn khoá Bunny Stream, đường CF Stream có mã hoá Mạnh trước hotlink ngẫu nhiên; bắt được một cặp khoá + token là giải toàn bộ video Content gated casual
AES-128 đa khoá AVCaption Xoay khoá theo lô — bắt được một khoá chỉ phơi ~60 giây Content trả phí tự sản xuất
Widevine / PlayReady DRM VdoCipher, JW Player Enterprise Mạnh nhất — license server gắn phần cứng; bắt buộc cho content cấp phép studio DRM bắt buộc theo hợp đồng

Với khoá học, hướng dẫn gated, nội dung membership trả phí, đào tạo B2B, và video nội bộ — AES-128 đa khoá là đánh đổi đúng. DRM thừa, đơn khoá quá mỏng. Phân tích đầy đủ DRM vs mã hoá đã có sẵn.

Bắt đầu

Muốn xem segment mã hoá hoạt động? Upload một video test — 60 giây đầu là đủ. Mở DevTools, xem các request .m3u8.m4s bay, và thử yt-dlp chạm vào URL embed: segment tải về dạng đã mã hoá và không phát được nếu không có khoá xoay theo lô. Gói free ship đủ stack đa khoá trên mọi video; mã hoá bật mặc định, không cần toggle.

Câu hỏi thường gặp

AVCaption dùng chuẩn mã hoá nào? +
AES-128 (Advanced Encryption Standard, khoá 128-bit) áp dụng ở cấp segment HLS. Cùng chuẩn mà ngân hàng online và phần lớn dịch vụ streaming lớn dùng. AVCaption xoay khoá theo lô segment (thường mỗi 10 segment) nên một khoá rò rỉ chỉ làm lộ cửa sổ 60 giây.
AES-128 có đủ không, hay tôi cần DRM (Widevine/PlayReady)? +
Với nội dung tự sản xuất (khoá học, hướng dẫn, đào tạo B2B, video nội bộ, membership trả phí) — AES-128 đa khoá kết hợp signed URL và whitelist domain là đủ. DRM chỉ bắt buộc khi phân phối nội dung được studio cấp phép theo hợp đồng.
Người xem có thể trích khoá mã hoá từ trình duyệt không? +
Khoá được gửi tới player qua signed URL chỉ có hiệu lực trong một phiên phát. Kẻ tấn công quyết tâm có thể chặn nó qua dev tools, nhưng khoá đó chỉ giải mã được một lô nhỏ segment. Việc xoay đa khoá của AVCaption nghĩa là trích toàn bộ video phải bắt một khoá mới cho từng lô, từng phiên — khiến vi phạm tự động trở nên tốn kém.
← content.back_to_index