Cryptography CS 555 Lecture 6 part II : การเข้ารหัสลับด้วย ฟังก์ชันแฮชและ HMAC 1
หัวข้อบรรยายอย่างย่อ SHA1, RIPMD160 HMAC การโจมตีฟังก์ชันแฮชและ HMAC 2
ควรอ่านหัวข้อต่อไปนี้ Stallings, Chapter 12: 12.1, 12.2 and 12.3 Stinson, Chapter 4: 4.1, 4.2 and 4.3 3
สิ่งที่จำเป็นสำหรับฟังก์ชันแฮช 4 กำหนดฟังก์ชัน h: X Y แล้วเราบอกได้ว่า h มีคุณสมบัติ ทนต่อภาพก่อน (one-way) กลับไม่ได้เพราะมีกรณีชนกัน ถ้าให้ y Y ในการคำนวณเป็นไปไม่ได้ที่จะหาค่า x X เช่น h(x) = y ลำดับที่สองทนต่อภาพก่อน (weak collision resistance) หาค่า x’ ถ้ากำหนด x X ในการคำนวณเป็นไปไม่ได้ที่จะหาค่า x’ X เช่น h(x’) = h(x) ทนต่อการชน (strong collision resistance) สองค่าที่ต่างกัน ในทางการคำนวณจะไม่สามารถหาค่าสองค่าที่ต่างกัน x’, x X เช่น h(x’)=h(x)
MD5 Overview 5
MD5 Compression Function (Single Step ผลลัพธ์มีขนาด 128 บิต ทำงาน 4 รอบ แต่ละรอบมี 16 ขั้นตอน 6
SHA1 (Secure Hash Algorithm) SHA ออกแบบโดย NIST และใช้เป็นมาตรฐานสำหรับฟังก์ชันแฮช โดยรายละเอียดของมาตรฐานอยู่ใน FIPS-180 (1993) SHA-1 เป็นเวอร์ชันใหม่ที่พัฒนาต่อจาก SHA กำหนดไว้ใน, FIPS (1995) ขั้นตอนวิธีนี้ให้ผลลัพธ์ขนาด 160 บิต 7
SHA1 Overview ข้อความจะถูกตัดปะให้มีขนาดที่ละ 512 บิต ติดตั้งค่าบัฟเฟอร์ขนาด 5-word (160 บิต ) Word A: Word B: EF CD AB 89 Word C: 98 BA DC FE Word D: Word E: C3 D2 E1 F0 ข้อความแบ่งเป็นชุดประมวลผลในขนาด 16-word (512 บิต ) - ขยาย 16 words ลงใน 80 words โดยการผสมและการย้าย - ทำงาน 4 รอบกับตัวดำเนินการ 20 แบบบนบล็อคข้อมูลและบัฟเฟอร์ 8
SHA-1 Compression Function (Single Step) 9
SHA-1 Compression Function แต่ละรอบมี 20 ขั้นตอนในการปรับปรุงบัฟเฟอร์ ดังนี้ (A,B,C,D,E) <- (E+f(t,B,C,D)+(A<<5)+W t +K t ),A,(B<<30),C,D) t คือตัวแปรเก็บหมายเลขขั้นตอน f(t,B,C,D) เป็นฟังก์ชันไม่เป็นเชิงเส้น W t แตกมาจากบล็อคข้อความ K t เป็นค่าคงที่ที่ได้มาจากค่า Sin S k ผลการเลื่อนบิตไปทางซ้ายเป็นจำนวน k บิต 10
SHA-1 Cryptanalysis SHA1 ทำงาน 20 ขั้นตอนแทน 16 ขั้นตอนที่ ทำงานใน MD5 ในแต่ละรอบ SHA1 สลับและผสมข้อความโดยใช้การหมุนและ X-OR ทำให้การค้นหาการชนกันหาได้ยากขึ้น การโจมตีแบบ Brute Force ทำได้ยากขึ้น เพราะบัฟเฟอร์ ใหญ่ขึ้นเป็น 160 บิตต่อ 128 บิตใน MD5 ไม่มีจุดอ่อนต่อการโจมตีเท่าที่รู้จัก ( ตรงข้ามกับ MD5) 11
RIPEMD-160 RIPEMD-160 ถูกพัฒนาขึ้นในยุโรปโดยนักวิจัยที่มีส่วนร่วมกันโจมตี MD4/5 ผลลัพธ์มีขนาด 160 บิต ดังเช่น MD5 ข้อความจะถูกตัดปะในขนาด 448 mod 512 และเพิ่มบิต ข้อมูลขนาด 64 บิต ติดตั้งค่าบัฟเฟอร์ขนาด 5-word (160 บิต ) ดังต่อไปนี้ A:A: B: EF CD AB 89 C:C:98 BA DC FE D:D: E: C3 D2 E1 F0 ประมวลผลข้อความขนาด 16-word (512 บิต ) ทำ 10 รอบ แต่ละรอบมี 16 ขั้นตอนกับบล็อคข้อความและบัฟเฟอร์ ใน 2 แถว ขนานใน 5 แถว 12
RIPEMD-160 Round 13
RIPEMD-160 Compression Function (Single Step) K j ค่าคงที่ใช้ในขั้นตอนที่ j Rol เลื่อนบิตไปทางซ้าย X i ได้จากบล็อคข้อความ ขนาด 512 บิต 14
RIPEMD-160, MD5 & SHA-1 Brute force attack เหมือนกับ SHA1 (160 bits) ไม่มีจุดอ่อนต่อการโจมตีเท่าที่รู้จัก ช้ากว่า MD5 ( มีขั้นตอนมากกว่า ) SHA-1 เหมาะสำหรับการทำงานบน CPU แบบ big endian ขณะที่ RIPEMD-160 & MD5 เหมาะสำหรับ การทำงานบน CPU แบบ little endian 15
{ Endianess } การกำหนดลำดับของไบต์ เช่น เลขจำนวนเต็มหลายไบต์ ปรากฎในที่อยู่ต่ำสุดของ เลขจำนวนเต็ม Big endian หมายถึง ไบต์ที่มีค่านัยยะสำคัญสูงสุดจะถูกจัดเก็บไว้ตำแหน่งแรก สุด เช่น Sun Little endian หมายถึง ไบต์ที่มีค่านัยยะสำคัญต่ำสุดจะถูกจัดเก็บก่อน เช่น Intel Example:0x AddressBig EndianLittle Endian Buf0x870x21 Buf + 10x650x43 Buf + 20x430x65 Buf + 30x210x87 16
การแบ่งประเภท MDC (manipulation detection codes) หรือ MIC (message integrity codes) - ไม่ต้องใช้คีย์ -One-Way Hash Functions (OWHFs) - Collision Resistant Hash Functions (CRHFs) MAC (message authentication codes) - ใช้คีย์ - ใช้สำหรับ authentication และ integrity 17
ทำไมฟังก์ชันแฮชจึงไม่มั่นคงเพียงพอ ? ฟังก์ชันแฮชตรวจสอบความสมบูรณ์ของข้อมูลได้ (data integrity) แต่ไม่ได้บอกว่าข้อมูลได้มาจากไหน ใครเป็นผู้สร้าง ผลลัพธ์ของแฮช ( ใครก็สร้างได้เพราะฟังก์ชันแฮชเป็นแบบ สาธารณะ ) รับรองแหล่งข้อมูล ( รวมทั้งรับรองข้อความ ) ยังเป็นที่ต้องการ มิเช่นนั้น ใครก็สามารถเข้ามาร่วมใช้งานได้ รวมคีย์ลับเข้าไปด้วย หมายเหตุ MACs ไม่ได้ป้องกันการจราจจรที่เข้ามา เช่นไม่ได้ป้องกัน การโจมตีแบบเล่นซ้ำ (replay attacks) 18
สิ่งจำเป็นต่อ MAC รวมคีย์ลับเข้าไปด้วย ง่ายต่อการคำนวณถ้ารู้คีย์ลับ k MAC เป็นฟังก์ชันแบบหลายต่อหนึ่ง ดังนั้นจึงอาจเกิดการชนกัน ( ข้อความต่างกัน แต่ให้ค่า MAC เดียวกัน ) คล้ายกับสิ่งที่จำเป็นในฟังก์ชันแฮช - Compression: M มี n บิต h k (M) มีขนาดคงที่เท่ากับ m บิต โดยที่ m < n - ถ้ารู้ข้อความและค่า MAC จะเป็นไปไม่ได้ที่จะหาข้อความอื่นที่มีค่า MAC เดียวกัน - MACs น่าจะเป็นการกระจายแบบอย่างสม่ำเสมอ (uniformly distributed) - MAC น่าจะขึ้นกับทุกบิตในข้อความ 19
MAC บนพื้นฐานการเข้ารหัสแบบ สมมาตร : CBC-MAC x1x1 x2x2 x3x3 xtxt 0 k E k E k E k E k1 E -1 optional บล็อคสุดท้ายใช้แบบ MAC k E 20
ความมั่นคงของ CBC-MAC CBC-MAC จะมั่นคงเฉพาะข้อความที่กำหนดจำนวนบล็อคไว้ตายตัว การโจมตี CBC-MAC: กำหนดให้ (x 1,H 1 ) และ (x 2,H 2 ) และร้อง ขอ ((x 1 ||z),H 3 ) เป็นไปได้ที่จะสร้างข้อความใหม่ เช่น (x 2 ||(H 1 z H 2 ),H 3 ) นั้นถูกต้อง ที่ซึ่ง x1, x2, และ z มีความยาว เท่ากับขนาดของบล็อครหัสลับที่ใช้สร้าง MAC การป้องกันการโจมตี : ขั้นตอนมีทางเลือกในการป้องกันการปลอมโดย ปราศจากผลกระทบกับสถานะในระหว่างทำงาน 21
โจมตีเพื่อค้นหารหัสลับ การโจมตีใช้กับ MACs ที่ใช้รหัสลับแบบสมมาตร ค้นหาคุณสมบัติของรหัสลับเพื่อหาการชน เช่น - คุณสมบัติของส่วนประกอบ - คีย์อ่อนแอ (Weak keys) - กำหนดจุดตายตัว ( จำกัดผลกระทบที่ได้ผล ) (E k (x))=x สำหรับทุก x - การชนกันของคีย์ 22
ฟังก์ชันคีย์แฮชของ MACs สร้าง MAC โดยใช้ฟังก์ชันแฮช มากกว่าใช้บล็อครหัส ลับ เพราะฟังก์ชันแฮชทำงานได้เร็วกว่า ใช้ฟังก์ชันแฮชสาธารณะและคีย์ลับแบบสมมาตร มาตรฐานปัจจุบันคือ HMAC กำหนดไว้ใน FIPS 198 (2002) 23
เป้าหมายของ HMAC ใช้ฟังก์ชันแฮชที่มีอยู่โดยไม่ต้องปรับปรุง รักษาความเป็นต้นฉบับของฟังก์ชันแฮชโดยไม่ไปลดประสิทธิภาพการทำงาน ใช้งานคีย์อย่างง่าย อนุญาตให้เปลี่ยนฟังก์ชันแฮชได้ง่าย เพื่อการเปลี่ยนไปใช้ฟังก์ชันแฮชที่เร็วกว่าและ มั่นคงกว่าภายหลังได้ เข้าใจการวิเคราะห์รหัสลับในจุดแข็งของกลไกการรับรองบนพื้นฐานการทำ ความเข้าใจฟังก์ชันแฮช 24
HMAC HMAC K = Hash[(K + opad) || Hash[(K + ipad)||M)]] K + คือคีย์ที่ตัดปะนอกเหนือจากขนาดบล็อคนำเข้าของฟังก์ชันแฮช และ opad, ipad เป็นค่าคงที่ที่ระบุในการปะข้อความ ขนาดของคีย์ : L/2 < K < L ขนาด MAC : อย่างน้อย L/2 โดยที่ L คือผลลัพธ์ของฟังก์ชัน แฮช 25
HMAC Overview 26
HMAC algorithm
ความมั่นคงใน HMAC ความมั่นคงของ HMAC เกี่ยวข้องกับขั้นตอนวิธีแฮช ถ้าใช้ฟังก์ชันแฮชที่มั่นคงเช่น SHA1 และร่วมกับขนาดของคีย์ที่เหมาะสม จะไม่ มีการโจมตีใดสามารถโจมตี HMAC โดยทั่วไป HMAC อาจโดนโจมตีได้โดย - brute force ในขอบเขตของคีย์ที่เป็นไปได้ - โจมตีที่ฟังก์ชันแฮช birthday attack แต่อาจโจมตีได้ยากเนื่องจากใช้คีย์ที่ดี โจมตีที่ compression function 27
การตรวจความสมบูรณ์ของข้อมูล เป้าหมาย : ป้องกันข้อผิดพลาดแบบอุบัติเหตุ หรือข้อผิดพลาดที่ไม่ได้มุ่งโจมตี โดยอาจเกิดจากข้อผิดพลาดการถ่ายโอน มีการตรวจจับรหัสข้อผิดพลาดและรหัสตรวจแก้ไขข้อผิดพลาด หมายเหตุ ด้วยวิธีการนี้ใครก็สามารถส่งแพคเกจได้แตกต่างตามความต้องการ ของผู้ส่ง วิธีการตรวจสอบ : - Checksum - CRC (Cyclic redundancy codes) 28
สรุปการโจมตี Hash และ HMAC Birthday attacks Pseudo-collisions โจมตีฟังก์ชันบีบอัด (compression function) การโจมตีแบบลูกโซ่ (Chaining Attacks) โจมตีที่คุณสมบัติของรหัสลับที่นำมาวิเคราะห์ 29
Birthday Attacks โจมตีภายใน O(2 m/2 ) และได้กับทุกฟังก์ชันแฮชที่ไม่ใช้คีย์ ขั้นตอน : - ผู้โจมตีสร้างตัวแปรขนาด 2 m/2 ตัวจากข้อความที่ถูกต้องที่มีความหมาย เหมือนกัน - ผู้โจมตีสร้างตัวแปรขนาด 2 m/2 ตัวจากข้อความที่ใช้หลอก - สองเซ็ตของข้อความถูกเปรียบเทียบเพื่อหาคู่ที่มีค่าแฮชเดียวกัน ( ความน่าจะเป็น > 0.5 ด้วยวิธี birthday paradox) 30
Pseudo-collisions ค้นหาการชนกันโดยที่ IV แตกต่างกันในข้อความนำเข้า กำหนดขอบเขตความมั่นคงที่ใช้ในการวิเคราะห์ความมั่นคงของฟังก์ชันแฮช บางครั้งอาจสร้างต่อไปจนถึงการโจมตีเต็มรูปแบบได้ ในกรณีที่ไม่คำนึงถึงการใช้งานได้นัก ให้กำหนด เช่นการหาการชนกันที่ไร้ผลของค่าสุ่ม -IV - H (IV, x1x2) = f(f(IV, x1), x2) -IV’ = f(IV, x 1 ) h(IV’, x 2 )= h(IV,x 1 x 2 ) - เราจะได้รับการชนกันแบบเทียม เป็นอิสระจากความแข็งแกร่งของฟังก์ชัน f 31
การโจมตี Compression Function f ติดตั้ง : - ให้พิจารณาที่ขั้นตอนที่ I ของการวนรอบในฟังก์ชันแฮช - ข้อความทั้งหมดประกอบด้วยหนึ่งบล็อค - ผลลัพธ์ของแฮชได้จากผลลัพธ์ของฟังก์ชันบีบอัด - ทำไมต้องทำให้ยุ่งยาก ? - เพราะว่าบางครั้งการโจมตีแบบนี้อาจจะขยายวงกว้างไปสู่การโจมตีที่คล้ายคลึง กันในการวนรอบของฟังก์ชันแฮช ( มีความซับซ้อนเหมือนกัน ) แม้ว่าบางครั้ง การวนรอบในฟังก์ชันแฮชจะมีจุดอ่อนมากกว่าในฟังก์ชันบีบอัด 32
Chaining Attacks บนพื้นฐานการวนรอบในฟังก์ชันแฮช Correcting-block chaining attacks: สร้างการชน โดยการออกแบบบล็อคที่ผลิตค่าเป็นลูกโซ่ที่กำหนดผลลัพธ์ใน ลักษณะเฉพาะ h(x) Meet-in-the-middle chaining attacks: คล้ายกับ birthday attack แต่ค้นหาการชนบน ผลลัพธ์ที่ได้มาแบบทันทีแทนที่จะรอให้ได้ผลลัพธ์ที่ทำเสร็จ (final output ) 33
Chaining Attacks (cont.) Fixed point: - จุดคงที่คือ (H i-1,x i ) ตัวอย่างเช่น f(H i-1, x i )= H i-1 - แทรกตัวเลขของบล็อคที่เหมือนกันตามใจชอบ x i ที่จุดลูกโซ่ ( ข้อมูลแฮชยังคงเหมือนเดิม ) Differential chaining attacks: ใช้วิธีการวิเคราะห์แบบ differential กับฟังก์ชัน แฮช 34
การโจมตีเพื่อค้นหารหัสลับ การโจมตีแบบนี้ เป็นการโจมตี MACs ที่ใช้ในรหัสลับแบบ สมมาตร ค้นหาคุณสมบัติของรหัสลับเพื่อค้นหาการชนกัน ตัวอย่าง - คุณสมบัติองค์ประกอบ - คีย์ที่มีจุดอ่อน - จุดคงที่ ( จำกัดผลกระทบที่ได้ผล (Ek(x))=x สำหรับทุก x - การชนกันของคีย์ 35
สรุป ฟังก์ชันแฮชมาตรฐานในปัจจุบันคือ SHA1 (160 bits) HMAC เป็นมาตรฐานของ MAC Birthday attacks มีความเกี่ยวข้องกับขนาดของผลลัพธ์ของ ฟังก์ชันแฮช (brute force) 36