360 likes | 591 Views
344-484 วิทยาการเข้ารหัสลับเบื้องต้น. บทที่ 6 ลายมือชื่อดิจิตอลและฟังก์ชันแฮช (ต่อ). เนื้อหา. ลายมือชื่อดิจิตอล (Digital Signatures) MD5 SHA (Secure Hash Algorithm) MAC (Message Authentication Code) HMAC เทคนิคลายมือชื่อดิจิตอล. Secure Hash Algorithm (SHA).
E N D
344-484 วิทยาการเข้ารหัสลับเบื้องต้น บทที่ 6 ลายมือชื่อดิจิตอลและฟังก์ชันแฮช (ต่อ)
เนื้อหา • ลายมือชื่อดิจิตอล (Digital Signatures) • MD5 • SHA (Secure Hash Algorithm) • MAC (Message Authentication Code) • HMAC • เทคนิคลายมือชื่อดิจิตอล
Secure Hash Algorithm (SHA) • ได้ถูกพัฒนาขึ้นมาจากสถาบันมาตรฐานและเทคโนโลยีแห่งชาติของสหรัฐอเมริกา (NIST) ร่วมกับ National Security Agency (NSA) • ปี ค.ศ. 1993 ได้เผยแพร่ SHA เป็นมาตรฐานที่ใช้ในการประมวลผลสารสนเทศกลาง (Federal Information Processing Standard : FIPS PUB 180) • ปี ค.ศ. 1995 ได้เปลี่ยนชื่อเป็น SHA-1 • SHA ปรับปรุงมาจาก MD4 และมีความคล้ายคลึงกับ MD4 มาก
การทำงานของ SHA • ขั้นตอนที่ 1 การเพิ่มบิตหลังข้อความ (Padding) • คล้ายกับ MD5 • ขั้นตอนที่ 2 การระบุขนาดความยาวของข้อความต้นฉบับ (Append length) • ขั้นตอนที่ 3 แบ่งข้อความออกเป็นบล็อกละ 512 บิต • ขั้นตอนที่ 4 กำหนดค่าเริ่มต้นของตัวแปรลูกโซ่ • กำหนดค่าเริ่มต้นให้กับตัวแปรลูกโซ่ 5 ตัวแปร คือ A, B, C, D และ E • โดยตัวแปร A, B, C และ D มีค่าเหมือนกับใน MD5 และ E มีค่าเท่ากับ (C3 D2 E1 F0)16
การทำงานของ SHA (ต่อ) • ขั้นตอนที่ 5 การดำเนินการกับบล็อก • ขั้นตอนย่อยที่ 5.1 สำเนาค่าเริ่มต้นของตัวแปรลูกโซ่ ให้กับตัวแปรต่อไปนี้คือ a, b, c, d และe กล่าวคือ a = A, b = B, c = C ,d = D และ e = E • ขั้นตอนย่อยที่ 5.2 แบ่งข้อความ 512 บิตของบล็อคที่ดำเนินการขณะนั้นออกเป็นบล็อคย่อย 16 บล็อก โดยแต่บล็อกย่อยมีขนาด 32 บิต • ขั้นตอนย่อยที่ 5.3 มีการดำเนินการ 4 รอบ โดยแต่ละรอบประกอบด้วย 20 ขั้นตอน ข้อมูลนำเข้าของแต่ละรอบคือ ก) ข้อความ16 บล็อคย่อย ข) รีจิสเตอร์ abcde และ ค) ค่าคงที่ K[t] ซึ่ง 0 t 79 และค่าคงที่ K[t] มี 4 ค่า
การทำงานของ SHA (ต่อ) • ขั้นตอนย่อยที่ 5.4 การดำเนินการ SHA 4 รอบ แต่ละรอบดำเนินการอีก 20 ครั้ง
การทำงานของ SHA (ต่อ) เขียนให้อยู่ในรูปสมการคณิตศาสตร์ดังนี้ abcde = (e + P (b, c, d) + s5 (a) + W[t] + K[t] ), a, s30(b), c, d) โดยที่ a, b, c, d, e = ตัวแปรลูกโซ่ ที่ได้กล่าวข้างต้น P = ฟังก์ชันหนึ่งซึ่งจะกล่าวต่อไป si= การเลื่อนบิตเป็นวงทางซ้ายของบล็อคย่อยขนาด 32 บิต เป็นจำนวน i บิต W[t] = ค่าขนาด 32 บิตที่ได้มาจากบล็อคย่อย 32 บิตขณะนั้น K[t] = ค่าคงที่ 1 ใน 4 ค่า
การทำงานของ SHA (ต่อ) • ฟังก์ชัน P คือ การดำเนินการซึ่งเกิดขึ้นแตกต่างกันทั้ง 4 รอบ โดยดำเนินการทางตรรกศาสตร์กับตัวแปร b, c, และ d ซึ่งฟังก์ชัน P ทั้ง 4 รอบแสดงดังตาราง หมายเหตุ ตัวดำเนินการตรรกะ AND แทนด้วย OR แทนด้วย NOT แทนด้วย และ XOR แทนด้วย
การทำงานของ SHA (ต่อ) • สำหรับค่าของ W[t] ที่ 0 t 15 คือ ค่าของ M[t] (ข้อมูลนำเข้า 16 บล็อคย่อย มีชื่อว่า M[0], M[1], … M[15]) ส่วนค่าของ W[t] ที่เหลือ (16 t 79) คำนวณจากสมการคณิตศาสตร์ W[t] = s1 (W[t-16]W[t-14] W[t-8] W[t-3]) • สรุปค่าของ W ใน SHA-1 ดังนี้
ความแตกต่างระหว่าง MD5 กับ SHA-1 • ความแตกต่างระหว่าง MD5 กับ SHA-1
ผู้รับ (ข) ผู้ส่ง (ก) ขั้นตอนที่ 1 ขั้นตอนที่ 2 ขั้นตอนที่ 3 ขั้นตอนที่ 4 ข้อความ (M) ข้อความ (M) ข้อความ (M) MAC (H1) + ส่ง เปรียบเทียบ กุญแจ (K1) กุญแจ (K1) MAC (H1) MAC (H2) MAC (H1) MAC (H2) Message Authentication Code (MAC) Message Authentication Code (MAC) • มีความคล้ายคลึงกับการย่อยข้อความ(Message Digest) มาก • แต่ การย่อยข้อความ เป็นการพิมพ์ลายนิ้วมือของข้อความวิธีหนึ่ง ซึ่งไม่มีส่วนของกระบวนการเข้ารหัสลับ
Message Authentication Code (MAC) • ความสำคัญของ MAC • ทำให้ผู้รับมั่นใจได้ว่า ข้อความที่ส่งมาไม่ถูกเปลี่ยนแปลง • ทำให้ผู้รับมั่นใจได้ว่า ข้อความที่ส่งมานั้นมาจากผู้ส่งที่ติดต่อด้วยจริง ๆ • MAC คล้ายกับการดำเนินการเข้ารหัสข้อความ แต่ การเข้ารหัสลับด้วยกุญแจแบบสมมาตรนั้น จะมีขั้นตอนในการถอดรหัสข้อความ ซึ่งการทำงานจะตรงข้ามกัน สำหรับ MAC ทั้งผู้ส่งและผู้รับดำเนินการเข้ารหัสข้อความอย่างเดียว ดังนั้น ขั้นตอนวิธีของ MAC จึงเป็นเพียงฟังก์ชันทางเดียว (one-way function)
HMAC • Hash-based Message Authentication Code • นำมาใช้ในกับ • โปรโตคอลความปลอดภัยของข้อมูลบนอินเตอร์เน็ต (Internet Protocol (IP) security) และ • โปรโตคอล SSL (Secure Socket Layer (SSL) protocol)
ข้อความ (M) MAC ขั้นตอนวิธีการย่อยข้อความ เช่น MD5 หรือ SHA-1 ข้อความย่อย (MD) เข้ารหัสด้วยกุญแจ (K) หลักการทำงานของ HMAC การทำงานของ HMAC • แนวคิดของการทำงานของ HMAC • นำหลักการทำงานของการย่อยข้อความ เช่น MD5 หรือ SHA-1 โดยมองการย่อยข้อความเป็นเสมือนกล่องดำ และ • ใช้กุญแจสมมาตรเพื่อเข้ารหัสข้อความย่อย เพื่อให้ได้ผลลัพธ์ MAC
การทำงานของ HMAC (ต่อ) • ตัวแปรต่าง ๆ ที่ใช้ใน HMAC ดังนี้ MD = ขั้นตอนวิธีย่อยข้อความหรือฟังก์ชันแฮชที่นำมาใช้ (เช่น MD5, SHA-1 เป็นต้น) M = ข้อความนำเข้าซึ่งนำมาคำนวณหาค่า MAC L = จำนวนบล็อคของข้อความ M b = จำนวนบิตของแต่ละบล็อก K = กุญแจสมมาตรที่ใช้ร่วมกันใน HMAC ipad = สายอักขระ (string) 00110110 โดยทำซ้ำ b/8 ครั้ง opad = สายอักขระ (string) 01011010 โดยทำซ้ำ b/8 ครั้ง
Y N K>b นำ Kไปดำเนินการย่อยข้อความเพื่อให้ขนาดของกุญแจ K= b N Y K<b ดำเนินการขั้นตอนที่ 2 ต่อไป เพิ่มค่า 0 ตามจำนวนบิตที่ขาดหายไปซึ่งทำให้ K= b ขั้นตอนที่ 1 ของ HMAC การทำงานของ HMAC (ต่อ) • ขั้นตอนที่ 1 ทำให้ขนาดของกุญแจ K เท่ากับ b
กุญแจ K S1 + ipad ขั้นตอนที่ 2 ของ HMAC การทำงานของ HMAC (ต่อ) • ขั้นตอนที่ 2 ดำเนินการ XOR () กุญแจ K กับ ipad ได้ผลลัพธ์คือ S1
S1 ข้อความต้นฉบับ (M) S1 ข้อความต้นฉบับ (M) ขั้นตอนที่ 3 ของ HMAC การทำงานของ HMAC (ต่อ) • ขั้นตอนที่ 3 เติมข้อความต้นฉบับ (M) ต่อท้าย S1
S1 ข้อความต้นฉบับ (M) ขั้นตอนวิธีการย่อยข้อความ (MD algorithm) H ขั้นตอนที่ 4 ของ HMAC การทำงานของ HMAC (ต่อ) • ขั้นตอนที่ 4 ขั้นตอนวิธีการย่อยข้อความ
กุญแจ K S2 + opad ขั้นตอนที่ 5 ของ HMAC การทำงานของ HMAC (ต่อ) • ขั้นตอนที่ 5 ดำเนินการ XOR () กุญแจ K กับ opad ได้ผลลัพธ์คือ S2
S2 H S2 H ขั้นตอนที่ 6 ของ HMAC การทำงานของ HMAC (ต่อ) • ขั้นตอนที่ 6 เติมข้อความย่อย (H) ต่อท้าย S2
ขั้นตอนวิธีการย่อยข้อความขั้นตอนวิธีการย่อยข้อความ (MD algorithm) MAC ขั้นตอนที่ 7 ของ HMAC S2 H การทำงานของ HMAC (ต่อ) • ขั้นตอนที่ 7 ขั้นตอนวิธีการย่อยข้อความ
กุญแจ (K) แปลงกุญแจ (K) ipad + ขั้นตอนวิธีการย่อยข้อความ H แปลงกุญแจ (K) opad + ขั้นตอนวิธีการย่อยข้อความ HMAC ขั้นตอนวิธีการทำงานของ HMAC S1 ข้อความ (M) S2 H การทำงานของ HMAC (ต่อ)
ข้อเสียของ HMAC • HMAC ไม่ได้แก้ปัญหาต่อไปนี้ • ยังคงมีปัญหาเดิมคือ การแลกเปลี่ยนกุญแจ • สมมติให้ไม่มีปัญหาการแลกเปลี่ยนกุญแจก็ตาม การใช้ขั้นตอนวิธีนี้ก็ไม่สามารถใช้ได้กับกรณีที่มีจำนวนผู้รับมากกว่า 1 คน • ผู้รับไม่สามารถมั่นใจได้ว่าข้อความที่ส่งมาจากผู้ส่งจริงๆ ไม่ใช่มาจากผู้รับคนใดคนหนึ่งในกลุ่ม เพราะผู้รับคนอื่น ๆ ก็ทราบกุญแจสมมาตรตัวเดียวกันนี้เช่นกัน • กรณีที่สามารถแก้ปัญหาดังกล่าวข้างต้น ทั้ง 2 ฝ่ายรับทราบกุญแจสมมาตรด้วยกัน ดังนั้น จะพิสูจน์ได้อย่างไรว่าค่า MAC ที่ได้เกิดจากผู้ส่ง หรือ ผู้รับกันแน่ที่ดำเนินการขึ้นมา และก็เป็นไปได้ที่ทั้ง 2 ฝ่ายรู้ข้อความต้นฉบับและค่า MAC
เทคนิคลายมือชื่อดิจิตอลเทคนิคลายมือชื่อดิจิตอล • สถาบันมาตรฐานและเทคโนโลยีแห่งชาติของสหรัฐอเมริกา (NIST) ได้พัฒนา มาตรฐานลายมือชื่อดิจิตอล (Digital Signature Standard: DSS) สำหรับการดำเนินการเกี่ยวกับลายมือชื่อดิจิตอลขึ้น ชื่อ PUB 186 ในปี ค.ศ. 1991 และได้มีการแก้ไขปรับปรุงในปี ค.ศ. 1993 และ 1996 • ขั้นตอนวิธีลายมือชื่อดิจิตอล (Digital Signature Algorithm : DSA) โดย DSA แล้วใช้เพื่อดำเนินการลายมือชื่อดิจิตอลให้กับข้อความเพียงอย่างเดียว • ขั้นตอนวิธี RSA คือ เข้ารหัสข้อความและยังสามารถนำมาใช้เพื่อดำเนินการลายมือชื่อดิจิตอลให้กับข้อความได้
ข้อความต้นฉบับ (M) ขั้นตอนวิธีการย่อยข้อความ (SHA-1) ข้อความย่อย (MD1) การคำนวณหาข้อความย่อย RSA กับลายมือชื่อดิจิตอล • ขั้นตอนที่ 1 ผู้ส่ง (นาย ก) ย่อยข้อความต้นฉบับด้วย SHA-1 ได้ข้อความย่อย (MD1)
ข้อความย่อย (MD1) ลายมือชื่อดิจิตอล (DS) เข้ารหัสด้วยกุญแจส่วนตัวของผู้ส่ง การสร้างลายมือชื่อดิจิตอล RSA กับลายมือชื่อดิจิตอล (ต่อ) • ขั้นตอนที่ 2 ผู้ส่ง (นาย ก) เข้ารหัสข้อความย่อยด้วยกุญแจส่วนตัว ผลลัพธ์ที่ได้เรียกว่า ลายมือชื่อดิจิตอล (Digital Signature: DS)
เครือข่าย ผู้ส่ง (ก) ผู้รับ (ข) ข้อความต้นฉบับ (M) ลายมือชื่อดิจิตอล (DS) ข้อความต้นฉบับ (M) ลายมือชื่อดิจิตอล (DS) + + การส่งข้อความต้นฉบับและลายมือชื่อดิจิตอลไปด้วยกัน RSA กับลายมือชื่อดิจิตอล (ต่อ) • ขั้นตอนที่ 3 ผู้ส่ง (นาย ก) ส่งข้อความต้นฉบับ (M) พร้อมลายมือชื่อดิจิตอล (DS) ไปให้ผู้รับ (นาย ข)
ข้อความต้นฉบับ (M) ขั้นตอนวิธีย่อยข้อความ (SHA-1) ข้อความย่อย (MD2) ผู้รับดำเนินการย่อยข้อความของตนเอง RSA กับลายมือชื่อดิจิตอล (ต่อ) • ขั้นตอนที่ 4 ผู้รับใช้ขั้นตอนวิธีการย่อยข้อความเดียวกับที่ผู้ส่งใช้เพื่อหาข้อความย่อย (MD2) ของตนเอง
ลายมือชื่อดิจิตอล (DS) ข้อความย่อย (MD1) ถอดรหัสด้วยกุญแจสาธารณะของผู้ส่ง ผู้รับรับข้อความย่อยของผู้ส่ง RSA กับลายมือชื่อดิจิตอล (ต่อ) • ขั้นตอนที่ 5 ผู้รับ (นาย ข) ใช้กุญแจสาธารณะของผู้ส่ง (นาย ก) เพื่อถอดรหัสลายมือชื่อดิจิตอล ผลลัพธ์ที่ได้คือ ข้อความย่อย (MD1)
ข้อความย่อย (MD1) ข้อความย่อย (MD2) No Yes มั่นใจและยอมรับข้อความต้นฉบับ (M) ปฏิเสธข้อความต้นฉบับ (M) MD1 = MD2 การตรวจสอบลายมือชื่อดิจิตอล RSA กับลายมือชื่อดิจิตอล (ต่อ) • ขั้นตอนที่ 6 นาย ข นำข้อความย่อยทั้ง 2 (MD1 และ MD2) มาเปรียบเทียบกัน
DSA กับลายมือชื่อดิจิตอล • ขั้นตอนวิธีของ DSA ค่อนข้างซับซ้อน • ตัวแปรที่เกี่ยวข้องมีดังนี้ p = จำนวนเฉพาะที่มีความยาวขนาด L บิต โดย L = ผลคูณของ 64 ซึ่งมีค่าระหว่าง 512 ถึง 1024 (ตัวอย่างเช่น L = 512 หรือ 576 หรือ 640 หรือ ... 1024 ) โดยมาตรฐานทั่วไป p = 512 q = ตัวประกอบของ p-1 ซึ่งมีขนาด 160 บิต g = h (p-1)/q mod p โดย h คือ จำนวนที่น้อยกว่า (p-1) เช่น h (p-1)/q mod q > 1 x = จำนวนที่น้อยกว่า q y = gx mod p H = ขั้นตอนวิธีการย่อยข้อความ (โดยปรกติคือ SHA-1)
DSA กับลายมือชื่อดิจิตอล (ต่อ) • ตัวแปร 3 ตัวแรกคือ p, q และ g เป็นตัวแปรที่ประกาศให้รู้กันทั่วไป • ตัวแปร x คือกุญแจส่วนตัวซึ่งสัมพันธ์กับกุญแจสาธารณะ y • กำหนดให้ ผู้ส่งต้องการส่งข้อความ (M) และ ลายมือชื่อดิจิตอลไปให้ผู้รับ โดยมีขั้นตอนวิธีดังนี้ • ผู้ส่งสร้างจำนวนสุ่มขึ้นมา 1 ตัว (k) ซึ่งมีค่าน้อย q • ผู้ส่งคำนวณหาค่า r = (gk mod p) mod q s = (k1 (H(m) + xr)) mod q ค่า r และ s คือลายมือชื่อของผู้ส่ง ซึ่งผู้ส่งค่าเหล่านี้ไปให้ผู้รับเพื่อตรวจสอบ
DSA กับลายมือชื่อดิจิตอล (ต่อ) • ผู้รับคำนวณค่า w = s-1 mod q u1 = (H(m) * w) mod q u2 = (rw) mod q v = ((gu1 * yu2) mod p) mod q ถ้า v = r แล้ว แสดงว่าลายมือชื่อถูกต้อง มิฉะนั้น ปฏิเสธลายมือชื่อนี้