Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

HMAC ในความปลอดภัยข้อมูลคืออะไร?

HMAC (Keyed-Hashing for Message Authentication)

HMAC ย่อมาจาก Keyed-Hashing for Message Authentication เป็นรหัสยืนยันข้อความที่ได้จากการรันฟังก์ชันแฮชทางเข้ารหัสลับ (เช่น MD5, SHA1, และ SHA256) บนข้อมูล (ที่จะยืนยัน) และคีย์ลับร่วม HMAC ถูกกำหนดใน RFC 2104

HMACs คล้ายกับ Digital signatures ทั้งคู่ให้ Integrity และ Authenticity ทั้งคู่ต้องการ Cryptography keys และทั้งคู่ใช้ Hash functions ความแตกต่างหลักคือ Digital signatures ต้องการ Asymmetric keys ในขณะที่ HMACs ต้องการ Symmetric keys (ไม่มี Public key)

HMAC สามารถใช้ร่วมกับฟังก์ชันแฮชทางเข้ารหัสลับแบบ Iterated ใดๆ MD5 และ SHA-1 เป็นตัวอย่างของ Hash functions HMAC ยังต้องการ Private key สำหรับการคำนวณและการตรวจสอบค่าการยืนยันข้อความ

Hashed message authentication code สามารถตรวจสอบการยืนยันตัวตนของข้อความและความสมบูรณ์ของข้อมูลที่เกี่ยวข้องพร้อมกัน ขนาดของ Secret key ที่ใช้ กำหนดความทนทานทางเข้ารหัสลับของ Hashed message authentication code

Hashed message authentication code สามารถใช้ฟังก์ชันแฮชทางเข้ารหัสลับแบบ Iterative ได้ รวมถึง SHA-1 และ MD-5 พร้อมกับ Secret key Hashed message authentication code ให้ Public และ Private key ทั้งสองฝ่าย คือ Server และ Client แม้ Public key จะเป็นที่รู้จัก Private key จะรู้จักเฉพาะ Client และ Server ที่เฉพาะเจาะจง

กระบวนการทั้งหมดเริ่มต้นด้วย Client ที่สร้าง Hashed message authentication code ที่ไม่ซ้ำกัน berdasarkan ข้อมูลที่ร้องขอ และแฮชข้อมูลที่ร้องขอพร้อมกับ Private key

สิ่งนี้ถูกส่งเป็นส่วนหนึ่งของคำขอไปยัง Server ซึ่งในทางกลับกัน เปรียบเทียบ Hashed message authentication code สองตัว และหากพบว่าเหมือนกัน จะอนุญาตให้ Client น่าเชื่อถือและดำเนินการคำขอ กระบวนการทั้งหมดยังเรียกว่า Secret handshake

เป้าหมายหลักของ HMAC มีดังนี้:

  • ใช้ ฟังก์ชันแฮชที่มีอยู่ได้โดยไม่ต้องปรับเปลี่ยน โดยเฉพาะ ฟังก์ชันแฮชที่ทำงานดีในซอฟต์แวร์ และโค้ดมีให้อย่างอิสระและกว้างขวาง
  • รักษาประสิทธิภาพต้นฉบับของฟังก์ชันแฮชโดยไม่ได้รับการเสื่อมสภาพอย่างมีนัยสำคัญ
  • ใช้และจัดการคีย์อย่างง่าย
  • มีการวิเคราะห์ทางเข้ารหัสลับที่เข้าใจดีของความทนทานของโครงสร้างการยืนยันตัวตน อิงจากข้อสมมติที่สมเหตุสมผลเกี่ยวกับฟังก์ชันแฮชพื้นฐาน
  • อนุญาตให้แทนที่ฟังก์ชันแฮชพื้นฐานได้ง่าย หากพบฟังก์ชันแฮชที่เร็วกว่าหรือปลอดภัยกว่าหรือจำเป็น
  • วัตถุประสงค์หลักของ Hashed message authentication code คือ มันได้รับผลกระทบน้อยกว่าจาก Collisions และถือว่าเป็น Brute force ในการได้ Secret cryptographic key
  • Hashed message authentication code ให้วิธีที่สะดวกในการตรวจสอบว่าข้อมูลถูก改动 (Tampered) หรือไม่ และความถูกต้องของผู้ใช้