ตัวสร้าง HMAC
HMAC เป็นอัลกอริทึมที่ใช้ในเว็บฮุกที่มีลายเซ็นส่วนตัว ส่วนหัวข้อมูล AWS Signature v4 และโทเคน JWT HS256 ส่วนใหญ่ เพียงกรอกข้อความและกุญแจลับ จากนั้นเลือกกลุ่มแฮช ก็จะได้ค่า HMAC ตามที่กำหนดไว้ใน RFC 2104 อย่างแม่นยำ ซึ่งมีประโยชน์สำหรับการตรวจสอบเนื้อหาที่ระบบหลังบ้านกำลังจะส่งออกไป หรือการสร้างลายเซ็นขึ้นมาใหม่จาก API ที่ได้รับมา
วิธีการคำนวณ HMAC
-
1
วางข้อความไว้
ไบต์ที่ต้องการลงนามอย่างแม่นยำ, ได้แก่ เพย์โหลดของเว็บฮุก (webhook payload), คำขอแบบแคนอนิคัล (canonical request), หรือสตริงใดๆ ก็ตาม
-
2
กรุณาป้อนกุญแจลับ
สามารถเป็นข้อความหรือเลขฐานสิบหก (hex) ได้ เครื่องสร้างจะเติมหรือแฮชกุญแจให้ได้ขนาดบล็อกตามมาตรฐาน RFC
-
3
เลือกอัลกอริทึมแฮช
SHA-256 เป็นมาตรฐานเริ่มต้น; หากต้องการให้ระบบรองรับรุ่นเก่า ให้เลือก SHA-1, SHA-384, SHA-512 หรือ MD5
-
4
คัดลอกลายเซ็น
ผลลัพธ์จะแสดงเป็นเลขฐานสิบหก (hex) ตัวพิมพ์เล็ก พร้อมนำไปวางในค่าตั้งค่า webhook หรือส่วนหัวสำหรับอนุญาต (Authorization header)
HMAC ภายในระบบ
HMAC ห่อหุ้มฟังก์ชันแฮชแบบธรรมดาไว้ในโครงสร้างที่ใช้กุญแจ เพื่อให้ไม่สามารถปลอมแปลงลายเซ็นได้หากไม่มีกุญแจ
สูตร RFC 2104
HMAC(k, m) = H((k' ⊕ opad) ∥ H((k' ⊕ ipad) ∥ m))
โดยที่ k' เป็นคีย์ที่ปรับให้สอดคล้องกับขนาดของบล็อกแฮช ส่วน opad = 0x5c repeated และ ipad = 0x36 repeated
การเลือกอัลกอริทึม
| อัลกอริทึม | ขนาดบล็อก | ความยาวผลลัพธ์ | เหมาะสำหรับ |
|---|---|---|---|
| HMAC-SHA-256 | 64 ไบต์ | 32 ไบต์ | การตั้งค่าเริ่มต้นในยุคปัจจุบันสำหรับการลงนามด้วย webhook |
| HMAC-SHA-384 | 128 ไบต์ | 48 ไบต์ | การลงนาม API ที่มีความปลอดภัยสูงกว่า |
| HMAC-SHA-512 | 128 ไบต์ | 64 ไบต์ | โทเคนที่มีอายุการใช้งานยาวนาน |
| HMAC-SHA-1 | 64 ไบต์ | 20 ไบต์ | เวอร์ชันเก่า (AWS S3 v2, OAuth 1.0) |
| HMAC-MD5 | 64 ไบต์ | 16 ไบต์ | ใช้ได้เฉพาะรูปแบบเก่าเท่านั้น; ควรหลีกเลี่ยงการใช้ในงานใหม่ |
จุดที่ HMAC ปรากฏขึ้น
- GitHub, Stripe, Shopify Webhooks: หัวข้อ (header)
X-Hub-Signature-256,Stripe-Signatureและอื่นๆ - AWS Signature v4: ชุดลายเซ็น HMAC-SHA256 ที่ประยุกต์ใช้กับคำขอตามมาตรฐาน
- JWT HS256: ลายเซ็นของโทเคนคือ
HMAC-SHA-256(header.payload, secret) - โทเคนสำหรับการตั้งรหัสผ่านใหม่: HMAC ที่คำนวณจาก user_id, expiry และค่าลับของเว็บไซต์
ข้อผิดพลาดที่พบบ่อย
- ส่งคีย์ที่เข้ารหัสแบบเฮกซาเดซิมอลในรูปแบบข้อความ โดยไม่ต้องถอดรหัสเป็นไบต์ก่อน
- การลงนามในไบต์ของพารามิเตอร์ที่ไม่ถูกต้อง: Webhook บางตัวจะลงนามในเนื้อหาคำขอในรูปแบบดิบรวมถึงช่องว่าง ส่วนอื่นๆ จะลงนามในรูปแบบมาตรฐาน
- ใช้
==ใน JavaScript หรือ Python เพื่อเปรียบเทียบลายเซ็น; ควรใช้วิธีการเปรียบเทียบที่ปลอดภัยต่อการโจมตีด้านเวลาเสมอ เพื่อป้องกันการโจมตีดังกล่าว
คำถามที่พบบ่อย
เกือบจะเสมอเนื่องจากไบต์ของข้อความมีความแตกต่างกัน การลงชื่อในส่วนเนื้อหาที่ถูกวิเคราะห์ด้วย JSON จะทำให้เกิดการเปลี่ยนแปลงของพื้นที่ว่าง ดังนั้นควรลงชื่อในส่วนเนื้อหาคำขอดิบแทน นอกจากนี้ ควรตรวจสอบให้แน่ใจว่ากุญแจถูกถอดรหัสในลักษณะเดียวกัน (ระหว่างรูปแบบเฮกซาเดซิมอล กับไบต์ดิบ) ทั้งสองฝ่าย
ใช่ หากคีย์มีความยาวน้อยกว่าขนาดของบล็อกแฮช จะมีการเติมค่าศูนย์เพื่อให้เท่ากัน ส่วนหากคีย์มีความยาวมากกว่า จะถูกประมวลผลด้วยการแฮชก่อนเป็นลำดับแรก RFC 2104 แนะนำให้คีย์มีความยาวไม่น้อยกว่าขนาดของผลลัพธ์ (32 ไบต์ สำหรับ SHA-256)
HMAC ยังคงมีความต้านทานต่อการโจมตีแบบการชนกันของ MD5 ที่ทราบกันดี เนื่องจากการโจมตีดังกล่าวไม่ส่งผลกระทบต่อกระบวนการสร้างค่า HMAC อย่างไรก็ตาม ควรใช้ HMAC-SHA-256 สำหรับโค้ดใหม่ทุกชุด เพราะทั้งผู้พัฒนาและผู้ตรวจสอบระบบต่างคาดหวังให้มีการใช้มาตรฐานนี้
ใช่ ข้อความและกุญแจลับจะถูกส่งไปยังเซิร์ฟเวอร์ของเราผ่านการเชื่อมต่อ HTTPS ที่เข้ารหัส เพื่อใช้ในการคำนวณ HMAC โดยจะใช้เพื่อการคำนวณเท่านั้น และจะไม่ถูกจัดเก็บหรือบันทึกไว้
เครื่องมือที่เกี่ยวข้อง
รหัสแปลงตัวเลขเป็นตัวอักษร
แปลงตัวเลขเป็นตัวอักษรและย้อนกลับด้วยรหัส A=1, B=2 (A1Z26) สำหรับปริศนา คำทาย และเบาะแสในห้องเอสเคปรูม
เครื่องมือเข้ารหัสข้อความ
เข้ารหัสและถอดรหัสข้อความโดยใช้ AES พร้อมรหัสผ่าน เพื่อให้มีเพียงผู้รับเท่านั้นที่สามารถอ่านข้อความได้
เครื่องมือเข้ารหัส Vigenère
เข้ารหัสและถอดรหัสข้อความด้วยรหัส Vigenère แบบคลาสสิกโดยใช้คำสำคัญ เลื่อนตัวอักษรละติน A-Z พร้อมคงตัวพิมพ์ใหญ่-เล็ก ช่องว่าง และเครื่องหมายวรรคตอน
ตัวสร้าง TOTP
สร้างรหัสผ่านแบบใช้ครั้งเดียวตามเวลา (RFC 6238) จากคีย์ลับ Base32 รองรับ SHA-1, SHA-256, SHA-512 จำนวน 6 ถึง 8 หลัก และช่วงเวลา 30 หรือ 60 วินาที
เครื่องสร้างแฮช SHA1
สร้างค่าแฮช SHA-1 (ยาว 40 ตัวอักษรเฮกซาเดซิมอล) จากข้อความใดๆ เหมาะอย่างยิ่งสำหรับการตรวจสอบค่าเช็คซัมแบบดั้งเดิม รหัสประจำออบเจกต์ของ Git และการตรวจสอบความสมบูรณ์ที่ไม่เกี่ยวข้องกับความปลอดภัย
เครื่องมือสร้างคีย์ SSH
สร้างคู่คีย์ SSH แบบ RSA (2048, 3072 หรือ 4096 บิต) ทั้งหมดในเบราว์เซอร์ของคุณ ทั้งคีย์ส่วนตัวและคีย์สาธารณะไม่ออกจากอุปกรณ์ของคุณ เพิ่มความคิดเห็นและดาวน์โหลดทั้งสองได้
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Gerador de HMAC [PT]
- مولّد HMAC [AR]
- HMAC-Generator [DE]
- Generador de HMAC [ES]
- HMACジェネレーター [JA]
- HMAC-generator [SV]
- HMAC-generator [NL]
- HMAC 생성기 [KO]
- Générateur HMAC [FR]
- HMAC Generator [ID]
- Bộ tạo HMAC [VI]
- Generator HMAC [PL]
- HMAC Generator [EN]
- Generatore HMAC [IT]
- Генератор HMAC [RU]
- HMAC Jeneratörü [TR]
- HMAC 生成器 [ZH]