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

ความแตกต่างระหว่าง MAC และ Hash Function ในความปลอดภัยข้อมูล

MAC (Message Authentication Code) คืออะไร?

MAC ย่อมาจาก Message Authentication Code เรียกอีกอย่างว่า "แท็ก" (Tag) ใช้เพื่อยืนยันต้นทางและลักษณะของข้อความ MAC ต้องใช้การเข้ารหัสแบบมีคีย์ (authentication cryptography) เพื่อตรวจสอบความถูกต้องของข้อมูลที่ส่งผ่านเครือข่ายหรือถ่ายโอนระหว่างบุคคล

MAC ถูกสร้างขึ้นโดยฟังก์ชันแฮชที่ปลอดภัยและมีคีย์ (keyed secure hash function) บนข้อความ ใช้เพื่อให้ความสมบูรณ์ของข้อความ (integrity) หากข้อความที่ป้องกันด้วย MAC ถูกปลอมแปลง สามารถตรวจพบได้โดยการเปรียบเทียบ MAC ที่อยู่ในข้อความกับ MAC ที่คำนวณใหม่

การใช้งาน MAC ในระบบการเงิน

รหัสยืนยันข้อความ (Message authentication codes) จำเป็นสำหรับการสร้างบัญชีการเงินทุกประเภท ธนาคาร บริษัทหลักทรัพย์ องค์กรน्यास และองค์กรฝากเงิน ลงทุน หรือประกันภัยที่ให้บริการออนไลน์ ใช้รหัสเหล่านี้เป็นส่วนสำคัญของ密码学การเงิน (financial cryptography)

MAC เรียกอีกอย่างว่า Keyed Hash

MAC อาจหรืออาจไม่ได้ถูกสร้างจากฟังก์ชันแฮช HMAC และ KMAC เป็น keyed hashes ที่พัฒนาจากฟังก์ชันแฮชพื้นฐาน ในขณะที่ AES-CMAC ขึ้นอยู่กับบล็อกซิเฟอร์ AES ตามที่ชื่อบ่งชี้

รหัสยืนยันข้อความเป็น one-way function เช่นกัน แต่ต้องทราบทั้ง คีย์ และ ข้อความ เพื่อสร้างค่า MAC ทำให้สามารถรองรับความสมบูรณ์ของข้อความ (message integrity) และความถูกต้องของข้อความ (message authenticity) ได้ คล้ายกับ one-way hashes ในลายเซ็นดิจิทัล

เพื่อให้ฝ่ายตรงข้ามตรวจสอบ MAC ได้ พวกเขาต้องมีคีย์เดียวกัน (symmetric key) ซึ่งหมายความว่าพวกเขาสามารถสร้างแท็กยืนยันได้ด้วยตัวเอง ดังนั้นระดับความเชื่อมือนเฉพาะจึงจำเป็นสำหรับฝ่ายที่ดำเนินการตรวจสอบ

Hash Function (ฟังก์ชันแฮช) คืออะไร?

One-way hash function คือฟังก์ชันที่ไม่สามารถย้อนกลับเพื่อรับข้อมูลใดๆ เกี่ยวกับข้อความต้นทาง (input message) ผ่านการคำนวณ ฟังก์ชันแฮชแบบหนึ่งทางโดยทั่วไปรู้จักกันในชื่อ cryptographically secure hash functions ตัวอย่างเช่น SHA-256, SHA-512 และอนุพันธ์ SHA-2 อื่นๆ รวมถึง SHA-3 ที่นำออกมาใหม่ล่าสุด

MD5 และ SHA-1 ก็เป็น one-way hash functions แต่ ไม่ถือว่าปลอดภัยอีกต่อไป เนื่องจากสามารถสร้าง hash collisions ได้ ฟังก์ชันแฮชสามารถใช้รองรับความสมบูรณ์และความถูกต้องของข้อความได้ แต่ค่าแฮชต้องได้รับความไว้วางใจ

ดังนั้น โจมตีสามารถสร้างแฮชจากข้อความที่ต่างกันและนำมาแทนที่แฮชเดิมได้ ความไว้วางใจนี้สามารถสร้างได้โดยการคำนวณด้วยคีย์ส่วนตัว (private key calculation / ลายเซ็น) อีกวิธีหนึ่งคือการเก็บแฮชไว้ที่ไซต์ที่เชื่อถือได้ เพื่อตรวจสอบความสมบูรณ์ของไฟล์ที่วางบน mirror site

สรุปความแตกต่างหลัก

คุณสมบัติMACHash Function
ต้องการคีย์ใช่ (Symmetric key)ไม่ (Keyless)
วัตถุประสงค์Integrity + AuthenticityIntegrity (ต้องมีกลไกเพิ่มเพื่อ Authenticity)
ตัวอย่างHMAC, KMAC, AES-CMACSHA-256, SHA-512, SHA-3, MD5, SHA-1
การตรวจสอบฝ่ายรับต้องมีคีย์เดียวกันใครก็ได้ที่มีค่าแฮชต้นทาง