ผู้ใช้:WarotAsawa/กระบะทราย

รหัสยืนยันข้อความ (Message Authentication Code - MAC)

แก้

รหัสยืนยันข้อความ (Message Authentication Code - MAC) เป็นข้อมูลขนาดเล็กที่ใช้สำหรับรับรองความน่าเชื่อถือของข้อความ นั่นคือการตรวจสอบการคงสภาพความถูกต้อง และการยืนยันตัวตนของข้อความ โดยการตรวจสอบการคงสภาพความถูกต้องจะสามารถยืนยันได้ว่า ข้อความนั้นถูกแก้ไขหรือไม่ และการพิสูจน์ตัวผู้สร้างข้อความจะสามารถยืนยันที่มาของข้อความได้

กระบวนการสร้าง MAC อาจเรียกว่า keyed hash function (เป็นกระบวนการแบบหนึ่งที่ใช้ในการสร้าง MAC) ต้องการข้อมูลนำเข้า 2 อย่างคือ กุญแจลับ และข้อความซึ่งไม่เจาะจงความยาวแน่นอน เมื่อนำเข้ากระบวนการแล้ว จะได้ผลลัพธ์เป็น MAC หรือบางครั้งถูกเรียกว่าแท็ก (tag) MAC นี้สามารถตรวจสอบสภาพความถูกต้องและยืนยันตัวตนของข้อความ ด้วยการอนุญาตให้เพียงผู้ตรวจสอบ (นั่นก็คือผู้ครอบครองกุญแจ) เท่านั้น ทำการตรวจสอบว่ามีส่วนใดของข้อความถูกแก้ไขไปหรือไม่

ความมั่นคงปลอดภัย

แก้

กระบวนการสร้าง MAC จะมีลักษณะเหมือนกับการใช้ hash function แต่มีวัตถุประสงค์เพื่อความมั่นคงปลอดภัยที่แตกต่างกัน MAC จะต้องสามารถต้านทานการปลอมแปลง หรือปรับเปลี่ยนส่วนใดส่วนหนึ่งของข้อความได้ รวมไปถึงหากมีการเข้าถึงเครื่องคอมพิวเตอร์ที่ใช้ในการสร้าง MACนั้น และผู้โจมตีทำการสร้าง MACจากข้อความต้นฉบับหลาย ๆ ชุด แล้วผู้โจมตีจะต้องไม่สามารถคาดเดา MACสำหรับข้อความอื่น ๆ ได้ ถ้าหากไม่ได้ใช้คอมพิวเตอร์เครื่องนี้ หรือไม่มีความสามารถในการคำนวณที่มากมายไม่จำกัด

MACจะแตกต่างจากการทำลายเซ็นอิเล็กทรอนิกส์ (digital signature) เนื่องจาก MACจะถูกสร้าง และถูกพิสูจน์ความน่าเชื่อถือ (verify) ด้วยกุญแจลับเดียวกัน นั่นคือ ผู้รับและผู้ส่งข้อความจะต้องมีการตกลงกันก่อนว่าจะใช้กุญแจลับใดในในการสื่อสาร เช่นเดียวกับการเข้ารหัสโดยใช้กุญแจแบบสมมาตร (symmetric key) ด้วยลักษณะการใช้กุญแจลับดังกล่าว MACจะไม่มีคุณสมบัติในการป้องกันการปฏิเสธความเป็นผู้ส่งได้ถ้าหากมีผู้ร่วมใช้กุญแจลับนี้หลายคน เนื่องจากผู้ใดก็ตามที่มีกุญแจลับ นอกจากจะสามารถพิสูจน์ความน่าเชื่อถือของข้อความแล้ว จะสามารถสร้าง MACด้วยรหัสเดียวกันนี้ได้เช่นกัน ตรงกันข้ามลายเซ็นอิเล็กทรอนิกส์ซึ่งถูกสร้างจากกุญแจส่วนตัว (private key) ซึ่งคู่กับกุญแจสาธารณะ (public key) หรือเรียกรวมกุญแจทั้งสองว่ากุญแจไม่สมมาตร (asymmetric key) จะมีคุณสมบัติในการป้องกันการปฏิเสธความเป็นผู้ส่งได้ เนื่องจากกุญแจส่วนตัวจะถูกครอบครองโดยผู้เป็นเจ้าของกุญแจเท่านั้น ดังนั้นลายเซ็นอิเล็กทรอนิกส์ที่เกิดขึ้นโดยใช้กุญแจส่วนตัวนี้ ก็จะหมายความว่าผู้เป็นเจ้าของกุญแจส่วนตัวเป็นผู้สร้างลายเซ็นนี้ขึ้นเท่านั้น จะเป็นใครอื่นไปไม่ได้ อย่างไรก็ตาม MACสามารถทำให้มีคุณสมบัติในการป้องกันการปฏิเสธความเป็นผู้ส่งได้ ด้วยการเจาะจงความสามารถในการใช้กุญแจลับของระบบ กล่าวคือ หากมีผู้ถือกุญแจลับสองคน คนหนึ่งจะมีความสามารถในการใช้กุญแจลับสร้าง MAC ส่วนอีกคนหนึ่งจะมีความสามารถในการพิสูจน์ข้อความเท่านั้น (ไม่สามารถสร้าง MACได้) โดยใช้ฮาร์ดแวร์ซึ่งถูกสร้างขึ้นเพื่อพิสูจน์ข้อความเท่านั้น (hardware security module) วิธีนี้ถูกใช้อย่างแพร่หลายในองค์กรที่ทำหน้าที่ดูแลด้านการเงิน

รหัสยืนยันการคงสภาพความถูกต้องของข้อความ (Message Integrity Code - MIC)

แก้

ในเชิงของการสื่อสาร คำว่ารหัสยืนยันการคงสภาพความถูกต้องของข้อความ (MIC) มักจะถูกใช้แทนคำว่ารหัสยืนยันข้อความ (MAC) เนื่องจากตัวย่อของรหัสยืนยันข้อความ (MAC) มักถูกใช้เป็นตัวย่อของคำว่า Media Access Control อย่างไรก็ตาม ผู้เขียนบางกลุ่มจะให้ความหมาย MIC และ MAC ที่แตกต่างกัน โดยให้ความหมายว่า MIC จะไม่ใช้กุญแจลับ และทำให้มีความสามารถในการรักษาความมั่นคงปลอดภัยต่ำ ดังนั้น หากต้องการให้ MIC สามารถตรวจสอบสภาพความถูกต้องของข้อความได้ MIC ก็จะต้องถูกเข้ารหัส หรือมีการป้องกันการแก้ไขตัว MIC เองด้วย และกระบวนการสร้าง MIC จะให้ผลลัพธ์เป็น MIC ที่มีค่าเหมือนกันเสมอถ้าหากผ่านกระบวนวิธีเดียวกัน ในทางกลับกัน MAC ถูกออกแบบมาให้ใช้การเปรียบเทียบ MAC 2 ค่า โดยจะเหมือนกันได้ก็ต่อเมื่อข้อมูล กุญแจลับ และเวกเตอร์เริ่มต้น (Initialize Vector) มีค่าเหมือนกันเท่านั้น และเนื่องจาก MIC ไม่ใช้กุญแจลับ จึงมีความน่าเชื่อถือในแง่ของความสามารถในการยืนยันสภาพความถูกต้องของข้อความต่ำกว่า เนื่องจาก MAC ใช้กุญแจลับและไม่จำเป็นต้องถูกนำมาเข้ารหัสหรือป้องกันการแก้ไขอีกครั้งเพื่อให้สามารถยืนยันสภาพความถูกต้องของข้อความได้

การสร้าง MAC

แก้

กระบวนการสร้าง MAC จะสามารถทำได้จากกระบวนการเข้ารหัสพื้นฐานอื่น ๆ เช่น hash function (จะได้ผลลัพธ์เป็น HMAC) block cipher (จะได้ผลลัพธ์เป็น OMAC, CBC-MAC, PMAC) อย่างไรก็ตามกระบวนการสร้าง MAC ที่รวดเร็วที่สุด เช่น UMAC, VMAC จะใช้กระบวนการพื้นฐานของ universal hashing

นอกจากนี้ กระบวนการสร้าง MAC สามารถทำให้ซับซ้อนขึ้นด้วยการผสมกระบวนการเข้ารหัสพื้นฐาน 2 ชนิดขึ้นไปเข้าด้วยกัน เพื่อที่จะทำให้ยังคงรักษาความปลอดภัยได้แม้กระบวนการพื้นฐานอันใดอันหนึ่งถูกโจมตี ตัวอย่างเช่น Transport Later Security (TLS) ข้อมูลต้นฉบับจะถูกแบ่งครึ่ง และแต่ละส่วนจะถูกเข้ารหัสด้วยกระบวนการเข้ารหัสพื้นฐานที่แตกต่างกัน (MD5 และ SHA-1) หลังจากนั้นนำมา XOR เข้าด้วยกันเพื่อให้ได้เป็น MAC

มาตรฐาน

แก้

กระบวนการสร้างรหัสยืนยันข้อความมีหลายมาตรฐาน เช่น • FIPS PUB 113 Computer Data Authentication, withdrawn in 2002, defines an algorithm based on DES. • FIPS PUB 198-1 The Keyed-Hash Message Authentication Code (HMAC) • ISO/IEC 9797-1 Mechanisms using a block cipher • ISO/IEC 9797-2 Mechanisms using a dedicated hash-function สำหรับมาตรฐาน ISO/IEC 9797-1 และ -2 จะอธิบายโครงสร้างโดยทั่วไปของกระบวนการสร้างรหัสยืนยันข้อความที่สามารถนำมาใช้กับ block cipher หรือ hash function ใด ๆ ก็ได้ร่วมกับตัวแปรอื่น ๆ โครงสร้างของมาตรฐานนี้สามารถนำไปทำให้เป็นกระบวนการวิธีแบบเฉพาะเจาะจงได้ด้วยการปรับเปลี่ยนตัวแปรเพื่อให้ได้กระบวนการใหม่ขึ้นมา ตัวอย่างเช่น กระบวนการวิธี FIPS PUB 113 จะมีความสามารถเทียบเท่ากับ ISO/IEC 9797-1 MAC โดยใช้ padding method 1 และ block cipher ของวิธีการเข้ารหัสแบบ DES

One-time MAC

แก้

ในการสุ่มกระบวนการ hash (Universal hashing) เพื่อสร้าง MAC จะขึ้นอยู่กับจำนวนกุญแจที่ใช้ (น้อยกว่า k ครั้งเมื่อมีการกระทำ k ครั้ง) เพื่อให้ได้ hash function ที่แตกต่างกันเป็นคู่ ๆ กระบวนการนี้จะทำในการเติมเต็มเพียงครั้งเดียวเพื่อเตรียมข้อความก่อนเข้ากระบวนการ hash (one-time pad) วิธีการที่ง่ายที่สุดเมื่อใช้ hash function ที่แตกต่างกันเป็นคู่คือ ให้มีการเลือกสุ่มกุญแจ 2 ดอก key=(a, b) แล้ว MAC tag ของข้อความสามารถคำนวณได้จาก tag:=(a*m + b) mod p เมื่อ p เป็นจำนวนเฉพาะ