Chọn ngôn ngữ

Công cụ tạo khóa xác thực Web Bot Auth

Tạo cặp khóa Ed25519 chuẩn RFC 9421, xuất định dạng JWK, PEM và mẫu thư mục khóa ngay trên trình duyệt với Web Crypto bảo mật tuyệt đối.

Tạo khóa Web Bot AuthCách hoạt động ↓
Nguồn https sẽ phân phát thư mục khóa của bạn. Giá trị này trở thành giá trị tiêu đề Signature-Agent.
Chỉ dùng cho ví dụ yêu cầu đã ký bên dưới
Ghi nbf và exp vào mục nhập thư mục

Cặp khóa được tạo bởi Web Crypto API của trình duyệt và không bao giờ rời khỏi trang này. Tải lại trang sẽ làm mất khóa, vì vậy hãy tải khóa riêng tư về trước khi rời đi.

Mehmet Demiray Xuất bản Cập nhật
Chia sẻ

Tổng quan về Web Bot Auth và cơ chế xác thực bot

Trong nhiều năm qua, các hệ thống máy chủ dựa chủ yếu vào chuỗi User-Agent hoặc dải địa chỉ IP tĩnh để nhận diện các công cụ thu thập dữ liệu (crawler) và tác vụ tự động. Phương thức truyền thống này bộc lộ nhiều điểm yếu nghiêm trọng: User-Agent rất dễ bị giả mạo bởi bất kỳ yêu cầu HTTP nào, còn việc duy trì danh sách IP công khai đòi hỏi quản trị viên phải cập nhật liên tục và đối mặt với rủi ro tấn công mạo danh qua mạng phân phối.

Web Bot Auth là một tập hợp các dự thảo tiêu chuẩn từ IETF, xây dựng dựa trên đặc tả chữ ký thông điệp HTTP RFC 9421. Thay vì tin tưởng vào thông tin văn bản thuần túy, Web Bot Auth yêu cầu bot phải ký số bằng thuật toán mật mã trên từng yêu cầu gửi đi. Máy chủ nhận yêu cầu sẽ tự động tải khóa công khai tương ứng từ tên miền của bot để xác minh tính hợp lệ.

Cơ chế này giải quyết triệt để vấn đề định danh trong kỷ nguyên các mô hình trí tuệ nhân tạo phát triển mạnh mẽ. Dù vẫn đang trong giai đoạn hoàn thiện dự thảo Internet-Drafts, Web Bot Auth đã được nhiều tổ chức công nghệ và nhà cung cấp dịch vụ trực tuyến áp dụng thử nghiệm nhằm phân biệt bot chính thống với các hành vi quét dữ liệu trái phép.

Các thành phần được tạo bởi công cụ Tạo khóa Web Bot Auth

Công cụ Tạo khóa Web Bot Auth khởi tạo một bộ tài nguyên hoàn chỉnh phục vụ việc triển khai ký số ngay lập tức. Toàn bộ tiến trình sử dụng thuật toán khóa bất đối xứng Ed25519 thông qua giao diện Web Crypto tiêu chuẩn.

  1. Định danh khóa (Key ID): Chuỗi mã hóa băm RFC 7638 hoặc RFC 8037 JWK Thumbprint sử dụng thuật toán SHA-256 định dạng base64url, dùng làm giá trị keyid xuyên suốt trong chữ ký.
  2. Thư mục khóa công khai JSON: Tệp cấu hình chứa khóa công khai và các mốc thời gian hiệu lực (nbf, exp) để bạn xuất bản lên máy chủ của mình.
  3. Tiêu đề phản hồi thư mục mẫu: Bộ tiêu đề HTTP hoàn chỉnh với chữ ký có thời hạn 24 giờ, minh họa cách máy chủ của bot phản hồi khi người khác truy vấn thư mục khóa.
  4. Khóa bí mật và khóa công khai: Định dạng JWK và PEM (PKCS#8 cho khóa bí mật, SPKI cho khóa công khai) để nạp vào mã nguồn bot của bạn.
  5. Yêu cầu mẫu đã ký và Signature Base: Lệnh curl mẫu kèm theo toàn bộ tiêu đề Signature, Signature-Input, Signature-Agent và chuỗi Signature Base chuẩn xác giúp việc gỡ lỗi (debug) diễn ra thuận tiện.

Xuất bản thư mục khóa công khai trên máy chủ

Để các máy chủ mục tiêu có thể xác thực chữ ký của bot, bạn cần công khai khóa của mình tại đường dẫn cố định /.well-known/http-message-signatures-directory trên chính tên miền gốc HTTPS mà bạn khai báo trong tiêu đề Signature-Agent.

Tệp thư mục khóa này phải trả về định dạng application/json. Điểm đặc biệt của quy chuẩn Web Bot Auth là chính phản hồi chứa thư mục khóa cũng phải được ký số bởi chính khóa đó. Điều này ngăn chặn việc kẻ tấn công trung gian can thiệp hoặc sửa đổi nội dung tệp khóa trên đường truyền.

Khi cấu hình thời hạn hiệu lực của khóa, bạn có thể chọn không hết hạn hoặc đặt thời hạn 30 ngày, 90 ngày hoặc 365 ngày. Việc gắn nhãn thời gian bắt đầu hiệu lực nbf (not before) và thời gian hết hạn exp (expiration) giúp hệ thống quản lý vòng đời khóa chặt chẽ. Khi đến hạn xoay vòng khóa, bạn chỉ cần tạo cặp khóa mới, thêm vào thư mục và duy trì khóa cũ trong một khoảng thời gian đệm ngắn.

Cấu trúc chữ ký HTTP theo tiêu chuẩn RFC 9421

Chuẩn RFC 9421 quy định cấu trúc chữ ký dựa trên việc tạo ra một chuỗi văn bản chuẩn hóa gọi là Signature Base trước khi ký bằng khóa Ed25519.

Quá trình tạo chữ ký bao gồm các thành phần được bảo vệ:

  • Thành phần được ký: Thường bao gồm thành phần định danh máy chủ @authority và tiêu đề signature-agent.
  • Tiêu đề Signature-Input: Chứa danh sách các trường được ký cùng các tham số phụ trợ như created (thời điểm tạo), expires (thời điểm hết hạn, thường sau 5 phút), keyid (mã định danh khóa), alg (thuật toán ed25519), và nhãn phân loại tag="web-bot-auth".
  • Tiêu đề Signature: Chứa chuỗi byte chữ ký đã được mã hóa theo chuẩn base64.

Chuỗi Signature Base được nối từ các dòng định dạng chuẩn xác từng ký tự xuống dòng (\n). Bất kỳ khoảng trắng thừa hoặc sai lệch thứ tự trường nào cũng sẽ khiến máy chủ đích từ chối chữ ký khi đối chiếu bằng thuật toán mật mã.

Bảo mật khóa bí mật trong môi trường cục bộ

Một nguyên tắc tối quan trọng trong mật mã học là khóa bí mật không bao giờ được phép rời khỏi tầm kiểm soát của người sở hữu. Công cụ Tạo khóa Web Bot Auth hoạt động hoàn toàn trên trình duyệt thông qua API Web Crypto của thiết bị người dùng. Không có bất kỳ dữ liệu nào, dù là khóa công khai hay khóa bí mật, được truyền về máy chủ của công cụ.

Khi bạn làm mới (reload) hoặc đóng tab trình duyệt, toàn bộ cặp khóa vừa tạo sẽ biến mất vĩnh viễn khỏi bộ nhớ tạm. Do đó, bạn cần sao lưu chuỗi khóa bí mật định dạng JWK hoặc PKCS#8 PEM vào hệ thống quản lý bí mật (Secrets Manager) của ứng dụng bot trước khi rời trang.

Tuyệt đối không bao giờ chia sẻ khóa bí mật hoặc xuất bản tham số d trong tệp JSON công khai. Tệp /.well-known/http-message-signatures-directory chỉ được phép chứa các tham số công khai như kty, crv, x, nbf và exp.

Kết hợp Web Bot Auth với các quy tắc kiểm soát truy cập

Cần phân biệt rõ ràng giữa hai khái niệm: Định danh (Identity) và Quyền hạn truy cập (Permission). Web Bot Auth giải quyết bài toán Định danh, chứng minh bot thực sự đại diện cho tổ chức hoặc tên miền sở hữu. Tuy nhiên, việc bot được phép truy cập trang web nào và lấy những dữ liệu gì lại thuộc quyền quyết định của tệp quy tắc thu thập dữ liệu.

Khía cạnh Web Bot Auth Tệp Robots.txt
Mục đích Xác thực danh tính mã hóa của bot Thiết lập quyền cho phép hoặc chặn cào dữ liệu
Vị trí triển khai Tiêu đề HTTP của từng yêu cầu bot gửi đi Tệp văn bản tĩnh tại gốc tên miền website mục tiêu
Cơ chế kiểm tra Thuật toán Ed25519 và RFC 9421 Đối chiếu đường dẫn URL và nhóm tác tử User-Agent

Quản trị viên website có thể sử dụng công cụ trình tạo robots.txt cho AI để thiết lập chính sách truy cập rõ ràng cho từng nhóm bot cụ thể, đồng thời kiểm tra lại cấu hình bằng công cụ kiểm tra robots.txt để đảm bảo các tài nguyên nhạy cảm được bảo vệ đúng cách.

Những câu chúng tôi trả lời nhiều nhất.

Làm thế nào để thiết lập Web Bot Auth cho bot thu thập dữ liệu?

Bạn chỉ cần tạo cặp khóa bằng công cụ Tạo khóa Web Bot Auth, tải tệp thư mục khóa lên đường dẫn /.well-known/http-message-signatures-directory trên máy chủ tên miền của bạn, sau đó dùng khóa riêng tư để ký các yêu cầu HTTP gửi đi. Để kiểm tra và điều chỉnh quyền truy cập nội dung cho bot, bạn có thể kết hợp cấu hình tệp quy tắc bằng Tạo robots.txt chặn bot AI.

Khóa riêng tư của tôi có bị gửi lên máy chủ của công cụ không?

Không. Toàn bộ quy trình tạo cặp khóa Ed25519 diễn ra hoàn toàn cục bộ trên trình duyệt của bạn qua Web Crypto API. Dữ liệu khóa riêng tư không bao giờ được gửi qua mạng hay lưu lại trên bất kỳ máy chủ nào. Khi bạn tải lại hoặc đóng trang, khóa sẽ biến mất vĩnh viễn khỏi bộ nhớ trình duyệt.

Key ID là gì và được tính toán như thế nào?

Key ID là mã định danh duy nhất cho khóa công khai, được tính toán dựa trên chuẩn JWK Thumbprint theo RFC 7638 và RFC 8037. Trình duyệt chuẩn hóa các thuộc tính của khóa Ed25519 thành chuỗi JSON, băm bằng thuật toán SHA-256 rồi mã hóa dạng base64url để tạo thành giá trị keyid dùng trong tiêu đề Signature-Input.

Tại sao Web Bot Auth lại chọn thuật toán Ed25519 thay vì RSA?

Ed25519 là thuật toán mật mã khóa công khai hiện đại được quy định trong các dự thảo Web Bot Auth nhờ kích thước khóa rất nhỏ gọn và độ an toàn cao. Tốc độ tạo chữ ký cũng như xác thực của Ed25519 cực kỳ nhanh và có tính tất định, giúp giảm tải tài nguyên xử lý cho cả bot lẫn máy chủ nhận yêu cầu.

Web Bot Auth khác biệt gì so với việc nhận diện bot qua User-Agent và địa chỉ IP?

Chuỗi User-Agent rất dễ bị giả mạo bởi bất kỳ ai, còn danh sách địa chỉ IP lại thường xuyên thay đổi và tốn công bảo trì. Web Bot Auth mang lại bằng chứng mật mã học không thể làm giả theo chuẩn RFC 9421, cho phép máy chủ đối chiếu trực tiếp chữ ký số của từng yêu cầu với khóa công khai được lưu tại tên miền của chủ sở hữu bot.

Tôi nên chọn thời hạn hiệu lực của khóa là bao lâu?

Bạn có thể chọn không đặt hạn sử dụng hoặc đặt thời hạn 30 ngày, 90 ngày hoặc 365 ngày. Khóa có thời hạn ngắn giúp tăng tính bảo mật và giảm rủi ro khi khóa bị lộ, nhưng bạn cần có lịch trình luân chuyển khóa định kỳ. Khóa không thời hạn phù hợp cho giai đoạn thử nghiệm hoặc các hệ thống nhỏ cần đơn giản hóa việc vận hành.

Tại sao tôi tải lại trang thì cặp khóa vừa tạo bị biến mất?

Đây là cơ chế bảo mật có chủ đích nhằm bảo vệ an toàn cho khóa riêng tư của bạn. Trang web không lưu trữ bất kỳ thông tin nào vào bộ nhớ cục bộ. Bạn cần sao chép hoặc tải về khóa riêng tư ở định dạng JWK hoặc PKCS#8 PEM và lưu vào hệ thống quản lý bí mật an toàn trước khi rời khỏi trang.

Chuỗi cơ sở chữ ký dùng để làm gì trong quá trình ký yêu cầu?

Chuỗi cơ sở chữ ký là văn bản quy chuẩn được tạo ra từ các thành phần yêu cầu HTTP theo quy tắc của RFC 9421 trước khi đưa vào thuật toán ký số. Việc cung cấp mẫu chuỗi cơ sở chữ ký giúp lập trình viên dễ dàng đối chiếu từng byte dữ liệu để gỡ lỗi khi tự xây dựng hàm ký cho bot của mình.