By Arnon Puitrakul - 20 ตุลาคม 2020
จากประเด็นเมื่อวาน (ของวันที่เขียน) มีความพยายามที่จะปิดการเข้าถึง Telegram ที่ตอนหลังอาจจะเขิล และออกมาบอกว่า อยากให้ Monitor เฉย ๆ อะไรก็ว่ากันไปนี่แหละ ทำให้วันนี้เราเองที่ก็ถือว่า น่าจะเป็นนักคอมพิวเตอร์ อยากที่จะออกมาเล่า เหตุผลในเชิง Technical เลย ว่า ทำไม Telegram ถึงมีความเป็นส่วนตัวสูง และ เคยมีความพยายามจากทั้งรัสเชีย และ จีน ในการปิดการเข้าถึง แต่ทำเท่าไหร่ก็ยังอ่อนหัด จนรัสเชียยอมไปแล้ว ทำไมมันเป็นเช่นกัน เราลองมาหาคำตอบพร้อม ๆ กัน
การเข้ารหัส (Encryption) ถือเป็นเรื่องพื้นฐานในการเชื่อมต่อระหว่างเครื่องคอมพิวเตอร์ในปัจจุบันไปแล้ว ไม่ว่าเราจะเชื่อมต่อไปที่ไหน เราต้องการ การเข้ารหัสทั้งนั้น ใน Telegram ก็เช่นกัน ผู้สร้าง Telegram เลือกใช้การเข้ารหัสที่ Advance ขึ้นอีกขั้นคือ การทำ End-to-End Encrpytion (E2EE)
ก่อนจะอธิบายถึง E2EE เราลองมาดูภาพที่เกิดขึ้นระหว่างการที่เราใช้ App Chat ต่าง ๆ กัน สิ่งทีเราเห็นคือ เราส่งข้อความ และ ข้อความมันก็จะวิ่งไปหาที่ปลายทางที่เราต้องการ แต่จริง ๆ แล้ว เราไม่ได้ทำการเชื่อมต่อกันตรง ๆ เราจะต้องเชื่อมต่อผ่านผู้ให้บริการอีกที เช่น Line หรือ Telegram ที่เราจะพูดถึงกันในวันนี้
สมัยก่อน ก่อนที่เราจะเข้ารหัสมันทุกอย่าง เราก็ใช้งานแบบไม่เข้ารหัสกันนี่แหละ ก็คือ เราก็ส่งข้อความ เช่น I love you xoxo ไปในระบบ ข้อความก็จะต้องวิ่งจากเครื่องของเราผ่านเครื่องแม่ข่ายต่าง ๆ มากมาย จนไปที่ Server ของผู้ให้บริการ และ ส่งต่อผ่านเครื่องแม่ข่ายอีกหลายเครื่องไปที่ปลายทาง
ความไม่รู้ว่ามันผ่านที่ไหนบ้างนี่แหละ เป็นวิธีที่ผู้ไม่หวังดี สามารถดักจับข้อมูลได้ อาจจะไปรอที่เครื่องแม่ข่ายที่นึง และ ดักข้อมูลที่วิ่งผ่านไปมา เมื่อเอามา Filter หน่อย ก็จะเห็นละ I love you xoxo ที่วิ่งผ่านไป เห็นอีกว่าจากใครถึงใคร ยันแก้ไขข้อมูลได้อีกอาจจะเปลี่ยนเป็นให้เลิกกันงี้
เมื่อเกิดเหตุการณ์แบบนี้ขึ้น นักพัฒนาก็แก้ปัญหา อะ งั้นเราจับเข้ารหัสระหว่างทางเลยละกัน ระหว่างทางเรากับผู้ให้บริการ และ จากผู้ให้บริการถึงปลายทาง ก็จะได้รับการเข้ารหัสทั้งหมด ทำให้ ระหว่างทาง ไม่มีใครสามารถที่จะแอบดู หรือเปลี่ยนแปลงข้อมูลของเราได้เลย แต่ปัญหามันก็เกิดอีกว่า ข้อความที่ควรจะเป็นความลับของเรา และ ปลายทาง กลับถูกผู้ให้บริการอ่านได้ซะงั้น ตัวอย่างเช่น ถ้าเกิดสมมุติว่า รัฐมีคดีอะไรบางอย่าง และ ส่งหมายศาลให้กับผู้ให้บริการ เขาก็ต้องให้ไปตามกฏหมาย ก็คือ เกม ใช่ม่ะ
ทำให้ในบาง App Chat ที่เน้นเรื่อง Privacy เป็นพิเศษเช่น Telegram เลือกที่จะใช้สิ่งที่เรียกว่า E2EE ในการแลกเปลี่ยนข้อมูลกล่าวคือ ข้อมูลทั้งหมดจะถูกเข้า และ ถอดรหัสได้ที่ต้นทาง และ ปลายทาง ได้เท่านั้น โดยที่ผู้ให้บริการไม่สามารถอ่านข้อความได้เลย หลักการทำงานของวิธีนี้คือ การใช้สิ่งที่เรียกว่า Asymmetric Encryption
การใช้งานใน E2EE ของ Telegram ทำให้ การสื่อสารระหว่างกัน ทำได้อย่างปลอดภัยมากขึ้นมาก ๆ แต่ความยากของการใช้งาน E2EE อยู่ที่การสนทนาเป็นกลุ่ม เพราะ หลักการเบื้องหลังคือ ในแต่ละคน ก็จะต้องมีกุญแจ 2 ดอก ถ้าแต่ละคน ต้องแลกกุญแจกัน ก็ไม่น่าจะใช่เรื่องที่ดีเท่าไหร่ ทำให้ Telegram ก็ต้องยอมลดความปลอดภัยลง เป็นการเชื่อมต่อแบบเข้ารหัสแบบเดิม แต่เลือกที่จะ แยกข้อมูลออกเป็นส่วน ๆ เหมือนกับ ฮอร์ครักซ์ ทำให้ถ้ามีคนอยากที่จะขอข้อมูล ก็ต้องไปทำเรื่องกับหลาย ๆ ประเทศ เพื่อจะเอาข้อมูลออกมาใช้ได้ ซึ่งมันยากมาก ๆ
ปกติแล้วเวลาเราไปใช้งาน App ต่าง ๆ ก็มักจะเคลมให้เราอ่านว่า เออ นี่นะ App ของเรามันปลอดภัยอย่างงั้นอย่างงี้ โดยใช้เทคนิคแบบนั้นแบบนี้ว่ากันไป มันก็ต้องขึ้นอยู่กับเราแล้วว่า เราจะเชื่อว่ามันปลอดภัยอย่างที่เจ้าของ App ได้เคลมไว้มั้ย เพราะเราที่เป็นผู้ใช้ก็ไม่มีทางรู้อยู่แล้ว
แต่สิ่งที่ Telegram ทำให้เรามั่นใจมากขึ้นคือ การที่ตัว Client ของมันทั้งหมดเป็น Open Source ทั้งหมด และตัว API ที่ทำให้เราเข้าถึงระบบได้อย่างอิสระมากกว่าเจ้าอื่น ๆ ทำให้เราได้เห็นไส้ของโปรแกรม การทำงานของมันมากขึ้น เลยทำให้พวกที่เรียนมา หรือคนที่มานั่งแคะ ค่อนข้างมั่นใจว่า โปรแกรมที่เราเอามาลงในเครื่องของเรามัน Public และสามารถตรวจสอบได้จาก Programmer ทั่วโลก
จนถึงตอนนี้หลาย ๆ คนน่าจะเคยได้อ่าน Post หรือข้อความหลาย ๆ อย่างแล้วว่า มันทำไม่ได้ ขนาดรัสเชียยังไม่ได้ และ จีนที่ว่ามี The Great Firewall ก็ยังเอาไม่อยู่เลย ถ้าทำได้ก็ไปบอกพี่จีนสุดเยิป ๆ ด้วยละกันนะ
กลับไปที่คำถามว่า ทำไมถึงทำไม่ได้กันละ เราลองมาดูวิธีที่น่าจะใช้กันในการจำกัดการเข้าถึงกันก่อนดีกว่า วิธีแรกคือ การเปลี่ยนค่า DNS ซะเลย เราเคยเขียนเรื่องของ DNS ไว้ก่อนแล้ว ลองไปอ่านกันได้
สั้น ๆ คือ DNS จะทำหน้าที่เปลี่ยนจาก Domain Name (พวกชื่อเว็บที่เราพิมพ์ใน Web Browser) ให้กลายเป็น IP Address (ที่อยู่ที่เครื่องเข้าใจได้) วิธีการที่ใช้คือ เขาก็จะเปลี่ยนค่าใน DNS ใหม่ จากเดิมที่จะบอกให้ไป Server ที่ถูกต้อง ให้มันไปที่ Server ที่เขาต้องการแทน เช่น พวกเว็บที่แสดงหน้าที่บอกว่าผิดกฏหมายก็ว่ากันไป หรือ จะตีกลับ บอกว่าไม่มีที่อยู่นั้นเลยก็ได้เหมือนกัน ซึ่งแน่นอนว่า สามารถตัดจบด้วยการย้ายไปใช้ DNS สาธารณะอย่าง 1.1.1.1 ของ Cloudflare ก็คือ บาย ๆ แล้ว
นอกจากนั้น อีกวิธีคือ การปิดไม่ให้เข้าถึงที่ IP Address นั้น ๆ ได้เลย ก็คือ เวลาที่เราเรียกหน้าเว็บนั้นไป เขาก็ตั้งค่าไว้เลยว่า ถ้ามีใครที่อยากเข้าถึงที่อยู่นี้ เราก็จะไม่ให้ไปแค่นั้นเลย ดูเหมือนจะง่ายเนอะ
แต่ความเป็นจริงแล้ว 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 ที่มีคนใช้เยอะมาก
ดังนั้น 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 ถึงเป็นวิธีการ 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 จะปลอดภัยแค่ไหน เวลาเราใช้งานจริง ๆ ก็อย่าเปิดเผยตัวตน เปลี่ยนชื่อ และ ปกปิดข้อมูลของเราให้ดี เพราะสุดท้าย ปลอดภัยแค่ไหน ก็แพ้นักแคป สวัสดี
หลังจากเมื่อหลายอาทิตย์ก่อน Apple ออก Mac รัว ๆ ตั้งแต่ Mac Mini, iMac และ Macbook Pro ที่ใช้ M4 กันไปแล้ว มีหลายคนถามเราเข้ามาว่า เราควรจะเลือก M4 ตัวไหนดีถึงจะเหมาะกับเรา...
จากตอนก่อน เราเล่าเรื่องการ Host Website จากบ้านของเราอย่างปลอดภัยด้วย Cloudflare Tunnel ไปแล้ว แต่ Product ด้าน Zero-Trust ของนางยังไม่หมด วันนี้เราจะมาเล่าอีกหนึ่งขาที่จะช่วยปกป้อง Infrastructure และ Application ต่าง ๆ ของเราด้วย Cloudflare Access กัน...
ทุกคนเคยได้ยินคำว่า Mainframe Computer กันมั้ย เคยสงสัยกันมั้ยว่า มันต่างจากเครื่องคอมพิวเตอร์ที่เราใช้งานกันทั่ว ๆ ไปอย่างไรละ และ Mainframe ยังจำเป็นอยู่มั้ย มันได้ตายจากโลกนี้ไปหรือยัง วันนี้เรามาหาคำตอบไปด้วยกันเลย...
เคยมั้ยเวลา Deploy โปรแกรมสักตัว เราจะต้องมานั่ง Provision Infrastructure ไหนจะ VM และ Settings อื่น ๆ อีกมากมาย มันจะดีกว่ามั้ยถ้าเรามีเครื่องมือบางอย่างที่จะ Automate งานที่น่าเบื่อเหล่านี้ออกไป และลดความผิดพลาดที่อาจจะเกิดขึ้น วันนี้เราจะพาทุกคนมาทำความรู้จักกับ Infrastructure as Code กัน...