ถอดรหัสแบบอัจฉริยะด้วยการ์ดจอ…ทำได้ไม่ต้องรอนาน

โดย เปี๊ยก ว.2

                ทุกวันนี้ความปลอดภัยเป็นเรื่องสำคัญ ข้อมูลดิจิตอลเองก็ต้องได้รับการปกป้องเพื่อหลีกเลี่ยงการจารกรรมจากบรรดาแฮกเกอร์ทั้งหลาย รหัสผ่านหรือพาสเวิร์ดเป็นหนึ่งในวิธีการเก็บรักษาข้อมูลจากบุคคลอื่น แต่เทคโนโลยีอันทันสมัยก็สามารถถอดรหัสนั้นได้ไม่ยาก แค่มีคอมฯ เครื่องหนึ่งกับการ์ดอจอดีๆ ซักตัวสองตัว เอ๊ะ…การ์ดจอเกี่ยวไรอ่ะ อยากรู้ต้องอ่านดูฮะ 

                เรื่องราวในวันนี้ว่าด้วยการถอดรหัส สมมติว่าเรามีไฟล์ Zip หรือ RAR ที่เข้ารหัสไว้แต่ไม่มีรหัส…เราจะทำอย่างไร ก่อนอื่นต้องถามว่าทำอีท่าไหนถึงไม่มีรหัส ถ้ามองโลกในแง่ดีก็อาจจะเพราะว่าลืมรหัส แต่ถ้ามองโลกในแง่ร้าย (ซึ่งมองได้ง่ายกว่า) ก็อาจจะหมิ่นเหม่ต่อการจารกรรมข้อมูลที่ไม่ใช่ของตน ดังนั้นคนที่ต้องการรหัสจึงอาจจะแบ่งได้เป็นสองพวกใหญ่ๆ คือคนสุจริตกับไม่สุจริต ทว่าทางออกสำหรับคนทั้งสองประเภทก็มักจะมาบรรจบที่เดียวกันคือการถอดรหัส ซึ่งมันก็แปลกคือถ้าเราทำด้วยจุดประสงค์ที่ดีก็จะเรียกว่าการกู้รหัส (Password Recovery) แต่ถ้าประสงค์ร้ายก็จะเรียกว่าการแฮก (Password Hacking)

ทำไมต้องถอดรหัส

                รหัสผ่านอีเมล์หรือเวปไซต์ต่างๆ ซึ่งมักมีระบบสำรองซึ่งเก็บพาสเวิร์ดไว้ในกรณีที่เราลืมรหัสผ่านหรืออนุญาตให้ตั้งรหัสใหม่ได้ หากลืมรหัสเราก็สามารถเรียกดูหรือตั้งรหัสใหม่ได้โดยผ่านกระบวนการรักษาความปลอดภัยในรูปแบบที่ต่างกันออกไป แต่ส่วนใหญ่แล้วก็มักจะเริ่มจากลิงค์ที่เห็นกันบ่อยๆ เช่น “Forgot your password?” “Can’t access your account?” นั่นแปลว่าต่อให้เราทำพาสเวิร์ดหายหรือลืมก็ไม่ได้หมายความว่ามันจะ Chip หายซะทีเดียว อย่างน้อยถ้าทำตามขั้นตอนถูกต้องก็ยังมีโอกาสอยู่

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

                วิธีคิดง่ายๆ คือให้ลองเปรียบวิธีการเข้ารหัสเป็นแม่กุญแจและให้รหัสเป็นลูกกุญแจ วิธีการเข้ารหัสนั้นมีมากมาย ที่รู้จักกันดีในตอนนี้ก็คือ AES (Advanced Encryption Standard) ซึ่งมีตั้งแต่ระดับ 128-bit ไปจนถึง 256-bit แต่ถึงเราจะเข้ารหัสด้วย AES-256 ซึ่งถือว่าเป็นแม่กุญแจชั้นดี หากว่าเราตั้งพาสเวิร์ดไม่ดี (เช่นตั้งรหัสสั้นๆ หรือใช้ตัวเลข ตัวอักษรที่เดาง่าย) มันก็ถอดรหัสได้ไม่ยาก เปรียบได้กับลูกกุญแจห่วยๆ ที่ปั๊มง่าย ดังนั้นต่อให้แม่กุญแจดีแค่ไหนก็ไม่ปลอดภัยอยู่ดี ในทางกลับกันถ้าเราตั้งรหัสไว้ซับซ้อนเหมือนกับเรามีลูกกุญแจดีๆ ซึ่งก็น่าจะดีกว่ากรณีตะกี้ แต่ดันใช้วิธีการเข้ารหัสแบบเก่า (เช่น Zip 2.0 ซึ่งโบฯ กว่า AES เยอะ) อย่างนี้ก็เหมือนกับใช้แม่กุญแจห่วยๆ ซึ่งผลก็เหมือนเดิมคือไม่ปลอดภัยเท่าที่ควร

                ดังนั้นวิธีการป้องกันรักษาข้อมูลที่ดีที่สุดคือต้องมีทั้งแม่กุญแจและลูกกุญแจที่ดี โดยการใช้วิธีการเข้ารหัสที่ทันสมัยควบคู่ไปกับการตั้งรหัสผ่านที่ซับซ้อน ถ้าให้ดีกว่านั้นคือไม่ควรใช้พาสเวิร์ดซ้ำๆ กัน เช่น Hotmail ใช้พาสเวิร์ดชุดนึง Gmail ใช้อีกชุดนึง Facebook อีกชุดนึง และควรจะเปลี่ยนรหัสผ่านเป็นระยะ แต่เชื่อผมเถอะฮะ…ไม่มีค่อยมีใครทำอย่างนั้นหรอก หนึ่งหละเพราะว่ามันยุ่งยาก โดยเฉพาะถ้าจะต้องมีนั่งคิดหาพาสเวิร์ดใหม่อยู่เรื่อยๆ สองคือมันมีโอกาสที่จะลืมสูง คนเราแค่มีพาสเวิร์ดซัก 3-4 ชุดขึ้นไปเริ่มลืมแล้วพาสเวิร์ดไหนใช้กับแอคเค้าท์ไหน ยิ่งให้มาเปลี่ยนอยู่เรื่อยๆ ยิ่งจะงงเข้าไปใหญ่

ถอดรหัส…ง่ายหรือยาก?

                การจะถอดรหัสไฟล์ที่เข้ารหัสไว้นั้นมีหลายวิธีฮะ วิธีหนึ่งที่ง่ายและเป็นที่นิยมคือ Brute-force ซึ่งก็คือการสุ่มรหัสไปเรื่อย วิธีนี้ใช้ได้ดีกับการรักษาความปลอดภัยที่อนุญาตให้ใส่พาสเวิร์ดได้ไม่จำกัดครั้งอย่างเช่น ไฟล์บีบอัด ซึ่งเราจะมาทดลองกันวันนี้ หลักการง่ายๆ คือสุ่มพาสเวิร์ดไปเรื่อยๆ ซึ่งความยากง่ายสามารถคิดได้จากสูตรค่าความน่าจะเป็นคือจำนวนอักขระยกกำลังด้วยจำนวนหลักของพาสเวิร์ด

                เช่นว่า ถ้าเราตั้งพาสเวิร์ด 2 หลักด้วยตัวอักษรภาษาอังกฤษตัวเล็ก (26 ตัว) ก็จะได้ความน่าจะเป็นออกมาคือ 262 = 676 ซึ่งก็แปลว่าโอกาสที่จะเจอพาสเวิร์ดที่ถูกต้องคือ 1 ใน 676 ถ้าเราว่างและมีเวลาพอก็สามารถลองสลับอักขระไปมาแล้วลองเรื่อยๆ ได้ แต่เราไม่สามารถรู้ได้เลยว่ารหัสที่ใช่นั้นจะเป็นตัวที่ 1, 2, 3,…, หรือตัวสุดท้ายคือ 676 ยิ่งถ้าเพิ่มความซับซ้อนเข้าไปอีก เช่น เพิ่มอักขระเป็นตัวอักษรภาษาอังกฤษเล็กกับใหญ่แถมด้วยตัวเลข ต่อให้เป็นแค่พาสเวิร์ด 2 หลักความน่าจะเป็นจะลดลงไปเหลือ 1 ใน (26+26+10)2 (1 ใน 3844)และถ้าใช้ชุดอักขระ ASCII ซึ่งมีทั้งหมด 128 ตัวทว่าใช้ตั้งพาสเวิร์ดได้แค่ 94 ตัว (33 ตัวไม่ใช้งานแล้ว อีกตัวคือ space ซึ่งไม่สามารถใช้เป็นพาสเวิร์ดได้) ตั้งพาสเวิร์ด 8หลักก็จะสามารถตั้งได้ถึงกว่า6 พันล้านล้านรหัส(948 = 6,095,689,385,410,816) คำถามคือเป็นไปได้ไหมที่เราจะถอดรหัสที่มีความน่าจะเป็นต่ำเช่นนั้น ถ้าใช้แค่มันสมองและสองมือคงจะเป็นไปไม่ได้เพราะมันจะใช้เวลานานมากจนคนทำตายแล้วเกิดใหม่หลายรอบก็คงไม่เสร็จ เป็นอันรู้กันว่าคอมฯ นั้นสามารถทำงานประเภทนี้ได้อีกว่ามนุษย์หลายล้านเท่า แต่คำถามคือคอมฯ สามารถถอดรหัสได้เร็วขนาดไหน ด้วยเทคโนโลยีปัจจุบันจะทำให้การถอดรหัสที่ซับซ้อนสำเร็จได้ในเวลาเท่าไหร่กัน

การทดสอบ

อุปกรณ์ที่ใช้ทดสอบ

Part I ถอดรหัสด้วยซีพียู

                ในการถอดรหัสด้วยคอมฯ นั้นหน้าที่การประมวลผลย่อมเป็นของซีพียู เราจะเริ่มด้วยการหาความเร็วในถอดรหัสของของซีพียู Core i5-2500K ด้วยโปรแกรม Advanced Archive Password Recovery และ Visual Zip Password Recovery Processor

                โปรแกรม Visual Zip นั้นไม่รองรับการถอดรหัส AES และประสิทธิภาพก็ดูจะด้อยกว่า ARCHPR ถ้าเป็นการเข้ารหัสแบบ Zip 2.0 นั้น ARCHPR สามารถถอดรหัสได้ด้วยความเร็วประมาณ 28 ล้านรหัสต่อวินาที ถ้าเป็นแบบ AES จะช้ากว่ามากคือประมาณ 9 พันรหัสต่อวินาที (ไฟล์ Zip) หรืออาจจะเหลือแค่ประมาณ 2 ร้อยรหัสต่อวินาที (ไฟล์ RAR)ตัวเลขนี้บอกอะไรเราได้บ้าง

ติ๊ต่างว่าเราเข้ารหัสแบบ Zip 2.0 ซึ่งมีความเร็วในการถอดรหัสสูงสุดแล้วคือประมาณ 28 ล้านรหัสต่อวินาที ถ้าเราพยายามถอดรหัสพาสเวิร์ด 8 หลักซึ่งใช้อักขระ ASCII อาจจจะต้องใช้เวลานานถึง 8 ปี ซึ่งแม้ว่าจะไม่นานถึงขนาดชั่วชีวิตแต่สำหรับพาสเวิร์ด 8 หลักก็ไม่รู้จะเรียกว่าคุ้มค่าหรือเปล่า แต่ลดจำนวนหลักของพาสเวิร์ดเหลือ 6 หลักชีวิตค่อยดูมีความหวังขึ้นมาเยอะเลยเพราะมันสามารถสำเร็จได้ภายใน 7 ชั่วโมงหรือน้อยกว่า ต้องจำไว้ว่าเราไม่มีทางรู้ได้เลยว่ารหัสที่ใช่มันจะอยู่ช่วงไหน ถ้ามันอยู่ต้นๆ ก็อาจจะใช้เวลาไม่ถึงครึ่งชั่วโมงก็ได้ แต่ถ้ามันอยู่ท้ายสุดก็อาจจะถึง 7 ชั่วโมงจริงๆ ที่ต้องการสื่อคือเวลาในตารางคือจำนวนเวลาสูงสุดที่เป็นไปได้ ในความเป็นจริงอาจจะใช้เวลาน้อยกว่านั้น…อาจจะนะฮะ

Part II ถอดรหัสด้วยการ์ดจอ

                ก่อนอื่นต้องทำความเข้าใจก่อนกว่าในบางครั้งการ์ดจอสามารถทำงานที่เป็นแบบ Parallel ได้ดีกว่าซีพียู ซึ่งเป็นเหตุผลหนึ่งที่วันนี้ GPGPU หรือ General-purpose GPU กำลังเป็นที่นิยม Nvidiaมี CUDA ส่วน AMD มี Stream ซึ่งทั้งสองตัวใช้ประโยชน์จากความสามารถด้าน Parallel Computing ของชิบกราฟฟิคของตนในงานต่างๆ เช่น การประมวลผลฟิสิกส์ การแปลงไฟล์วิดีโอ เป็นต้น ซีพียู Sandy Bridge ของ Intel ก็ใช้ประโยชน์จากคอร์กราฟฟิคในการแปลงไฟล์วิดีโอซึ่งกำลังเป็นที่รู้จักในชื่อของเทคโนโลยี Quick Sync

                โปรแกรม Password Recovery ก็เริ่มจะใช้ประโยชน์จาก GPGPU แล้วเหมือนกัน เช่น โปรแกรม Parallel Password Recovery และ Accent Password Recovery โปรแกรมแรกนั้นรองรับแต่ Nvidia CUDA ส่วน Accent รองรับทั้ง Nvidia CUDA และ AMD Stream ทว่า CUDA นั้นมีมาก่อน Stream และได้รับความนิยมกว้างขวางกว่าจึงมีส่วนทำให้มีประสิทธิภาพดีกว่าเราจึงเลือการ์ดจอ Nvidiaเป็นอุปกรณ์หลัก

                โปรแกรม Accent มีประสิทธิภาพดีกว่าโปรแกรม Parallel โดยสามารถถอดรหัส Zip 2.0 ได้ด้วยความเร็วกว่า 500 ล้านรหัสต่อวินาทีซึ่งเร็วกว่าที่ซีพียู Core i5-2500K ทำได้ด้วยโปรแกรม ARCHPR เสียอีก ความเร็วในการถอดรหัสแบบ AES ก็สูงกว่าไม่ว่าจะเป็นไฟล์ Zip หรือ RAR ซึ่งนั่นหมายความว่า

                พาสเวิร์ด 8 หลักที่ใช้อักขระ ASCII ซึ่ง Core i5-2500K กับโปรแกรม ARCHPR ต้องใช้เวลาสูงสุด 8 ปีในการถอดรหัส ลดลงมาเหลือแค่ 168 วันหน่อยๆ หรือไม่ถึง 6 เดือนเท่านั้น และถ้าเป็นพาสเวิร์ด 6 หลักซึ่งเคยต้องใช้เวลาถึง 7 ชั่วโมงก็จะเหลือไม่ถึงครึ่งชั่วโมง นั่นคือประสิทธิภาพของการ์ดจอระดับกลางอย่าง GTX 460 ตัวเดียวนะฮะ มันจะเป็นอย่างไรถ้าเราใช้การ์ดจอระดับพรีเมี่ยม 2 ตัว

                การ์ด Geforce GTX 570 ในโหมด SLI สามารถถอดรหัสแบบ Zip 2.0 ได้ด้วยความเร็วเกือบ 1.5 พันล้านรหัสต่อวินาที ผลที่ได้นั้นน่าตกใจมาก

                การแกะพาสเวิร์ด 8 หลักที่ใช้อักขระ ASCII จะใช้เวลาไม่ถึง 2 เดือน และถ้าเป็นรหัส 6 หลักจะใช้เวลาแค่ 8 นาที

รู้ก่อนป้องกันได้

                จากการทดสอบจะเห็นได้ว่าเทคโนโลยีฮาร์ดแวร์นั้นก้าวหน้าขนาดไหน บางท่านอาจจะบอกว่าก็แหม…ใช้แค่ Zip 2.0 มันก็เลยดูเหมือนเร็ว จริง…ไม่เถียง แต่ต่อให้เป็น AES-256 ก็สามารถจะถูกถอดรหัสได้ถ้าคนที่ถอดรหัสลงทุนสักหน่อย เช่นว่าใช้การ์ดจอชั้นดีอย่าง GTX 580 ทำ Quad-SLI หรืออาจจะใช้หลักการ Distributed Computing โดยใช้คอมฯ หลายๆ เครื่องหรือเครือข่ายเน็ตเวิร์คช่วยในการประมวลผลคล้ายๆ กับ [email protected]ถ้าระบบใหญ่พอก็จะสามารถถอดรหัสได้ในเวลาไม่นานนัก บทความนี้ไม่ได้มีจุดประสงค์จะสอนให้ไปแฮกพาสเวิร์ดใครนะครับ PCTodayต้องการให้ทุกท่านตระหนักว่าเดี๋ยวนี้การแฮกพาสเวิร์ดสามารถทำได้ไม่ยาก เมื่อเรารู้ขีดความสามารถของแฮกเกอร์เราก็จะสามารถตั้งการ์ดป้องกันตัวได้ดีขึ้น…รู้เขารู้เรานั่นแหละฮะ เรารู้แล้วว่าเขาสามารถทำอะไรได้…แล้วเราทำอะไรได้บ้างล่ะ เราต้องป้องกันตัวโดยใช้ระบบความปลอดภัยที่ดีโดยพยายามใช้การเข้ารหัสแบบ AES (ถ้าเป็นไปได้) และ/หรือใช้พาสเวิร์ดที่แน่นหนา…อย่างไรล่ะถึงเรียกว่าแน่นหนา พาสเวิร์ดที่ดีควรจะมีมากกว่า 8 หลัก (9 หลักขึ้นไปจะดีมาก) ควรประกอบไปด้วยตัวอักษรภาษาอังกฤษ (ไม่แนะนำให้ใช้ภาษาอื่นเพราะถ้าพิมพ์ภาษานั้นๆ ไม่ได้จะยุ่งเอา) ทั้งพิมพ์ใหญ่และพิมพ์เล็ก และมีตัวเลขและสัญลักษณ์ปนด้วย (ถ้าเป็นไปได้) เท่านี้เราก็สามารถสบายใจได้เปลาะหนึ่งว่าพาสเวิร์ดจะไม่ถูกแฮกไปง่าย ที่เหลือก็อยู่ที่แต่ละคนว่าจะมีพฤติกรรมอย่างไร ชอบจดพาสเวิร์ดไหม…เก็บไว้ที่ไหน บอกพาสเวิร์ดคนอื่นบ้างหรือเปล่า วันนี้เวลาหมดแล้ว เอาไว้พบกันใหม่โอกาสหน้านะฮะ สวัสดีจ้า

Recent Articles

Related Stories

Leave A Reply

Please enter your comment!
Please enter your name here