Technology

เจาะ Technical ทำไม Telegram ถึงปลอดภัย บล็อกเท่าไหร่ก็ "อ่อนหัด"

By Arnon Puitrakul - 20 October 2020 - 2 min read min(s)

เจาะ Technical ทำไม Telegram ถึงปลอดภัย บล็อกเท่าไหร่ก็ "อ่อนหัด"

จากประเด็นเมื่อวาน (ของวันที่เขียน) มีความพยายามที่จะปิดการเข้าถึง Telegram ที่ตอนหลังอาจจะเขิล และออกมาบอกว่า อยากให้ Monitor เฉย ๆ อะไรก็ว่ากันไปนี่แหละ ทำให้วันนี้เราเองที่ก็ถือว่า น่าจะเป็นนักคอมพิวเตอร์ อยากที่จะออกมาเล่า เหตุผลในเชิง Technical เลย ว่า ทำไม Telegram ถึงมีความเป็นส่วนตัวสูง และ เคยมีความพยายามจากทั้งรัสเชีย และ จีน ในการปิดการเข้าถึง แต่ทำเท่าไหร่ก็ยังอ่อนหัด จนรัสเชียยอมไปแล้ว ทำไมมันเป็นเช่นกัน เราลองมาหาคำตอบพร้อม ๆ กัน

ทุกอย่างปลอดภัยได้ด้วยการเข้ารหัส (Encryption)

การเข้ารหัส (Encryption) ถือเป็นเรื่องพื้นฐานในการเชื่อมต่อระหว่างเครื่องคอมพิวเตอร์ในปัจจุบันไปแล้ว ไม่ว่าเราจะเชื่อมต่อไปที่ไหน เราต้องการ การเข้ารหัสทั้งนั้น ใน Telegram ก็เช่นกัน ผู้สร้าง Telegram เลือกใช้การเข้ารหัสที่ Advance ขึ้นอีกขั้นคือ การทำ End-to-End Encrpytion (E2EE)

ก่อนจะอธิบายถึง E2EE เราลองมาดูภาพที่เกิดขึ้นระหว่างการที่เราใช้ App Chat ต่าง ๆ กัน สิ่งทีเราเห็นคือ เราส่งข้อความ และ ข้อความมันก็จะวิ่งไปหาที่ปลายทางที่เราต้องการ แต่จริง ๆ แล้ว เราไม่ได้ทำการเชื่อมต่อกันตรง ๆ เราจะต้องเชื่อมต่อผ่านผู้ให้บริการอีกที เช่น Line หรือ Telegram ที่เราจะพูดถึงกันในวันนี้

Insecure Message Sending

สมัยก่อน ก่อนที่เราจะเข้ารหัสมันทุกอย่าง เราก็ใช้งานแบบไม่เข้ารหัสกันนี่แหละ ก็คือ เราก็ส่งข้อความ เช่น I love you xoxo ไปในระบบ ข้อความก็จะต้องวิ่งจากเครื่องของเราผ่านเครื่องแม่ข่ายต่าง ๆ มากมาย จนไปที่ Server ของผู้ให้บริการ และ ส่งต่อผ่านเครื่องแม่ข่ายอีกหลายเครื่องไปที่ปลายทาง

Internet Routing Selection

ความไม่รู้ว่ามันผ่านที่ไหนบ้างนี่แหละ เป็นวิธีที่ผู้ไม่หวังดี สามารถดักจับข้อมูลได้ อาจจะไปรอที่เครื่องแม่ข่ายที่นึง และ ดักข้อมูลที่วิ่งผ่านไปมา เมื่อเอามา Filter หน่อย ก็จะเห็นละ I love you xoxo ที่วิ่งผ่านไป เห็นอีกว่าจากใครถึงใคร ยันแก้ไขข้อมูลได้อีกอาจจะเปลี่ยนเป็นให้เลิกกันงี้

Client-Server Encryption Pattern

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

End-to-End Encryption Pattern

ทำให้ในบาง App Chat ที่เน้นเรื่อง Privacy เป็นพิเศษเช่น Telegram เลือกที่จะใช้สิ่งที่เรียกว่า E2EE ในการแลกเปลี่ยนข้อมูลกล่าวคือ ข้อมูลทั้งหมดจะถูกเข้า และ ถอดรหัสได้ที่ต้นทาง และ ปลายทาง ได้เท่านั้น โดยที่ผู้ให้บริการไม่สามารถอ่านข้อความได้เลย หลักการทำงานของวิธีนี้คือ การใช้สิ่งที่เรียกว่า Asymmetric Encryption

HTTPS, SSL และ TLS ของง่าย ๆ ที่ทำให้ชีวิตปลอดภัย
โลกอินเตอร์เน็ตย่างกลายเข้ามาอยู่ในชีวิตเรามากขึ้นทุกวัน ๆ เราใช้งานมันส่งข้อมูลส่วนตัวมากมายวันนี้เรามาดูกันว่า HTTPS, SSL และ TLS จะเข้ามาช่วยให้ชีวิตเราปลอดภัยขึ้นได้อย่างไรกัน

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

เมื่อคณิตศาสตร์อยู่เหนือความไว้ใจ

Open source Telegram
https://github.com/tdlib/td

ปกติแล้วเวลาเราไปใช้งาน App ต่าง ๆ ก็มักจะเคลมให้เราอ่านว่า เออ นี่นะ App ของเรามันปลอดภัยอย่างงั้นอย่างงี้ โดยใช้เทคนิคแบบนั้นแบบนี้ว่ากันไป มันก็ต้องขึ้นอยู่กับเราแล้วว่า เราจะเชื่อว่ามันปลอดภัยอย่างที่เจ้าของ App ได้เคลมไว้มั้ย เพราะเราที่เป็นผู้ใช้ก็ไม่มีทางรู้อยู่แล้ว

แต่สิ่งที่ Telegram ทำให้เรามั่นใจมากขึ้นคือ การที่ตัว Client ของมันทั้งหมดเป็น Open Source ทั้งหมด และตัว API ที่ทำให้เราเข้าถึงระบบได้อย่างอิสระมากกว่าเจ้าอื่น ๆ ทำให้เราได้เห็นไส้ของโปรแกรม การทำงานของมันมากขึ้น เลยทำให้พวกที่เรียนมา หรือคนที่มานั่งแคะ ค่อนข้างมั่นใจว่า โปรแกรมที่เราเอามาลงในเครื่องของเรามัน Public และสามารถตรวจสอบได้จาก Programmer ทั่วโลก

ทำไมความพยายามของจีน และ รัสเชีย ถึงยัง อ่อนหัด อยู่ ?

จนถึงตอนนี้หลาย ๆ คนน่าจะเคยได้อ่าน Post หรือข้อความหลาย ๆ อย่างแล้วว่า มันทำไม่ได้ ขนาดรัสเชียยังไม่ได้ และ จีนที่ว่ามี The Great Firewall ก็ยังเอาไม่อยู่เลย ถ้าทำได้ก็ไปบอกพี่จีนสุดเยิป ๆ ด้วยละกันนะ

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

กลับไปที่คำถามว่า ทำไมถึงทำไม่ได้กันละ เราลองมาดูวิธีที่น่าจะใช้กันในการจำกัดการเข้าถึงกันก่อนดีกว่า วิธีแรกคือ การเปลี่ยนค่า DNS ซะเลย เราเคยเขียนเรื่องของ DNS ไว้ก่อนแล้ว ลองไปอ่านกันได้

สั้น ๆ คือ DNS จะทำหน้าที่เปลี่ยนจาก Domain Name (พวกชื่อเว็บที่เราพิมพ์ใน Web Browser) ให้กลายเป็น IP Address (ที่อยู่ที่เครื่องเข้าใจได้) วิธีการที่ใช้คือ เขาก็จะเปลี่ยนค่าใน DNS ใหม่ จากเดิมที่จะบอกให้ไป Server ที่ถูกต้อง ให้มันไปที่ Server ที่เขาต้องการแทน เช่น พวกเว็บที่แสดงหน้าที่บอกว่าผิดกฏหมายก็ว่ากันไป หรือ จะตีกลับ บอกว่าไม่มีที่อยู่นั้นเลยก็ได้เหมือนกัน ซึ่งแน่นอนว่า สามารถตัดจบด้วยการย้ายไปใช้ DNS สาธารณะอย่าง 1.1.1.1 ของ Cloudflare ก็คือ บาย ๆ แล้ว

นอกจากนั้น อีกวิธีคือ การปิดไม่ให้เข้าถึงที่ IP Address นั้น ๆ ได้เลย ก็คือ เวลาที่เราเรียกหน้าเว็บนั้นไป เขาก็ตั้งค่าไว้เลยว่า ถ้ามีใครที่อยากเข้าถึงที่อยู่นี้ เราก็จะไม่ให้ไปแค่นั้นเลย ดูเหมือนจะง่ายเนอะ

Cloud Computing คืออะไร ? (ฉบับมนุษย์อ่านได้ Dev อ่านดี)
ทุกวันนี้เราคงปฏิเสธไม่ได้แล้วว่า เราอยู่ในยุคที่เราใช้ข้อมูลในการตัดสินใจสิ่งต่าง ๆ มากขึ้นจะเห็นได้ว่า ทุกวันนี้เราเสพข้อมูลมากแค่ไหน

แต่ความเป็นจริงแล้ว App สักตัว หรือ เว็บใหญ่ ๆ เราไม่ได้ใช้กันอยู่ IP Address เดียว เขาอาจจะมีหลาย Server อยู่ ทำให้ IP Address เยอะมาก ก็เป็นได้ หรือ อย่าง Telegram เองที่บอกว่าแบนไปเป็นล้าน IP Address แล้ว แต่ก็ยังอยู่ได้ เพราะ Telegram เอาระบบของตัวเองขึ้น Cloud เราเคยเขียนเรื่อง Cloud ไว้แล้ว ลองไปอ่านกันได้ ด้านบนนี้

IP Address เป็นของที่มันมีจำกัดมากในโลกของเรา ตัวอย่างเช่น IPv4 ประกอบด้วยตัวเลข 32 Bits แปลว่า ทั้งโลกของเราจะมีเลข IP Address อยู่แค่ 2 ยกกำลัง 32 เท่านั้นทั้งโลก เราก็ต้องแบ่ง ๆ กันใช้ พร้อมกับ มีพวกหลักการอื่นเข้ามาจับช่วยพวก NAT (Network Address Translate) อะไรพวกนั้นด้วย แต่วันนี้เราจะไม่ได้เล่าเรื่อง NAT ก็ลองไปอ่านต่อกันได้

ใน Cloud Platform อย่างพวก GCP หรือของ Amazon และ เจ้าอื่น ๆ เขามี Public IP Address ถืออยู่ในมือเยอะมาก ๆ อย่าลืมว่า เขาก็ใหญ่พอตัวในโลกอินเตอร์เน็ตมากนะ แต่นั่นแหละว่า มันมีจำกัด แม้แต่ใน Cloud Platform ที่มีคนใช้เยอะมาก

Cloud Computing IP Floating
จากตัวอย่างนี้คือ เมื่อ Server Telegram 2 ถูกจำกัดการเข้าถึง เขาก็จะลบเครื่องนี้ออกไป และพอ Acme, Inc เข้ามาเปิดเครื่องก็ได้รับ IP Address 10.11.20.2 ที่โดนจำกัดการเข้าถึงไป ทำให้เครื่องของ Acme ที่ไม่ได้ทำอะไรเลย กลับโดนจำกัดการเข้าถึง และใช้งานไม่ได้จากที่นั้น ๆ ไป

ดังนั้น Public IP Address เหล่านี้ก็จะถูกวนกันใช้ไปเรื่อย ๆ เช่น Telegram เปิดการใช้งาน Cloud แล้วรัฐ หรือสักที่เกิดปิดการเข้าถึง IP Address นั้นขึ้นมา เขาก็ทำไม่ยาก ก็แค่ลบเครื่องนี้ทิ้ง และ สร้างเครื่องใหม่ ก็จะได้ Address ใหม่แล้ว สุดท้ายกว่าจะทำเรื่องขอ Block ไปใช้เวลาสักพัก มันก็จะเกิดใหม่ได้ในไม่กี่วินาทีเท่านั้นแหละ ทำให้มันฆ่าไม่ตายจนตอนนี้พี่จีนยังทำไม่สำเร็จในการ Block ส่วน รัสเชียนั้นก็ทำไม่ได้สักที (Block ไปมา อ้าว ไปโดนภาคธุรกิจซะเยอะ) จนยอมแพ้ซะแล้ว ฮ่า ๆ

ปัญหาของการทำแบบนี้คือ เมื่อมีคนอื่นวนมาใช้ IP Address ที่โดน Block ไปเพราะ Telegram ก็ทำให้เครื่องนั้นของเจ้าอื่นก็จะโดน Block ไปโดยปริยายนั่นเอง ทำให้เกิดปัญหามหาศาลมาก ๆ แน่นอนว่าคนด่าเละแน่นอน ถ้าทำจนมันเกิดความเสียหายเป็นวงกว้างขนาดนั้น

ทำให้ ถ้าอยากจะ Block ให้ได้ชัวร์ ๆ 100% จากผู้ให้บริการ Cloud เจ้านั้น ๆ คือ การที่สั่ง Block ทุก IP Address ที่มาจากผู้ให้บริการ Cloud ต่าง ๆ ไป ก็คือต้องทำทีละเจ้าด้วยนะ เช่น จะ Block Google Cloud แล้ว แต่ข้อมูลจากผู้ให้บริการ Cloud เจ้าอื่นเช่น AWS ก็ยังสามารถใช้งานได้ตามปกติเลยนะ แน่นอนว่า ในโลกนี้ มีผู้ให้บริการ Cloud เยอะมาก

การ Block ด้วยวิธีนี้ บอกเลยว่า ทำให้เกิดความเสียหายในวงกว้างมาก ๆ เพราะ ไม่ใช่แค่ Telegram ที่ใช้ Cloud ในภาคธุรกิจเองก็มีการใช้ Cloud กันเยอะมาก ๆ ดังนั้นการทำแบบนี้ ก็ส่งผลทำให้การนำเนินการทางธุรกิจเป็นอัมพาตได้

ที่เขาบอกกันว่าให้ใช้ VPN มันช่วยได้จริงเหรอ ?

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

มาที่คำถามของเรากันว่า ทำไมการใช้ VPN ถึงเป็นวิธีการ Workaround การปิดกั้นเหล่านี้ได้ นั่นเพราะ การปิดกั้น มันป้องกันไม่ให้เราเชื่อมต่อไปที่ปลายทางที่ห้ามไว้ การใช้ VPN คือ เหมือนเราฝากให้คนอื่นเป็นคนเข้า แล้ว Relay ข้อมูลมาให้เราแทนนั่นแหละ

ทำให้ไม่ว่าจะใช้วิธีการที่เราเล่าไปแบบไหน VPN ที่อยู่ในต่างประเทศ ก็ยังเป็นวิธีการ Workaround อยู่ดี แถม ถ้าเราไปใช้ VPN ที่อยู่ต่างประเทศ การที่ประเทศเราต้องการข้อมูลการเข้าถึง ไม่ใช่ว่าจะส่งหมายแล้วเอาได้เลยนะ แต่ต้องติดต่อไปที่ประเทศที่ VPN Server ตั้งอยู่ เพื่อขอความร่วมมืออีกต่างหาก คือ ยากเข้าไปใหญ่เลย

เว้นเสียแต่ว่า เขาจะเริ่ม Block VPN ที่ก็ต้องบอกอีกว่า อันนี้แหละสนุกละ เพราะ IP Address มันกระจายกันเยอะมาก ๆ มีผู้ให้บริการ VPN เยอะมาก ๆ ถ้าจะให้มานั่ง Block ทั้งหมด เราว่ไปหาทาง Block Telegram น่าจะง่ายกว่าเยอะ อย่างน้อยมันก็เป็นบริการจากเจ้าเดียวกัน นี่คนหมื่นเจ้าก็ไม่รู้ งานช้างมาก ๆ

จริง ๆ ที่รัสเชียประสบความล้มเหลวในการ Block ส่วนนึงก็เป็นเพราะ VPN ด้วย เพราะหลังจากที่รัสเชียพยายาม Block Telegram ออกไป การใช้ VPN กลับเพิ่มขึ้น และ จำนวนคนที่ใช้ Telegram ในรัสเชียกลับแทบไม่ลดลงเลย

สรุป

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