อาจารย์อภิพงศ์ ปิงยศ apipong.ping@gmail.com บทที่ 4 : Cryptography & Steganography Part2 สธ412 ความมั่นคงของระบบสารสนเทศ อาจารย์อภิพงศ์ ปิงยศ apipong.ping@gmail.com
Cryptography & Steganography Public Key Cryptography มาตรฐานการเข้ารหัสข้อมูล RSA Diffie-Hellman Digital Signature Algorithm (DSA) Digital Certificate
Public Key Cryptography ปัญหาของการเข้ารหัสแบบซีเคร็ทคีย์คือการ แลกเปลี่ยนคีย์ ที่ใช้ในเชิงปฏิบัติได้ยาก จึงมีการพัฒนาเทคนิคการแจกจ่ายคีย์อย่าง ปลอดภัย โดยใช้คีย์ที่เข้ารหัสและ ถอดรหัสคนละคีย์ เรียกว่า (Public/Private Key Cryptography)
Public Key Cryptography [2] Private Key เป็นคีย์ที่รู้เฉพาะเจ้าของ Public Key เป็นคีย์ที่ประกาศให้สาธารณะทราบ ใครจะนำไปใช้ก็ได้ คีย์หนึ่งใช้เข้ารหัส อีกคีย์หนึ่งใช้ถอดรหัส ทั้งสองคีย์จะมีความสัมพันธ์กันทางคณิตศาสตร์ ถูกอธิบายครั้งแรกในปี 1976 โดย มาร์ติน เฮลล์แมน (Martin Hellman)และวิทฟิลด์ ดิฟฟี (Whitfield Diffie) แห่งมหาวิทยาลัยสแตนฟอร์ด
Whitfield Diffie & Martin Hellman
Public Key Cryptography [3] Public Key สร้างกุญแจคู่โดยอาศัย ทฤษฎี One-way Function ซึ่งเป็น ฟังก์ชันทางคณิตศาสตร์ที่คำนวณค่า ได้ง่าย แต่คำนวณในทางตรงกัน ข้ามได้ยากมาก
One-way function 9 * 16 => 144 What X, Y ??? 144 * 1 => 144 72 * 2 => 144 48 * 3 => 144 36 * 4 => 144 24 * 6 => 144 18 * 8 => 144 16 * 9 => 144 12 * 12 => 144 X * Y => 144
Public Key Cryptography [4] การรู้คีย์ใดคีย์หนึ่งเป็นการยากที่จะ คำนวณหาอีกคีย์หนึ่ง คีย์หนึ่งใช้สำหรับเข้ารหัสข้อมูล อีกคีย์หนึ่ง ใช้ถอดรหัสข้อมูล และสามารถใช้สลับกัน ได้ ไม่สามารถใช้คีย์ใดคีย์หนึ่งเพียงคีย์เดียวใน การเข้าและถอดรหัสได้ ทั้งสองคีย์ต้องใช้คู่กันเสมอในกระบวนการ เข้าและถอดรหัส เรียกการเข้ารหัสแบบนี้ว่า Asymmetric Key Cryptography (การเข้ารหัสแบบ กุญแจอสมมาตร)
ภาพประกอบการเข้าและถอดรหัสแบบพับลิกคีย์
มาตรฐานการเข้ารหัสข้อมูล : RSA เป็นการเข้ารหัสแบบ Public Key ที่ ได้รับความนิยม RSA มาจากชื่อของผู้คิดอัลกอริทึมนี้ คือ Revest, Shamir และ Adlemen ข้อมูลที่เข้ารหัสด้วย Public Key จะถูก ถอดรหัสได้โดยใช้ Private Key ที่เป็นคู่ กันเท่านั้น
มาตรฐานการเข้ารหัสข้อมูล : RSA [2] ขั้นตอนการเลือกพับลิกคีย์และไพรเวทคีย์ 1) เลือกจำนวนเฉพาะ p และ q ซึ่ง หากเลือกเลขจำนวนมากเท่าไรยิ่ง ถอดรหัสยากเท่านั้น แต่จะทำให้ กระบวนการเข้าและถอดรหัสช้าลง 2) คำนวณ n = pq และ z = (p-1)(q-1) 3) เลือกจำนวน e ซึ่งมีค่าน้อยกว่า n และ e ต้องไม่มีตัวหารร่วมกับ z 4) คำนวณหา d โดยเมื่อ d คูณกับ e แล้วหารด้วย z เหลือเศษ 1 (ed mod z = 1)
มาตรฐานการเข้ารหัสข้อมูล : RSA [3] 5) พับลิกคีย์คือ จำนวน (n, e) ส่วน ไพรเวทคีย์คือ จำนวน (n, d) ขั้นตอนในการเข้ารหัสคือ สมมติเรา ต้องการส่งข้อมูล m โดย m<n สมมติ เขียนรหัสด้วยพับลิกคีย์ (n, e) สูตรใน การเข้ารหัสคือ c = me mod n โดย c คือ Ciphertext การถอดรหัสจะใช้ไพรเวทคีย์ (n, d) สูตรในการคำนวณคือ m = cd mod n โดย m คือ plaintext ที่ถอดได้
ตัวอย่างการเข้ารหัสแบบ RSA โดยเลือก p=5, q=7, n=35, z = 24, e = 5, d = 29 Plaintext m me Ciphertext (me mod n) l 12 248832 17 o 15 759375 v 22 5153632 e 5 3125 10
ตัวอย่างการถอดรหัสแบบ RSA โดยเลือก p=5, q=7, n=35, z = 24, e = 5, d = 29 Ciphertext cd m = cd mod n Plaintext 17 ค่าเยอะมาก 12 l 15 o 22 v 10 5 e
มาตรฐานการเข้ารหัสข้อมูล : RSA [4] โดยทั่วไป คีย์ที่ใช้บนอินเทอร์เน็ตจะมีขนาด อย่างน้อย 1,024 บิต ทำให้การเข้าและถอดรหัส ช้ามากเมื่อเทียบกับการเข้ารหัสแบบ Symmetric Key ในทางปฏิบัติมักใช้ RSA คู่กับ *DES โดยใช้ RSA สำหรับแจกจ่าย Secret Key ของ DES เพื่อเข้ารหัส Secret Key ที่ถูกเข้ารหัสด้วย Public Key จะ เรียกว่า Session Key *Data Encryption Standard (DES) เป็น อัลกอริทึมการเข้ารหัสแบบ Secret Key ที่ได้รับ ความนิยม Secret Key Cryptogrphy ที่ได้รับความนิยม มากกว่า DES ในปัจจุบันคือ Advanced Encryption Standard (AES)
Session Key Cryptography Secret Key Session Key
มาตรฐานการเข้ารหัสข้อมูล : Diffie-Hellman เป็น Public Key Cryptography แบบแรกที่ ได้รับการตีพิมพ์ ใช้หลักการที่ว่า การคำนวณค่าเอ็กซ์ โพเนนต์ (ยกกำลัง) ง่ายกว่าการคำนวณล็อก การิทึม อัลกอริทึมนี้จะอนุญาตให้คนสองคนสามารถ สร้าง ซีเคร็ทคีย์เพื่อใช้ในการเข้ารหัส ข้อมูลที่รับส่งกันได้ ปัจจุบันไม่เป็นที่นิยม เนื่องจากไม่มีความ ปลอดภัยมากเท่าที่ควร
การแลกเปลี่ยนคีย์โดยใช้อัลกอริทึม Diffie-Hellman
มาตรฐานการเข้ารหัสข้อมูล : Diffie-Hellman [2] ปัญหาของอัลกอริทึมดิฟฟีเฮลล์แมน คือ เราจะแน่ใจได้อย่างไรว่าทั้งสองคนได้พับลิก คีย์ของอีกคนหนึ่งจริงๆ โดยจุดเสี่ยงอยู่ที่ ขั้นตอนการแลกเปลี่ยนพับลิกคีย์ Eve อาจส่งพับลิกคีย์ของตนเองไปให้ทั้ง Alice และ Bob ซึ่งเป็นการโจมตีแบบ Man-in-the-Middle แก้ปัญหาโดยการใช้อัลกอริทึม RSA และ Digital Signature
มาตรฐานการเข้ารหัสข้อมูล : Digital Signature Algorithm เป็นอัลกอริทึมในการตรวจสอบว่าข้อความ นั้นไม่ได้ถูกแก้ไขเปลี่ยนแปลงระหว่างการ รับส่ง รวมไปถึงเป็นการพิสูจน์ทราบตัวตน ของผู้ส่งข้อความ ผู้ที่ต้องเซ็นชื่อต้องมีทั้งพับลิกคีย์และไพรเวท คีย์ โดยไพรเวทคีย์ใช้สำหรับลงลายเซ็น ส่วนพับลิกคีย์ใช้สำหรับการตรวจสอบ
มาตรฐานการเข้ารหัสข้อมูล : Digital Certificate การรักษาความปลอดภัยไม่ได้ขึ้นอยู่กับอัลกอริทึม และคีย์ที่ใช้เข้ารหัสเท่านั้น แต่ขึ้นอยู่กับการสร้าง แจกจ่าย และจัดการคีย์ด้วย จุดอ่อนของซีเคร็ทคีย์คือจะแน่ใจได้อย่างไรว่า คีย์ที่ได้มาเป็นคีย์ที่แชร์กันจริง แก้ปัญหาโดยใช้ระบบสำหรับแจกจ่ายคีย์สำหรับ การเข้ารหัสแบบซีเคร็ทคีย์จะเรียกว่า Key Distribution Center (KDC) ซึ่งทำหน้าที่ แจกจ่ายคีย์อย่างปลอดภัย
มาตรฐานการเข้ารหัสข้อมูล : Digital Certificate [2] จุดอ่อนของการเข้ารหัสแบบพับลิกคีย์คือ จะแน่ใจได้อย่างไรว่าเราได้พับลิกคีย์ของคู่ สนทนาจริงๆ แก้ปัญหาโดยให้ความไว้วางใจกับระบบ จัดการคีย์ ระบบที่ใช้แจกจ่ายพับลิกคีย์จะ เรียกว่า Certificate Authority (CA) ซึ่งจะ รับรองว่า พับลิกคีย์นี้เป็นของใคร
การใช้ Digital Certificate
มาตรฐานการเข้ารหัสข้อมูล : Digital Certificate [3] ตรวจสอบความมีตัวตนของบุคคลหรือระบบนั้นๆ เมื่อตรวจสอบแล้วก็จะสร้างใบรับรองให้กับผู้ที่ร้อง ขอ ซึ่งใบรับรองจะประกอบไปด้วยพับลิกคีย์ของ บุคคลนั้นพร้อมทั้งหมายเลขเฉพาะที่ระบุบุคคลหรือ ระบบนั้นๆ แล้วข้อมูลดังกล่าวจะถูกเข้ารหัสแบบ Digital Signature เมื่อมีการสื่อสารกัน แทนที่จะแลกเปลี่ยนพับ ลิกคีย์โดยตรง ก็เปลี่ยนมาแลกเปลี่ยน ใบรับรองอิเล็กทรอนิกส์แทน
ข่าวในวงการ Digital Certificate