หน้าเว็บ

ความปลอดภัยของระบบ LAN

15:34 Posted by Beekie39

ความปลอดภัยของระบบ LAN

เนื้อหารายงานนี้เป็นเรื่องราวเกี่ยวกับความปลอดภัยของระบบ LAN (LAN Security) โดยประกอบไปด้วยการโจมตีและการป้องกันระบบ LAN ซึ่งการโจมตีที่มักจะพบบ่อยๆ ได้แก่ การโจมตีโดยใช้ ARP Spoof โจมตีโดยใช้ ARP Dos Attack เพื่อทำให้ระบบใช้งานไม่ได้ (เช่น โปรแกรม Netcut) การโจมตีด้วย Rogue DHCP Server และการโจมตีอุปกรณ์เครือข่าย เป็นต้น ส่วนการป้องกันการโจมตีระบบ LAN ก็สามารถทำได้หลายวิธี เช่น การใช้งาน Switch คุณภาพสูงที่มีฟังก์ชั่นการป้องกัน การป้องกันโดยกำหนด Static ARP บนเครื่องไคลเอนต์ รวมถึงการประยุกต์ใช้โปรแกรมป้องกันชนิดต่างๆ เช่น โปรแกรม Anti-ARP เป็นต้น

ARP Attack

การโจมตีระบบ LAN ที่เป็นที่นิยมมากที่สุดคือ การโจมตีโปรโตคอล ARP ซึ่งประกอบด้วยการโจมตีแบบ ARP Spoof เพื่อทำตัวเป็น Man In The Middle แล้วดักจับข้อมูล และการโจมตีแบบ Dos : Denial of Service เพื่อทำให้โฮสต์เป้าหมายไม่สามารถสื่อสารกับโฮสต์อื่นได้

ARP Spoof

ARP Spoof (หรืออาจเรียกอีกชื่อหนึ่งว่า ARP Poision) คือการโจมตีโดยใช้ช่องโหว่ของโปรโตคอล ARP เพื่อหลอกให้เหยื่อหลงกล เช่น ทำให้เหยื่อเข้าใจผิดว่าเครื่องของแฮกเกอร์คือ Gateway เพื่อที่จะบังคับให้ข้อมูลที่เหยื่อกำลังส่งไปยังเซิร์ฟเวอร์ (ที่อยู่บนอินเตอร์เน็ต) วิ่งผ่านเครื่องของแฮกเกอร์แล้วแฮกเกอร์ก็สามารถดักจับข้อมูลที่สำคัญของเหยื่อได้ เช่น ข้อมูลรหัสผ่านหรือ Cookie/Session ID

การทำงานของ ARP ในสภาวะปกติ

เมื่อคอมพิวเตอร์ A ต้องการส่งข้อมูลไปยังคอมพิวเตอร์ ซึ่งอยู่ในระบบ LAN เดียวกัน ข้อมูลจะถูกส่งโดยการ์ดเน็ตเวิร์ก การส่งข้อมูลในระดับการ์ดเน็ตเวิร์กจะต้องใช้ค่า MAC Address ของคอมพิวเตอร์ปลายทาง ดังนั้นคอมพิวเตอร์ A ที่ทราบไอพีแอดเดรสของคอมพิวเตอร์ B เพียงอย่างเดียวจึงไม่สมารถส่งข้อมูลได้ คอมพิวเตอร์ A จะต้องทราบค่า MAC Address ของคอมพิวเตอร์ B ด้วยจึงจะสามารถส่งข้อมูลไปถึง B ได้อย่างถูกต้อง

โปรโตคอล ARP (Address Resolution Protocol) ถูกสร้างขึ้นมาเพื่อให้คอมพิวเตอร์สามารถค้นหาค่า MAC Address ของไอพีแอดเดรสที่ต้องการสื่อสารด้วยได้ โดยเครื่องคอมพิวเตอร์ต้นทางจะตรวจดูค่าใน ARP Table (หรือเรียกว่า ARP Cache) เสียก่อน (ARP Table คือตารางการจับคู่กันระหว่างไอพีแอดเดรสกับ MAC Address ถ้าไม่เคยมีการสอบถามโดยใช้โปรโตคอล ARP มาก่อน ค่าใน ARP Table จะเป็นค่าว่างเปล่า) ถ้าไม่พบข้อมูลใน ARP Table ผู้ส่งจะต้องค้นหา MAC Address ของไอพีแอดเดรส ดังกล่าวโดยใช้โปรโตคอล ARP

การแปลงไอพีแอดเดรสให้เป็น MAC Address โดยใช้โปรโตคอล ARP นั้นเป็นไปตามขั้นตอนดังนี้

ก่อนอื่นกำหนดให้

คอมพิวเตอร์ A (IP Address=10.0.0.1, MAC Address=00 00 00 00 00 01)

คอมพิวเตอร์ B (IP Address=10.0.0.2, MAC Address=00 00 00 00 00 02)

คอมพิวเตอร์ A ต้องการทราบค่า MAC Address ของคอมพิวเตอร์ B

* คอมพิวเตอร์ A ส่ง ARP Request แบบบอรดคาสต์เพื่อกระจายไปยังคอมพิวเตอร์ทุกเครื่องในระบบ LAN ให้รับทราบว่าตนเองต้องการคำตอบว่า 10.0.0.2 มี MAC Address เป็นเท่าใด (ข้อมูลใน ARP Request ประกอบด้วย IP Address = 10.0.0.2 ซึ่งเป็นไอพีแอดเดรสที่ต้องการหาคำตอบ)

* คอมพิวเตอร์ B เมื่อได้รับ ARP Request จึงนำมาตรวจสอบก็ทราบว่าเป็นการสอบถามค่า MAC Address ของตนเอง จึงได้ส่ง ARP Reply เพื่อตอบกลับไปยังไอพีแอดเดรส 10.0.0.1 ที่สอบถามมา (ข้อมูลใน ARP Reply ประกอบด้วย IP Address = 10.0.0.2 MAC Address = 00 00 00 00 00 02 ซึ่งเป็นข้อมูลของ B) ส่วนคอมพิวเตอร์เครื่องอื่นที่ได้รับ ARP Request นี้จะทิ้งแพ็กเก็ต ARP Request นี้ไปและไม่ตอบกลับ เพราะไม่ใช่การสอบถามมายังไอพีแอดเดรสของตนเอง

* หลังจากที่ B ส่ง ARP Reply กลับไปให้ A คอมพิวเตอร์ B ก็จะเพิ่มค่าใน ARP Table เพื่อจดจำว่าไอพีแอดเดรส 10.0.0.1 (ของ A) มี MAC = 00 00 00 00 00 01

* คอมพิวเตอร์ A เมื่อได้รับ ARP Reply จาก B จึงทราบว่าไอพีแอดเดรส 10.0.0.2 (ของ B) มี MAC = 00 00 00 00 00 02 จากนั้นจึงเก็บค่าดังกล่าวไว้ใน ARP Table ของตนเอง

clip_image002

ค่าในตาราง ARP Table ของคอมพิวเตอร์ A และ B

จากนั้นการส่งข้อมูลระหว่าง A และ B ไม่จำเป็นต้องค้นหาค่า MAC Address ของคู่สนทนาโดยใช้ ARP อีกต่อไปตราบใดที่ ARP Table ของทั้งสองยังไม่หายไปจาก Cache (ค่าใน ARP Table มักจะมีอายุไม่เกิน 60 วินาที ดังนั้นจึงมีการใช้งาน ARP อยู่ในระยะๆ)

การทำงานของ ARP Spoof

จุดอ่อนของโปรโตคอล ARP ก็คือ หากมีคอมพิวเตอร์ใดก็ตาม ส่ง ARP Reply ไปยังคอมพิวเตอร์อื่นเพื่อแจ้งค่าไอพีแอดเดรสและค่า MAC Address ของตนเอง คอมพิวเตอร์ที่ได้รับ ARP Reply จะสั่งปรับปรุงค่าใน ARP Table ของตนเองตามข้อมูลที่ได้รับทันที โดยไม่มีการตรวจสอบว่าเป็นข้อมูลจริงหรือเท็จ ดังนั้น ถ้ามีการส่ง ARP Reply ที่เป็นข้อมูลเท็จ เช่น ส่งไปบอกว่าตนเองมีไอพีแอดเดรส = 10.0.0.2 และมีค่า MAC Address = XX XX XX XX XX XX เครื่องที่ได้รับ ARP Reply นี้ก็จะปรับปรุงค่าใน ARP Table ของตนเองเพื่อเก็บข้อมูลที่ผิดๆ ดังกล่าวใช้ การส่งข้อมูลหลอกให้ผู้อื่นให้เก็บ IP Address กับ MAC Address ที่ผิดนี้เรียกว่า ARP Spoof (บางครั้งเรียกว่า ARP Poison)

clip_image004

ส่ง ARP Reply เพื่อหลอกว่ามี 10.0.0.2 และมีค่า MAC Address = xx xx xx xx xx xx

การโจมตีของแฮกเกอร์มักจะส่ง ARP Spoof ไปหลอกเครื่องเหยื่อว่าตนเองเป็น Gateway พร้อมกันนั้นก็ส่ง ARP Spoof ไปหลอก Gateway ด้วยว่าตนเองเป็นเครื่องของเหยื่อ ดังนั้นจึงทำให้แฮกเกอร์เสมือนอยู่ตรงกลางระหว่างโฮสต์ทั้งสอง แฮกเกอร์จึงกลายเป็น “Man In The Middle” และสามารถดักจับข้อมูลที่ส่งผ่านไปมาได้

นอกจากการส่ง ARP Reply หลอกแล้ว การทำ ARP Spoof สามารถทำได้โดยการส่ง ARP Request หลอกได้เช่นกัน โดยแกล้งส่งคำร้องขอไปบนเครือข่าย LAN ซึ่งภายในเฮดเดอร์ของ ARP Request นั้นมีข้อมูล IP Address ปลอม เช่น การใช้ IP Address ของ Gateway ในการส่ง ARP Request เหยื่อก็จะบันทึกค่า IP Address และ MAC Address ที่ผิดนั้นไว้ใน ARP Table ของตนเองแล้วจึงส่งคำตอบกลับไป ดังนั้น ARP Spoof จึงสามารถทำได้โดยการใช้ ARP Request และ ARP Reply

การทำ ARP Spoof ด้วยโปรแกรม Switch Sniffer

โปรแกรมที่สามารถใช้ทำ ARP Spoof มีอยู่หลายตัว เช่น Switch Sniffer, WinARPSpoof และ Cain ที่รันบน Windows นอกจากนั้นยังมี Ettercap และ arpspoof ที่รันบน Linux

clip_image006

โปรแกรม Switch Sniffer เริ่มส่ง ARP Spoof เมื่อคลิกปุ่ม Start

โปรแกรม Switch Sniffer สามารถส่งแพ็กเก็ต ARP Spoof เพื่อทำให้ตัวเองเป็น Man In The Middle ได้ และตัวมันเองก็สามารถที่จะ Route ให้แพ็กเก็ตวิ่งผ่านไปมาได้อย่างปกติ ขั้นตอนการใช้งานเริ่มจากการใช้โปรแกรม Switch Sniffer สั่งสแกนเพื่อหาเครื่องลูกช่ายทั้งหมดที่มีอยู่ในระบบ LAN เมื่อสแกนเสร็จแล้วก็เลือกเครื่องคอมพิวเตอร์เป้าหมายที่ต้องการจะดักจับข้อมูล ซึ่งสามารถเลือกเหยื่อได้หลายเครื่องพร้อมกัน (หากเลือกทั้งหมดคอมพิวเตอร์ของเราจะทำงานหนักมากจนเครียดอาจแฮงค์ได้) เมื่อเลือกไอพีแอดเดรสของเครื่องเป้าหมาย (เหยื่อ) ที่จะทำ ARP Spoof แล้วให้คลิกปุ่ม Start เพื่อให้ Switch Sniffer ส่ง ARP ไปหลอกเกตเวย์ว่าเรา (แฮกเกอร์) เป็นเครื่องเหยื่อ และหลอกเครื่องเหยื่อว่าเราเป็นเกตเวย์

** หากเลือกเหยื่อหลายเครื่อง การใช้งาน CPU ก็จะสูงตามไปด้วย เพราะเครื่องที่เราทดลองรับ Switch Sniffer เพื่อจำลองเป็นแฮกเกอร์นั้น จะต้องเป็นตัวกลางในการ Forward แพ็กเก็ตข้อมูลจำนวนมาก

การดักจับข้อมูล

โปรแกรม Switch Sniffer ทำหน้าที่เพียงส่งแพ็กเก็ต ARP Spoof และ Route ให้แพ็กเก็ตวิ่งได้เท่านั้น แต่มันไม่สามารถที่จะดักจับข้อมูลได้ ดังนั้นจึงจำเป็นต้องใช้โปรแกรมอื่นเข้ามามีส่วนร่วม โปรแกรมที่นิยมใช้ในการดักจับข้อมมูลได้แก่ Ethereal, Wireshark, Sniffer,DSniff และ Cain (โปรแกรม DSniff และ Cain จะแสดงเฉพาะข้อมูลรหัสผ่าน)

clip_image008

ตัวอย่างข้อมูลที่ดักจับได้โดย Ethereal

ข้อมูลที่ดักจับได้จะเรียงตามเวลาที่ดักจับได้ว่าก่อนหรือหลัง เราสามารถสั่งให้โปรแกรมรายงาน โดยเรียงลำดับตามไอพีแอดเดรส หรือเรียงตามโปรโตคอลได้โดยคลิกที่หัวของคอลัมน์ นอกจากนั้นเราสามารถสั่งให้ Ethereal แสดงเฉพาะโปรโตคอลที่เราสนใจโดยการระบุที่ช่อง Filter เราสามารถให้โปรแกรมแสดงเฉพาะโปรโตคอลที่ต้องการให้แสดงได้ โดยป้อนชื่อโปรโตคอลในช่อง Filter ตัวอย่างในรูปเป็นการแสดงโปรโตคอล HTTP เพื่อที่จะมองหาข้อมูลที่เป็นรหัสผ่าน โดยการสแกนสายตาหาคำว่า POST เพราะการส่งข้อมูลรหัสผ่านไปยังเวปไซต์ขณะล็อกอิน นิยมใช้เมธอด POST และเวบไซด์ธรรมดาทั้วไปจะไม่สามารถเข้ารหัสข้อมูลด้วย HTTPS เมื่อคลิกที่แพ็กเก็ตก็จะเห็นรายละเอียดและรหัสผ่านที่อยู่ข้างใน

การใช้ Ethereal เพื่อดักจับข้อมูลรหัสผ่านนั้น ต้องใช้เวลาค่อนข้างมากและใข้ความพยายามอย่างสูงในการค้นหารหัสผ่านในแพ็กเก็ตที่ดักจับได้จำนวนมาก ดังนั้นจึงได้มีการคิดค้นโปรแกรมที่ออกแบบมาสำหรับดักจับและแสดงเฉพาะรหัสผ่านโดยตรง โปรแกรมนั้นก็คือโปรแกรม CAIN ที่รันบน Windows และ Dsniff ที่รันบน Linux

clip_image010

โปรแกรม CAIN ดักจับข้อมูลแล้วแสดงเฉพาะรหัสผ่าน

HTTPS MIIM เทคนิคการดักจับและถอดรหัส HTTPS

HTTPS เป็นการรวมระหว่าง HTTP และ SSL โปรโตคอลนี้ได้รับการยอมรับว่าปลอดภัยที่สุดจนถึงขั้นมีการนำไปใช้อย่างแพร่หลายกับเวบไซต์ e-commerce ทั่วโลก เว็บไซต์ที่ต้องการความปลอดภัยในการส่งข้อมูลจะใช้โปรโตคอลนี้เป็นหลัก ซึ่งอาจจะใช้ทดลองการทำงานหรือใช้เฉพาะในการส่งข้อมูลที่มีความสำคัญมากๆ เช่น Hotmail, Gmail และ Yahoo mail ที่ใช้ HTTPS ขณะที่ส่งรหัสผ่าน ถึงแม้ HTTPS จะมีความปลอดภัยที่สุด แต่ปัจจุบันมีวีธีการที่จะถอดรหัสโปรโตคอล HTTPS นี้แล้ว โปรแกรมที่ใช้ในการถอดรหัส HTTPS คือโปรแกรม CAIN ซึ่งรันบน Windows และโปรแกรมในชุดของ Back Track ซึ่งเป็น Linux หากใช้ Back Track ในการถอดรหัสจะต้องรันโปรแกรมกันหลายตัว ได้แก่ arpspoof, fragrouter, dnsspoof, webmitm, wireshark และ ssldump

ตัวอย่างการดักจับและรหัส HTTPS โดยใช้ CAIN นั้นเราจะต้องสั่งให้โปรแกรม CAIN ทำตัวเป็น Man In The Middle เพื่อที่จะดักจับและถอดรหัสผ่านได้และใช้ CAIN ในการปลอม Certificate ซึ่งการปลอมแปลง Certificate ถือว่าเป็นหัวใจสำคัญที่จะทำให้เราถอดรหัส HTTPS ออกมาได้ โปรแกรม CAIN มีฟังก์ชั่นของการทำ ARP Spoof อยู่ในตัว นอกจากนั้นยังสามารถปลอม Certificate โดยฟังก์ชั่น ARP (ARP Poison Routing)

การทำตัวเป็น Man in the Middle นั้นเราสามารถที่จะเป็นตัวกลางระหว่างเกตเวย์และเครื่องของเหยื่อหลายเครื่องพร้อมกันได้ ในรูปที่ 8 แสดงการเลือกไอพี 10.114.0.254 ให้เป็นเกตเวย์และเลือกทุกเครื่องในระบบ LAN ให้เป็นเหยื่อ (ในทางปฏิบัติแล้วแฮกเกอร์จะเลือกเหยื่อเพียง 2-3 เครื่อง)

หลังจากที่เราทำตัวเป็น Man In The Middle และดักจับข้อมูล เรียบร้อยแล้ว ให้รับโปรแกรมไปสักช่วงเวลาหนึ่งที่คาดว่าเหยื่อได้ล็อกอินเข้าสู่ Hotmail, Gmail และ Yahoo mail เว็บไซต์ e-commerce หรือเวบไซต์อะไรก็ตามที่เขารหัสข้อมูลด้วย HTTPS ก็จะเห็นข้อมูลที่ดักจับได้โดยการคลิกที่ ARP-HTTPS

การป้องกัน ARP Spoof

การป้องกัน ARP Spoof ถือได้ว่าเป็นกุญแจหลักที่ช่วยป้องกันไม่ให้การดักจับข้อมูลบนระบบ LAN ทำงานได้สำเร็จ ซึ่งการป้องกัน ARP Spoof ได้แก่

- การป้องกันโดยใช้ Static ARP

- การป้องกันโดยใช้โปรแกรมช่วยป้องกัน

- การป้องกันโดยใช้ Switch คุณภาพสูง

การป้องกันโดยใช้ Static ARP

การป้องกันโดยใช้ Static ARP ทำได้โดยการตั้งค่า Static ARP บน Client และบน Gateway สิ่งที่สำคัญที่สุดของการตั้งค่า Static ARP บน Client คือการกำหนดตาราง ARP เพื่อ Map ระหว่าง IP Address ของ Gateway กับค่า NAC Address ของ Gateway เพื่อป้องกันการดักจับข้อมูลขาออก (ข้อมูลที่ไคลเอนต์ส่งออกไปยังอินเตอร์เน็ต) เช่น รหัสผ่านและ Cookie/Session ID ส่วนการป้องกันการใช้ Static ARP บน Gateway นั้นก็เพื่อป้องกันการดักจับข้อมูลขาเข้าที่เชิร์ฟเวอร์ต่างๆในอินเตอร์เน็ตส่งกลับมาให้ไคลเอนต์ เช่น ข้อความใน Mail Box เป็นต้น อุปกรณื Gateway/Router ชั้นนำอย่าง Cisco สามารถใช้ Command เพื่อกำหนด Static ARP ได้ดังตัวอย่างต่อไปนี้

Router(config)# arp 192.168.1.2 001C.26CB.SF18 arpa

สิ่งที่ผู้ดูแลระบบทั่วไปมักจะประสบปัญหาคือ การใช้ Gateway/Router ราคาถูกซึ่งเป็นอุปกรณ์ฮาร์ดแวร์ที่ไม่สนับสนุนการทำ Static ARP จึงทำให้ไม่สามารถป้องกันโดยใช้ Static ARP ได้ ส่วนมนกรณีที่ Gateway เป็น Windows เช่น Windows Server 2003/2008 เราสามารถกำหนด Static ARP ได้โดยใช้คำสั่ง arp-s ได้ดังตัวอย่างต่อไปนี้

C:\.> arp –s 192.168.1.1 00-90-d0-2e-ee-29

หากเครื่อง Gateway เป็น Linux ก็สามารถใช้คำสั่งในรูปแบบดังต่อไปนี้ (เลขฐาน 16 ของ Mac จะต้องคั้นด้วยเครื่องหมายโคลอน :)

[root@localhost ~] # arp –s 192.168.1.1 00:90:d0:2e:ee:29

การป้องกัน ARP Spoof โดยใช้โปรแกรมช่วยป้องกัน

เราสามารถใช้โปรแกรมช่วยป้องกัน ARP Spoof ได้ เช่น ใช้โปรแกรม Anti-ARP หรือโปรแกรม Anti-Cut (โปรแกรมที่ใช้ป้องกัน Netcut) จากการศึกษาวิจัย และการทดลองพบว่าโปรแกรมที่ใช้งานได้ง่ายและมีประสิทธิภาพในการป้องกันที่ดีคือ โปรแกรม Anti-ARP ดังนั้นในหัวข้อการป้องกัน ARP Spoof ในบทนี้จึงขอแนะนำวิธีการใช้งานโปรแกรม Anti-ARP เป็นหลัก ซึ่งเหมาะสำหรับการนำไปใช้ในการป้องกันตัวในระดับบุคคล

clip_image012

ป้องกัน ARP Spoof โดยใช้ Anti-ARP

การทดสอบโปรแกรม Anti-ARP ในการป้องกัน ARP Spoof โดยใช้คอมพิวเตอร์ 2 เครื่อง โดยให้เครื่องหนึ่งทำตัวเป็นแฮกเกอร์และรัน Switch Sniffer ส่วนอีกเครื่องหนึ่งทำตัวเป็นเหยื่อที่ป้องกันตัวเองโดยใช้ Anti-ARP หลังจากที่ทำ ARP Spoof แล้วเมื่อสังเกตหน้าจอของเครื่องที่ตกเป็นเหยื่อในหน้าต่างโปรแกรม Anti-ARP บรรทัด Incoming arp spoof พบว่ามี ARP Packet ที่โปรแกรมได้ป้องกันโดยสั่งบล็อคไว้จำนวนหนึ่ง

 

clip_image014clip_image016

โปรแกรม Anti-ARP สั่งบล็อคแพ็กเก็ต ARP Spoof ไว้

ในแท็บ Statistic ด้านบนขวาสังเกตเห็นได้ว่าโปรแกรมแสดง MAC Address และ IP Address ที่ถูกต้องของ Gateway ให้เราทราบด้วย นอกจากนั้นโปรแกรม Anti ARP สามารถบอกให้เราทราบด้วยว่าผู้ที่ทำ ARP Spoof (แฮกเกกอร์) มาจากไอพีแอดเดรสหมายเลขใด พร้อมทั้งแสดง MAC Address ของแฮกเกอร์โดยดูจากแท็บ Incoming arp spoof จากตัวอย่างโปรแกรมแจ้งให้เราทราบว่าแฮกเกอร์มาจากไอพีหมายเลข 192.168.1.4 หรือไม่ก็ 192.168.1.1 และมาจาก MAC Address เบอร์ที่ลงท้ายด้วย 3A-EB หรือไม่ก็ EE-29 แต่จากตัวอย่างทำให้ทราบว่า MAC Address ของ Gateway ลงท้าย EE-29 นั่นก็แสดงว่า MAC Address ของแฮกเกอร์คือ 00-13-46-94-3A-EB และในทำนองเดียวทำให้เราทราบว่าไอพีแอดเดรสของแฮกเกอร์คือ 192.168.1.4 (เนื่องจาก 192.168.1.1 เป็น gateway) นอกจาโปรแกรม Switch Sniffer ที่รันบน Windows แล้ว บนระบบปฏิบัติการ Linux ก็มีโปรแกรมที่สามารถตรวจจับ/เฝ้าระวัง ARP Spoof ได้เช่นกัน โปรแกรมดังกล่าวคือ โปรแกรม ARP Watch และนอกจากนั้นยังมี ArpON (Arp handler inspectiON ) ซึ่งสามารถตรวจจับและป้องกัน ARP Spoofing/Poisioning ได้โดยใช้เทคนิคสองอย่างประกอบด้วย SARPI (Static Arp Inspection) และ DARPI (Dynamic Arp Inspcetion)

การป้องกันโดยใช้ Switch คุณภาพสูง

อุปกรณ์ Switch คุณภาพสูงและราคาแพงที่หลายยี่ห้อจะมีฟังก์ชั่นในการป้องกัน ARP Spoofing โดยจะตรวจสอบว่า ARP packet ใดที่ควรจะอนุญาต และ ARP packet ใดที่ควรจะถูกดรอปทิ้ง ตัวอย่างเช่น Layer 3-switch ของ Cisco จะมีฟังก์ชั่นที่เรียกว่า Dynamic ARP Inspection

ในขณะที่ Switch ของ Allied Telesis มีฟังก์ชั่นที่เรียกว่า ARP Security ซึ่งเป็นฟังก์ชั่นย่อยของ DHCP Snooping ที่จะอนุญาตเฉพาะ ARP packet ที่มีข้อมูลของ IP Address/MAC Address ที่ตรงกับข้อมูลที่อยู่ใน Whitelist เท่านั้น

ตัวอย่างต่อไปนี้เป็นการใช้ Dynamic ARP Inspection บน Cisco Switch

Switch(config)# ip arp inspection vlan 1

Switch(config)# interface gigabitethernet0/1

Switch(config-if)# ip arp inspecton trust

แม้ว่า Switch ของ Cisco จะสามารถป้องกัน ARP Spoof ได้โดยการกำหนดค่าเกี่ยวกับ ip arp inspection แต่ปัญหาของผู้ใช้คือ Switch ของ Cisco ราคาสูงมาก และฟังก์ชั้น ip arp inspection ก็สามารถใช้ได้เฉพาะบน Layer 3-Switch เท่านั้น เช่น รุ้น Catalyst 3500 Series ขึ้นไป ซึ่งราคาของเครื่องก็ยิ่งสูงกว่า Layer 2-Swich ขึ้นไปอีก นอกจาการนำ Layer 3-Switch มาใช้แทน Layer 2-Switch (Edge Switch) เพียงเพื่อใช้งานแค่ฟังก์ชั่นเดียวก็เหมือนขี่ช้างจับตั๊กแตน จึงได้มีการศึกษาวิจัยเพิ่มเติมอีกเพื่อค้นหาว่า Switch ยี่ห้ออื่นที่ราคาถูกที่สุดคือ ยี่ห้อใด รุ่นใด ที่สามารถป้องกัน ARP Spoof ได้ และราคาต้นทุนต่ำสุดเท่าไหร่ หากค้นพบจะได้นำความรู้เหล่านี้มาเผยแพร่ให้นักคอมพิวเตอร์ระบบเครื่อข่ายได้นำไปประยุกต์ใช้งานต่อไป

Switch ยี่ห้ออื่นๆที่ราคาถูกกว่ามากๆ เช่น TP Link, SMC และ D-Link รุ่นที่ไม่สามารถปรับคอนฟิกได้ (Unmanaged Switch) จะไม่สามารถป้องกัน ARP Spoof ได้อย่างไรก็ตามผู้เขียนได้พยายามหา Solution โดยการทดลองกับ Switch ราคาถูกเหล่านี้แล้วพบว่า Switch ของ D-Link รุ่น DES-3000 Series สามารถป้องกัน ARP Spoof ได้ สวิทซ์รุ่นนี้เป็น Managed Switch (สามารถปรับคอนฟิกได้) รุ่นเล็กๆรุ้นหนึ่งและยังเป็น Layer 2-Switch ผู้เขียนได้ทดลองกับ D-Link DES-3526 โดยการปรับค่าคอนฟิกแบบต่างๆลองดูหลายๆแบบ จึงพบว่าฟังก์ชั่น ARP Spoofing Prevention สามารถป้องกัน ARP Spoof ได้ผลดีที่สุด แต่ก่อนใช้งานเราจะต้องอัพเกรด Firmware ให้เป็นเวอร์ชั่นล่าสุดเสียก่อน การคอนฟิกจะทำโดยป้อนค่าผ่านทางบราวเซอร์ ซึ่งเราจะมองเห็นหน้าจอจัดการคอนฟิกในรูปแบบของ GUI (Graphic User Interface) เมื่อคลิกที่โหนด Security Management และคลิกที่โหนดย่อย ARP Spoofing Prevention จะพบกับช่องที่ให้ป้อนค่า IP Address และ MAC Address ที่เป็นคู่ที่ถูกต้อง การคอนฟิกอย่างง่ายเพื่อป้องกัน ARP Spoof บน D-Link DES-3000 Series ทำได้โดยง่ายเพียงแค่ “ป้อนค่า IP Address และ MAC Address ของ Gateway” จากการทดลองในห้องปฏิบัติการคอพิวเตอร์พบว่าเมื่อแฮกเกอร์ส่ง ARP Spoof มาหลอกเหยื่อว่าตนเองเป็น Gateway เขาจะไม่สามารถหลอกได้สำเร็จ ซึ่งผลการทดลองแสดงให้เห็นว่าตาราง ARP ที่เครื่องไคลเอนต์จะไม่มีการเปลี่ยนแปลง (ยังคงเป็นค่าเดิมที่ถูกต้อง) เนื่องจากการโจมตีนี้แฮกเกอร์จะต้องส่ง ARP เพื่อแจ้งว่า IP Address ของเขาคือ ไอพีแอดเดรสของ Gateway ส่วน MAC Address เป็นค่า MAC Address ของแฮกเกอร์ ซึ่งขัดแย้งกับกฏที่เราได้ตั้งไว้บน Switch ดังนั้นระบบจึงไม่ยอมรับ ARP Packet ของแอกเกอร์ นอกจากสามารถป้องกัน APR Spoof แบบ Man in The Middle แล้ว สวิทซ์รุ่นนี้สามารถป้องกันการโจมตีจากโปรแกรม Netcut ได้เช่นกัน

ARP DoS Attack และ Netcut

นอกจากการใช้ ARP Spoof เพื่อทำตัวเป็น Man In The Middle เพื่อดักจับข้อมูลแล้วแฮกเกอร์สามารถที่จะใช้ช่องโหว่ของ ARP เพื่อทำให้ระบบ LAN ไม่สามารถใช้งานได้ เทคนิคนี้เรียกว่า ARP DoS Attack (DoS ย่อมาจาก Denial of Service)

หลักการของ ARP DoS Attack

จากหัวข้อก่อนหน้านี้เราได้เรียนรู้ไปแล้วว่าแฮกเกอร์สามารถใช้ ARP Spoof ในการส่ง ARP Request หรือ ARP Reply ไปหลอกเหยื่อว่าเขาคือ Gateway ได้ เช่น การที่แฮกเกอร์ส่ง ARP Reply ไปยังเหยื่อ (Client) ว่าเครื่องแฮกเกอร์มีไอพีแอดเดรสเป็นไอพีแอดเดรสของ Gateway และ MAC Address เป็น MAC Address ของแฮกเกอร์จึงทำให้เหยื่อปรับปรุงค่าใน ARP Table ของตนเองแบบผิดๆ และเมื่อเหยื่อต้องการส่งข้อมูลออกไปยังอินเตอร์เน็ตก็จะส่งผ่านไอพีแอดเดรสของ Gateway ซึ่งเมื่อเหยื่อเปิดดูค่า MAC ในตาราง ARP แล้วส่งข้อมูลไปยังค่า MAC Address ตามที่ใน ARP Table ระบุว่าเป็น MAC Address ของ Gateway นั้น สุดท้ายข้อมมูลก็จะถูกส่งไปยังแฮกเกอร์ หากมีการปรับกลไกของ ARP Spoof ข้างต้นนี้เล็กน้อย โดยส่งค่า MAC Address ที่ไม่มีอยู่จริงแทนที่จะส่งค่า MAC Address ของแฮกเกอร์ไป เช่น MAC Address ที่สุ่มขึ้นมาแล้วส่งไปให้เหยื่อ หลังจากนั้นที่เหยื่อปรับค่าใน ARP Table แล้วเมื่อเหยื่อต้องการส่งข้อมูลออกไปยังอินเอตร์เน็ต ข้อมูลดังกล่าวจะถูกส่งไปยัง MAC Address ที่ไม่มีอยู่จริง นั้นคือข้อมูลจะไม่สามารถส่งไปจนถึงปลายทางได้ เป็นผลทำให้เหยื่อไม่สามารถติดต่อกับโฮสต์ใดๆบนอินเตอร์เน็ตได้ (รวมทั้งเครื่อข่ายอื่นและ Gateway)

Netcut

โปรแกรม Netcut เป็นโปรแกรมที่ได้รับการออกแบบมาเพื่อใช้ใรการตัดการเชื่อต่อ ทำให้คอมพิวเตอร์ภายในระบบ LAN ไม่สามารถสื่อสารกับเน็ตเวิร์กและอินเตอร์เน็ตได้ ปัจจุบันโปรแกรมนี้เป็นที่นิยมใช้กันอย่างแพร่หลายในกลุ่มนักศึกษาวัยรุ่ยที่อยู่ตามหอพัก ซึ่งเขาเหล่านั้นจะใช้เพื่อตัดคอมพิวเอตร์ของผู้อื่นไม่ให้ใช้งานอินเตอร์เน็ตได้ ทำให้เหลือเฉพาะเครื่องของเขาคนเดียวเท่านั้นที่เข้าสู่อินเตอร์เน็ตได้ เป็นผลทำให้สามารถใช้อินเตอร์เน็ตได้ด้วยความเร็วสูง (เพราะไม่มีคนอื่นมาแย่งแบนด์วิตธ์) นอกจากนั้นก็อาจจะมีเหตุผลอื่นๆ เช่น เพื่อต้องการกลั่นแกล้งผู้อื่น เป็นต้น กลไกการทำงานของ Netcut ก็คือการทำ ARP DoS Attack ดังที่ได้กล่าวไปในหัวข้อก่อนหน้านี้ (ซึ่งสาธิตการทดลองโดยใช้ Packet Builder) โปรแกรม Netcut สามารถเลือกเป้าหมาย (เหยื่อ) ได้ว่าจะตัดเครื่องใดออกจากเน็ตเวิร์คบ้าง ซึ่งสามารถเลือกได้มากกว่า 1 เครื่อง นอกจากนั้นยังสามารถเลือกตัด Gateway ได้ กลไกการทำงานภายใน Netcut นั้นหากวิเคราะห์แพ็คเก็ตดู ก็จะพบว่ามีการส่ง ARP ไปโจมตี Client หรือโจมตี Gateway เพื่อให้ไม่สามารถติดต่อสื่อสารกับโอสต์อื่นได้

clip_image018

โปรแกรม Netcut

การป้องกัน ARP DoS Attack และการป้องกัน Netcut

การป้องกันโปรแกรม Netcut (การป้องกัน ARP Dos Attack) สามารถทำได้โดยการกำหนด Static ARP ที่ไคลเอนต์ทุกเครื่องโดยกำหนดเพียงบรรทัดเดียวเพื่อบอกว่า IP Address ของ Gateway ทีค่า MAC Address เป็นเท่าใด (ป้อนคำที่ถูกต้องลงไป) เช่น การใช้คำสั่งบน Windows Command บนเครื่องไคลเอนต์ดังนี้

C:\>arp –s 192.168.1.1 00-90.d0-2e-ee-29

หากรีสตาร์ทเครื่องใหม่ค่า Static ARP นี้จึงจะหายไป ดังนั้นจึงอาจต้องกำหนดไว้ที่ Schedule Task ใน Control Panel เพื่อให้รับโปรแกรม C:\WINDOWS\SYSTEM32\ARP.EXE ทุกครั้งหลังจากที่มีการบู๊ตเครื่องขึ้นมา พร้อมทั้งระบุพารามิเตอร์ให้กับโปรแกรมด้วย ได้แก่ พารามิเตอร์ –s ip_gateway mac_gateway การกำหนด Satatic ARP บนไคลเอนต์ทุกเครื่องในระบบอาจจะเป็นเรื่องที่ยากลำบากสำหรับเน็ตเวิร์กที่มีเครื่องไคลเอนต์เป็นจำนวนมาก หากเปลี่ยนจากการใช้ Static ARP เป็นการติดตั้งโปรแกรม Anti-ARP ก็จะเป็นเรื่องที่ทำง่ายขึ้น แต่โปรแกรม Anti-ARP เวอร์ชั่นทดลองใช้ สามารถใช้งานได้ไม่เกิน 15 วัน ดังนั้นเราอาจจะต้องแก้ปัญหาโดยซื้อเวอร์ชั่นจริงมาใช้ หรือไม่ก็เขียนโปรแกรมที่ทำงานในลักษณะเดียวกันนี้ขึ้นมาใช้เอง อย่างไรก็ตามผู้โจมตีด้วย Netcut สามารถสั่งให้ Netcut ไปตัด Gateway ได้ (ไม่ใช่การตัดไคลเอนต์) ซึ่งการตัด Gateway นี้โปรแกรม Netcut จะส่ง ARP DoS Packet ไปโจมตี Gateway โดยตรงทำให้ค่า ARP Table บน Gateway Router ถูกกำหนดอย่างผิดๆ ทำให้ข้อมูลขากลับที่เซิร์ฟเวอร์บนอินเตอร์เน็ตส่งกลับมาใช้บนไคลเอนต์แต่ละเครื่องนั้นเดินทางมาไม่ถึงดครื่องไคลเอนต์ วิธีการแก้ปัญหานี้จะขึ้นอยู่กับว่าเน็ตเวิร์กนั้นใช้สิ่งใดเป็น Gateway เช่น

-Cisco Router/L3 Switch (หรือยี่ห้ออื่นที่ใช้ Static ARP ได้) วิธีแก้ไขทำได้โดยกำหนด Static ARP บน Command ของ Router/L3 Switch

-Linux PC Router วิธีแก้ไขทำได้โดยกำหนด Static ARP บน Command ของ Linux

-Windows PC Router วิธีแก้ไขทำได้โดยกำหนด Static ARP บน Command ของ Wondows หรือใช้โปรแกรม Amti-ARP เสริม

-อุปกรณ์ Router ราคาถูกที่ไม่สามารถกำหนด Static ARP ได้ วิธีแก้ไขทำได้โดยเลือกอย่างใดอย่างหนึ่งต่อไปนี้

-เปลี่ยนอปกรณ์ Router ให้เป็นรุ่นที่สามารถทำ Static ARP ได้ (อาจจะต้องใช้เงินจำนวนมากในการซื้ออุปกรณ์)

-นำ Linux มาเป็น Gateway ซ้อน 2 ชั้น โดยให้ Linux อยู่ตรงกลางระหว่าง Layer 2-Switch กับ Gateway Router แล้วทำ Static ARP บน Linux (วิธีนี้ใช่เงินน้อยแต่ผู้ทำจะต้องมีความรู้ในการติดตั้ง เช่น บน Linux จะต้องใส่การ์ด LAN 2 ใบ และมีการติดตั้งค่า Routing หรือ NAT เพื่อให้ส่งต่อ (rout) แพ็คเก็ตได้ และบางครั้งหากใช้ DHCP ก็อาจจะต้องกำหนด DHCP Relay Agent หรือใช้ตัว Linux เองเป็นตัวแจกจ่ายไอพีแอดเดรส เป็นต้น) ผู้เขียนแนะนำให้ใช้วิธีนี้เฉพาะสามารถป้องกันได้ 100% โดยลงทุนไม่มาก

การป้องกัน Netcut โดยใช้สวิทซ์ D-Link DES-3000 Series

ถึงแม้ว่าการป้องกันการโจมตีจากโปรแกรม Netcut โดยการตั้งค่า Static ARP ที่ Client และที่ Gateway สามารถป้องกันได้ 100% แต่ปัญหาอยู่ที่ความยากลำบากในการบริหารจัดการ เช่น หน่วยงานที่มีไคลเอนต์อยู่เป็นจำนวนมาก หรือบางครั้งจำเป็นต้องเปลี่ยนอุปกรณ์ Gateway ใหม่เพื่อให้สนับสนุน Static ARP อย่างไรก็ตามการป้องกัน Netcut ก็สามารถทำได้โดยวิธีการอื่น ซึ่งไม่จำเป็นต้องทำ Static ARP ตัวอย่างเช่น การใช้ฟังก์ชั่น ARP Spoofing Prevention ที่มี่อยู่บนสวิทซ์ D-Link รุ่น DES-3000 Senes การป้องกันโดยวิธีนี้ เราจะต้องอัพเกรดเฟริร์มแวร์ให้เป็นเวอร์ชั่นที่ทันสมัย (Version 5.01.B60 หรือใหม่กว่า) จากนั้นก็ตั้งค่าผ่านทางเว็ปในโหมด Security Management และคลิกที่โหนดย่อย ARP Spoofing Prevention จะพบกับช่องที่ให้ป้อนค่า IP Address และ MAC Address ที่เป็นคู่ที่ถูกต้อง การคอนฟิกอย่างง่ายเพื่อป้องกัน ARP Spoof บน D-Link DES-3000 Series ทำได้โดย “การป้อนค่า IP Address และ MAC Address ของ Gateway” สามารถป้องกัน “ARP Packet ที่ส่งมาเล่นงานไคลเอนต์” ได้ แต่อย่างไรก็ตามถ้าหากแฮกเกอร์ส่ง ARP Packet ไปเล่นงาน Gateway โดยแจ้งว่าไคลเอนต์ (ที่แฮกเกอร์ตั้งใจจะโจมตี) มี MAC Address เป็นค่าที่ไม่มีอยู่จริง ก็จะทำให้แพ็กเก็ตขาเข้ามี่ส่งกลับมาจากอินเตอร์เน็ตไม่สามารถส่งมายังไคลเอนต์ได้ ทำให้ไคลเอนต์ใช้งานอินเตอร์เน็ตได้ไม่สมบูรณ์ ดังนั้นวิธีการป้องกันที่ได้ผล 100% (โดยไม่ใช้ Static ARP) ก็คือ การเพิ่มข้อมูลการจับคู่ระหว่าง IP Address และ MAC Address ของไคลเอนต์ทุกเครื่องเข้าไปให้ Switch ทราบ

DHCP Attack

การโจมตีเกียวกับ DHCP ที่พบเห็นได้บ่อย ได้แก่

1. การโจมตีด้วยเทคนิค DHCP Spoofing โดยการตั้ง DHCP Server เถื่อน (Rogue DHPC Server) เพื่อทำให้แฮกเกอร์เป็น Man In The Middle โดยแทนที่ Gateway หรือ DNS Server แล้วดักจับข้อมูล

2. การโจมตีด้วยเทคนิค DHCP Spoofing โดยการตั้ง DHCP Server เถื่อนเพื่อทำให้เหยื่อไม่สามารถติดต่อกับเน็ตเวืร์กและอินเตอร์เน็ตได้ ก็จัดว่าเป็น DoS Attack ชนิดหนึ่ง

3. การโจมตี DHCP Server เพื่อหลอกให้ DHCP Server แจกจ่าย IP Address ออกไปทั้งหมด จนไม่สามารถที่จะแจกจ่ายได้อีก วิธีการนี้เรียกว่า DHCP flood และจัดอยู่ใน DoS Attack เช่นกัน

DHPC Spoof เพื่อทำให้แฮกเกอร์เป็น Man In The Middle

แฮกเกอร์จะใช้โปรแกรม DHCP ที่อยู่บน Windows Server 2003/2008 หรือ dhcpd บน Linux หรือการใช้โปรแกรม/อุปกรณ์ฮาร์ดแวร์อื่นที่สามารรถทำงานเป็น DHCP Server ได้ เพื่อทำตัวเป็น DHCP Server เถื่อน (Rogue DHCP Server) เพิ่มเข้ามาในเครื่อข่าย และตั้งค่าให้แจกจ่ายไอพีแอกเดรสในช่วงที่ได้กำหนดไว้ พร้อมทั้งแจกจ่ายค่า Gateway ที่เป็นค่าไอพีแอดเดรสของฉอกเกอร์ เพื่อนที่อพ็กเก็ตต่างๆ จะได้วื่งผ่านเครื่องของแฮกเกอร์ แล้วแฮกเกอร์จึงสามารถดักจับข้อมูลได้ หรือแฮกเกอร์จะแจกจ่ายค่า Gateway ที่ถูกต้อง แต่แจกจ่ายค่า DNS Server ที่ชี้ไปยังไอพีแอดเดรสของแฮกเกอร์แทน แล้วติดตั้ง DNS Server หลอกเพื่อแปลงค่า Domain name เป็น IP Address ที่แฮกเกอร์ต้องการได้ (เช่น ตั้งให้ DNS Server ของแฮกเกอร์แปลงค่าโดเมนเนมจากชื่อ hotmail.com ไปเป็นไอพีแอดเดรสของแฮกเกอร์)

การทำงานของ DHCP เป็นการทำงานแบบบรอดคาสต์ ไม่มีการตรวจสอบตัวตนของผู้ร้องขอไอพีแอดเดรส (ไม่ตรวจสอบ DHCP Client) และไม่มีการตรวจสอบตัวตนของผู้แจกจ่ายไอแอดเดรส (ไม่ตรวจสอบ DHPC Server) ดังนั้นหากตั้ง Rogue DHCP Server ขึ้นมา (DHCP Server เถื่อน) เมื่อไคลเอนต์ร้องขอไอพีแอดเดรสโดยส่ง DISCOVERY แบบบรอดคาสต์ออกไป เครื่อง Rouge DHCP Server ของแฮกเกอร์ซึ่งอยู่ใกล้เหยื่อมากกว่า DHCP Server ตังจริงจะได้รับ DISCOVERY นี้ก่อน จากนั้น Rogue DHCP Server ฏ้จะส่ง OFFER ไปให้ไคลเอนต์ (เหยื่อ) โดยตรงเพื่อเสนอค่าไคลเอนต์ ซึ่งไคลเอนต์จะไม่สามารถตรวจสอบได้ว่าเป็น DHPC Server ตัวตริงหรือ Rogue DHCP Server (ช่องโหว่ของโปรโตคอล DHCP) จากนั้นไคลเอนต์ตอบตกลงที่จะใช้ไอพีแอดเดรสดังกล่าวแล้วสั่ง REQUEST ออกไปแบบบรอดคาสต์ Rogue DGCP Server ก็จะส่ง ACKNOWLEDGE ไปยังไคลเอนต์เพื่อเป็นการยืนยันสุดท้ายไคลเอนต์ที่ตกเป็นเหยื่อจะใช้ไอพีแอดเดรสที่ Rogue DHCP Server แจกจ่ายไปพร้อมทั้งค่า Gateway และ DNS ที่ทำปลอมขึ้นมา

ไคลเอนต์ที่ตกเป็นเหยื่อของ Rogue DHCP Server นี้เป็นไคลเอนต์ที่เพิ่งจะเชื่อต่อเน็ตเวิร์กหลังจากที่แฮกเกอร์เปิดใช้งาน Rouge DHCP Server หากเป็นกรณีที่ฉอกเกอร์เป็นพนักงานในออฟฟิสและทำการเปิด Rogue DHCP Serer ไว้ตั้งแต่เช้ามืดหรือเปิดไว้ตั้งแต่ช่วงกลางคืนของเมื่อวาน ไคลเอนต์ที่จะตกเป็นเหยื่อก็คือคอมพิวเตอร์ทุกเครื่องในออฟฟิสแห่งนั้น แฮกเกอร์สามารถดักจับข้อมมูลที่สำคัญได้โดยใช้วิธีการทั้ง 2 อย่างดังนี้ (อย่างใดอย่างหนึ่งหรือทั้งสองอย่าง)

แจกจ่ายค่า Gateway ที่เป็นไอพีแอดเดรสของแฮกเกอร์

แฮกเกอร์จะแจกจ่ายค่า Gateway ที่ไม่ใช่ค่าจริงออกไป โดยค่า Gateway ปลอมนั้นอาจจะเป็นไอพีแอดเดรสของ Rogue DHCP Server เองหรือเป็นไอพีแอดเดรสของเครื่องแฮกเกอร์อีกเครื่องหนึ่งโดย Gateway ปลอมนี้ต้องสามารถส่งผ่านแพ็กเก็ต (forward packet) ไปยังเน็ตเวิร์กอื่นและอินเตอร์เน็ตได้จริง เช่น เครื่องนี้อาจจะมีการเชื่อมต่ออยู่กับเน็ตเวิร์ก 2 เน็ตเวิร์กและทำ Dynamic NAT ไว้เพื่อแชร์คอนเน็คชั่น ดังนั้นไคลเอนต์ทุกเครื่องที่ได้รับค่า Gateway ปลอมนี้จะส่งแพ็ตเก็ตผ่านมายัง Gateway ปลอมในทุกครั้งที่ไคลเอนต์ส่งข้อมูลออกไปยังอินเตอร์เน็ต แฮกเกอร์สามารถรันโปรแกรม Ethereal Wireshark, Sniffer, CAIN หรือโปรแกรมดักจับข้อมูลอื่นๆบน Gateway ปลอม เพื่อดักจับเอารหัสผ่านและ Cookie/Session ID ได้

แจกจ่ายค่า DNS ที่เป็นไอพีแอดเดรสของแฮกเกอร์

แฮกเกอร์จะแจกจ่ายค่า DNS ที่ไม่ใช่ค่าจริงออกไป โดยค่า DNS ปลอมนั้นอาจเป็นไอพีแอดเดรสของ Rogue DHCP Server เองหรือเป็นไอพีแอดเดรสของเครื่องแฮกเกอร์อีกเครื่องหนึ่ง โดย DNS ปลอมนี้ จะมีการตั้งค่าให้สามารถส่งผ่าน DNS Request หรือเรียกว่าทำงานเป็น DNS forward/DNS Cache ได้ เพื่อที่จะส่งคำร้องขอไปยัง DNS Server อินเตอร์เน็ตได้ตริง เพื่อการแปลงค่าโดเมนเนมให้เป็น IP Address ได้ถูกต้อง ยกเว้นโดเมนเนมที่แฮกเกอร์ได้สร้างโซน (DNS Zone) ไว้ใน DNS Cache บนเครื่องของแฮกเกอร์ เช่น หากมีการสร้างโซนไว้จำนวนหนึ่ง แล้วกำหนดให้แปลงเป็น IP Address ของแฮกเกอร์ (สมมุติว่าเป็น 192.168.1.99) ดังนี้ (ตัวอย่างข้อมูลในโซน hotmail.com และโซน live.com)

www.hotmail.com 192.168.1.99

hotmail.com 192.168.1.99

login.live.com 192.168.1.99

หากไคลเอนต์รู้จัก (เหยื่อ) ล็อกอินเช้าสู่ hotmail บราวเซอร์ของเหยื่อก็จะเชื่อมต่อไปยังไอพีแอดเดรสของแฮกเกอร์ ซึ่งแฮกเกอร์ได้เปิดบริการ http/https ไว้ พร้อมทั้งปลอมหน้าจอแรกให้เหมือนกับหน้าจอที่ใช้ล็อกอินเข้าสู้ hotmail หากเหยื่อหลงกลโดยป้อน e-mail และ password แล้วกดปุ่มล็อกอิน Web Application ของแฮกเกอร์ก็จะได้รับรหัสผ่านของเหยื่อและเก็บบันทึกไว้ จากนั้นอาจจะมีการ redirect ไปเวบไซด์จริง เช่น http://65.54.186.17 ซึ่งเป็นไอพีแอดเดรสจริงของ hotmail (login.live.com)

การที่เหยื่อเข้าสู่เวบไซด์ที่แฮกเกอร์ไม่ได้ตั้งค่าโซนไว้ DNS Cache ของแฮกเกอร์ก็จะทำงานในลักษณะ forwarder เพื่อที่จะแปลงค่าโดเมนเนมไปเป็นไอพีแอดเดรสได้อย่างถูกต้อง เพื่อให้เหยื่อเข้าสู่เวบไซด์จริงได้

DHCP Spoofing เพื่อโจมตีแบบ DoS

DHCP Spoofing เพื่อโจมตีไคลเอนต์แบบ DoS

การโจมตีเพื่อทำให้ไคลเอนต์ไม่สามารถใช้งานอินเตอร์เน็ตได้นั้น สามารถทำได้อีกวิธีหนึ่งโดยใช้ Rogue DHCP Server ดังนี้

· แจกจ่ายค่า Gateway ที่ไม่มีอยู่จริง เมื่อไคลเอนต์ที่ตกเป็นเหยื่อได้รับ IP Address จาก Rouge DHCP Server และได้รับค่า Gateway ซึ่งไม่มีอยู่จริงก็จะไม่สามารถสื่อสารกับโอสต์ที่อยู่บนเน็ตเวิร์กอื่นได้ (รวมทั้งอินเตอร์เน็ต) เนื่องจากไม่สามารถส่งแพ็คเก็ตไปยัง Gateway ตัวจริงได้ ทำให้แฟ็ตเก็ตไม่สามารถเดินทางไปถึงปลายทางได้

· แจกจ่ายค่า DNS ที่ไม่มีอยู่จริง เมื่อไคลเอนต์ที่ตกเป็นเหยื่อ ได้รับ IP Address จาก Rogue DHCP Server และได้รับค่า DNS ซึ่งไม่มีอยู่จริงจะไม่สามารถสื่อสารกับโฮสต์บนอินเตอร์เน็ต โดยการอ้างอิงถึงโดเมนเนมได้ (เช่น อ้างอิง http://www.google.com) เนื่องจากกระบวนการแปลงจากโดเมนเนมให้เป็น IP Address จะไม่สามารถทำได้สำเร็จ แต่อย่างไรก็ตามหากอ้างผ่าน IP Address ยังสามารถใช้งานได้อยู่ ( เช่น อ้างถึง http://74.125.153.104) เพราะไม่ต้องอาศัยกระบวนการ resolve hostname ในกรณีที่แฮกเกอร์แจกค่า WINS ที่ไม่มีอยู่จริง ก็จะทำให้เหยื่อไม่สามารถสื่อสารกับโฮสต์อื่นๆบนเน็ตเวิร์กเดียวกันได้ (ผ่านทางการอ้างชื่อ) เพราะการติดต่อกับคอมพิวเตอร์ที่อยู่บน LAN และอยู่บนเน็ตเวิร์กเดียวกัน เช่น การอ้างถึงไฟล์ที่แชร์บนคอมพิวเตอร์อื่นผ่านทางชื่อเครื่อง เช่น \\target_computer จะใช้ WINS ในการแปลงจากชื่อคอมพิวเตอร์ให้เป็นไอพีแอดเดรส แต่อย่างไรก็ตามการอ้างอิงถึงไอพีแอดเดรสโดยตรงก็ยังสามารถทำได้

· แจกจ่ายค่า IP Address ที่ไม่มีอยู่จริง เมื่อไคลเอนต์ที่ตกเป็นเหยื่อได้รับ IP Address จาก Rogue DHCP Server แค่เป็นค่าไอพีแอดเดรสที่ไม่สามารถใช้งานได้ เช่น ไฟล์วอลล์ เปิดให้ไคลเอนต์ที่มีไอพีแอดเดรสในช่วง 192.168.100-200 เท่านั้น ที่สามารถรับส่งข้อมูลกับอินเตอร์เน็ตได้หากแฮกเกอร์กำหนดให้ Rogue DHCP Server แจกไอพีนอกช่วง เช่น 192.168.201-254 ไปให้เหยื่อติดต่อกับอินเทอร์เน็ตไม่ได้ หรือหากแฮกเกอร์แจกไอพีนอกช่วง เช่น 192.168.2.1-254. mask = 255.255.0.0 และแจกจ่าย Gateway และ DNS ที่ถูกต้อง หากค่า mask เดิมที่ใช้งานได้ปกติเป็น 255.255.255.0 ไคลเอนต์ก็จะไม่สามารถติดต่อกับเน็ตเวิร์กอื่นได้เช่นกัน เพราะถึงแม้แพ็กเก็ตขาออกจะวิ่งผ่าน Gateway ที่ถูกต้องและได้รับการ route ไปถึงปลายทางจริง แต่แพ็กเก็ตขาเข้าเมื่อวิ่งกลับมาถึง Gateway ตัว Gateway จะสามารถส่งกลับมายังต้นทาง (เครื่องของเหยื่อ) ได้

DHCP Spoofing เพื่อโจมตี DHCP Server แบบ DoS

นอกจากการปลอมตัวเป็น DHCP Server เพื่อโจมตีไคลเอนต์แล้ว ยังมีการปลอมตัวเป็นไคลเอนต์เพื่อโจมตี DHCP Server เช่นกัน การโจมตีนี้ทำได้โดยการส่งคำร้องขอ IP Address โดยใช้ MAC Address ต้นทางที่ทำปลอมขึ้นมาแล้วส่งคำขอไปยัง DHCP Server เมื่อ DHCP Server ได้รับคำร้องขอนี้จะตรวจสอบค่า MAC Address ซึ่งพบว่าเป็น MAC Address ค่าใหม่ก็จะแจกจ่าย IP Address ใหม่ที่ยังเหลืออยู่มาให้ไคลเอนต์ (แฮกเกอร์) ดังนั้นหากแฮกเกอร์ปลอม MAC Address ใหม่และแกล้งขอ IP Address แบบนี้เรื่อยๆ DHCP Server ก็จะแจกจ่าย IP Address ไปจนหมด หลังจากนั้นหากมีไคลเอนต์ตัวจริงที่ต้องการ IP Address ส่งคำร้องขอไป DHCP Server ก็จะไม่มี IP Address ที่จะแจกจ่ายให้ได้อีก การโจมตีแบบนีเรียกว่า DHCP flooding สามารถทำได้โดยใช้โปรแกรมชื่อ dhcpx ซึ่งรันบน Linux

การป้องกัน DHCP Attack

การตรวจสอบและการป้องกันการแจกจ่าย Gateway ปลอม

การตรวจสอบแบบแมนนวลทำได้โดย ตรวจสอบค่า Gateway ที่ได้รับว่าเป็นหมายเลขจริงที่เคยได้รับทุกๆครั้งก่อนหน้านี้หรือไม่ เช่น เน็ตเวิร์กที่ Gateway จริงมีค่าไอพีแอดเดรสเป็น 192.168.1.1 แต่หากวันหนึ่งได้ค่า Gateway เป็น 10xxx อาจเป็นสัญญาณว่ากำลังถูกโจมตีด้วย DHCP Spoof เพื่อแจกจ่าย Gateway ปลอมได้ การตรวจสอบค่า Gateway ทำได้โดยใช้คำสั่ง ipconfig/all บน Windows Command หรือใช้โปรแกรม DHCP Explorer ช่วยตวจสอบ Rogue DHCP หากเน็ตเวิร์กใดใช้ Switch คุณภาพสูง เช่น Cisco Switch ก็สามารถใช้ฟังก์ชั่น DHCP Snooping เพื่อสอดแนมการทำงานของโปรโตคอล DHCP ได้ นอกจากนั้น Cisco Switch ยังให้เราสามารถกำหนดได้ว่าจะอนุญาตให้เชื่อต่อกับ DHCP Server บน Port (ช่องเสียบสายสัญญาณ) ช่องใดได้บ้าง

clip_image020

โปรแกรม DHCP Explorer ช่วยตรวจสอบ Rogue DHCP Server

การตรวจสอบและป้องกันการแจกจ่าย DNS ปลอม

การตรวจสอบแบบแมนนวลทำได้โดย ตรวจสอบค่า DNS ที่ได้รับว่าเป็นหมายเลขจริงที่เคยได้รับในทุกๆครั้งก่อนหน้านี้หรือไม่ เช่น เน็ตเวิร์กที่ DNS จริงทีค่าไอพีแอดเดรสเป็น 200.20.20.1 แต่หากวันใดวันหนึ่งได้ค่า DNS เป็น 192.168.1.x (หมายเลขเน็ตเวิร์กเดียวกันกับไอพีแอดเดรส) ก็อาจจะเป็นสัญญาณว่ากำลังถูกโจมตีด้วย DHCP Spoof เพื่อแจกจ่าย DNS ปลอมได้ การตรวจสอบค่า DNS ทำได้โดยใช้คำสั่ง ipconfig/all บน Windows Command หรือใช้โปรแกรม DHCP Explorer ช่วยตรวจสอบ นอกจากนั้น เรายังสามารถป้องกันโดยใช้ DHCP Snooping บน Cisco Switch ได้เช่นกัน

การป้องกัน DHCP Flooding

การโจมตีที่มาจากไคลเอนต์เป็นการโจมตี DHCP Sever ด้วยวิธี DHCP Flooding นั้นเราสามารถป้องกันได้โดยวิธีการเดียวกันกับการป้องกัน MAC Spoofing

การป้องกัน Rogue DHCP โดยใช้ DHCP Snooping บน Cisco Switch

DHCP Snooping เป็นฟังก์ชั่นบน Cisco Switch ที่ออกแบบมาเพื่อป้องกันการทำงานของ Rogue DHCP Server และสามารถใช้ร่วมกับฟังก์ชั่น Dynamic ARP Inspection เพื่อป้องกัน ARP Spoof/Poision เช่น การทำงานของโปรแกรม Switch Sniffer ได้ สามารถป้องกัน ARP DoS Attack อย่างการทำงานของเน็ตคัต (Netcut) ได้ เกี่ยวกับ DHCP Snooping เราต้องไปกำหนดที่ Switch ว่าจะให้ Port (ช่องเสียบ) ใดเป็น Trust และให้ Port ใดเป็น Untrust จากนั้น Switch จะสร้าง DHCP Snooping Table ซึ่งเป็นตารางที่ใช้ตรวจสอบการจับคู่ที่ถูกต้องของ IP Address กับ MAC Address ฟังก์ชั่น DHCP Snooping จะตรวจสอบ DHCP OFFER ว่ามาจาก port ที่เรากำหนดว่าเป็น Trust หรือไม่ ถ้ามาจาก port ที่กำหนดไว้ว่าให้เป็น Trust มันจะอนุญาตแพ็กเก็ตนั้น แต่หากมาจาก port ที่เป็น Untrust มันจะดรอปแพ็กเก็ตทิ้ง หรือเราจะปรับค่าคอนฟิกเพื่อให้ Switch สั่งชัตดาวน์หรือ Disable Port นั้นก็ได้

ตัวอย่างการใช้งาน DHCP snooping บน Cisco Switch

Switch# configure terminal

Enter configuration command, one per line. End with CNTL/Z.

Switch(config)# ip dhcp snooping

Switch(config)# ip dhcp snooping vlan 10 100

Switch(config)# ip dhcp snooping information option

Switch(config-if)# ip dhcp snooping trust

Switch(config-if)# ip dhcp snooping limit rate 100

Switch(config-if)# end

Switch# show ip dhcp snooping

DHCP Snooping is configured on the following VLANs:

10 30-40 100 200-220

Insertion of option 82 information is enabled.

Interface Trusted Rate limit (pps)

---------- --------- ------------------

FastEthernet2/1 yes 10

FastEthernet2/2 yes none

FastEthernet3/1 no 20

Switch#

การป้องกันโดยใช้สวิทซ์ D-Link

สวิทซ์ D-Link รุ่น DES-3000 Series สามารถป้องกัน Rogue DHCP Server ได้โดยการตั้งค่าที่โหนด Security Management à Filter à DHCP Server Screening Setting โดยระบุว่าจะป้องกันไม่ให้มี DHCP Server (ปลอม) ที่มาจากช่องใดได้บ้าง ตัวอย่างในรูปที่ 17 กำหนดค่า Frcm = Port2 To = Port26, State = Enable เมื่อคลิกปุ่ม Apply จะเป็นการบล็อค DHCP Server ปลอม ที่ติดอยู่กับช่องที่ 2, 3,4,....26 โดยสวิทซ์จะอนุญาตเพียงช่องที่ 1 เท่านั้นที่เชื่อมต่อกับ DHCP Server

MAC Spoofing

การสื่อสารในระดับ Layer-2 (Data Link Layer) ของ OSI Reference Model จะต้องใช้ MAC Address เพื่อเป็นหมายเลขระบุตัวตนของผู้ส่งและผู้รับ ซึ่งการรับส่งเฟรมข้อมูล (Layer-2 data) จะเป็นหน้าที่ของ Card Network โดยการ์ดแต่ละใบจะมีการตั้งค่า MAC Address ในระดับกายภาพโดยการเบิร์นไว้ใน ROM ของ Card Network ซึ่งไม่สามารถเปลี่ยนแปลงค่าได้เนื่องจากเป็นฮาร์ดแวร์ ดังนั้น MAC Address จึงถูกเรียกอีกชื่อหนึ่งว่า Physical Address แต่อย่างไรก็ตามในการใช้งานจริงคอมพิวเตอร์จะไม่อ่านค่า MAC Address จากการ์ดเน็ตเวิร์กทุกครั้ง แต่จะอ่านค่า MAC Address จากหน่วยความจำที่เคยเก็บไว้แทน ดังนั้นหากแก้ไขหน่วยความจำตำแหน่งที่ใช้เก็บค่า MAC Address ก็จะเป็นการเปลี่ยนค่า MAC Address ได้ (เป็นการเปลี่ยน Source Address ของเฟรมข้อมูล Layer-2 ไม่ใช่การเปลี่ยนค่า MAC Address จริงภายใน Card Network)

ทำไมแอกเกอร์ต้องปลอมแปลงค่า MAC Address

การโจมตีระบบ แฮกเกอร์จำเป็นต้องปลอมแปลง IP Address และ MAC Address เพื่อเป็นการพรางตัวขณะที่แฮกเกอร์โจมตีระบบหากมีการตรวจสอบย้อนกลับ ผู้ตรวจสอบจะเข้าใจผิดคิดว่าถูกโจมตีมาจากไอพีแอดเดรสอื่นไม่ใช่ไอพีแอดเดรสจริงๆของฉอกเกอร์ (การตรวจสอบให้แน่ชัดว่าต้นตอมาจากที่ใดกันแน่ จะต้องใช้เวลานานพอสมควร) การที่แฮกเกอร์ปลอมไอพีแอดเดรสโดยใช้การเกาะพร็อกซี่นั้น สามารถตรวจสอบย้นกลับได้จาก Log File ของ Web Application ปลายทาง ซึ่งสามารถตรวจสอบได้ว่ามาจากพร็อกซี่และหากมาจากพร็อกซี่จริง หลักฐานไอพีแอดเดรสที่แท้จริงของแฮกเกอร์จะอยู่ใน Log File ของพร็อกซี่ที่แฮกเกอร์ใช้ ดังนั้นหากสามารถตรวจสอบจากเจ้าของพร็อกซี่จนทราบค่าไอพีแอดเดรสของแฮกเกอร์ได้ ก็จะทำให้ทราบว่ามาจากหน่วยงานใด จากนั้นก็ไม่ยุ่งยากแล้วที่จะตามดูว่ามาจากคอมฟิวเตอร์เครื่องใด เพราะข้อมูลของการแจกจ่ายไอพีแอดเดรสจะอยู่บน Log File ของ DHCP Server ของเน็ตเวิร์คต้นทางว่าได้แจกจ่ายไอพีแอดเดรสหมายเลขดังกล่าวให้กับ MAC Address ใดในช่วงเวลานั้น หากแฮกเกอร์ปลอมแปลงค่า MAC Address ให้เป็น MAC Address ของผู้อื่นหรือปลอมเป็น MAC Address ที่ไม่มีจริง ก็ทำให้การตามตัวแฮกเกอร์เป็นไปได้ลำบากมาก จึงเป็นเหตุผลว่าทำไมต้องมีการปลอม MAC Address

นอกจากเหตุผลเกี่ยวกับการพรางตัวแล้วแฮกเกอร์มักจะปลอม MAC Address เพื่อการลอดผ่าน Access Control เช่น MAC ACLs ของ Cisco Router ที่ตั้งไว้เช่นตัวอย่างดังนี้

mac access-list acl-mac-01

permit 00c0.4f00.009b any any

permit 00c0.4f00.00a7 any any

permit 00c0.4f00.00c3 any any

. . .

Interface Ethernet 2/1

mac port access-group acl-mac-01

จาก MAC ACLs ข้างต้นเป็นการอนุญาตให้คอมพิวเตอร์ที่มี MAC Address หมายเลขที่ระบุเท่านั้นที่สามารถสื่อสารกับทุกโฮสต์และทุกโปรโตคอลได้ ดังนั้นหากแฮกเกอร์ปลอมค่า MAC Address ให้ตรงกับค่าใดค่าหนึ่งในนั้นก็สามารถที่จะลอดผ่าน MAC ACLS นี้ได้ อุปกรณ์ Access Point ที่ได้รับการตั้งค่า Security โดยการกำหนดให้อนุญาตเฉพาะ MAC Address บางหมายเลขเท่านั้นที่จะใช้งาน Wireless LAN ได้ แฮกเกอร์สามารถโกงโดยการเปลี่ยนค่า MAC Address ให้เป็นค่าที่ Access Point อนุญาตได้เช่นกัน ซึ่ง WiFi ของผู้ให้บริการบางรายก็อาจจะมีช่องโหว่นี้อยู่ด้วย

วิธีการเปลี่ยนค่า MAC Address

เราสามารถเปลี่ยนค่า MAC Address บน Linux ได้ดังตัวอย่างต่อไปนี้

[root@localhost root]# ifconfig eth1 down

[root@localhost root]# ifconfig eth1 hw ether 00:02:2D:07:E1:FF

[root@localhost root]# ifconfig eth1 up

[root@localhost root]# ifconfig eth1

ethl Link encap: Ethernet HWaddr 00:02:07:E1:FF

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:15 errors:2388 dropped:0 overruns:0 frame:2388

TX packets:10 erroes: 0 dropped:0 overruns:0 carrier:0

Collision:0 txqueuelen:100

RX bytes:720 (720.0 b) TX bytes: 3300 (3.2 Kb)

Interrupt:3 Base address:0x100

สำหรับการเปลี่ยนค่า MAC Address บน Windows สามารถเปลี่ยนได้โดยเข้าไปแก้ไขดังนี้

- เลือกเมนู Start à Control Panel à Network Connections

- คลิกขวาที่ Local Area Connection à เลือกเมนู Properties à คลิกปุ่ม Configure.. à เลือกแท็บ Advance

- ในช่อง Property: ด้านซ้ายมือ à เลือก Network Address à ด้านขวาเลือก à ป้อนค่า MAC Address ที้ต้องการจะให้เป็น

clip_image022

การเปลี่ยนค่า MAC Address บน Windows XP

การเปลี่ยนค่า MAC Address ตามวิธีการข้างต้น หาก Card Network ไม่สนับสนุนก็จะไม่มีตัวเลือก Network Address ในด้านซ้ายมือให้เลือก ดังนั้นหากต้องการเปลี่ยนค่า MAC Address จะต้องใช้โปรแกรมอื่นมาช่วย เช่น โปรแกรม MAC MackeUp หรือโปรแกรม MAC Address Changer

การตรวจสอบค่า MAC Address บน Windows ทำได้โดยใช้คำสั่ง ipconfig/all ดังนี้

C:\>ipconfig/all

Windows IP Configuration

Host Name……………………………………: pc

Primary Dns Suffix …………………………..:

Node Type…………………………………….: Unknown

IP Router Enabled……………………………..: No

WINS Proxy Enabled………………………….: No

DNS Suffix Search List………………………..: lan

Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix . : lan

Description…………………….....: Marvell Yukon 88E8001/8003/8010 PCI

Gigabit Ethernet Controller

Physical Address………………….: AA-BB-CC-DD-EE-FF

Dhcp Enabled……………………..: Yes

Autoconfiguration Enabled……….: Yes

IP Address…………………….......: 192.168.1.2

Subnet Mask………………………...: 255.255.255.0

Default Gateway……………………: 192.168.1.1

DHCP Server……………………….: 192.168.1.1

DNS Servers………………………..: 192.168.1.1

Lease Obtained……………………..: Tuesday, May 26, 2009 22:30:50

Lease Expires………………………: Wednesday, May 27, 2009 22:03:50

C:\>

การโจมตีด้วยวิธีการปลอมแปลงค่า MAC Address

การปลอมแปลงค่า MAC Address นอกจากเหตุผลเพื่อเป็นการพรางตัวในการเจาะระบบแล้วก็ยังมีการโจมตีอื่น ที่ต้องมีการปลอม MAC Address เช่น

การโจมตี DHCP Server ด้วยวิธีการ DHCP Flooding

การโจมตีด้วยวิธีนี้เป็นการหลอกให้ DHCP Server แจกจ่าย IP Address ออกๆปจนหมดจนไม่เหลือสำหรับการแจกจ่ายให้ผู้ใช้จริง โปรแกรมที่นิยมใช้ ได้แก่ dhcpx ที่มากับแผ่น Back Track

การปลอมตัวเป็นบุคคลอื่นในระบบ LAN

การปลอมตัวเป็นบุคคลอื่นในระบบ LAN คือ การปลอมทั้งค่า MAC Address. IP Address. Computer Name และ Workgroup Name เพื่อไม่ให้ผู้ดูแลระบบสแกนเจอ ในขณะที่แฮกเกอร์และเหยื่อสามารถใช้งานอินเตอร์เน็ตได้พร้อมกัน และระบบปฏิบัติการก็ไม่แจ้งว่า IP Address ชน การตั้งค่า IP Address และ IP Address ให้ตรงกันกับเครื่องของเหยื่อ ยังสามารถทำให้แฮกเกอร์แอบดักจับข้อมูลบางส่วนที่เชริฟเวอร์ในอินเทอร์เน็ตส่งกลับมาให้เหยื่อได้อีกด้วย (โดยไม่ต้องทำ ARP Spoof)

การดักจับข้อมูล Cookie/Session ID ของเว็บ โดยวิธีการแทนที่ Gateway

วิธีการนี้ได้ทดลองตั้งค่า MAC Address และค่า IP Address แบบ Static ให้เป็นค่าเดียวกันกับค่า MAC Address และ IP Address ของ Gateway จากนั้นก็เขียน batch file เพื่อให้เครื่องที่ใช้โจมตีส่งแพ็กเก็ตเล็กๆไปยังอุปกรณ์ Switch ทุกๆ 3 วินาที (ใช้คำสั่ง ping ไปยังไอพีแอดเดรสอื่นสลับกับ ping ตัวเอง) เพื่อหลอกให้ Switch เรียนรู้ค่า Mac Address จากเครื่องที่ใช้โจมตีเป็นระยะๆทำใหเ Switch หลงผิดคิดว่า Gateway นั้นต่ออยู่บน port (ช่องเสียบ) ที่เครื่องแฮกเกอร์เชื่อมต่ออยู่ เมื่อผู้ใช้ (เหยื่อ) ส่ง HTTP request ออกไปยังอินเตอร์เน็ต HTTP request packet จะถูกส่งผ่านไปที่ Gateway แต่ก่อนที่จะถึง Gateway นั้นจะต้องถึงอุปกรณ์ Switch ก่อน ดังนั้นหากอยู่ในช่วงเวลาที่ Switch โดนหลอก มันก็จะส่งเฟรมข้อมูล (มี HTTP request packet อยู่ภายในรวมทั้ง Cookie/Session ID) ไปยังแฮกเกอร์

การป้องกันการปลอมแปลงค่า MAC Address

การป้องกันการปลอมแปลงค่า MAC Address ทำได้โดยใช้อุปกรณ์ Switch ที่มีคุณภาพสูงซึ่งมีฟังก์ชั่นในการป้องกัน เช่น Switch ของ Cisco มีฟังก์ชั่นที่สามารถป้องกันการโจมตีด้วยการปลอม MAC Address ตัวอย่างเช่น ฟังก์ชั่น Port Security และ IP Source Guard นอกจากนั้นเรายังสามารถป้องกันได้โดยใช้สวิทซ์ D-Link และ SME รุ่นที่เป็น Managed Switch

Port Security บน Cisco Switch

ตัวอย่างการคอนฟิกเพื่อป้องกัน MAC Spoofing โดยใช้ port-security บน Cisco Router

Switch# configure terminal

Enter configuration commands, one per line. End with CNTL/z.

Switch(config)# interface fastethernet 5/1

Switch(config-if)# switchport mode access

Switch(config-if)# switchport port-security

Switch(config-if)# switchport port-security maximum 10

Switch(config-if)# switchport port-security mac-address 0000.0000.0003 (static secure MAC)

Switch(config-if)#end

Switch#show port address

Secure Mac Address Table

-------------------------------------------------------------------------------------------------

Vlan Mac Address Type Ports Remaining Age

(mins)

----- --------------- ------ ------ -------------------------

1 0000.0000.0003 SecureConfigured Fa5/1 -

-------------------------------------------------------------------------------------------------

Total Address in System (excluding one mac per port) :2

Max Address limit in System (excluding one mac per port) : 3072

รุ่นของ Cisco Switch และเวอรชั่นของ IOS ที่สนับสนุน port security สามารถตรวจสอบได้จากเวบไซต์ Cisco.com

IP Source Guard บน Cisco Switch

ตัวอย่างของคอนฟิกกูเรชั่นกี่ยวกับ IP Source Guard บน Cisco Router

Switch# configure terminal

Enter configuration commands. One per line. End with CNTL/Z.

Switch(config)# ip dhcp snooping

Switch(config)# ip dhcp snooping vlan 10 20

Switch(config)# interface fa6/1

Switch(config-if)# switchport truck encapsulation dotlq

Switch(config-if)# switchport mode trunk

Switch(config-if)# switchport trunk native vlan 10

Switch(config-if)# switchport trunk allowed vlan 11-20

Switch(config-if)# no ip dhcp snooping trust

Switch(config-if)# no ip verify source vlan dhcp-snooping

Switch(config-if)# end

Switch# sh ip verify source interface f6/1

Interface Filter-type Filter-mode IP-address Mac-address Vlan

---------- ------------- -------------- --------------- --------------- -----

Fa6/1 ip-mac active 10.0.0.1 10

Fa6/1 ip-mac active deny-all 11-20

Switch#

การใช้ Switch คุณภาพสูงเพื่อป้องกันการปลอมแปลงค่า MAC Address สามารถทำได้โดยเฉพาะเน็ตเวิร์กที่ใช้สายเท่านั้นหากเป็น Wireless LAN เราไม่สามารถป้องกันโดยใช้วิธีการข้างต้นได้ การป้องกันใน Wireless LAN ต้องใช้มาตราการอื่น เช่น Access Point ที่มีระบบตรวจสอบการอนุญาตใช้งานแค่พิจารณาเฉพาะ MAC Address อย่างเดียวไม่เพียงพอที่จะทำให้ระบบปลอดภัยได้ ดังนั้นเราจะต้องเพิ่มการตรวจสอบอย่างอื่นเข้าไปด้วย ตัวอบ่างเช่น การตรวจสอบ username, password หรือการเข้ารหัสข้อมูลด้วย WEP หรือ WPA ซึ้งผู้ใช้งานจะต้องทราบค่า Key จึงจะสามารถใช้งานได้  หน่วยงานขนาดเล็กที่ไม่มีงบในการซื้ออุปกรณ์ Switch คุณภาพสูงซึ่งมีราคาแพง อาจจะต้องรออีกสักระยะหนึ่ง เพื่อให้ Switch ยี่ห้อธรรมดาๆราคาไม่กี่พันเพิ่งฟังก์ชั่นป้องกันการปลอม MAC Address ได้ และอนาคตก็มีแนวโน้มที่อุปกรณ์ชั้นนำอย่าง Cisco จะลดราคาลงมาและขายในราคาถูกลง หรืออาจจะผลิต Switch รุ่นเล็กที่มีราคาถูกลงแต่มีฟังก์ชั่นการทำงานสูงๆออกมา (เช่น ฟังก์ชั่นที่ใช้ป้องกันการปลอม MAC Address) เพื่อให้หน่วยงานขนาดเล็กสามารถซื้อหามาใช้งานได้

ป้องกันการปลอม MAC Address ด้วย IP-MAC Binding บน D-Link Switch

การป้องกันการปลอม MAC Address บนสวิทช์ D-Link ใช้วิธีบังคับว่าพอร์ตช่องใดให้ใช้ได้กับคู่ของ IP-MAC ใด ซึ่งเราสามารถกำหนดได้มากกว่า 1 คู่ ในกรณีที่ใช้งานปกติควรจะระบุเพียง IP-MAC คู่เดียวต่อหนึ่งพอร์ต (ช่อง) ส่วนบางกรณีจำเป็นที่จะต้องระบุ IP-MAC หลายคู่ เช่น กรณีที่พอร์ตช่องนั้นต่อเชื่อมกับ Access Point หรือ Unmanaged Switch ที่สามารถต่อเชื่อมคอมพิวเตอร์เพิ่มได้อีก ซึ่งบน Access Point หรือ Unmanaged Switch ไม่สามารถป้องกันการปลอมได้ แต่ถ้าหากแพ็กเก็ตวิ่งผ่านมายัง Managed Switch มันจะตรวจสอบว่าเป็นคู่ IP-MAC ที่เราระบุไว้หรือไม่ ถ้าไม่เป็นไปตามกฏสวิทช์ก็จะทิ้งแพ็กเก็ตนั้นไป การคอนฟิกเพื่อป้องกันการปลอมแปลง MAC Address บน D-Link DES-3000 Series ทำได้โดยกำหนดค่า 2 ขั้นตอนดังนี้

1. ตั้งค่ากฏการจับคู่ IP-MAC พร้อมกับระบุพอร์ตที่เชื่อมต่อ (ตั้งค่าในโหนด Configuration) à IP-MAC Binding à IP-MAC Binding Table)

2.ตั้งค่าการบังคับใช้ว่าจะให้พอร์ตใดทำงานตามกฏที่ตั้งไว้ (ตั้งค่าในโหนด Configuration à IP-MAC Binding à IP-MAC Binding Port)

ความปลอดภัยของ SNMP

อุปกรณ์เครือข่าย เช่น Switch Router รวมทั้งเครื่อง Windows Service/Linux Serve ต่างๆ โดยส่วนมากจะสลับการมอนิเตอร์ระบบผ่านทางโปรโตคอล SNMP: Simple Network Management Protocol เพื่อให้ผู้ดูแลระบบสามารถเฝ้าดูการทำงานของอุปกรณืได้ เช่น เฝ้าดูค่า Bandwidth, CPU Load และ Number of connection เป็นต้น โดยจะต้องมีการตั้งค่า Community Spring ไว้บนอุปกรณ์หรือเชิร์ฟเวอร์เหล่านั้น (หากไม่มีการตั้งค่า Community String จะถือว่าให้ใช้ค่าดีฟอลต์ ซึ่งโดยส่วนมากมักจะถูกตั้งเป็นคำว่า public หรือ private มาจากโรงงาน) จากนั้นผู้ดูแลระบบจะใช้ในโปรแกรม snmp client เข้าไปดูข้อมูลโดยระบุค่า Community String ให้ตรงกับฝั่งเชิร์ฟเวอร์โปรแกรม snmp client ที่เรามักจะพบเห็นได้บ่อยคือ metg ซึ่งใช้เพื่อเฝ้าดูค่าแบนด์วิดธ์ของเน็ตเวิร์ก นอกจากนั้นยังมีโปรแกรม Solar Winds ที่รันบน Windows และโปรแกรม snmp walk ที่รันบน Linux

สิ่งที่แฮกเกอร์สนใจคือ การเข้าไปดูข้อมูลที่สามารถนำไปสู่การโจมตีเน็ตเวิร์กให้สำเร็จ เช่น การเข้าไปดู IP Address ของแต่ละ VLAN ในอุปกรณ์ Core Switch (ส่วนมาก Core Switch มักจะเป็น L3 Switch ที่ใช้แบ่ง VLAN และเชื่อมต่อกับเน็ตเวิร์กของอาคารอื่นหรือเน็ตเวิร์กอื่น) และแฮกเกอร์ก็สนใจที่จะดูรายชื่อผู้ใช้และพอร์ตที่เปิดใน Windows Server ผ่านทาง SNMP และดู ARP Table บน Core Switch เพื่อให้ทราบ MAC Address ของแต่ละ IP Address (รวมทั้งค่า MAC Address ของผู้ดูแลระบบ) นอกจากนั้นยังสามารถดูเวอร์ชั่นของ OS และข้อมูลสำคัญอื่นๆ เพื่อนำมาซึ่งการโจมตีหรือเพื่อเข้าถึงระบบได้

ช่องโหว่ของ SNMP

ช่องโหว่ของ SNMP มักจะอยู่ที่การไม่ได้เปลี่ยนค่า Community String นั่นคือ มีการใช้ค่าดีฟอลต์ (public, private) แฮกเกอร์จะใช้โปรแกรม snmp client เช่น Solar Winds เพื่อเรียกดูข้อมูลที่สำคัญได้ ช่องโหว่อีกอย่างหนึ่งของ SNMP ก็คือการสื่อสารกันระหว่าง snmp client กับ snmp server จะมีการส่ง Community String แบบ plain text ซึ่งไม่มีการเข้ารหัส ดังนั้นหากแฮกเกอร์ดักจับเอา Community String ไปได้ จะสามารถเข้าไปดูข้อมูลที่สำคัญบนอุปกรณ์ Switch, Router รวมทั้งเครื่อง Windows Server/Linux Server ได้

การป้องกันการเข้าถึงข้อมูลสำคัญผ่าน SNMP

ก่อนเปิดใช้งาน SNMP เราควรเปลี่ยนค่า Community String บนตัวอุปกรณ์ Switch, Router รวมทั้งเครื่อง Windows Server และ Linux Server โดยอนุญาตให้เฉพาะไอพีแอดเดรสของผู้แลระบบเท่านั้นที่สามารถติดต่อกับอุกกรณ์เหล่านี้ผ่านทาง SNMP ได้ ซึ่ง SNMP ใช้โปรโตคอล UDP และใช้พอร์ตหมายเลข 161 และ 162 โดยการตั้งค่า ACL บน L3 Switch หรือ Router และตั้ง Firewall Rule บนไฟร์วอลล์ที่เกี่ยวข้อง

การลักลอบเข้าถึงทรัพยากรในระบบ LAN

การลักลอบหรือแอบไปเข้าใช้ทรัพยากรในระบบ LAN เป็นช่องโหว่อย่างหนึ่งของระบบที่ควรจะได้รับการเอาใจใส่และป้องกัน เช่น แฮกเกอร์ที่นั่งอยู่นอกอาคารสำนักงานสามารถเข้าถึงเน็ตเวิร์กของเราผ่านทาง Wireless LAN ที่ไม่ได้เข้ารหัสหรือตั้งค่าเกี่ยวกับการตรวจสอบสิทธิ์ไว้ จากนั้นแฮกเกอร์สามารถเข้าถึง Share Folder ที่เราเผลอเปิดไว้โดยไม่ได้ตั้งรหัสผ่าน และในนั้นก็อาจมีข้อมูลสำคัญด้วย เป็นต้น

ลักลอบเข้าถึง Share Folder ที่เผลอแชร์ไว้

ปกติแล้วเรามักจะถ่ายโอนไฟล์ข้างเครื่องกันโดยการเปิดแชร์โฟล์เดอร์ (Share Folder) ไว้ แล้วให้ผู้ใช้บนเครื่องอื่นเข้าถึงโดยป้อน \\ip_address บนช่อง Address ของ Windows Explorer (หรือ Internet Explorer) แต่ปัญหาที่มักจะเกิดบ่อยๆก็คือ การเปิดแชร์ไว้แล้วไม่มีการปิด ผู้ใช้ที่เข้าถึง LAN ของเราได้ สามารถที่จะเข้าถึงข้อมูลผ่านทาง Share Folder ได้เช่นกัน และนอกจากจะแอบขโมยหรือก๊อบปี้เอาข้อมูลดังกล่าวออกไป

การตรวจหา Share Folder ทำได้โดยการใช้คำสั่ง net share ใน windows Command ดังนี้

C:\> net share

Share name Resource Remark

---------------------------------------------------------------------------------------------------

ADMINS C:\WINDOWS Remote Admin

HS H:\ Default share

CS C:\ Default share

IPCS Remote IPC

MyDATA C:\MyDATA

The command complete successfully.

C:\>

การใช้คำสั่ง net share บนคอมพิวเตอร์ทีละเครื่องบนเน็ตเวิร์กเพื่อตรวจหา Share Folder ย่อมไม่ใช่เรื่องง่าย เราอาจจะต้องใช้โปรแกรมช่วยสแกนหา Share Folder ซึ่งเครื่องมือช่วยก็มักจะเป็นเครื่องมือที่แฮกเกอร์ ชอบใช้เช่นกัน โปรแกรม IP Tools เป็นเครื่องมือที่ช่วยในการสแกนหา Share Folder ที่เผลอเปิดทิ้งไว้ โดยมันจะสแกนทุกไอพีแอดเดรสจามช่วงที่เราระบุ นอกจากนั้นยังสามารถช่วยสแกนพอร์ตของเครื่องเซิร์ฟเวอร์ได้อีกด้วย

การใช้งาน Share Folder ที่ปลอดภัย ทำได้โดยการยกเลิก Share Folder ที่ๆม่ใช้แล้ว และหากต้องการสร้างแชร์โฟลเดอร์ขึ้นมาใหม่จะต้องกำหนดให้มีการใช้รหัสผ่าน และเมื่อใช้งานเสร็จก็ควรที่จะยกเลิกการแชร์นั้น

นอกจาก Share Folder ก็ยังมีทรัพยากรอื่นๆบนเครือข่าย LAN ที่เราสามารถกำหนดสิทธิ์ให้ใช้ได้เฉพาะบาง User หรือบางไอพีแอดเดรสได้ เช่น การกำหนดค่า permission เพื่อใช้งาน Share Printer เป็นต้น

ลักลอบใช้อินเทอร์เน็ตผ่าน Wireless LAN

เน็ตเวิร์กที่ใช้งาน Wireless LAN มักจะนำอุปกรณ์ Access Point เข้ามาติดตั้งใช้งานโดยไม่ได้กำหนดค่าเกี่ยวกับความปลอดภัย อาจจะเพื่อให้ผู้ใช้สามารถใช้งานได้ง่ายหรือไม่ก็เป็นเพราะผู้ดูแลระบบไม่มีคาวมรู้ด้าน Wireless Security หรืออาจจะมาจากสาเหตุอื่น เช่น ผู้ใช้นำ Access Point เข้ามาติดตั้งโดยดพละการ ไม่ว่าด้วยเหตุผลใดก็ตาม การกระทำทั้งหลายที่กล่าวมาทำให้เกิดช่องโหว่ของระบบเครือข่ายเป็นการเปิดช่องทางให้ผู้บุกรุกสามารถเข้าใช้งานระบบเครือข่างของเราได้ โชคดีที่สุดคือ ผู้บุกรุกแอบขโมยใช้อินเทอร์เน็ตเท่านั้น แต่ถ้าโชคร้ายกว่านั้นผู้บุกรุกอาจจะสแกนหาข้อมูลสำคัญที่อยู่ใน Share Folder ที่เผลอแชร์ไว้ หรือทำการสแกนหาช่องโหว่ของเครื่องแม่ข่ายแล้วโจมตีจากข้างหลังไฟร์วอลล์ (ทำให้ง่ายกว่าโจมตีจากด้านหน้าไฟร์วอลล์) ขโมยข้อมูลที่สำคัญใน Dtatabase Server หรือแอบเปลี่ยนแปลงข้อมมูล เป็นต้น

ดังนั้น เราควรที่จะใส่ใจกับอุปกรณ์ Access Point หากนำมาติดตั้งก็ควรที่จะทำให้ปลอดภัย โดยวิธีการอย่างใดอย่างหนึ่งต่อไปนี้ (การป้องกันบางอย่างสามารถใช้ร่วมกันได้)

- กรองค่า MAC Address ให้ค่า MAC Address ของผู้ใช้ภายในเท่านั้นที่สามารถใช้งานได้

- เข้ารหัสด้วย WEP เพื่อให้ผู้ใช้ที่มีค่า Key เท่านั้นที่จะใช้งานได้

- เข้ารหัสด้วย WPA/WPA2 เพื่อให้ผู้ใช้ที่มีค่า Key เท่านั้นที่จะใช้งานได้

- ตั้งค่าให้ตรวจสอบ username และ password เพื่อให้ผู้ใช้ที่มีในระบบเท่านั้นที่จะใช้งานได้

ลักลอบใช้อินเทอร์เน็ตผ่าน Wire LAN

การลักลอบเข้าถึงเครือข่ายผ่านทาง LAN แบบใช้สาย (Wire LAN) ก็เป็นไปได้ เช่น การแอบต่อเชื่อมสาย UTP จากห้องเก็บอุปกรณ์เครื่อข่าย เราสามารถป้องกันได้โดยการวิธีการต่างๆ ดังนี้

- ป้องกันทางกายภาพ โดยการล็อคห้องเก็บอุปกรณ์เครือข่าย และอนุญาตเพียงเจ้าหน้าที่ที่เกี่ยวข้องเท่านั้นที่เข้าได้

- ป้องกันในระดับคอนฟิกกูเรชั่นของ Switch เช่น การ Disable port ช่องที่ยังไม่มีการใช้งาน และการจำกัด MAC Address

- ป้องกันในระดับการตรวจสอบสิทธิ์การเข้าใช้เครือข่าย เช่น มี NAC: Network Access Control ที่จะคอยบังคับให้มีการป้อน username และ password ก่อนการใช้งาน network และมีการบันทึก Log

การ Hack เน็ตเวิร์กภายในผ่าน Firewall

แม้ว่าเราจะปกป้องเครือข่าย LAN จากการโจมตีที่มาจากภายนอกได้โดยใช้ไฟร์วอลล์ แต่ในบางกรณีนั้นผู้บุกรุกก็สามารถโจมตีผ่านไฟร์วอลล์ได้เช่นกัน ดังตัวอย่างต่อไปนี้

1. แฮกเกอร์เชื่อต่อกับเครื่อง User ภายใน LAN ผ่านทางไฟร์วอลล์ไปยัง sshd และสร้าง Tunnel เพื่อไปยัง SOL Server ภายในโดย Listen ไว้บนเครื่องของตนเองหมายเลขพอร์ด 1433 (SSH client ของแฮกเกอร์เป็นผู้ listen)

2. แฮเกอร์ใช้ ospi คอนเน็คเครื่องตนเองที่พอร์ต 1433 เสมือนกำลังเชื่อมต่อกับ SOL Server จริง

3. จากนั้น sshd บนเครื่อง User จะเชื่อมต่อไปยังเครื่อง SOL Server ที่อยู่ภายใน LAN อัตโนมัติ โดยมันจะคอนเน็คไปยังพอร์ต 1433 ตามที่ได้ตั้งค่าไว้ในขั้นตอกแรก

การป้องกันการโจมตีในลักษณะนี้ทำได้ดังนี้

- แบ่งโซนให้มี DMZ และ User Network อยู่แยกกัน

- กำหนดไฟร์วอลล์ให้อนุญาตเฉพาะบางไอพีแอดเดรส (เชื่อถือได้เท่านั้น) จากอินเทอร์เน็ตที่สามารถคอนเน็คผ่านทาง SSH มายังเซิร์ฟเวอร์ใน DMZ ได้

- กำหนดในไฟร์วอลล์ไม่ให้ SSH หรือรีโมตแบบอื่นมายังเครื่องภายใน User Network

- จำกัดให้เฉพาะคอมพิวเตอร์ภายใน User Network บางไอพีแอดเดรสเท่านั้นที่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ต่างๆใน DMZ ได้

- ติดตั้ง IDS/IPS

การป้องกันอุปกรณ์เครือข่าย

ความปลอดภัยของระบบ LAN อีกอย่างหนึ่งที่ควรจำให้ความสำคัญคือ การป้องกันการโจมตีหรือเข้าถึงอปกรณ์เครือข่าย รวมทั้งการตั้งค่าคอนฟิกของอุปกรณ์ให้มีความปลอดภัย

ปัจจัยการเข้าถึงทางกายภาพ

การวางอุปกรณ์ไว้ตำแหน่งที่ไม่ปลอดภัยจะเป็นการเปิดโอกาสให้ผู้บุกรุกเข้าถึงอุปกรณ์เครือข่ายได้โดยตรง ซึ่งผู้บุกรุกสามารถเชื่อมต่อสายเข้ากับ Switch เพื่อลักลอบใช้งานเครือข่าย หรือกดรีเซ็ตรหัสผ่านอุปกรณ์ Switch, Router หรือ Access Point ได้ ดังนั้นจำเป็นอย่างยิ่งที่จะต้องมีห้องสำหรับวางอุปกรณ์เครือข่าย หรือติดตั้งอุปกรณ์ไว้ในตำแหน่งที่ไม่สามารถเข้าถึงได้ง่าย เช่น ติดตั้งไว้บนที่สูง เป็นต้น ซึ่งในหลายๆครั้งของการโจมตีอุปกรณ์เครือข่ายทางกายภาพก็เป็นการขโมยตัวอุปกรณ์

การเปลี่ยนไอพีแอดเดรสและรหัสผ่านดีฟอลต์

อุปกรณ์เครือข่ายแต่ละรุ่นจะมีค่าไอพีแอดเดรสและค่ารหัสผ่านที่เป็นค่าดีฟอลต์มาจากโรงงานหลังจากที่ปรับค่าคอนฟิกเพื่อใช้งานแล้วก็ควรที่จะเปลี่ยนค่าไอพีแอดเดรสและค่ารหัสผ่านด้วย เพราะผู้บุกรุกสามารถค้นหาอุกปรณ์ได้ง่ายและรีโมตเข้ามาควบคุมอุปกรณ์โดยใช้รหัสผ่านดีฟอลต์ ซึ่งการหารหัสผ่านดีฟอลต์เป็นเรื่องที่ทำได้ง่าย โดยการค้นหาคู่มือตามรุ่นที่ระบุโดยใช้ Search engine เช่น google นอกจากนั้นการตั้งรหัสผ่านที่ซับซ้อนและยาวจะช่วยไม่ให้ผู้บุกรุกสามารถรีโมตแคร็กรหัสผ่านได้สำเร็จ

ทำการอัพเกรด OS หรือ Firmware

ระบบปฏิบัติการ (OS) ของอุปกรณ์เครือข่ายหรือที่เรียกว่า Firmware นั้น ในบางเวอร์ชั่นจะมีช่องโหว่ที่แฮกเกอร์สามารถใช้โปรแกรม Exploit รีโมตเข้ามายัง shell ควบคุมของอุปกรณ์นั้นๆได้โดยการแก้ปัญหาทำได้โดยครวจสอบดูข้อมูลเกี่ยวกับ Security ของอุปกรณ์รุ่นที่เราใช้จากเวปไซด์ของผู้ผลิตและดาวน์โหลด Firmware มาอัพเกรดเพื่ออุดรูรั่ว

แหล่งข้อมูลอ้างอิง

1. http://www.humcpedownload.smfnew.com/index.php?topic=52.0

2. http://debianclub.org/node/492

3. http://en.wikipedia.org/wiki/ARP_poisoning

4. http://realdev.truehits.net/tcpip/charpter3.php

5. http://www.irongeek.com/i.php?page=security/AQuickIntrotoSniffers

6. http://hacker-dox.net/Que-Certified.Ethical.Hacker.E/0789735318/ch07lev1sec4.html

7. http://knowledge.eduzones.com/knowledge-2-8-2390.html

8. http://en.wikipedia.org/wiki/Man-in-the-middle_attack

9. http://italpha.msu.ac.th/detchasit/comnetsec/Chapter1_Computer_Netwoks_and_Data_Security.ppt

10. http://blog.it.kmitl.ac.th/it49070051/category/pcn/

11. http://plex.coe.psu.ac.th/ipv6/mipv6Testbed.html

12. http://arpon.sourceforge.net

13. http://www.ti.co.th/

14. http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?armumber=4682286

15. http://en.wikipedia.org/wiki/Address_Resolution_Protocol

16. http://en.wikipedia.org/wiki/ARP_spoofing

17. http://www.rmuti.ac.th/network/wp/?cat=4

18. http://windowsadmin.wordpress.com/2009/04/22/audit-and-recovery-windows-password-with-cain-and-abel/

19. http://windowsvista4u.blogspot.com/2008/11/kb003.html

20. http://www.antiarp.com/english_95.html

21. http://tamermaher.spaces.live.com/Blog/cns!AB876127E31FDC4!176.entry

22. http://www.thaiadmin.org/board/index.php?topic=76555.0

23. http://www.laontalk.com/2009/10/21/1517

24. http://www.oknation.net/blog/print.php?id=435455

25. http://www.oknation.net/blog/atnoon/2009/05/04/entry-1

26. http://en.wikipedia.org/wiki/Proxy_ARP

27. http://www.springerlink.com/content/qfje7322yf5mu264/

28. http://www.rootsecure.net/content/downloads/pdf/arp_spoofing_intro.pdf

29. http://www.dlink.com/corporate/worldwideoffices/?redirect=%2fdefault.aspx

30. http://www.thaiall.com/security/indexo.html

31. http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol

32. http://it.toolbox.com/wiki/index.php/Man-in-the-Middle_Attack

33. http://www.g2gnet.com/News/activenews_view.asp?articleID=157

34. http://thaiwinadmin.blogspot.com/2009/03/kb118.html

35. http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?armumber=4682286

วิทยาการรหัสลับ (Cryptography)

07:21 Posted by Beekie39

หากกล่าวถึงการเข้ารหัสและถอดรหัสมักจะได้ยินคำว่า “Cryptography” คำว่า Cryptography นี้มาจากคำว่า Crypto ที่แปลว่า “การซ่อน” ผนวกกับคำว่า Graph ที่แปลว่า “การเขียน” ดังนั้น Cryptography จึงมีความหมายว่า “การเขียนเพื่อซ่อนข้อมูล” โดยมีจุดประสงค์เพื่อป้องกันไม่ให้ผู้อื่นสามารถอ่านข้อมูลได้ ยกเว้นผู้ที่เราต้องการให้อ่านได้เท่านั้น ซึ่งผู้ที่เราต้องการให้อ่านได้จะต้องทราบวิธีการถอดรหัสข้อมูลที่ซ่อนไว้ หากแบ่ง Cryptography ตามยุคสมัยแล้วเราสามารถที่จะแบ่งได้เป็น 2 ยุคคือ ยุคประวัติศาสตร์ (หรือที่เรียกว่ายุค Classic) และยุคปัจจุบัน (Modern) กระบวนการของ Cryptography มี 2 อย่างคือ Data Encryption และ Data Decryption ซึ่งหมายถึงการเข้ารหัสข้อมูล และการถอดรหัสข้อมูลตามลำดับ ส่วนประโยชน์ของ Cryptography คือ การรักษาความลับของข้อมูล

การเข้ารหัสในยุค Classic

จากหลักฐานทางประวัติศาสตร์ที่อาจจะตีความได้ไม่ชัดเจนมากนัก บ้างก็เชื่อว่าการเข้ารหัสเกิดขึ้นโดยชาวอียิปต์เมื่อประมาณ 4,500 ปีมาแล้ว บ้างก็เชื่อว่าคิดค้นโดยชาวอาหรับเมื่อประมาณ 500-600 ปีก่อนคริสตกาล วิธีการเข้ารหัสที่สำคัญในยุคก่อนๆมีหลายวิธีการ เช่น Monoalphabetic cipher, Polyalphabetic ciphers และ Caesar cipher เป็นต้น

Caesar cipher

การเข้ารหัสข้อมูลแบบ Caesar cipher มีขึ้นในราว 50-70 ปีก่อนคริสตกาล ได้รับการคิดค้นโดยกษัตริย์ Julius Caesar แห่งโรมัน เพื่อใช้เข้ารหัสข้อความในสารที่ส่งในระหว่างการทำศึกสงครามเพื่อป้องกันไม่ให้ศัตรูสามารถอ่านข้อความในสารนั้นได้หากสารนั้นถูกแย่งชิงไป การเข้ารหัสแบบ Caesar cipher จะใช้วิธีการแทนที่ตัวอักษรที่อยู่ห่างออกไปข้างหน้าสามตัว เช่น แทนที่ตัว A ด้วยตัว D และแทนที่ตัว B ด้วยตัว E เป็นต้น ดังรูปที่ 1 ดังนั้นการเข้ารหัสแบบ Caesar cipher จึงเป็นการเลื่อนตัวอักษรโดยจำนวนครั้งของการเลื่อนเท่ากับ 3 (Shipment, n = 3)

clip_image002

รูปที่ 1 วิธีการเข้ารหัสแบบ Caesar cipher

การแม็ปของตัวอักษรในการเข้ารหัสแบบ Caesar cipher สามารถเขียนได้ดังนี้

Plain : ABCDEFGHIJKLMNOPQRSTUVWXYZ

Cipher : DEFGHIJKLMNOPQRSTUVWXYZABC

หากใช้การเข้ารหัสข้อมูลแบบ Caesar cipher เข้ารหัส Fox Code จะได้ดังนี้

Plainertext : the quick brown fox jumps over the lazy dog

Ciphertext : WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ

(Fox Code คือประโยค “The quick brown fox jumps over the lazy dog” ซึ่งเป็นประโยคสั้นๆที่มีตัวอักษรภาษาอังกฤษครบทั้ง 26 ตัว)

ต่อมา Augustus (ผู้เป็น Caesar องค์ที่สองจากทั้งหมด 12 Caesar) ซึ่งเป็นหลานของ Julius Caesar ได้เปลี่ยนสูตรให้แทนที่ตัว A ด้วยตัว C และแทนที่ตัว B ด้วยตัว D ดังนั้นจึงกลายเป็นการเลื่อนตัวอักษรที่มีจำนวนครั้งของการเลื่อนเท่ากับสอง (Shiftment, n=2) อย่างไรก็ตามการเข้ารหัสทั้งสองวิธีนี้สามารถถูกเบรค (Break) ได้โดยง่าย (การเบรคในที่นี้หมายถึงการถอดรหัสข้อมูลออกมาได้ ถึงแม้จะไม่ทราบวิธีการเข้ารหัสและไม่มีกุญแจที่ใช้ถอดรหัสก็ตาม) การเบรคการเข้ารหัสข้อมูลแบบ Caesar cipher ทำได้โดยการทดลองทำการเลื่อนตัวอักษรทุกตัว โดยทดลองเลื่อนด้วยจำนวน Shiftment ที่ต่างกันคือ n = 1,

n = 2, n = 3, … ไปจนถึง n = 26 ซึ่งจะใช้การจำนวนครั้งในการทดสอบสูงสุดเพียง 26 ครั้ง ก็จะสามารถทำการเบรคได้ในที่สุด

Monoalphabetic ciphers

การเข้ารหัสข้อมูลแบบ Manoalphabetic Cipher (หรือเรียกว่า Monoalphabetic substitution ciphers) คิดค้นโดยชาวอาหรับ โดยใช้วิธีการแทนที่ตัวอักษรแบบ 1 ต่อ 1 (ไม่ใช่การเลื่อน) ตัวอย่างของ Monoalphabetic ciphers ในยุคแรกๆคือ การเข้ารหัสข้อมูลแบบ Atbash ใช้ในการแทนที่ตัว A ด้วยตัว Z แทนที่ตัว B ด้วยตัว Y และแทนที่ตัว C ด้วยตัว X เป็นต้น

Plain : abcdefghijklmnopqrstuvwxyz

Cipher : zyxwvutsrqponmlkjihgfedcba

หากทำการวิเคราะห์อัลกอริทึมของการเข้ารหัสแบบ Atbash ดูก็จะพบว่ามีรูปแบบ (Pattern) คือ ใช้ตัวสุดท้ายแทนตัวแรก ใช้ตัวรองสุดท้ายแทนตัวที่สอง และใช้ตัวที่สามจากสุดท้ายแทนตัวที่สามไปเรื่อยๆตามลำดับ ดังนั้น Monoalphabetic ciphers ในยุคต่อมาจึงใช้การกำหนดการจับคู่ของตัวอักษรที่ไม่เป็น pattern เช่น

Plain : abcdefghijklmnopqrstuvwxyz

Cipher : rfigzvpxasqehowkcuynjtlbmd

การเบรค Monoalphabetic ciphers จะทำได้ยากกว่าการเบรค Caesar cipher เนื่องจากมีคู่ที่เป็นไปได้อยู่ 26 ยกกำลัง 26 คู่ การเบรคจะต้องใช้การสุ่มไปเรื่อยๆจนกว่าจะสำเร็จ ซึ่งจะต้องใช้จำนวนครั้งในการคำนวณ 26! ครั้ง (26! = 26x25x24x23x…x1)

การเบรค Monoalphabetic ciphers สามารถทำได้อีกวิธีหนึ่ง คือการวิเคราะห์ความถี่ของตัวอักษรที่ปรากฏ (Frequency analysis) ตัวอย่างเช่น ตัวอักษร e กับ t จะเกิดบ่อยที่สุดในข้อความภาษาอังกฤษ โดยอักษร e มีอัตราการเกิดบ่อยถึง 13% ส่วนอักษร t มีอัตราการเกิดบ่อยถึง 9% ดังรูปที่ 2

clip_image004

รูปที่ 2 ความถี่ของตัวอักษรที่ปรากฏ

ตัวอักษรที่พบได้บ่อยมากได้แก่ e, t, a, o, I, n, s, h, r, d และ 1 ตามลำดับ หากนำมาเรียงตามลำดับจากการพบได้มาก ไปจนถึงการพบได้น้อยจะได้ดังรูปที่ 3 การนำตัวอักษรที่ใช้บ่อยไปใช้เพื่อถอดรหัสแบบ Monoalphabetic ciphers จะสามารถทำให้เดาและถอดรหัสได้เร็วขึ้น เช่น หากพิจารณาข้อมูลที่เข้ารหัสด้วย Monoalphabetic ciphers แล้วพบว่ามีตัวอักษรตัวหนึ่งที่พบได้บ่อยที่สุด ก็อาจสันนิษฐานได้ว่าเป็นตัวอักษร e เป็นต้น

clip_image006

รูปที่ 3 ความถี่ของตัวอักษรที่ปรากฏ (เรียงตามความถี่มากไปน้อย)

Polyalphabetic Encryption

Polyalphabetic Encryption คิดค้นโดย Blaise De Vignere ชาวฝรั่งเศสเมื่อประมาณ 500 ปีที่แล้ว อัลกอริทึ่มนี้ใช้เทคนิคที่ประกอบไปด้วย Multiple Monoalpha Cipher คือมี Monoalphabetic ciphers หลายๆตัวประกอบกัน ซึ่งจะมีการกำหนดระยะห่างให้กับตัวอักษรก่อนโดยระยะห่างในแต่ละช่วงจะไม่เท่ากันตัวอย่างเช่น n = 7 ให้เป็น C1 และ n = 15 ให้เป็น C2 หลังจากนั้นกำหนด รูปแบบ (Pattern) ในการใส่ข้อมูล เช่น C1,C2,C2,C1,C2 เป็นต้น

เทคนิคนี้จะใช้ในช่วงสงครามโลกครั้งที่ 1 และยากที่จะถอดรหัสด้วยมือเปล่า แต่ถ้าใช้คอมพิวเตอร์จะสามารถถอดรหัสได้ง่าย นอกจากนั้นหากต้องการจะเบรคโดยใช้คอมพิวเตอร์ก็จะทำการเบรคได้ง่ายเช่นกัน ผู้ที่เบรค Polyalphabetic Encryption ได้ เป็นชาวรัสเซียชื่อ Friedrich Kasiski เบรคได้ในปี 1863 โดยให้ข้อสังเกตว่าถ้าได้ Cipher Text ที่มีความยาวมากพอ Pattern จะเริ่มซ้ำและสามารถที่จะเห็นความเหมือนของ Cipher text โดยดูที่ Frequency Analysis ตัวอักษรแต่ละลัวปรากฏบ่อยแค่ไหน

One-Time Pad

One-Time Pad คิดค้นโดย Gilbert Vernam ชาวอังกฤษในช่วงสงครามโลกครั้งที่ 1 เป็นวิธีการเพิ่มความสามารถในการเข้ารหัสให้กับ Polyalphabetic Encryption โดยใช้การแม็ปจาก 1 ตัวอักษรให้เป็นไปได้หลายตัวอักษร ซึ่งมีวิธีการดังนี้

· ใช้ Key ที่มีขนาดเท่ากันกับ Plain Text

· Cipher Text ที่เป็นการคำนวณออกมาได้จะมีขนาดเท่ากันกับขนาดของ Plain Text

· ตัวอักษรทุกตัวจะต้องมีการเปลี่ยนหมด เช่น หาก L ตัวแรกแม็ปได้เป็น N (สมมุติ) แล้ว L ตัวที่สองจะต้องแม็ปได้เป็นตัวอื่น เช่น ตัว V เป็นต้น

· ใช้ Operation ง่ายๆ เช่น (+) เพื่อเข้ารหัสและ (-) เพื่อถอดรหัส หรือใช้ XOR สำหรับทั้งการเข้ารหัสและถอดรหัส

การเข้ารหัสแบบ One-Time Pad นี้ Cipher Text จะมีความเป็น Random มากหรือน้อยขึ้นอยู่กับความเป็น Random ของ Key ตัวอย่างการเข้ารหัสด้วยวิธี One-Time Pad แสดงดังนี้ (จะเห็นว่า L ตัวแรกแม็ปได้เป็น N ส่วน L ตัวที่สองแม็ปได้เป็น V ขึ้นอยู่กับคีย์)

Plain Text : H E L L O

Key : X M C K L

Cipher Text : E Q N V Z

การเข้ารหัส

7 (H) 4 (E) 11 (L) 11 (L) 14 (O) message (Plain Text)

+ 23 (X) 12 (M) 2 (C) 10 (K) 11 (L) key

= 30 16 13 21 25 message + key

= 4 (E) 16 (Q) 13 (N) 21 (V) 25 (Z) message + key (mod 26) à Cipher text

การถอดรหัส

4 (E) 16 (Q) 13 (N) 21 (V) 25 (Z) Cipher Text

- 23(X) 12 (M) 2 (C) 10 (K) 11 (L) Key

= -19 4 11 11 14 Cipher Text – key

= 7 (H) 4 (E) 11 (L) 11 (L) 14 (O) Cipher Text – key (mod 26) à message (Plain Text)

แต่อย่างไรก็ตาม One Time Pad ก็ยังมีปัญหาอยุ่ เช่น Key ที่ใหญ่เท่ากับ Plain Text จะต้องใช้พื้นที่มากสำหรับเก็บ Key นอกจากนั้น Key ที่ใหญ่ก็ทำให้ใช้งานได้อย่างลำบาก (หากเทียบกับการใช้ Key ที่มีขนาดเล็ก) นอกจากนั้นผู้ส่งข้อความจะต้องมีการส่ง Key ไปยังปลายทางเพื่อใช้ในการถอดรหัส ซึ่งอาจจะทำให้ Key ถูกขโมยได้ในระหว่างขั้นตอนการส่ง

Playfair cipher

Payfair cipher เป็น Block Cipher ตัวแรกเกิดขึ้นในปี ค.ศ. 1854 โดย Sir Charles Wheatstone ซึ่งเล่าให้ Baron Playfair ฟัง แล้วจากนั้นก็ถูกเล่าต่อให้ Albert และ Load Palmerston ฟังบนโต๊ะอาหารเย็น Playfair cipher ถูกใช้ในกองกำลังทางประเทศสหราชอาณาจักรในสงครามโลกครั้งที่ 1 มีกระบวนการทำงานของอัลกอริทึมดังนี้

1. สร้างตาราง Key ขนาด 5x5 = 25 แบบสุ่มโดยตัดตัว Q ออก

ตัวอย่าง Key ขาด 5x5

clip_image008

รูปที่ 4 สร้างตาราง Key ของ Playfair cipher

2. แบ่งตัวอักษร Plain Text ต้นฉบับออกมาเป็นคู่ ๆ หากมีตัวอักษรที่ติดกันให้เอา X คั่นกลาง และหากตัวสุดท้ายไม่ ครบคู่ให้ใส่ Z เข้าไปแทนเช่น ต้องการเข้ารหัสข้อความว่า "Hide the gold in the tree stump" ก็สามารถจัดตัวอักษร เป็นคู่ ๆ ได้ดังนี้

HI DE TH EG OL DI NT HE TR EX ES TU MP

^

ใส่ X เข้าไปเนื่องจากมีตัว E สองตัวติดกัน

3. ถ้าไม่อยู่ในแถวและ Column เดียวกัน ให้แทนที่ตัวอักษรแบบไขว้กัน เช่น HI ในข้อความต้นฉบับ (H ไม่ได้อยู่แถว เดียวกันกับ I และ H ก็ไม่ได้อยู่ใน Column เดียวกันกับ I) จะกลายเป็น BM (H กลายเป็น I และ B กลายเป็น M)

4. ถ้า 2 ตัวอักษรอยู่ Column เดียวกัน ให้เอาตัวอักษรที่อยู่ข้างล่างติดกันมาแทนที่ โดยทำทีละตัว (หากตัวอักษรนั้นอยู่ ล่างสุดให้เอาตัวบนสุดมาแทนที่) เช่น DE ในข้อความต้นฉบับ จะกลายเป็น ND เนื่องจาก D ถูกแทนที่ด้วย N ส่วน E ถูกแทนที่ด้วย D

5. ถ้า 2 ตัวอักษรอยู่แถวเดียวกัน ให้เอาตัวอักษรที่อยู่ขวามือมาแทนที่ โดยทำทีละตัว (หากตัวอักษรนั้นอยู่ขวาสุดให้ เอาตัวซ้ายสุดมาแทนที่) เช่น TU ในข้อความต้นฉบับ จะกลายเป็น UV เนื่องจาก T ถูกแทนที่ด้วย U ส่วน U ถูกแทนที่ ด้วย V

หากทำการเข้ารหัสแล้วจะได้ดังนี้

Plain Text: HI DE TH EG OL DI NT HE TR EX ES TU MP

Cipher Text: BM ND ZB XD KY BE JV DM UI XM MN UV IF

การเข้ารหัสในยุค Modern

DES (Data Encryption Standard)

DES เป็นการเข้ารหัสแบบ Block cipher ที่พัฒนามาจากอัลกอริทึม Lucifer ของ IBM โดยLucifer ได้รับการพัฒนาเพิ่มความสามารและเปลี่ยนชื่อเป็น DES แล้วได้รับการนำเสนอ US NIST (US National Institute of Standards and Technology) ให้กลายเป็นมาตรฐานของการเข้ารหัส

การเข้ารหัสข้อมูลแบบ DES เป็นการเข้ารหัสโดยกระทำกับกลุ่มของข้อมูลขนาด 64 บิต (ดังรูปที่ 5) ลำดับแรกข้อมูล 64 บิต นี้จะถูกกลับตำแหน่ง (สลับบิต) จากนั้นจะถูกแบ่งเป็น 2 ส่วน ได้แก่ ส่วนทางซ้ายและส่วนทางขวา (ส่วนละ 32 บิต) ขั้นตอนต่อไปจะใช้ฟังก์ชั่นทางคณิตศาสตร์ (ฟังก์ชั่น 0 ข้อมูลจากส่วนซ้ายหรือขวาจะถูกนำมารวมกันกับ Key โดยจะทำซ้ำกันอย่างนี้เป็นจำนวนทั้งสิ้น 16 รอบ เมื่อเสร็จสิ้นขั้นตอนนี้ (รอบที่ 16) ผลลัพธ์ที่ได้จากทั้งส่วนทางซ้ายและขวาก็จะถูกนำมารวมกันเป็นข้อมูลขนาด 64 บิตอีกครั้งหนึ่ง และนำไปสลับตำแหน่งในขั้นตอนสุดท้าย

การทำงานของฟังก์ชั่น 1 ในแต่ละรอบ จะเป็นการเลื่อนบิตของ Key ซึ่งจะเลือกใช้เพียง 46 บิต จากทั้งสิ้น 56 บิต ข้อมูลในส่วนทางขวา (32 บิต) จะถูกขยายให้กลายเป็นข้อมูลขนาด 48 บิต (ดังรูที่ 6) จากนั้นจะนำมารวมกับกุญแจขนาด 48 บิต (ที่เลือกมา) การรวมกันในขั้นตอนจะใช้การ XOR ผลลัพธ์ขนาด 48 บิต ที่ได้จะถูกนำไปแทนที่อีก 8 ครั้ง ผลลัพธ์จากการแทนที่จะเหลือข้อมูลเพียง 32 บิต เท่านั้นหลักจากนั้นก็จะต้องสลับตำแหน่งอีกครั้งหนึ่ง

clip_image010

รูปที่ 5 กระบวนการทำงานของ DES

หนึ่งรอบของการทำฟังก์ชั่น F จะประกอบด้วยกระบวนการข้างต้น 4 ครั้ง ข้อมูลในส่วนทางซ้ายจะต้องผ่านกระบวนการเดียวกัน ผลลัพธ์ที่ได้จากทั้งส่วนทางซ้ายและขวาจะถูกนำมารวมกันแบบ XOR เมื่อเสร็จสิ้นขั้นตอนนี้แล้ว ผลลัพธ์ที่ได้จะถูกใช้เป็นข้อมูลส่วนทางขวาของรอบใหม่ และข้อมูลของส่วนทางขวาเดิมก็จะกลายเป็นข้อมูลส่วนซ้ายของวงรอบใหม่

บริษัทแห่งหนึ่งต้องการเบรก DES เพื่อสร้างความแข็งแกร่งให้กับ RSA จึงจัดการประกวดการเบรกขึ้นโดยให้รางวัล 10,000 US$ สำหรับผู้ชนะในแต่ละรอบ บริษัท Distribution.net ใช้เวลา 41 วัน ก็ทำการเบรก DES ได้สำเร็จ บริษัท EFF สามารถเบรกได้ภายในเวลา 56 ชั่วโมง จากนั้นบริษัท Distribution.net และบริษัท EFF ก็จับมือกันและใช้คอมพิวเตอร์กว่า 100,000 เครื่องทั่วโลกมาแคร็ก DES ซึ่งก็สามารถทำได้ในเวลา 22 ชั่วโมง 15 นาที เป็นต้นเหตุทำให้มีการขยาย Key ของ DES จาก 64 บิต ให้เป็น 128 บิต เพื่อจะได้ใช้เวลาในการแคร็กนานขึ้น

clip_image012

รูปที่ 6 การทำงานของฟังก์ชั่น f ของ DES

ปัจจุบัน DES แบ่งออกเป็น DES 64 บิต และ DES 128 บิต แต่ถึงแม้ว่าจะใช้ 128 บิต ก็ตาม DES ก็ยังสามารถถูกแคร็กได้ จึงได้มีการพัฒนาให้มี Tripple-DES (3DES) ที่มีความปลอดภัยสูงขึ้น

Tripple-DES (30DES)

Tripple-DES เป็นการเข้ารหัสที่ถูกสร้างมาเพื่อแก้ปัญหาความอ่อนแอของ DES โดย Tripple-DES ช่วยเสริมความปลอดภัยให้การเข้ารหัสมีความปลอดภัยมากขึ้นโดยการใช้อัลกอริทึม DES เป็นจำนวนสามครั้งเพื่อเข้ารหัส โดยในแต่ละครั้งจะใช้กุญแจในการเข้ารหัสที่แตกต่างกันออกไป ดังนั้นจำนวนกุญแจที่ใช้ใน Tripple-DES จึงมีทั้งสิ้น 3 ดอก (ความยามดอกละ 56 บิต) ด้วยความแข็งแกร่งนี้จึงทำให้ Tripple-DES เป็นอีกหนึ่งในมาตรฐานในการเข้ารหัสในปัจจุบัน

clip_image014

รูปที่ 7 กระบวนการทำงานของ Tripple-DES

AES (Advanced Encryption Standard)

AES (Advanced Encryption Standard) เป็นการเข้ารหัสที่พัฒนาขึ้นมาเพื่อใช้ทดแทน DES หลังจากที่ DES ถูกเบรกได้โครงการพัฒนา AES ได้เริ่มต้นเมื่อปี 1997 โดย NIST หลังจากนั้น (ในปี 1998) NIST ก็ให้นักวิทยาการรหัสสลับทั่วโลกส่งอัลกอริทึมเข้ามาเพื่อคัดเลือกโดยกำหนดให้ 128 บิต เป็นมาตรฐานของ AE$ ซึ่งอัลกอริทึมต่างๆ ถูกคัดเลือกเข้ามาทั้งสิ้น 15 อัลกอริทึม และมีอยู่ 5 อัลกอริทึมที่ผ่านเข้ารอบชิงจนผลสุดท้ายอัลกอริทึมของ Rijndeal ได้รับการตัดสินให้ชนะเพราะเร็วกว่าและใช้อัลกอริทึมที่ธรรมดากว่า แต่ได้ความปลอดภัยเท่ากัน จากนั้นจึงได้กลายเป็น RFC 3826 เมือปี 2004 ข้อกำหนดในมาตรฐานล่าสุดอนุญาตให้ใช้ AES เข้ารหัสข้อมูลโดยใช้ Key ที่มีขนาดต่างๆ ได้แก่ 128 บิต, 192 บิต, และ 256 บิต

วงรอบการทำงาน AES แบ่งเป็น 3 ส่วนหลักๆ ได้แก่ Initial Round, และ Final Round และในแต่ละส่วนก็มีการบวนการย่อยต่างๆ ดังนี้ (รูปที่ 8 และ 9)

1. Initial Round

· AddroundKey

2. Rounds

· SubBytes : เป็น non-linear substitution ซึ่งแต่ละไบต์จะถูกแทนที่ด้วยไบต์ที่ได้จาก lookup table (รูปที่ 8)

· ShiftRows : เป็นการเลื่อนไบต์ในแต่ละแถว ซึ่งจะทำเฉพาะแถวที่ 2, 3 และ 4

· MixColumns : เป็นการผสมรวม 4 ไบต์ภายในคอลัมน์

· AddRoundKey เป็นการนำ Cipher Text และ Key (ที่มาจาก key schedule) ผสมรวม กลายเป็น Cipher Text ใหม่

3. Final Round (no MixColumns)

· SubBytes

· ShiftRows

· AddRoundKey

clip_image016clip_image018

clip_image020clip_image022

รูปที่ 8 กระบวนการ SuBytes, ShiftRows, MixColumns และ AddRoundKey

clip_image024

รูปที่ 9 วงรอบการทำงานของ AES

Symmetric Key Cryptography

หัวข้อที่ผ่านเราได้ศึกษาการเข้ารหัสที่ใช้กุญแจดอกเดียว (ไม่ว่าจะเป็นการเข้ารหัสด้วยอัลกอริทึม DES หรือ AES) การเข้ารหัสโดยใช้กุญแจดอกเดียวเรียกว่า “การเข้ารหัสแบบสมมาตร” (Symmetric Key Cryptography) เนื่องจากใช้ Key ตัวเดียวกันในการเข้ารหัสและถอดรหัส นอกจาก DES และ AES แล้วอัลกอริทึมในการเข้ารหัสแบบสมมาตรอย่างอื่นก็มี เช่น Blowfish และ IDEA แต่อาจจะไม่เป็นที่นิยมมากนัก การเข้ารหัสแบบสมมาตรถึงแม้จะใช้อัลกอริทึมที่แข็งแกร่งอย่าง AES และใช้ Key ที่มีความยามตั้งแต่ 128 บิต ขึ้นไปแล้วก็ยังมีข้อด้อยอยู่ ตัวอย่างเช่น

· การส่ง Key ไปยังผู้รับเพื่อใช้ในการถอดรหัส หาก Key ถูกดักจับได้แล้วการเข้ารหัสก็ จะ ไม่มีความหมายอะไรเลยเพราะผู้ดักฟังที่ดักจับได้ Key ไป ก็สามารถที่จะดักจับ Cipher Text แล้วถอดรหัสได้

· หากมีจำนวนผู้ใช้มากขึ้น ซึ่งผู้ใช้แต่ละคู่จะต้องใช้คีย์ที่แตกต่างจากคู่สื่อสารอื่นจะทำให้จำนวนคีย์ที่ต้องใช้ทั้งหมดมีจำนวนมาก เช่น ผู้ใช้ N คนจะต้องใช้คีย์ทั้งหมดเท่ากับ Nx(N-1)/2

ด้วยข้อจำกัดเกี่ยวกับเรื่องการบริหารจัดการคีย์นี้ จึงได้มีการคิดขึ้น “การเข้ารหัสแบบอสมมาตร” ขึ้นมาซึ่งภาษาอังกฤษเรียกว่า Asymmetric Key Cryptography

Asymmetric Key Cryptography

การเข้ารหัสแบบอสมมาตร (Asymmetric Key Cryptography) บางตำราอาจใช้คำว่า Asymmetric Key Encryption หรือ Public Encryption หรือใช้คำว่า Public Key Infrastructure (PKI) หรือ Public-Key Cryptography อย่างไรก็ตามการเข้ารหัสแบบนี้ถูกคิดค้นโดย Whit Diffie และ Marty Hellman ตั้งแต่ปี 1976 โดยถูกสร้างมาเพื่อเป็นทางเลือกในการส่งข้อมูลที่เป็นความลับ เพราะการเข้ารหัสแบบสมมาตร (ใช้กุญแจดอกเดียว) จะมีปัญหาเรื่องการถูกดักจับ key และปัญหาเกี่ยวกับการจัดการ Key ที่มีอยู่เป็นจำนวนมากเมื่อใช้ในระบบใหญ่ การเข้ารหัสแบบอสมมาตรจะใช้ Key สองอัน โดยหากเราเข้ารหัสด้วย Key อันหนึ่งจะต้องถอดรหัสด้วย Key อีกอันหนึ่งที่เหลือ ตัวอย่างเช่น

· หากเข้ารหัสด้วย Key1 จะต้องถอดรหัสด้วย Key2 เท่านั้น

· หากเข้ารหัสด้วย Key2 จะต้องถอดรหัสด้วย Key1 เท่านั้น

· หากเข้ารหัสด้วย Key1 แล้วถอดรหัสด้วย Key1 จะไม่สามารถถอดรหัสได้

· หากเข้ารหัสด้วย Key2 แล้วถอดรหัสด้วย Key2 จะไม่สามารถถอดรหัสได้

การประยุกต์ใช้งานทำได้โดย เก็บ Key อันหนึ่งไว้กับตัวเองเรียกว่า Private Key ส่วนอีก Key หนึ่ง สามารถแจกจ่ายให้ผู้อื่นได้ ดังนั้น Key นี้จะถูกเรียกว่า Public Key เมื่อผู้อื่นต้องการส่งข้อมูลที่เป็นความลับมายังเจ้าของ Key จะต้องเข้ารหัสข้อมูลนั้นด้วย Public Key ของผู้รับ ดังนั้นจึงทำให้ผู้ที่มี Private Key เท่านั้นที่จะถอดรหัสข้อมูลได้ ส่วนการส่งข้อมูลที่เข้ารหัสด้วย Private Key ไปยังผู้อื่น ผู้ใดก็ตามที่มี Public Key (ซึ่งมีอยู่หลายคน) จะสามารถถอดรหัสข้อมูลได้

ตัวอย่างที่ 1

1. สร้าง Private Key และ Public Key ของผู้ใช้ A ขึ้นมา เรียกว่า PvK-A และ PbK-A 1 ตามลำดับ

2. ผู้ใช้ A แจกจ่าย Public Key ของตน (PbK-A) ไปให้กับผู้ใช้ และผู้ใช้ C

3. ผู้ใช้ B สามารถส่งข้อมูลลับ มายังผู้ใช้ A ได้ โดยเข้ารหัสข้อมูลด้วย Pbk-A ซึ่งทำให้

· ผู้ใช้ A ถอดรหัสได้เพราะมี PvK-A (เนื่องจากข้อมูลเข้ารหัสด้วย PbK-A จึงต้องถอดด้วย PvK-A ซึ่งผู้ใช้ A มีคีย์นี้)

· ผู้ใช้ C ถึงแม้ดักจับ Cipher Text ของผู้ใช้ B ได้ แต่ก็ไม่สามารถถอดรหัสได้ เพราะไม่มี PvK-A (เนื่องจาก Private Key จะถูกเก็บไว้ที่เจ้าของเท่านั้น)

4 ผู้ใช้ C สามารถส่งข้อมูลลับมายังผู้ใช้ A ได้ โดยเข้ารหัสข้อมูลด้วย PbK-A ซึ่งทำให้ผู้ใช้ A ถอดรหัสได้ แต่ผู้ใช้อื่นถอดรหัสไม่ได้

5 ผู้ใช้ A ต้องการส่งข้อมูลที่ “ไม่เป็นความลับ” ไปให้ผู้ใช้ B โดยเข้ารหัสข้อมูลด้วย PvK-A ซึ่งทำให้

· ผู้ใช้ B สามารถถอดรหัสข้อมูลได้โดยใช้ PbK-A และมั่นใจได้ว่าเป็นข้อมูลนี้มาจาก A เนื่องจากข้อมูลที่ถอดด้วย PbK-A ได้จะต้องถูกเข้ารหัสด้วย PvK-A ซึ่งผู้ที่มีคีย์นี้มีอยู่คนเดียวเท่านั้นคือผู้ใช้ A

· ผู้ใช้ C ดักจับ Cipher Text ได้ ก็จะสามารถถอดรหัสข้อมูลได้โดยใช้ PbK-A แต่เนื่องจากข้อมูลนี้เป็นข้อมูลที่ “ไม่เป็นความลับ” จึงไม่ได้เกิดปัญหาอะไร

NOTE : การเข้ารหัสโดยใช้ Private Key ของผู้ส่ง สามารถยืนยันตัวผู้ส่งได้

ตัวอย่างที่ 2

1. สร้าง Private Key และ Public Key ของผู้ใช้ A ขึ้นมา เรียกว่า PvK-A และ PbK-

A ตามลำดับ

2. สร้าง Private Key และ Public Key ของผู้ใช้ B ขึ้นมา เรียกว่า PvK-B และ PbK-B ตามลำดับ

3. หาก A ต้องการจะส่งข้อมูลที่เป็นความลับไปยัง B จะต้องเข้ารหัสข้อมูลด้วย PbK-B ซึ่ง B จะเป็นคนเดียวที่สามารถถอดรหัส

ได้ เพราะมี PvK-B

4. หาก B ต้องการจะส่งข้อมูลที่เป็นความลับไปยัง A จะต้องเข้ารหัสข้อมูลด้วย PbK-A ซึ่ง A จะเป็นคนเดียวที่สามารถถอดรหัส

ได้ เพราะมี PvK-A

5. A เข้ารหัสข้อมูลด้วย PvK-A ส่งไปยัง B เมื่อ B ได้รับและถอดรหัสด้วย PbK-A ออกมาได้จึงมั่นใจได้ว่าข้อมูลถูกส่งมาจาก A

(เพราะหากถอดรหัสด้วย PbK-A แสดงว่าข้อมูลนี้จะต้องถูกเข้ารหัสด้วย PvK-A)

6. B เข้ารหัสข้อมูลด้วย PvK-B ส่งไปยัง A เมื่อ A ได้รับและถอดรหัสด้วย PbK-B ออกมาได้จึงมั่นใจได้ว่าข้อมูลถูกส่งมาจาก B

(เพราะหากถอดรหัสด้วย PbK-B แสดงว่าข้อมูลนี้จะต้องถูกเข้ารหัสด้วย PvK-B)

อัลกอริทึมที่ใช้ในการเข้ารหัสแบบอสมมาตร (Asymmetric Key Cryptography) ที่เป็นที่นิยม ได้แก่ RSA และ ECC

RSA

RSA เป็น อัลกอริทึมในการเข้ารหัสแบบอสมมาตรถูกสร้างขึ้นมาเมื่อ ปี 1978 โดย Ron Rivest, AdiShamir และ Leonard Adleman ตั้งแต่คิดค้นมายังไม่มีใครสามารถเบรกอัลกอริทึมนี้ได้ และ RSA ได้ถูกนำมาใช้อย่างแพร่หลายในด้าน e-commerce

กระบวนการทำงานของ RSA

1. เลือก p และ q ซึ่งเป็นจำนวนเฉพาะที่มีค่าต่างกับ

2. ให้ n = pq

3. ให้ m = (p-1)(q-1)

4. เลือกค่า e ที่ 1 < e < m ซึ่งหารร่วมมากของ m กับ e มีค่าเป็น 1 (สามารถหาค่า e ได้โดยการสุ่มค่าจำนวนเต็มบวก

พร้อมกับทดสอบว่าหารร่วมมากของ m กับ e มีค่าเป็น 1)

5. หาค่า d ที่ทำให้ ed mod m = 1

6. Public key คือ (e.n)

7. Private key คือ (d.n)

8. ให้ M คือข้อความที่ยังไม่ถูกเข้ารหัส (ในรูปแบบของตัวเลข) M<n

9. สมการของการถอดรหัสคือ C = Me mod n

10.สมการของการถอดรหัสคือ M = Cd mod n

สาเหตุที่ทำให้ RSA ยากที่จะทำการเบรค ได้คือ แม้จะทราบ Public Key (e.n) ทราบค่า Message (M) และทราบค่า Cipher (C) ก็ตาม แต่ก็ยากที่จะคำนวณย้อนกลับเพื่อหาค่าของ Private Key (d) ได้

ตัวอย่างการเข้ารหัสและถอดรหัสด้วย RSA

1. เลือก p และ q ซึ่งเป็นจำนวนเฉพาะที่มีค่าต่างกัน

p = 7

q = 17

2. ให้ n = pq

ดังนั้น n = 7*17 = 119

3. ให้ m = (p-1)(q-1)

ดังนั้น m = 6*16 = 96

4. เลือกค่า e ที่ 1<e<m ซึ่งหารร่วมมากของ m กับ e มีค่าเป็น1 (สามารถหาค่า e ได้โดยการสุ่มค่าจำนวนเต็มบวกพร้อม

กับทดสอบว่าหารร่วมมากของ m กับ e มีค่าเป็น 1)

5. หาค่า d ที่ทำให้ ed mod m = 1

ได้ค่า d = 77 เพราะ 5*77 mod 96 ได้ 1

6. Public key คือ (e.n)

ดังนั้น Public key คือ (77.119)

7. Private key คือ (d.n)

ดังนั้น Private key คือ (77.119)

8. ให้ M คือข้อความที่ยังไม่เข้ารหัส (ในรูปแบบของตัวเลข) M < n

ให้ข้อความที่ยังไม่เข้ารหัส M = 19

9. การเข้ารหัส C = Me mod n

ได้ C = 195 mod 119 = 66

10.การเข้ารหัส M = Cd mod n

ได้ M = 6677 mod 119 = 19

ECC

ECC ย่อมาจาก Elliptic Curves Cryptography ได้รับการนำเสนอโดย Neal Koblitz และ Victor S. Miller ในปี 1985

โดยอัลกอริทึมการเข้ารหัส ECC นี้ได้รับการพัฒนาจากสมการของเส้นโค้งของวงรี y2 = x3 + ax + b ดังรูปที่ 10

clip_image026

รูปที่ 10 กราฟแสดงความสัมพันธ์ของสมการ Elliptic Curves

ECC มีข้อดีที่เหนือกว่า RSA คือ จะใช้ Key ที่สั้นกว่าแต่สามารถให้ความปลอดภัยเท่ากับ RSA จะมีความปลอดภัยสูงกว่านั่นคือ หากต้องการเบรกจะใช้เวลาในการ Brute Force นานกว่า RSA

เนื่องจาก ECC ใช้ Key ที่มีขนาดเล็กกว่า RSA มาก และมีความสามารถในการคำนวณที่รวดเร็ว ใช้พลังงานต่ำและใช้หน่วยความจำน้อย ดังนั้น ECC จึงเหมาะสำหรับการใช้งานในอุปกรณ์เคลื่อนที่ขนาดเล็ก เช่น โทรศัพท์มือถือ Pocket PC และ PDA เป็นต้น

clip_image028

รูปที่ 11 กราฟแสดงเวลาที่ใช้ในการแคร็ก ECC เมื่อเทียบกับ RSA

Hash

การเข้ารหัสแบบ 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

clip_image030

รูปที่ 12 อัลกอริทึม 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 แสดงดังรูปที่ 13

clip_image032

รูปที่ 13 อัลกอริทึม SHA1

อย่างไรก็ตาม SHA0 และ SHA1 ก็ถูกเบรกได้โดยนักคณิตศาสตร์หญิงชาวจีน (Professor Dr. Xiaoyun Wang) คนเดียวกันกับที่เคยเบรค MD5 ได้ ดังนั้นปัจจุบันนี้ความหวังจึงอยู่ที่ SHA2 ซึ่งยังไม่มีใครเบรคได้ อัลกอริทึมของ SHA2 แสดงดังรูปที่ 14

clip_image034

รูปที่ 14 อัลกอริทึม SHA2

Digital Signatures

การทำธุรกรรมอิเล็กทรอนิคส์จำเป็นที่จะต้องมีการยืนยันเอกสารหรือข้อมูลว่าถูกส่งมาจากผู้ส่งจริงเพื่อป้องกันการปฏิเสธความรับผิดชอบ (Non-repudiation) และเป็นการพิสูจน์ทราบตัวตน (Authentication) จากที่เราได้ศึกษาไปในหัวข้อ Asymmetric Key Cryptography ทำให้ทราบว่าการเข้ารหัสข้อมูลด้วย Private Key สามารถยืนยันผู้ส่งได้ เช่น ผู้ใช้ A เข้ารหัสข้อมูลด้วย Private Key ของตนเองแล้วส่งข้อมูลไปให้ผู้ใช้ B และผู้ใช้ C จากนั้นผู้ใช้ B และผู้ใช้ C ก็ถอดรหัสโดยใช้ Public Key ของผู้ใช้ A ได้ เป็นการยืนยันว่าข้อมูลมาจากผู้ใช้ A จริง เพราะเป็นคนเดียวที่มี Private Key ของผู้ใช้ A

ในการส่งข้อมูลที่ “ไม่เป็นความลับ” และเป็นข้อมูลมีขนาดใหญ่ หากต้องการที่จะยืนยันผู้ส่งด้วยวิธีการข้างต้นเราจะต้องเข้ารหัสข้อมูลทั้งหมดด้วย Private Key ของผู้ส่ง (เพื่อเป็นการยืนยันตัวตนผู้ส่ง) แต่มีข้อเสียคือ จะต้องมีการเข้ารหัสข้อมูลขนาดใหญ่ทั้งหมด และผู้รับต้องถอดรหัสข้อมูลทั้งหมดเช่นกัน ซึ่งทำให้เปลือง CPU และเปลืองเวลาในการประมวลผล แต่อย่างไรก็ตามเราสามารถประยุกต์กรรมวิธีข้างต้น ให้ใช้ CPU และเวลาน้อยลงโดยใช้ฟังก์ชั่น Hash

เริ่มโดยนำข้อความต้นฉบับมาทำการ Hash เพื่อย่อยให้เป็นข้อมูลขนาดเล็ก (Message Digest) จากนั้นนำ Message Digest มาเข้ารหัสด้วย Private Key ของผู้ส่ง (ในขั้นตอนนี้จะใช้ CPU น้อยเพราะ Message Digest มีขนาดเล็ก) จากนั้นก็ส่งข้อมูลต้นฉบับ (ที่มีขนาดใหญ่และเป็นข้อมูลที่ “ไม่เป็นความลับ”) และ Message Digest ที่เข้ารหัสด้วย Private Key ไปยังผู้รับ เมื่อผู้ได้รับข้อมูลทั้งสอง ก็ทำการตรวจสอบว่าข้อมูลต้นฉบับมาจากผู้ส่งจริงหรือไม่และไม่มีการแก้ไขข้อมูลระหว่างทางใช่หรือไม่ โดยการนำ Message Digest (ที่เข้ารหัสด้วย Private Key ผู้ส่ง) มาถอดรหัสด้วย Public Key ของผู้ส่งให้กลับไปเป็น Message Digest ต้นฉบับเหมือนเดิม จากนั้นก็นำข้อมูลต้นฉบับที่มีขนาดใหญ่มาผ่านฟังก์ชั่น Hash ได้เป็น Message Digest อีกอันหนึ่ง จากนั้นก็ทำการเปรียบเทียบกัน หาก Message Digest ทั้งสองตรงกันก็แสดงว่าข้อมูลนั้นมาจากผู้ส่งจริงและไม่ได้ถูกเปลี่ยนแปลงระหว่างทาง จะเห็นได้ว่าสิ่งที่สามารถยืนยันว่าข้อมูลไม่ถูกเปลี่ยนแปลงและถูกส่งมาโดยผู้ส่งจริงนั้นคือ “Message Digest ที่ผู้ส่งได้เข้ารหัสด้วย Private Key ของผู้ส่ง” ซึ่งสิ่งนี้เองเราเรียกว่า Digital Signatures

clip_image036

รูปที่ 15 Digital Signatures

สรุปเกี่ยวกับขั้นตอนของ Digital Signatures ได้ดังนี้

1. นำข้อมูลต้นฉบับ (ซึ่งอาจจะมีขนาดใหญ่) มาทำการ Hash (ด้วยแฮชชิ่งอัลกอริทึมอย่างใดอย่างหนึ่ง เช่น MDS หรือ SHA1) ได้เป็นข้อมูลก้อนเล็กๆ เรียกว่า Message Digest

2. นำ Message Digest มาเข้ารหัสด้วย Private Key ของผู้ส่งได้เป็น “Digital Signatures”

3. ส่งข้อมูลต้นฉบับ (อาจจะขนาดใหญ่) ซึ่งอยู่ในรูปของ Plain Text ไปให้ผู้รับ โดยแนบ Digital Signatures ไปด้วย (มีการส่งข้อมูลไปยังผู้รับ 2 ชิ้น คือ (a) ข้อมูลต้นฉบับ และ (b) Digital Signatures)

4. ผู้รับเมื่อได้รับข้อมูลแล้วให้ตรวจสอบข้อมูลที่ได้รับ โดยการนำ Digital Signatures มาถอดรหัสโดยใช้ Public Key ของผู้ส่ง ได้เป็น Message Digest

5. ผู้รับนำข้อมูลต้นฉบับมา Hash (ด้วยอัลกอริทึมเดียวกันกับผู้ที่ส่งใช้ เช่น MD5 หรือ SHA1) ได้เป็น Message Digest อีกอันหนึ่ง

6. นำ Message Digest ทั้งสองมาเปรียบเทียบกัน หากตรงกันก็แสดงว่าข้อมูลต้นฉบับถูกต้องมาจากผู้ส่งจริงและไม่มี การเปลี่ยนแปลงข้อมูลระหว่างทาง

ข้อสังเกต

· สิ่งที่ทำให้มั่นใจได้ว่าข้อมูลถูกส่งมากผู้ส่งจริงคือ การที่ผู้รับสามารถอด Digital Signatures โดยใช้ Public Key ของผู้ส่งได้ แสดงว่าข้อมูลนั้นถูกเข้ารหัสโดยใช้ Private Key ของผู้ส่งจริงซึ่งผู้ที่มี Key นี้มีอยู่คนเดียวเท่านั้นคือผู้ส่ง

· สิ่งที่ทำให้มั่นใจได้ว่าข้อมูลไม่ถูกเปลี่ยนแปลงระหว่างทางคือ การเปรียบเทียบค่า Hash ทั้งสองแล้วพบว่าตรงกัน โดยค่าแฮชตัวหนึ่งมาจากการนำข้อมูลต้นฉบับ ดังนั้นหากทั้งสองค่านี้ตรงกันก็แสดงว่ามาจากข้อมูลเดียวกัน

เราสามารถส่ง Data, Digital Signatures และ Public Key ไปพร้อมกันได้ โดยส่ง Public Key ในรูปแบบของ Certificate (Public Key ที่ถูกรับรองโดย CA แล้ว) นอกจากนั้นการส่ง “ข้อมูลลับ” และลงลายเซ็นดิจิตอล ก็สามารถทำได้เช่นกัน โดยการนำขั้นตอนของ Digital Signatures ทั้ง 6 ขั้นตอนมาปรับโดยการแก้ไขขั้นตอนที่ 3 และ 5 ดังนี้

ขั้นตอนที่ 3 (ปรับใหม่) นำข้อมูลต้นฉบับ (อาจจะมีขนาดใหญ่) ซึ่งเป็น Plain Text มาเข้ารหัสด้วย Public Key ของผู้รับ ให้กลายเป็น Cipher Text จากนั้นจึงส่ง Cipher Text ไปให้ผู้รับ โดยแนบ Digital Signatures ไปด้วย (มีการส่งข้อมูลไปยังผู้รับ 2 ชิ้นคือ (a) ข้อมูลที่เป็น Cipher Text และ (b) Digital Signatures)

ขั้นตอนที่ 5 (ปรับใหม่) ผู้รับนำข้อมูลที่เป็น Cipher Text มาถอดรหัสด้วย Private Key ของตนเองได้เป็นข้อมูลต้นฉบับแบบ Plain Text จากนั้นทำการ Hash (ด้วยอัลกอริทึมเดียวกันกับที่ผู้ส่งใช้ เช่น MD5 หรือ SHA1) ได้เป็น Message Digest อีกอันหนึ่ง

(เมื่อนำขั้นตอนที่ 3 และ 5 ที่ปรับใหม่ไปใช้ร่วมกับข้อที่ 1, 2, 4, 6 เดิมก็จะสามารถส่งข้อมูลลับพร้อมลงลายเซ็นดิจิตอลได้)

หลายคนเข้าใจผิดคิดว่าลายเซ็นดิจิตอลหมายถึงสิ่งต่อไปนี้

· การเซ็นชื่อใส่กระดาษแล้วสแกนเก็บไว้ในรูปภาพแบบดิจิตอล

· การเซ็นชื่อลงบนอุปกรณ์อิเล็กทรอนิคส์เพื่อเก็บลายเซ็นไว้ในรูปแบบดิจิตอล

clip_image038clip_image040

รูปที่ 16 สิ่งที่คนทั่วไปมักจะ “เข้าใจผิด” คิดว่าเป็น Digital Signature

CA (Certificate Authority)

การใช้วิธีการเข้ารหัสแบบอสมมาตร (Asymmetric Key Cryptography) ที่จำเป็นต้องมีการแจกจ่าย Public Key ไปยังผู้ร่วมสื่อสารทุกๆ รายนั้นมีจุดอ่อนจากการโจมตีแบบ MITM : Man In The Middle โดยแฮกเกอร์จะทำตัวเป็นผู้อยู่ตรงกลายของการสื่อสารแล้วรอจังหวะที่ผู้สื่อสารมีการรับส่งและแลกเปลี่ยน Key กัน โดยแฮกเกอร์จะส่ง Public Key ของแฮกเกอร์เองไปยังผู้รับ ดังนั้นแฮกเกอร์จึงสามารถที่จะปลอมแปลงข้อมูลได้โดยใช้ Private Key ของตนเองในการทำ Digital Signatures ทำให้ผู้รับหลงเชื่อคิดว่าข้อมูลนั้นถูกส่งมายังผู้ส่งจริง หรือบางครั้งแฮกเกอร์ก็ปลอมแปลงทั้ง Private Key และ Public Key ตัวอย่างของการโจมตี Asymmetric Key Cryptography โดยใช้วิธี MITM ที่เห็นได้บ่อยคือ การถอดรหัสข้อมูลที่ส่งทาง https (เช่น รหัสผ่านของ hotmail, Gmail และเว็บไซต์ e-commerce อื่นๆ) ด้วยโปรแกรมในชุดของ BackTrack หรือใช้โปรแกรม Cain โดยแฮกเกอร์จะดักรอขั้นตอนการส่ง Public Key ผ่านทาง http เมื่อ Public Key ของเว็บไซต์ (เช่น hotmail) ถูกส่งมาถึงแฮกเกอร์ เขาจะสร้าง Private Key และ Public Key ของตนเองขึ้นมา แล้วส่ง Public Key ไปให้เหยื่อ เมื่อเหยื่อต้องการส่งข้อมูลมายังเว็บไซต์ก็จะเข้ารหัสด้วย Public Key ของเว็บไซต์เพื่อให้เว็บไซต์ถอดได้แต่เพียงผู้เดียว แต่ Public Key นั้นแท้ที่จริงเป็น Public Key ของแฮกเกอร์ จึงทำให้แฮกเกอร์ถอดรหัสได้และได้ข้อมูลที่สำคัญ (เช่น รหัสผ่านหรือ Session Key ของโปรโตคอล https) แฮกเกอร์ที่มี Public Key ของเว็บไซต์อยู่แล้วก็จะเอาข้อมูลนั้นมาดำเนินการเข้ารหัสด้วย Public Key จริงของเว็บไซต์ และส่งให้เว็บเซิร์ฟเวอร์ต่อ เพื่อให้การสื่อสารครบวงจรเพื่อที่เหยื่อได้ไม่รู้สึกถึงความผิดปกติ

เพื่อแก้ปัญหาที่ผู้รับไม่สามารถตรวจสอบได้ว่า Public Key ที่ตนเองได้รับนั้นเป็นของผู้ส่งจริงหรือไม่ จึงได้มีการพัฒนาโครงสร้างพื้นฐานของ Asymmetric Key Cryptography ให้ปลอดภัยขึ้น เรียกว่า Public Key Infrastructure (PKI) โดยกำหนดให้มีหน่วยงานกลางเป็นผู้รับรอง Public Key ของแต่ละคน/เว็บไซต์/เซิร์ฟเวอร์ หน่วยงานกลางดังกล่าวมีชื่อเรียกว่า CA (Certificate Authority) โดย CA จะได้รับการรับรองโดย Root CA อีกครั้งหนึ่ง ผู้รับส่งข้อมูลทุกรายจะต้องมี Public Key ของ Root CA ติดตั้งไว้บนระบบ เช่น บน Windows XP ก็จะมี Public Key ของ Root CA ทุกราย ซึ่งเราสามารถเปิดดู Public Key ของ Root CA ได้โดยใช้ Internet Explorer (เมนู Tools > Internet Options > Content > Certificates > Trusted Root Certification Authority) CA จะนำ Public Key ของผู้ส่ง (หรือผู้ใช้/เว็บไซต์ ที่ขอให้ CA รับรอง) มารับรองด้วย Digital Signatures ของ CA (นำข้อมูลที่สำคัญ เช่น Public Key และชื่อเว็บไซต์ของผู้ส่งมาแฮช แล้วเข้ารหัสด้วย Private Key ของ CA (นำข้อมูลที่สำคัญ เช่น Public Key กลายเป็น Digital Signatures) แล้วนำข้อมูลต้นฉบับ (Public Key และชื่อเว็บไซต์) มาผนวกเข้ากับ Digital Signatures ดังกล่าว กลายเป็นสิ่งที่เรียกว่า Certificate

clip_image042

รูปที่ 17 ลำดับชั้นของ CA (Certificate Authority)

ตัวอย่างเช่น Public Key ของเว็บไซต์ www.google.com ได้รับการรับรองโดย CA ชื่อ Thawte SGC ซึ่ง Thawte SGC ทำการรับรองโดยใช้ Certificate (มี Digital Signatures ที่รับรองโดย CA และมีข้อมูล Public Key และชื่อของเว็บไซต์ www.google.com อยู่ภายใน) ส่วน Thawte SGC ก็ถูกรับรองด้วย Certificate ที่ออกโดย Root CA ชื่อ VeriSign อีกทอดหนึ่งโดยใช้กลไกแบบเดียวกันกับที่ Thawte SGC รับรอง www.google.com

บราวเซอร์สามารถใช้ Public Key ของ VeriSign (Root CA) ที่มีอยู่บน Windows ถอดรหัสทำให้แน่ใจได้ว่า Public Key ของ Thawte SGC เป็นของจริง และมั่นใจได้ว่า Public Key ของ www.google.com เป็นของจริงได้โดยใช้วิธีการในทำนองเดียวกัน

clip_image044clip_image046clip_image048

รูปที่ 18 Certificate ของ www.google.com

การพิสูจน์ทราบตัวตน (Authentication)

การพิสูจน์ทราบตัวตน (หรือเรียกสั้นๆ ว่า การพิสูจน์ตัวตน) คือกระบวนการแสดงหลักฐาน (Identity) และตรวจสอบความถูกต้องของหลักฐานของบุคคลหรือคอมพิวเตอร์ เพื่อให้ทราบว่าบุคคลหรือคอมพิวเตอร์ที่กล่าวอ้างนั้นเป็นตัวจริงหรือไม่ ขั้นตอนของการพิสูจน์ตัวตนแบ่งออกเป็น 2 ขั้นตอน ได้แก่ “การระบุตัวตน” และ “การพิสูจน์ตัวตน”

· การระบุตัวตน (Identification) คือขั้นตอนที่บุคคลหรือคอมพิวเตอร์แสดงหลักฐานว่าตนเองคือใคร เช่น สมชายป้อน username และ password บนหน้าจอล็อกอินของเว็บไซต์ www.hotmail.com หรือตัวอย่างการระบุตัวตนของคอมพิวเตอร์ ได้แก่ เครื่อง Notebook ใช้ค่า MAC Address ของตัวเองเพื่อขอเชื่อมต่อเข้าสู่ Access Point ที่ผู้ดูแลระบบตั้งค่า MAC Address Filtering ไว้

· การพิสูจน์ตัวตน (Authentication) คือขั้นตอนการตรวจสอบหลักฐาน เพื่อพิสูจน์ว่าบุคคลหรือคอมพิวเตอร์ที่แสดงตนเองนั้น (ขอพิสูจน์ตัวตน) เป็นบุคคลหรือคอมพิวเตอร์ที่กล่าวอ้างจริงหรือไม่ เช่น เครื่องเว็บเซิร์ฟเวอร์ของ www.hotmail.com ได้ตรวจสอบว่าผู้ใช้สมชายที่กล่าวอ้างนั้นเป็นตัวจริงหรือไม่ โดยการนำค่า password ที่ส่งมาจากบราวเซอร์ ไปทดสอบหรือเปรียบเทียบกับรหัสผ่านในฐานข้อมูลผู้ใช้ของ hotmail

หลักฐานที่ผู้ใช้นำมากล่าวอ้างที่เกี่ยวกับเรื่องของความปลอดภัยนั้นสามารถจำแนกได้ 2 ชนิด

· Actual identity คือหลักฐานจริงที่สามารถบ่งบอกได้ว่าบุคคลที่กล่าวอ้างนั้นเป็นใคร เช่น ลายนิ้วมือ ใบหน้า DNA และบัตรประจำตัวประชาชน

· Electronic identity คือหลักฐานทางอิเล็กทรอนิคส์ที่สามารถใช้บ่งบอกข้อมูลของบุคคล หรือคอมพิวเตอร์นั้น ซึ่งสามารถใช้ระบุตัวตนของบุคคลหรือคอมพิวเตอร์ได้ในทางอ้อม เช่น username, password ที่ใช้ล็อกอินเข้าสู่เว็บไซต์ ใช้ระบุตัวตนของบุคคลที่เป็นเจ้าของบัญชีผู้ใช้นั้น ส่วนหลักฐานทางอิเล็กทรอนิคส์ที่รับรองคอมพิวเตอร์ก็อย่างเช่น Certificate ทีออกโดย CA เพื่อรับรองตัวตนของเว็บไซต์และเครื่องคอมพิวเตอร์แม่ข่าย

กลไกของการตรวจสอบที่สามารถบ่งชี้ได้ว่าเป็นบุคคลหรือคอมพิวเตอร์ที่กล่าวอ้างนั้นจริงหรือไม่จริงสามารถตรวจสอบได้จาก “สิ่งที่คุณมี” หรือ “สิ่งที่คุณรู้” หรือ “สิ่งที่คุณเป็น” ซึ่งสามารถใช้ 2 อย่าง หรือ ทั้ง 3 อย่าง ประกอบกันได้

· สิ่งที่คุณมี (Possession factor) เช่นกุญแจรถ บัตร ATM บัตรเครดิต Smart Card หมายเลข MAC Address ของคอมพิวเตอร์ หรือ Certificate ที่รับรองโดย CA เป็นต้น

· สิ่งที่คุณรู้ (Knowledge factor) เช่น รหัสผ่าน (password) ที่ใช้ล็อกอินเข้าระบบ ตัวเลขพิน (PIN) เพื่อกดเงินจาก ATM รหัสคีย์ WEO/WPA ของระบบ Wireless LAN เป็นต้น

· สิ่งที่คุณเป็น (Biometric factor) เช่น DNA, ลายนิ้วมือ, เรตินา หรือเสียง เป็นต้น

clip_image050clip_image052

รูปที่ 19 การตรวจสอบด้วยกลไกต่างๆ

กระบวนการพิสูจน์ตัวตนจะนำ 3 สิ่งข้างต้นมาใช้ในการยืนยันหลักฐาน โดยอาจนำมาเพียงอย่างเดียว หรือมากกว่า ทั้งนี้ขึ้นอยู่กับระบบหากระบบที่ออกแบบให้มีการยืนยันหลักฐานโดยใช้เพียงสิ่งเดียวจะทำให้มีข้อจำกัดด้านความปลอดภัย เช่น

· สิ่งที่คุณมี (เช่น บัตร ATM) อาจจะสูญหายหรือถูกขโมยได้

· สิ่งที่คุณรู้ (เช่น รหัสผ่าน) อาจจะถูกดักจับข้อมูล เดา หรือขโมยจากเครื่องคอมพิวเตอร์แม่ข่าย

ดังนั้น หากใช้ “สิ่งที่คุณเป็น” (เช่น ลายนิ้วมือ หรือเรตินา) จึงถือได้ว่าเป็นวิธีที่มีความปลอดภัยสูงที่สุด แต่อย่างไรก็ตามวิธีนี้ก็มีต้นทุนที่ค่อนข้างสูง ทางเลือกอีกอย่างหนึ่งคือการนำสิ่งที่คุณมี มาใช้ร่วมกับสิ่งที่คุณรู้ เช่น ใช้บัตร ATM ร่วมกับ PIN จะสามารถช่วยให้ระดับความปลอดภัยสูงขึ้นโดยใช้ต้นทุนไม่สูงมาก

ประเภทของการพิสูจน์ตัวตน (Authentication Types)

การพิสูจน์ตัวตนโดยใช้รหัสผ่าน (Authentication by Passwords)

รหัสผ่านเป็นวิธีการที่มีความง่ายและใช้กันแพร่หลาย รหัสผ่านควรจำกัดให้เฉพาะผู้ใช้ที่มีสิทธิเท่านั้นที่ทราบ การตั้งรหัสผ่านควรจะตั้งให้มีความยาวที่เหมาะสม (ความยาวตั้งแต่ 8 ตัวอักษรขึ้นไป) และควรจะตั้งให้มีความซับซ้อน เช่น ใช้ตัวอักษรตัวเล็กและตัวใหญ่ผสมกันและควรมีตัวเลขหรืออักขระพิเศษปนอยู่ด้วย เช่น F7xV$dGh9z อย่างไรก็ตามรหัสผ่านสามารถถูกดักจับหรือถูกขโมยได้ เช่น การใช้โปรแกรม Ethereal, Wireshark หรือ Sniffer การเปลี่ยนรหัสผ่านอยู่บ่อยๆ สามารถที่จะบรรเทาปัญหานี้ได้ หรืออาจจะใช้เทคนิค leet มาช่วยในการตั้งรหัสผ่าน leet คือการใช้ตัวเลขหรือตัวอักษรที่มีรูปร่างคล้ายกันมาทดแทนกัน เช่น ใช้ 0 (เลขศูนย์) แทน O (ตัวโอใหญ่) ใช้เลข 1 หรือ I (ตัวไอใหญ่) แทนตัว 1 (แอลเล็ก) และอื่นๆ ตัวอย่างเช่น

PASSWORD à PASSWORD

Nologin à Nologin

Hello World à HeIIo%20World

ซึ่งหากแฮกเกอร์ดักจับได้รหัสผ่านก็ไม่สามารถที่จะนำไปใช้ได้ (หากไม่สังเกตหรือไม่นำไปวิเคราะห์) ผู้เขียนมีเทคนิคอย่างหนึ่งที่ทำให้แฮกเกอร์ไม่สามารถโจมตีด้วยวิธี Brute Force ได้นั่นคือ การตั้งรหัสผ่านโดยใช้ตัวอักษรที่ไม่มีในคีย์บอร์ด หรือตัวอักษรที่ไม่สามารถกดคีย์บอร์ดได้ เช่น ใช้ตัวอักษรที่อยู่บนปุ่ม ~ (ตัวที่อยู่ข้างล่าง) ซึ่งบน Windows เวอร์ชั่นภาษาไทยจะไม่สามารถกดได้เพราะ Windows จะเข้าใจว่าผู้ใช้ต้องการเปลี่ยนภาษา นอกจากตัวอักษรนี้ก็ยังมีตัวอักษรอื่นอีกหลายตัว

การพิสูจน์ตัวตนโดยใช้ PIN (Authentication by PIN)

PIN ย่อมาจาก Personal Identification Number เป็นรหัสลับส่วนบุคคลที่ใช้เป็นรหัสผ่านเพื่อเข้าสู่ระบบ รหัส PIN เป็นที่นิยมใช้อย่างแพร่หลาย เช่น ใช้กับบัตร ATM และใช้กับเครื่องโทรศัพท์มือถือ และ Bluetooth การใช้ PIN มักจะนิยมใช้เป็นตัวเลขความยาวตั้งแต่ 4 ตัวขึ้นไป PIN เป็น “สิ่งที่คุณรู้” ซึ่ง รหัส Pin อาจจะถูกแอบดู หรือรั่วไหลได้โดยวิธีการต่างๆ ดังนั้น จึงมักจะถูกนำไปใช้ร่วมกับ “สิ่งที่คุณมี” เช่น PIN ของบัตร ATM ที่ผู้ใช้จะต้องมีทั้งตัวบัตรและหมายเลข PIN

การพิสูจน์ตัวตนโดยใช้ลักษณะเฉพาะทางชีวภาพ (Authentication by Biometric traits)

ลักษณะทางชีวภาพของแต่ละบุคคลเป็นลักษณะทางภายภาพ จึงไม่สามารถลอกเลียนแบบได้ (เช่น DNA และ Retina) การนำลักษณะทางชีวภาพมาใช้ในการพิสูจน์ตัวตนจะให้ความปลอดภัยสูงที่สุด เช่น การใช้ลายนิ้วมือแทนการตอกบัตร การใช้เสียง และม่านตาเพื่อยืนยันตัวตนก่อนเข้าห้องเซิร์ฟเวอร์ (ดังที่เห็นตัวอย่างในภาพยนตร์เรื่อง Mission Impossible 1996) เป็นต้น

clip_image054

รูปที่ 20 อุปกรณ์ที่ใช้สแกนเรตินา

การพิสูจน์ตัวตนโดยใช้รหัสผ่านเพียงครั้งเดียว (One-Time Password : OTP)

One-Time Password ถูกพัฒนาขึ้นเพื่อลดปัญหาที่เกิดจากการใช้รหัสผ่านเดิมซ้ำๆ OTP จะบังคับให้ผู้ใช้รหัสผ่านใหม่และเปลี่ยนไปเรื่อยทุกครั้ง ด้วยเหตุนี้จึงทำให้ระบบมีความปลอดภัยมากขึ้น ดังตัวอย่างการนำ OTP มาประยุกต์ใช้คือ K-MOBILE BANKING PLUS ของธนาคารกสิกรไทย ดังรูปที่ 21

clip_image056

รูปที่ 21 ตัวอย่างการใช้งาน One-Time password (OTP)

การพิสูจน์ตัวตนโดยการเข้ารหัสและถอดรหัสโดยใช้ Public-key cryptography

ก่อนที่จะส่งข้อมูล หากผู้ส่งเข้ารหัสข้อมูลด้วย Private Key ของผู้ส่ง ผู้ที่รับข้อมูลสามารถถอดรหัสได้โดยใช้ Public Key ของผู้ส่งเท่านั้น (ไม่สามารถที่จะถอดรหัสโดยใช้ Key อื่น) ดังนั้นผู้รับข้อมูลถึงสามารถที่แน่ใจได้ว่าผู้ส่งข้อมูลเป็นตัวจริง (เนื่องจากเป็นเจ้า Private Key) อย่างไรก็ตามถึงแม้วิธีการนี้จะมีความปลอดภัย แต่ก็มีจุดอ่อนคือ ไม่สามารถสร้างความมั่นใจได้ว่า Private Key ของผู้ส่งที่อยู่กับผู้รับนั้นเป็นของจริงหรือไม่ เพราะมันอาจจะเป็น Private Key ของแฮกเกอร์แต่แอบอ้างว่าเป็น Private Key ของผู้ส่งก็ได้ ปัญหานี้สามารถแก้ไขได้โดยเปลี่ยนมาใช้ลายมือชื่อดิจิตอล (Digital Signature) ซึ่ง Public Key ของผู้ส่งจะได้รับการรับรองโดย CA และนอกจากนั้นหากข้อมูลที่ส่งมีขนาดใหญ่มากจะทำให้ระบบทำงานได้ช้า (เนื่องจากไม่มีการแฮชข้อมูล)

การพิสูจน์ตัวตนโดยการใช้ลายมือชื่อดิจิตอล (Digital Signature)

การพิสูจน์ตัวตนโดยการใช้ลายมือชื่อดิจิตอล (Digital Signature) เป็นการนำหลักของระบบการเข้ารหัสแบบอสมมาตร (Asymmetric) มาใช้เพื่อการพิสูจน์ตัวตน และมี CA (Certificate

Authority) รับรอง Public Key ของผู้ส่ง ส่วนฝั่งผู้รับซึ่งเชื่อถือใน CA อยู่แล้ว (มี Public Key ของ CA ใน Trust Root) ก็สามารถที่จะใช้ Public Key ของ CA เพื่อพิสูจน์ว่า Public Key ของผู้ส่งนั้นเป็นของจริงได้ (สามารถถอดรหัสโดยใช้ Public Key ของ CA ได้แสดงว่าถูกเข้ารหัสด้วย Private Key ของ CA ซึ่งก็แสดงว่า Key นั้นคือของจริง) ระบบของลายเซ็นดิจิตอลสามารถแบ่งเป็นขั้นตอนได้ดังนี้

1.เมื่อผู้ใช้ต้องการจะส่งข้อมูลไดยังผู้รับ ข้อมูลจะถูกนำไปผ่านแฮชฟังก์ชั่นเสียก่อนได้เมสเซจไดเจสต์ (Message Digest)

2.ผู้ส่งใช้ Private Key ของตนเองเข้ารหัสเมสเซจไดเจสต์ ซึ่งถือว่าผู้ส่งได้สร้าง “ลายเซ็นดิจิตอล” จากนั้นก็ส่งลายเซ็น ดิจิตอลไปพร้อมกับข้อมูลจริง (ซึ่งข้อมูลจริงอาจจะมีขนาดใหญ่)

3.ผู้รับตรวจสอบว่าข้อมูลถูกส่งมาจากผู้ส่งคนนั้นจริงหรือไม่ โดยการนำข้อมูลมาผ่านแฮชฟังก์ชั่นเพื่อคำนวณหาค่า เมสเซจไดเจสต์ ในขณะเดียวกันก็ถอดรหัสลายมือชื่อดิจิตอลด้วย Public Key ของผู้ส่ง ถ้าสามารถอดรหัสได้อย่าง ถูกต้องและตรงกันกับเมสเซจไดเจสต์ ก็สามารถยืนยันได้ว่าข้อมูลนั้นถูกส่งมาจากผู้ส่งคนนั้นจริง

การพิสูจน์ตัวตนโดยใช้การถาม-ตอบ

การพิสูจน์ตัวตนโดยใช้การถาม-ตอบ มีการใช้งานมาตั้งแต่สมัยโบราณ ตัวอย่างเช่น ในระหว่างการทำสงคราม ทหารที่มีหน้าที่ยืนเฝ้าประตูเมืองจะต้องมีการสอบถามคนแปลกหน้าก่อนที่จะให้ผ่านเข้ามา เพื่อเป็นการพิสูจน์ว่าเป็นคนในเมืองนั้นจริงหรือไม่ เพราะอาจจะเป็นข้าศึกปลอมตัวเข้ามาก็ได้ หรือในกรณีที่เราสนทนาผ่านอินเตอร์เน็ตกับคนที่เรารู้จัก (เช่น สนทนาผ่านทางโปรแกรม MSN) หากเราสงสัยว่าคู่สนทนาเราไม่ใช่ตัวจริง โดยอาจจะมีผู้อื่นแอบเอารหัสผ่านของคนนั้นมาใช้ เราก็สามารถพิสูจน์ได้ว่าเป็นตัวจริงหรือตัวปลอมโดยตั้งคำถามที่ตัวจริงเท่านั้นที่จะรู้คำตอบ หรืออาจจะต้องตั้งคำถามหลายข้อเพื่อให้แน่ใจ เป็นต้น

โปรโตคอลในการพิสูจน์ตัวตน

ในระบบเครือข่ายคอมพิวเตอร์จำเป็นที่จะต้องใช้โปรโตคอลในการพิสูจน์ตัวตน โดยแต่ละโปรโตคอลจะถูกนำมาใช้ในสภาวะแวดล้อมที่ต่างกัน ตัวอย่างของโปรโตคอลในการพิสูจน์ตัวตน ได้แก่

· Secure Socket Layer (SSL) นิยมนำมาใช้กับ e-commerce เช่น HTTPS หรือการรับเมล์ ผ่าน SSL เป็นต้น

· Secure Shell (SSH) นำมาใช้เพื่อทดแทนโปรโตคอลเดิมที่ไม่ปลอดภัย เช่น Telnet

· Internet Security (IPSEC) นำมาใช้เพื่อเพิ่มความปลอดภัยให้กับโปรโตคอล IP เช่น การเชื่อมต่อผ่านทาง VPN

· Kerberos เป็นโปรโตคอลที่ใช้ในการตรวจสอบตัวตนของเครื่องแม่ข่าย ซึ่งใช้งานได้ทั้งบนเครือข่าย Linux และ Windows

แหล่งข้อมูลอ้างอิง

1. http://mail.colonial.net/~abeckwith/S00FB0FF5

2. http://en.wikipedia.org/wiki/MD5

3. http://gdp.globus.org/gt4-tutorial/multiplehtml/ch09s03.html

4. http://www.cacsecurity.com/

5. http://www.tiresias.org9/slides/1intro_lecture.ppt

6. http://www.espionageinfo.com

7. http://en.wikipedia.org/wiki/Playfair_cipher

8. http://en.wikipedia.org/wiki/Caesar_cipher

9. http://202.28.94.51/users/somnuk/itsec/5.ppt

10. http://en.wikipedia.org/wiki/atbash_cipher

11. http://en.wikipedia.org/wiki/Frequency_analysis

12. http://en.wikipedia.org/wiki/One-time_pad

13. http://xys.ccert.edu.cn/reference/crypto/DES-JScript-Example/JS-DES.html

14. http://www.tropsoft.com/strongec/des3.html

15. http://en.wikipedia.org/wiki/Advanced_Encryption_Standard

16. http://www.quadibloc.com/crypto/co040401.html

17. http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf

18. http://www.esat.kuleuven.ac.be

19. http://www.di-mgt.com.au/rsa-alg.html

20. http://md5-hash-online.waraxe.us

21. http://www.financialcryptography.com/mt/archives/000394.html

22. http://www.infosec.sdu.edu.cn/2person_wangxiaoyun.html

23. http://eprint.iacr.org/2005/075

24. http://en.wikipedia.org/wiki/Authentication

25.http://www.redhat.com/courses/rh423_red_hat_enterprise_directory_services_and_authentication/

26. http://www.thaicert.org/paper/authen/authentication_guide.php

27. http://msdn.microsoft.com/en-us/library/aa374735(VS.85).aspx

My GangZ