เลือกภาษา

เครื่องมือสร้างคีย์ Web Bot Auth และ HTTP Message Signatures

สร้างคู่คีย์ Ed25519 พร้อมไฟล์ JSON ไดเรกทอรี และตัวอย่างคำขอ HTTP Message Signatures แบบ RFC 9421 ปลอดภัยบนเบราว์เซอร์ของคุณ

สร้างคีย์ Web Bot Authวิธีใช้งาน ↓
ต้นทางแบบ https ที่จะให้บริการไดเรกทอรีคีย์ของคุณ ค่านี้จะกลายเป็นค่าของเฮดเดอร์ Signature-Agent
ใช้สำหรับตัวอย่างคำขอที่ลงนามแล้วด้านล่างเท่านั้น
เขียน nbf และ exp ลงในรายการไดเรกทอรี

คู่คีย์ถูกสร้างขึ้นโดย Web Crypto API ในเบราว์เซอร์ของคุณ และจะไม่ถูกส่งออกจากหน้านี้ การรีโหลดหน้าเว็บจะทำให้คีย์หายไป โปรดดาวน์โหลดไพรเวทคีย์ก่อนออกจากหน้านี้

Mehmet Demiray (เมห์เมต เดมิเรย์) เผยแพร่ อัปเดตล่าสุด
แชร์

ความเข้าใจพื้นฐานเกี่ยวกับ Web Bot Auth และการระบุตัวตนของบอท

การระบุตัวตนของเว็บครอว์เลอร์และ AI Agent ในอดีตมักพึ่งพาค่า User-Agent ใน HTTP Header หรือการตรวจสอบรายการหมายเลข IP ของผู้ให้บริการ ทว่าวิธีการเหล่านี้มีช่องโหว่ด้านความปลอดภัยสูง เนื่องจากค่า User-Agent สามารถถูกปลอมแปลงได้ง่ายโดยผู้ไม่หวังดี ขณะที่การดูแลรักษารายการ IP ขาเข้าก็มีความยุ่งยากและไม่ยืดหยุ่นต่อระบบคลาวด์ยุคใหม่ที่มีการปรับเปลี่ยน IP ตลอดเวลา

Web Bot Auth เป็นข้อกำหนดตามมาตรฐาน IETF Internet-Draft ที่นำเอาโครงสร้าง HTTP Message Signatures ตามมาตรฐาน RFC 9421 มาประยุกต์ใช้เพื่อแก้ปัญหานี้ บอทจะทำการลงลายมือชื่อดิจิทัลในคำขอ HTTP แต่ละครั้งด้วยกุญแจส่วนตัว (Private Key) จากนั้นเว็บเซิร์ฟเวอร์ปลายทางจะสามารถตรวจสอบลายมือชื่อดังกล่าวได้โดยการดึงกุญแจสาธารณะ (Public Key) ที่บอทได้เผยแพร่ไว้บนโดเมนของตนเอง

การใช้ระบบนี้ทำให้ผู้ให้บริการเว็บไซต์สามารถตรวจสอบความถูกต้องของบอทได้อย่างแม่นยำ โดยไม่ต้องพึ่งพาการตรวจสอบย้อนกลับผ่านระบบ DNS หรือการจัดการรายการ IP ที่ซับซ้อน เครื่องมือสร้างคีย์ Web Bot Auth ช่วยอำนวยความสะดวกในการจัดเตรียมกุญแจคู่รหัส Ed25519 พร้อมเอกสารและโครงสร้างข้อมูลที่จำเป็นต่อการนำไปใช้งานตามมาตรฐานนี้ได้อย่างถูกต้อง

ส่วนประกอบและข้อมูลที่ได้จากเครื่องมือสร้างคีย์

เมื่อระบุ Origin ที่โฮสต์กุญแจและระยะเวลาหมดอายุแล้ว เครื่องมือสร้างคีย์ Web Bot Auth จะสร้างชุดข้อมูลที่จำเป็นสำหรับการนำไปติดตั้งใช้งานจริง ซึ่งประกอบด้วยส่วนสำคัญดังต่อไปนี้

  1. Key ID คือค่าระบุตัวตนของกุญแจซึ่งคำนวณจาก JWK Thumbprint ตามมาตรฐาน RFC 7638 โดยใช้การแปลงรหัส SHA-256 เป็นสตริง Base64URL เพื่อให้ได้รหัสเฉพาะสำหรับใช้อ้างอิงใน Signature-Input Header
  2. Key Directory JSON คือโครงสร้างข้อมูลกุญแจสาธารณะที่ต้องนำไปวางไว้บนเว็บเซิร์ฟเวอร์ ประกอบด้วยค่าพารามิเตอร์ JWK สาธารณะ วันที่มีผลบังคับใช้ และวันหมดอายุ
  3. Directory Response Headers คือตัวอย่าง Header สำหรับส่งกลับเมื่อมีคำขอมายังไดเรกทอรีของกุญแจ ซึ่งรวมถึงลายมือชื่อดิจิทัลที่มีอายุใช้งาน 24 ชม.
  4. Private Key และ Public Key โดยกุญแจส่วนตัวจะมีให้ดาวน์โหลดทั้งในรูปแบบ JWK และ PKCS#8 PEM สำหรับนำไปติดตั้งในระบบของบอท ส่วนกุญแจสาธารณะจะอยู่ในรูปแบบ SPKI PEM
  5. ตัวอย่างคำขอที่ลงลายมือชื่อแล้ว ประกอบด้วยคำสั่ง curl และสตริง Signature Base ที่สมบูรณ์แบบ เพื่อใช้ตรวจสอบและเปรียบเทียบในขั้นตอนการพัฒนาระบบ

การเผยแพร่ Key Directory บน Origin ของตนเอง

การเปิดให้ผู้รับคำขอสามารถตรวจสอบลายมือชื่อของบอทได้ ผู้พัฒนาจำเป็นต้องนำไฟล์ Key Directory JSON ไปเผยแพร่ผ่านโพรโทคอล HTTPS ภายใต้เส้นทางมาตรฐาน /.well-known/http-message-signatures-directory บนโดเมนต้นทางที่ระบุไว้ใน Signature-Agent

การตั้งค่าเซิร์ฟเวอร์ต้องกำหนด Content-Type ของการตอบกลับให้ตรงตามมาตรฐาน ซึ่งควรเป็น application/http-message-signatures-directory+json หรือ application/json นอกจากนี้ การตอบกลับคำขอดังกล่าวควรได้รับการลงลายมือชื่อสดจากเซิร์ฟเวอร์ต้นทาง เพื่อป้องกันการปลอมแปลงแคชในระบบเครือข่ายส่งมอบเนื้อหา (CDN)

พารามิเตอร์ในไดเรกทอรี หน้าที่และความสำคัญ
kty ประเภทของอัลกอริทึมกุญแจ กำหนดเป็น OKP สำหรับ Ed25519
crv ชื่อของ Curve สำหรับการคำนวณทางคณิตศาสตร์ กำหนดเป็น Ed25519
x พิกัดกุญแจสาธารณะที่ถูกเข้ารหัสแบบ Base64URL
nbf เวลา Unix Timestamp ที่กุญแจเริ่มมีผลบังคับใช้ (Not Before)
exp เวลา Unix Timestamp ที่กุญแจหมดอายุ (Expiration Time)

การกำหนดอายุการใช้งานของกุญแจเช่น 30 วัน หรือ 90 วัน ช่วยสนับสนุนกระบวนการผลัดเปลี่ยนกุญแจ (Key Rotation) อย่างสม่ำเสมอ ซึ่งช่วยยกระดับความปลอดภัยให้แก่ระบบครอว์เลอร์ในระยะยาว

โครงสร้างของ RFC 9421 และขั้นตอนการลงลายมือชื่อคำขอ HTTP

การลงลายมือชื่อในคำขอ HTTP ตามมาตรฐาน RFC 9421 ใช้หลักการสร้างสตริงต้นแบบที่เรียกว่า Signature Base แล้วนำไปคำนวณลายมือชื่อผ่านอัลกอริทึม Ed25519 จากนั้นจึงแนบผลลัพธ์ส่งไปพร้อมกับ HTTP Header ของคำขอ

ส่วนประกอบที่นำมาสร้าง Signature Base ในบริบทของ Web Bot Auth ประกอบด้วยสองส่วนหลัก ได้แก่ @authority ซึ่งระบุโฮสต์ปลายทาง และ signature-agent ซึ่งระบุ Origin ของบอท ข้อมูลทั้งสองส่วนจะถูกจัดเรียงเป็นบรรทัดตามรูปแบบที่กำหนดไว้อย่างเคร่งครัด รวมถึงบรรทัดสุดท้ายที่ระบุค่าพารามิเตอร์ของ signature-input

ใน Signature-Input Header จะมีการกำหนดพารามิเตอร์ควบคุมลายมือชื่อหลายค่า - keyid: รหัสอ้างอิงของกุญแจที่ใช้ลงลายมือชื่อ - alg: ระบุอัลกอริทึม ed25519 - created: เวลา Unix Timestamp ขณะสร้างคำขอ - expires: เวลาหมดอายุของคำขอ ซึ่งตัวอย่างมักกำหนดไว้ที่ 5 นาที - nonce: สตริงสุ่มที่ไม่ซ้ำกันเพื่อป้องกันการโจมตีแบบส่งซ้ำ (Replay Attack) - tag: ระบุวัตถุประสงค์ของการลงลายมือชื่อ ซึ่งกำหนดเป็น web-bot-auth

ความผิดพลาดในการสร้าง Signature Base แม้เพียงอักขระเว้นวรรคเดียวหรือการสลับบรรทัด จะส่งผลให้เซิร์ฟเวอร์ปลายทางตรวจสอบลายมือชื่อล้มเหลวทันที ผู้พัฒนาจึงสามารถใช้ค่า Signature Base ที่ได้จากเครื่องมือนี้เป็นข้อมูลอ้างอิงในการตรวจสอบความถูกต้องของโค้ด

การดูแลรักษาความปลอดภัยของ Private Key และกระบวนการทำงานในเบราว์เซอร์

ความปลอดภัยของระบบยืนยันตัวตนขึ้นอยู่กับการเก็บรักษากุญแจส่วนตัว (Private Key) เป็นสำคัญ เครื่องมือสร้างคีย์ Web Bot Auth ทำงานผ่าน Web Crypto API ภายในเว็บเบราว์เซอร์ของผู้ใช้งานโดยตรง กระบวนการสร้างคู่กุญแจ Ed25519 และการคำนวณทั้งหมดเกิดขึ้นบนอุปกรณ์ของผู้ใช้ ไม่มีการส่งข้อมูลกุญแจส่วนตัวกลับไปยังเซิร์ฟเวอร์ใดทั้งสิ้น

เมื่อผู้ใช้งานรีเฟรชหรือปิดหน้าต่างเบราว์เซอร์ ข้อมูลกุญแจทั้งหมดในหน่วยความจำจะถูกลบทันที ดังนั้นก่อนปิดหน้าต่าง ผู้พัฒนาควรดำเนินการดังนี้

  1. บันทึกและสำรองข้อมูลกุญแจส่วนตัวในรูปแบบไฟล์ JWK หรือ PKCS#8 PEM
  2. นำกุญแจส่วนตัวไปจัดเก็บในระบบจัดการข้อมูลลับที่ปลอดภัย เช่น HashiCorp Vault, AWS Secrets Manager หรือตัวแปรสภาพแวดล้อมที่มีการจำกัดสิทธิ์เข้าถึง
  3. ห้ามนำพารามิเตอร์ d ซึ่งเป็นค่าความลับของกุญแจในรูปแบบ JWK ไปเผยแพร่ในไดเรกทอรีสาธารณะโดยเด็ดขาด ไดเรกทอรีสาธารณะต้องมีเฉพาะพิกัด x เท่านั้น

หากกุญแจส่วนตัวเกิดการรั่วไหล ผู้ดูแลระบบจะต้องสร้างคู่กุญแจชุดใหม่ทันที พร้อมอัปเดตไฟล์ไดเรกทอรีบน Origin เพื่อยกเลิกการใช้งานกุญแจชุดเดิม

การประสานงานร่วมกับ robots.txt และการควบคุมสิทธิ์ของ AI Crawler

การใช้งาน Web Bot Auth มีหน้าที่หลักในการพิสูจน์ทราบตัวตนของผู้ส่งคำขอ แต่ไม่ได้ทำหน้าที่อนุญาตหรือปฏิเสธสิทธิ์ในการเข้าถึงเนื้อหาโดยตรง การควบคุมขอบเขตการเข้าถึงข้อมูลของบอทยังคงต้องพึ่งพากลไกมาตรฐานของเว็บ เช่น ข้อกำหนดในไฟล์ robots.txt

เมื่อเซิร์ฟเวอร์ปลายทางตรวจสอบลายมือชื่อผ่าน Web Bot Auth สำเร็จและทราบว่าบอทดังกล่าวมาจากองค์กรใด เซิร์ฟเวอร์จะนำสิทธิ์ของบอทนั้นไปเปรียบเทียบกับกฎเกณฑ์ที่กำหนดไว้ในไฟล์ควบคุมการเข้าถึง ผู้ดูแลเว็บไซต์สามารถใช้ เครื่องมือสร้าง robots.txt สำหรับ AI เพื่อกำหนดนโยบายการเก็บข้อมูลของ AI Agent แต่ละค่ายได้อย่างเจาะจง และสามารถตรวจสอบความถูกต้องของกฎผ่าน ตัวทดสอบ robots.txt ก่อนนำไปติดตั้งจริง

การรวมเทคโนโลยีทั้งสองส่วนเข้าด้วยกันช่วยสร้างระบบนิเวศของเว็บที่มีความโปร่งใส โดยผู้พัฒนาบอทสามารถยืนยันความสุจริตใจในการระบุตัวตนด้วยการเข้ารหัสลับ ขณะที่เจ้าของเว็บไซต์ก็สามารถบังคับใช้นโยบายการคุ้มครองข้อมูลของตนเองได้อย่างมีประสิทธิภาพ

คำถามที่เราตอบบ่อยที่สุด

การตั้งค่า Web Bot Auth ให้กับบอตหรือโปรแกรมเก็บข้อมูลมีขั้นตอนอย่างไร?

เริ่มจากการใช้เครื่องมือสร้างคีย์ Web Bot Auth เพื่อสร้างคู่คีย์ Ed25519 จากนั้นนำไฟล์ JSON กุญแจสาธารณะไปเผยแพร่ไว้ที่เส้นทาง /.well-known/http-message-signatures-directory บนโดเมนของคุณ สุดท้ายให้บอตเซ็นลายเซ็นดิจิทัลใน HTTP Header ของทุกคำขอด้วย Private Key ก่อนส่งคำขอไปยังปลายทาง

Web Bot Auth ต่างจากการตรวจสอบ User-Agent หรือ IP Address อย่างไร?

การปลอมแปลง User-Agent ทำได้ง่ายมาก ส่วนการตรวจสอบช่วง IP ก็ดูแลรักษายากและเสี่ยงต่อการบล็อกผิดพลาด Web Bot Auth ใช้วิธีเข้ารหัสลับแบบกุญแจอสมมาตรตามมาตรฐาน HTTP Message Signatures ซึ่งเซิร์ฟเวอร์ปลายทางสามารถตรวจสอบความถูกต้องของคำขอและยืนยันตัวตนของผู้ส่งได้ทันทีโดยไม่สามารถปลอมแปลงลายเซ็นได้

Private Key ที่สร้างขึ้นจะถูกส่งไปบันทึกที่เซิร์ฟเวอร์หรือไม่?

ไม่มีการส่งข้อมูลใดๆ ไปยังเซิร์ฟเวอร์ภายนอก เครื่องมือสร้างคีย์ Web Bot Auth ประมวลผลผ่าน Web Crypto API บนเว็บเบราว์เซอร์ของคุณโดยตรงแบบ Client-Side ข้อมูลกุญแจส่วนตัวจะอยู่ในหน่วยความจำของอุปกรณ์คุณเท่านั้น จึงมีความปลอดภัยสูง

หากรีโหลดหน้าเว็บแล้วคีย์หายไป จะสามารถกู้คืนได้อย่างไร?

ไม่สามารถกู้คืนได้ เนื่องจากระบบออกแบบมาเพื่อความเป็นส่วนตัวโดยไม่มีการจัดเก็บบันทึกลงฐานข้อมูล หากรีโหลดหน้าเว็บโดยยังไม่ได้บันทึกไฟล์ JWK หรือ PEM คุณจะต้องกดสร้างชุดคีย์ใหม่และนำไฟล์ JSON ไปอัปเดตบนไดเรกทอรีเว็บไซต์ของคุณอีกครั้ง

ค่า Key ID คำนวณมาจากอะไร และทำไมจึงต้องใช้ Ed25519?

Key ID คำนวณจาก JWK Thumbprint ตามมาตรฐาน RFC 7638 และ RFC 8037 โดยการแฮชข้อมูลกุญแจสาธารณะด้วย SHA-256 แล้วแปลงเป็น Base64URL ส่วนอัลกอริทึม Ed25519 ได้รับเลือกตามข้อกำหนดของ Web Bot Auth เพราะมีขนาดคีย์กะทัดรัดและประมวลผลสร้างลายเซ็นได้รวดเร็วมาก

ควรกำหนดอายุการใช้งานของคีย์ไว้นานเท่าใด?

หากเป็นระบบทดสอบ การเลือกแบบไม่มีวันหมดอายุจะช่วยลดภาระในการสลับเปลี่ยนคีย์ แต่สำหรับระบบที่ใช้งานจริง แนะนำให้กำหนดอายุประมาณ 90 วัน หรือ 365 วัน เพื่อรองรับการหมุนเวียนคีย์ตามรอบความปลอดภัย

เมื่อยืนยันตัวตนด้วย Web Bot Auth สำเร็จแล้ว บอตจะเข้าถึงเนื้อหาได้ทุกหน้าหรือไม่?

ไม่เสมอไป Web Bot Auth ทำหน้าที่พิสูจน์ว่าบอตมาจากองค์กรของคุณจริง แต่การอนุญาตให้เก็บข้อมูลในแต่ละส่วน เว็บไซต์ปลายทางจะยังคงตรวจสอบกฎจากไฟล์ robots.txt คุณสามารถใช้งาน เครื่องมือสร้าง robots.txt สำหรับ AI หรือตรวจสอบสิทธิ์ด้วย เครื่องมือทดสอบ robots.txt เพื่อให้แน่ใจว่าบอตปฏิบัติตามนโยบายอย่างถูกต้อง