RSA
RSA เป็น อัลกอริทึมในการเข้ารหัสแบบอสมมาตรถูกสร้างขึ้นมาเมื่อ ปี 1978 โดย Ron Rivest, AdiShamir และ Leonard Adleman ตั้งแต่คิดค้นมายังไม่มีใครสามารถเบรกอัลกอริทึมนี้ได้ และ RSA ได้ถูกนำมาใช้อย่างแพร่หลายในด้าน e-commerce
ECC
ECC ย่อมาจาก Elliptic Curves Cryptography ได้รับการนำเสนอโดย Neal Koblitz และ Victor S. Miller ในปี 1985 โดยอัลกอริทึมการเข้ารหัส ECC นี้ได้รับการพัฒนาจากสมการของเส้นโค้งของวงรี y2 = x3 + ax + b ดังรูปที่ 9
รูปที่ 9 กราฟแสดงความสัมพันธ์ของสมการ Elliptic Curves
ECC มีข้อดีที่เหนือกว่า RSA คือ จะใช้ Key ที่สั้นกว่าแต่สามารถให้ความปลอดภัยเท่ากับ RSA จะมีความปลอดภัยสูงกว่านั่นคือ หากต้องการเบรกจะใช้เวลาในการ Brute Force นานกว่า RSA
เนื่องจาก ECC ใช้ Key ที่มีขนาดเล็กกว่า RSA มาก และมีความสามารถในการคำนวณที่รวดเร็ว ใช้พลังงานต่ำและใช้หน่วยความจำน้อย ดังนั้น ECC จึงเหมาะสำหรับการใช้งานในอุปกรณ์เคลื่อนที่ขนาดเล็ก เช่น โทรศัพท์มือถือ Pocket PC และ PDA เป็นต้น
รูปที่ 10 กราฟแสดงเวลาที่ใช้ในการแคร็ก ECC เมื่อเทียบกับ RSA
Hassh
การเข้ารหัสแบบ Hash (Cryptographic hash) หมายถึง การแปลงรูปแบบของข้อมูลที่รับเข้ามาให้เป็นข้อมูลที่ถูกย่อย (Message Digest) ไม่ว่าข้อมูลต้นฉบับจะมีขนาดเล็กหรือใหญ่เท่าใดก็ตาม ก็จะถูกย่อยให้อยู่ในรูปแบบที่มีขนาดคงที่ ดังนั้นจึงไม่สามารถทำกระบวนการย้อนกลับเพื่อให้กลายเป็นข้อมูลต้นฉบับได้ จะทำได้เพียงแค่ตรวจสอบว่าข้อมูลที่ให้มาแต่ละครั้งเหมือนกันหรือไม่
ฟังก์ชั่น Hash ที่สำคัญๆ ได้แก่ MD4, MD5, SHA-1 และ SHA-2 ตัวอย่างการใช้งานฟังก์ชั่น Hash ที่พบเห็นได้บ่อยก็คือ การเก็บรหัสผ่านในฐานข้อมูล ตัวอย่างเช่น ผู้ใช้ thawatchai ตั้งรหัสผ่านเป็นคำว่า abc123 หากเก็บรหัสผ่านลงบน Database โดยตรงจะทำให้ผู้ใดก็ตามที่เข้าถึงฐานข้อมูลได้ ทราบรหัสผ่านที่เก็บไว้ (ผู้ที่เข้าถึงฐานข้อมูลได้ เช่น ผู้ดูแลระบบ ผู้ดูแลฐานข้อมูล และแฮกเกอร์ที่เจาะเข้ามาทางเว็บไซต์ด้วยวิธีการพิเศษ ตัวอย่างเช่น SQL Injection) หากทำการย่อยรหัสผ่านด้วยฟังก์ช่น Hash เช่น ใช้ MD5 ย่อยรหัสผ่าน abc123 ได้เป็น e99a18c428cb38d5f260853678922e03 แล้วจึงเก็บค่าแฮชนั้นลงใน Database จะทำให้การเปิดดูรหัสผ่านใน Database โดยตรง ไม่พบรหัสผ่าน abc123 แต่จะพบเพียงค่าแฮชดังกล่าว ซึ่งเป็นการป้องกันการเปิดเผยรหัสผ่านและไม่สามารถใช้ค่าแฮช เพื่อคำนวณย้อนกลับไปเป็นรหัสผ่านได้ ในการตรวจสอบสิทธิ์ผู้ใช้แต่ละครั้งสำหรับการล็อกอินก็สามารถทำได้โดยนำรหัสผ่านที่ผู้ใช้ส่งผ่านฟอร์มล็อกอินเข้ามาแล้วนำไปผ่านฟังก์ชั่น Hash เช่น MD5 จากนั้นก็นำค่าแฮชที่ได้มาเทียบกับค่าแฮชที่เก็บไว้ใน Database หากมีค่าตรงกันก็แสดงว่ารหัสผ่านถูกต้อง ไฟล์รหัสผ่านของ Linux (/etc/shadow) ก็รหัสผ่านด้วย MD5 เช่นกัน นอกจากนั้นก็ยังพบเห็นการประยุกต์ใช้การแฮชรหัสผ่านใน Web Application ต่างๆ เช่น Moodle และ Mambo
MD5
อัลกอริทึม MD5 คิดค้นโดย Ron Rivest ซึ่งเป็น 1 ใน 3 คน ที่คิดค้น RSA
รูปที่ 11 อัลกอริทึม MD5
ถึงแม้ MD5 จะได้รับความนิยมอย่างมาก และได้มีการนำมาใช้อย่างแพร่หลาย เช่น นำมาใช้สร้าง Digital Signature ในระบบ e-commerce อย่างไรก็ตาม MD5 ก็ถูกเบรคได้โดยนักคณิตศาสตร์หญิงชาวจีน (Professor Dr. Xiaoyun Wang) ในปี 2004 โดยใช้เครื่องซูเปอร์คอมพิวเตอร์ IBM P690 โดยใช้เวลาแคร็กเพียง 1 ชั่วโมงก็สามารถเบรกได้ หลังจากนั้นก็มีคนอ้างว่าสามารถใช้เครื่องคอมพิวเตอร์ Notebook ความเร็ว 1.6 GHz เบรก MD5 ได้ภายในเวลา 8 ชั่วโมง
ตัวอย่างการใช้งานคำสั่ง MD5 บน Linux
$ md5 exim-4, 43, tar.bz2
MD5 (exim-4, 43, tar.bz2) = f8f646d4920660cb5579becd9265a3bf
$
SHA
SHAO และ SHA1 ได้ถูกพัฒนาจาก MD5 เดิมให้ Output มีความเป็น Random สูงกว่า และมี Collision น้อยกว่าเพื่อลดโอกาสในการถูกแคร็กได้ อัลกอริทึมของ SHA1 แสดงดังรูปที่ 12
รูปที่ 12 อัลกอริทึ่ม SHA1
อย่างไรก็ตาม SHA0 และ SHA1 ก็ถูกเบรกได้โดยนักคณิตศาสตร์หญิงชาวจีน (Professor Dr. Xiaoyun Wang) คนเดียวกันกับที่เคยเบรค MD5 ได้ ดังนั้นปัจจุบันนี้ความหวังจึงอยู่ที่ SHA2 ซึ่งยังไม่มีใครเบรคได้ อัลกอริทึมของ SHA2 แสดงดังรูปที่ 13
รูปที่ 13 อัลกอริทึ่ม SHA2