1 / 33

344-484 วิทยาการเข้ารหัสลับเบื้องต้น

344-484 วิทยาการเข้ารหัสลับเบื้องต้น. บทที่ 6 ลายมือชื่อดิจิตอลและฟังก์ชันแฮช. เนื้อหา. ลายมือชื่อดิจิตอล (Digital Signatures) MD5 SHA (Secure Hash Algorithm) MAC (Message Authentication Code) HMAC เทคนิคลายมือชื่อดิจิตอล. ลายมือชื่อดิจิตอล (Digital Signatures).

callum
Download Presentation

344-484 วิทยาการเข้ารหัสลับเบื้องต้น

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 344-484 วิทยาการเข้ารหัสลับเบื้องต้น บทที่ 6 ลายมือชื่อดิจิตอลและฟังก์ชันแฮช

  2. เนื้อหา • ลายมือชื่อดิจิตอล (Digital Signatures) • MD5 • SHA (Secure Hash Algorithm) • MAC (Message Authentication Code) • HMAC • เทคนิคลายมือชื่อดิจิตอล

  3. ลายมือชื่อดิจิตอล (Digital Signatures) • จากการทำงานของวิทยาการเข้ารหัสลับแบบกุญแจอสมมาตร เห็นได้ว่า • ถ้านาย ก คือ ผู้ส่งข้อความ และนาย ข คือผู้รับข้อความ • นาย ก เข้ารหัสข้อความโดยใช้กุญแจสาธารณะของนาย ข และส่งข้อความที่เข้ารหัสไปให้นาย ข • ในทางกลับกัน • ถ้านาย ก ส่งข้อความไปให้นาย ข • นาย ก เข้ารหัสข้อความโดยใช้กุญแจส่วนตัวของนาย ก และส่งข้อความที่เข้ารหัสแล้วไป

  4. ผู้ส่ง (ก) ผู้รับ (ข) ข้อความ (M) ข้อความ ไซเฟอร์ (C) เข้ารหัสด้วยกุญแจส่วนตัวของนาย ก การเข้ารหัสข้อความด้วยกุญแจส่วนตัวของผู้ส่ง ลายมือชื่อดิจิตอล (Digital Signatures) (ต่อ)

  5. ลายมือชื่อดิจิตอล (Digital Signatures) (ต่อ) • วัตถุประสงค์ที่นาย ก เข้ารหัสข้อความด้วยกุญแจส่วนตัวของตนเอง: • เพื่อให้ผู้รับมั่นใจว่าข้อความนี้ส่งมาจากนาย ก หรือผู้ส่งจริง ๆ • ข้อมูลอาจไม่เป็นความลับ (Confidentiality) แต่ทำให้ระบุตัวตน (Authentication) ได้ว่า นาย ก คือผู้ส่ง อีกทั้งยังทำให้นาย ก ไม่สามารถปฏิเสธได้ว่า เขาคือผู้ส่งข้อความจริง ๆ (Non-repudiation)

  6. ความสำคัญของลายมือชื่อดิจิตอลความสำคัญของลายมือชื่อดิจิตอล • เป็นกลไกการอนุญาตที่ถูกต้องเสมือนการลงลายมือชื่อยอมรับในเอกสารต่างๆ ที่ใช้กันมานานแล้ว • ปัจจุบันลายมือชื่อดิจิตอล ได้รับการยอมรับว่าถูกต้องตามกฎหมาย ดังเช่น การส่งข้อความติดต่อกับธนาคารผ่านทางอินเตอร์เน็ต

  7. ผู้ส่ง (ก) ผู้รับ (ข) ข้อความ ไซเฟอร์ (C) ข้อความ ไซเฟอร์ (C) ข้อความ (M) เครือข่าย ข้อความ (M) เข้ารหัสด้วยกุญแจส่วนตัว ถอดรหัสด้วยกุญแจสาธารณะ การทำงานของลายมือชื่อดิจิตอล การทำงานของลายมือชื่อดิจิตอล

  8. การย่อยข้อความ (Message Digest) • บางครั้งเรียกว่า Hash • เป็นการพิมพ์ลายนิ้วมือวิธีหนึ่ง หรือคือการสรุปข้อความ ซึ่งใช้หลักการทำงานคล้ายคลึงกับ Longitudinal Redundancy Check (LRC) หรือ Cyclic Redundancy Check (CRC) • LRC หรือ CRC ใช้เพื่อตรวจสอบการมีบูรณภาพของข้อมูล (กล่าวคือ มั่นใจได้ว่าข้อความที่ส่งไปจะไม่ถูกเปลี่ยนแปลงก่อนจะถึงผู้รับ)

  9. การทำงานของ LRC • นำข้อความต้นฉบับขนาด n บิต มาแบ่งเป็นกลุ่มๆ ละ 8 บิต • นำมาเขียนใหม่เรียงทีละแถว คำนวณหาผลลัพธ์ที่ได้ (LRC) จากการนับจำนวนของ 1 หรือ 0 ในสดมภ์ทั้ง n แถว • ถ้าจำนวนของ 1 ในสดมภ์ทั้ง n แถว เป็นจำนวนคี่เรียกว่า odd parity (แทนค่าด้วย 1) • ถ้าจำนวน 1 ในสดมภ์ทั้ง n แถว เป็นจำนวนคู่ เรียกว่า even parity (แทนค่าด้วย 0)

  10. ข้อมูลต้นฉบับ ข้อมูลต้นฉบับและ LRC 11100100 11011101 00111001 00101001 ข้อมูลต้นฉบับที่นำมาเรียงเป็นแถว LRC 11100100 11011101 00111001 00101001 00101001 11100100 11011101 00111001 00101001 00101001 ตัวอย่างการทำงานของ LRC • กำหนดให้ข้อความต้นฉบับมีขนาด 32 บิต คือ 11100100 11011101 00111001 00101001

  11. แนวคิดของการย่อยข้อความแนวคิดของการย่อยข้อความ • ทำงานคล้ายคลึงกับ LRC • โดยทั่วไปแล้วการย่อยข้อความจะทำให้ขนาดของข้อความเล็กกว่าข้อความต้นฉบับเดิม

  12. 101010101 010101010 …. ข้อมูลต้นฉบับ ขั้นตอนวิธี ย่อยข้อความ 0101 1011 …. ข้อความย่อย แนวคิดของการย่อยข้อความ สรุปแนวคิดการย่อยข้อความ

  13. สิ่งที่ต้องคำนึงถึงของการย่อยข้อความสิ่งที่ต้องคำนึงถึงของการย่อยข้อความ • การย่อยข้อความจำเป็นต้องมีคุณสมบัติดังนี้คือ 1. ข้อความต้นฉบับเดียวกันต้องได้ข้อความย่อยเดียวกัน 2. การย่อยข้อความไม่สามารถดำเนินการในทางกลับกัน 3. เมื่อกำหนดให้มีข้อความ 2 ข้อความ ถ้าคำนวณหาข้อความย่อยของทั้ง 2 ข้อความ ข้อความย่อยที่ได้ต้องแตกต่างกัน

  14. ข้อมูลต้นฉบับ ขั้นตอนวิธี ย่อยข้อความ ข้อความย่อยที่ได้ต้องมีข้อความเดียว ข้อความย่อย ข้อความย่อยสำหรับข้อมูลต้นฉบับเดียวกันต้องได้ข้อความย่อยเดียวกัน ข้อความย่อยสำหรับข้อมูลต้นฉบับเดียวกันต้องได้ข้อความย่อยเดียวกัน

  15. ข้อความย่อย ไม่สามารถหาข้อความต้นฉบับโดยใช้ขั้นตอนวิธีในทางกลับกัน ขั้นตอนวิธีย่อยข้อความ ข้อมูลต้นฉบับ การย่อยข้อความไม่สามารถดำเนินการในทางกลับกัน การย่อยข้อความไม่สามารถดำเนินการในทางกลับกัน

  16. ข้อความต้นฉบับบล็อค 1 ข้อความย่อย 1 (MD1) ขั้นตอนวิธี ย่อยข้อความ ข้อความย่อย 2 ข้อความนี้แตกต่างกัน ข้อความต้นฉบับบล็อค 2 ขั้นตอนวิธี ย่อยข้อความ ข้อความย่อย 2 (MD2) ข้อความย่อย 2 ข้อความจากข้อความที่ต่างกันได้ข้อความย่อยที่ต่างกัน ข้อความย่อย 2 ข้อความจากข้อความที่ต่างกันได้ข้อความย่อยที่ต่างกัน

  17. การชนกัน(Collision) • ข้อความ 2 ข้อความได้ข้อความย่อยเดียวกัน

  18. MD5 • ขั้นตอนวิธีย่อยข้อความที่ถูกพัฒนาโดย Ron Rivest • ผลลัพธ์จากขั้นตอนวิธีย่อยข้อความจะมีขนาด 128 บิต • ข้อดี • ทำงานได้เร็ว • ผลลัพธ์หรือข้อความย่อยที่ได้ไม่เกิดการชนกัน

  19. การทำงานของ MD5 • นำข้อมูลบล็อกละ 512 บิต -> ดำเนินการตามขั้นตอนวิธีย่อยข้อความ ->ผลลัพธ์ขนาด 128 บิต • ขั้นตอนที่ 1 การเพิ่มบิตหลังข้อความ (Padding) • ขั้นตอนที่ 2 การระบุขนาดของข้อความต้นฉบับ (Append Length) • ขั้นตอนที่ 3 แบ่งข้อความออกเป็นบล็อคละ 512 บิต • ขั้นตอนที่ 4 กำหนดค่าเริ่มต้นของตัวแปรลูกโซ่ • ขั้นตอนที่ 5 การดำเนินการกับบล็อค

  20. ขั้นตอนที่ 1 การเพิ่มบิตหลังข้อความ (Padding) M + Pd + 64 = 512 n โดย M คือ ข้อความต้นฉบับ Pd คือ จำนวนบิตที่เพิ่มเข้าไป และ n คือ จำนวนเต็มบวก ** บิตที่เพิ่มนี้จะเริ่มต้นด้วย 1 และตามด้วย 0 เท่ากับจำนวนบิตที่ต้องการเพิ่มเข้าไป

  21. ข้อความต้นฉบับ การเพิ่มบิตอีก (1-512 บิต) ข้อความต้นฉบับบิตที่เพิ่ม(100...0) ขั้นตอนการเพิ่มบิต ขั้นตอนที่ 1 การเพิ่มบิตหลังข้อความ (Padding) (ต่อ) ข้อสังเกตุ แม้ว่าขนาดของข้อความเมื่อรวมกับ 64 บิต แล้วมีค่าเท่ากับจำนวนเท่าของ 512 บิต แต่ต้องเพิ่ม Pd ด้วย เช่น ข้อความมีขนาด 448 เมื่อรวมกับ 64 บิต แล้วจะมีค่าเท่ากับ 512 บิต ก็ต้องเพิ่มบิตอีก 512 บิต เพื่อให้ข้อความมีขนาด 960 บิต ซึ่งจะเห็นได้ว่า ขนาดของบิตที่เพิ่มเข้าไปจะอยู่ระหว่าง 1 ถึง 512

  22. ข้อความต้นฉบับ การเพิ่มบิตอีก (1-512 บิต) ขนาดของข้อความ (บิต) ขนาดของข้อความ (บิต) ข้อความต้นฉบับบิตที่เพิ่ม(100...0) ขั้นตอนที่ 2 การระบุขนาดของข้อความต้นฉบับ (Append Length) • นำค่าขนาดของข้อความต้นฉบับเริ่มต้นไปเพิ่มในส่วนท้ายสุดของข้อความหลังจากการเพิ่มบิตในขั้นตอนที่ 1 • ในกรณีที่ขนาดของข้อความต้นฉบับมากกว่า 264 บิต นั่นก็คือ มีขนาดยาวมาก ๆ ให้เลือกบิตต่ำ (low-order bit) 64 บิต

  23. ข้อมูลที่จะนำไปดำเนินการย่อยข้อความข้อมูลที่จะนำไปดำเนินการย่อยข้อความ บล็อค 1 บล็อค 2 บล็อค n บล็อค 3 . . . 512 บิต 512 บิต 512 บิต 512 บิต แบ่งข้อมูลออกเป็นบล็อคละ 512 บิต ขั้นตอนที่ 3 แบ่งข้อความออกเป็นบล็อคละ 512 บิต

  24. ขั้นตอนที่ 4 กำหนดค่าเริ่มต้นของตัวแปรลูกโซ่ ค่าเริ่มต้นของตัวแปรลูกโซ่

  25. A B C D b c d a ขั้นตอนที่ 5 การดำเนินการกับบล็อค • ขั้นตอนย่อยที่ 5.1 สำเนาค่าเริ่มต้นของตัวแปรลูกโซ่ ให้กับตัวแปรต่อไปนี้คือ a, b, c และ d กล่าวคือ a = A, b = B, c = C และ d = D

  26. บล็อคย่อย 1 32 บิต บล็อคย่อย 2 32 บิต .... ... บล็อคย่อย n 32 บิต ข้อความบล็อค 1 (512 บิต) ขั้นตอนที่ 5 การดำเนินการกับบล็อก (ต่อ) • ขั้นตอนย่อยที่ 5.2 แบ่งข้อความ 512 บิตของบล็อคที่ดำเนินการขณะนั้นออกเป็นบล็อคย่อย 16 บล็อค โดยแต่ละบล็อคย่อยมีขนาด 32 บิต

  27. a b c d บล็อคย่อย 16 บล็อค ค่าคงที่ t 1 รอบของการดำเนินการ การดำเนินการใน 1 รอบ ขั้นตอนที่ 5 การดำเนินการกับบล็อก (ต่อ) • ขั้นตอนย่อยที่ 5.3 มีการดำเนินการ 4 รอบ โดยแต่ละรอบ ดำเนินการกับ 16 บล็อคย่อย ข้อมูลนำเข้าของแต่ละรอบคือ ก) ข้อความ16 บล็อคย่อย ข) ตัวแปร a, b, c และ d และ ค) ค่าคงที่ ซึ่งในที่นี้เรียกว่า t

  28. ขั้นตอน1 ฟังก์ชัน P ขั้นตอน2 บวก บวก ขั้นตอน3 M[i] a a b b c c d d ขั้นตอน4 บวก t[k] ขั้นตอน5 เลื่อน ขั้นตอน6 บวก ขั้นตอน7 การดำเนินการ 1รอบ ของ MD5 (ที่มา: Cryptography and Network Security,หน้า 136)

  29. ขั้นตอนการดำเนินการ 1 รอบของ MD5 • ขั้นตอนการดำเนินการ 1 ครั้งในแต่ละรอบอธิบายได้ดังภาพโดยมีรายละเอียดดังนี้ • ดำเนินการกับตัวแปร b, c และ d ด้วยฟังก์ชัน P ซึ่งในแต่ละรอบของการดำเนินการมีฟังก์ชัน P ต่างกัน • นำตัวแปร a มาบวกกับผลลัพธ์ที่ได้จากการผ่านฟังก์ชัน P • นำข้อความบล็อกย่อยที่ i (M[i]) บวกกับผลลัพธ์ที่ได้จากการดำเนินการในขั้นตอนที่ 2 • นำค่าคงที่ t[k] บวกกับผลลัพธ์ที่ได้จากการดำเนินการในขั้นตอนที่ 3 • เลื่อนบิตเป็นวงไปทางซ้ายของผลลัพธ์จากขั้นตอนที่ 4 จำนวน s บิต • นำตัวแปร b บวกกับผลลัพธ์ที่ได้จากขั้นตอนที่ 5 • ได้ค่า abcd ใหม่ จากผลลัพธ์ในขั้นตอนที่ 6 เพื่อจะดำเนินการต่อไป

  30. ขั้นตอนการดำเนินการ 1 รอบของ MD5 (ต่อ) • จากขั้นตอนดังกล่าวข้างต้น สามารถเขียนให้อยู่ในรูปสมการคณิตศาสตร์ a = b + ((a + P (b, c, d) + M[i] + t[k] <<< s)) โดยที่a, b, c, d = ตัวแปรลูกโซ่ที่ได้กล่าวข้างต้น P = ฟังก์ชันแบบไม่เชิงเส้นดังจะกล่าวต่อไป M[i] = M[q × 16 + i] ซึ่งiคือบล็อคย่อยที่i (0 i 15) และ qคือลำดับที่ของจำนวนเท่าของ 512 บิตเช่นข้อความประกอบด้วย 3×512 ดังนั้นลำดับที่ของ q คือ 0 q 2 t[k] = ค่าคงที่ซึ่งคำนวณจากค่าจาก 232 × abs(sin(j)) โดยjคือเรเดียน, 1 j 64 <<< s = การเลื่อนบิตเป็นวงทางซ้ายจำนวนsบิต

  31. ขั้นตอนการดำเนินการ 1 รอบของ MD5 (ต่อ) • ฟังก์ชัน P คือ การดำเนินการซึ่งเกิดขึ้นแตกต่างกันทั้ง 4 รอบ โดยดำเนินการทางตรรกศาสตร์กับตัวแปร b, c และ d ซึ่งฟังก์ชัน P ทั้ง 4 รอบแสดงดังตาราง หมายเหตุ ตัวดำเนินการตรรกะ AND แทนด้วย  OR แทนด้วย  NOT แทนด้วย  และ XOR แทนด้วย 

  32. ความแตกต่างระหว่าง MD5 กับ MD4

  33. ประสิทธิภาพของ MD5 • Rivest ใช้หลักการคิดที่ทำให้ขั้นตอนวิธีซับซ้อนและมีการสุ่มเท่าที่จะเป็นไปได้มากที่สุด • เป็นการยากมากที่ข้อความย่อย 2 ข้อความที่ได้จากการดำเนินการ MD5 จะมีค่าเท่ากัน • แต่ก็มีผู้พยายามที่จะโจมตีข้อความย่อยที่ได้จากการดำเนินการ MD5 เช่น • Berson • Boer และ Bosselaers • Dobbertin

More Related