User:Jeabojung/sandbox

รหัสยืนยันข้อความ
รหัสยืนยันข้อความ (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