เครื่องมือสำหรับนักพัฒนา

ตัวสร้าง HMAC

ลงลายเซ็นข้อความด้วยคีย์ลับ ไม่มีการส่งข้อมูลออกไป

ตัวสร้าง HMAC ทำงานบนอุปกรณ์ของคุณ
  • ทำงานในเบราว์เซอร์ของคุณ — ข้อความของคุณไม่ถูกส่งไปที่ใด
  • ไม่ต้องสมัครสมาชิก ไม่มีโควตา ใช้ฟรีกี่ครั้งก็ได้

ทำงานอย่างไร

HMAC พิสูจน์สองอย่างพร้อมกัน คือข้อความไม่ถูกแก้ไข และผู้สร้างข้อความถือความลับร่วมกัน เป็นสิ่งที่ใช้ลงลายเซ็นเว็บฮุก คำขอ API และลิงก์ดาวน์โหลดในเว็บส่วนใหญ่

ต่างจากแฮชทั่วไปในจุดที่สำคัญ

ใครก็คำนวณ SHA-256 ของข้อความได้ แฮชเปล่า ๆ จึงไม่ได้พิสูจน์ว่าใครเป็นผู้สร้าง เพราะแก้ข้อความแล้วคำนวณแฮชใหม่ ก็ไม่มีใครรู้ได้ HMAC ใส่คีย์ลับเข้าไปในการคำนวณ จึงคำนวณซ้ำโดยไม่มีคีย์ไม่ได้ นี่คือประเด็นทั้งหมด และเป็นเหตุผลที่ลายเซ็นเว็บฮุกใช้ HMAC แทนแฮช

การตรวจสอบอย่างปลอดภัย

เมื่อตรวจสอบ HMAC บนเซิร์ฟเวอร์ ให้เปรียบเทียบด้วยฟังก์ชันที่ใช้เวลาคงที่ เช่น crypto.timingSafeEqual ใน Node และ hash_equals ใน PHP เครื่องหมาย == ทั่วไปจะคืนค่าทันทีที่ไบต์สองตัวต่างกัน และเวลาที่ใช้จะเผยว่าลายเซ็นถูกไปเท่าไร ซึ่งมากพอจะใช้ปลอมลายเซ็นได้หากอดทนพอ นี่เป็นการโจมตีที่เกิดขึ้นจริง ไม่ใช่แค่ทฤษฎี

อัลกอริทึมใด

ใช้ SHA-256 เว้นแต่มีการกำหนดเป็นอย่างอื่น SHA-1 รวมอยู่ด้วยเพราะ API รุ่นเก่าจำนวนมากยังต้องใช้ HMAC-SHA-1 และ HMAC-SHA-1 ยังไม่ถูกเจาะเหมือน SHA-1 ธรรมดา แต่ไม่มีเหตุผลที่จะเลือกใช้กับงานใหม่

Hex หรือ Base64

เป็นเรื่องของสิ่งที่อีกฝ่ายต้องการเท่านั้น Hex ยาวกว่าสองเท่าและอ่านง่ายกว่า ส่วน Base64 กะทัดรัดกว่าและพบบ่อยในส่วนหัว HTTP ลายเซ็นเดียวกันแสดงให้ดูทั้งสองแบบ

คีย์ของคุณอยู่ที่นี่เท่านั้น

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

คำถามที่พบบ่อย

ตัวสร้าง HMAC — คำถามที่พบบ่อย

HMAC ต่างจากแฮชอย่างไร

ใครก็คำนวณแฮชซ้ำได้ แต่ HMAC ต้องใช้คีย์ลับ จึงพิสูจน์ได้ว่าใครเป็นผู้สร้าง

ควรใช้อัลกอริทึมใด

ใช้ SHA-256 เว้นแต่ API กำหนดเป็นอย่างอื่น SHA-1 มีไว้สำหรับระบบรุ่นเก่าที่ยังต้องใช้

ควรใช้ hex หรือ Base64

แล้วแต่ว่าอีกฝ่ายต้องการแบบใด ลายเซ็นเดียวกันแสดงให้ดูทั้งสองแบบ

ทำไมการเปรียบเทียบต้องใช้เวลาคงที่

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

คีย์ลับของฉันถูกส่งไปที่ไหนหรือไม่

ไม่ การทำงานทั้งหมดเกิดขึ้นในเบราว์เซอร์ของคุณผ่าน Web Crypto API