จะสร้างแอพส่งข้อความที่ปลอดภัยจริงๆ คล้ายกับสัญญาณได้อย่างไร
เผยแพร่แล้ว: 2021-10-05ความเป็นส่วนตัวและความปลอดภัยของการสื่อสารออนไลน์เป็นประเด็นร้อนในทุกวันนี้ และด้วยเหตุผลบางประการ เนื่องจาก เรารู้วิธีสร้างแอปที่เข้ารหัส เราจึงอยากแบ่งปันประสบการณ์และเสนอเคล็ดลับในบทความนี้ เราจะพูดถึงสถานะปัจจุบันของอุตสาหกรรม วิธีการเข้ารหัส และความเสี่ยงที่อาจเกิดขึ้น สำหรับการประมาณราคา ให้เลื่อนไปที่ส่วนท้ายของบทความ
เกิดอะไรขึ้น?
ในช่วงต้นปี 2021 WhatsApp แอพ Messenger ที่ได้รับความนิยมมากที่สุดในโลก ได้เปิดตัวข้อกำหนดในการให้บริการใหม่ พวกเขาทำให้เกิดความโกลาหล ส่วนหนึ่งเป็นเพราะความสับสน หลังจากนั้น Elon Musk ซีอีโอของ Tesla ซึ่งเป็นนักวิจารณ์ที่มีชื่อเสียงของ Facebook (WhatsApp เป็นเจ้าของโดย Facebook) แนะนำให้ผู้ติดตาม Twitter 42.5 ล้านคนของเขาเปลี่ยนไปใช้ Signal ซึ่งเป็นผู้ส่งสารที่ไม่ค่อยมีคนรู้จักมาก่อน
ใช้สัญญาณ
– อีลอน มัสก์ (@elonmusk) 7 มกราคม พ.ศ. 2564
ภายหลังทวีตนี้ Signal ซึ่งเป็นระบบเข้ารหัส WhatsApp เองก็ใช้ โดยวิธีการที่เห็นผู้ใช้เพิ่มขึ้น กระแสนี้มีขนาดใหญ่มากจนเซิร์ฟเวอร์ประสบปัญหาในการรับมือ นักพัฒนาของ Signal สามารถจัดการกับสถานการณ์ได้ แต่แสดงให้เห็นว่าความต้องการระบบการส่งข้อความที่ปลอดภัยกำลังเพิ่มขึ้น ตอนนี้ ทุกคนต้องการทราบวิธีสร้างแอปพลิเคชันอย่าง Signal ซึ่งนำเราไปสู่บทความนี้
การมีโปรแกรมส่งข้อความโต้ตอบแบบทันทีที่ปลอดภัยหมายความว่าอย่างไร
แอพส่งข้อความโต้ตอบแบบทันทีส่วนใหญ่ในปัจจุบันใช้การเข้ารหัสแบบ end-to-end มันคืออะไร? นี่คือไดอะแกรมของสถาปัตยกรรมแอปพลิเคชันแชทเป็นตัวอย่าง:
พูดง่ายๆ ว่าผู้ส่งสารทั่วไปมีสามส่วนหลักที่เชื่อมต่อถึงกัน:
อุปกรณ์ของผู้ส่ง
เซิฟเวอร์
อุปกรณ์ของผู้รับ
ข้อความถูกส่งโดยผู้ส่งไปยังผู้รับผ่านทางเซิร์ฟเวอร์ หากไม่มีการเข้ารหัส ข้อความนี้จะถูกส่งเป็นข้อความธรรมดา ดังนั้นจึงสามารถอ่านได้โดยใครก็ตามที่เข้าถึงได้ตลอดทาง ด้วยการเข้ารหัส ข้อความจะถูกแปลงจากข้อความธรรมดาเป็นข้อความเข้ารหัส — เข้ารหัสด้วยกุญแจ — สำหรับการถ่ายโอนแล้วแปลงกลับ (ถอดรหัส) บนอุปกรณ์ของผู้รับ ด้วยคีย์ที่จับคู่
การเข้ารหัสจากต้นทาง ถึง ปลายทาง หมายความว่าคีย์เข้ารหัสจะถูกเก็บไว้ที่ส่วนท้าย กล่าวคือ บนอุปกรณ์ของผู้ใช้ แทนที่จะเป็นบนเซิร์ฟเวอร์ ทำให้ ไม่มีใครยกเว้นผู้ส่งและผู้รับสามารถอ่านข้อความ ได้ แม้แต่ผู้ให้บริการที่เป็นเจ้าของเซิร์ฟเวอร์ก็ไม่สามารถเข้าถึงได้ ในการแฮ็กข้อความเหล่านี้ แฮ็กเกอร์จำเป็นต้องเข้าถึงอุปกรณ์ของผู้ใช้ เนื่องจากการแฮ็กเซิร์ฟเวอร์ของผู้ให้บริการนั้นมีประโยชน์เพียงเล็กน้อย
จุดอ่อนของการเข้ารหัสแบบ end-to-end คือความอ่อนไหวต่อการ โจมตีที่ เรียกว่า man-in-the-middle (MITM) แฮ็กเกอร์ MITM ที่มีทักษะสามารถแฮ็กคีย์สาธารณะที่จัดเก็บไว้ในเซิร์ฟเวอร์และกำหนดค่าระบบให้รู้จักแฮ็กเกอร์ว่าเป็นผู้รับที่ถูกต้อง ทำให้แฮ็กเกอร์สามารถดักฟังการสนทนาและเข้าร่วมแทนผู้รับที่ต้องการได้
เพื่อต่อสู้กับการโจมตี MITM นักพัฒนา Signal ได้อัปเกรดการเข้ารหัสแบบ end-to-end ของโปรโตคอลเพิ่มเติมด้วย Double Ratchet Algorithm อัลกอริทึมนี้สร้างคีย์เซสชันเพิ่มเติมจากคีย์สาธารณะและคีย์ส่วนตัวที่สร้างขึ้นเมื่อผู้ใช้ติดตั้งแอป คีย์เซสชันถูกสร้างขึ้นสำหรับแต่ละข้อความที่ส่ง และจะทำลายตัวเองเมื่อเซสชันเสร็จสิ้น (เช่น เมื่อได้รับข้อความ) ทำให้ แฮกเกอร์ไม่สามารถถอดรหัสข้อความทั้งหมดได้หากพวกเขาจัดการเพื่อให้ได้คีย์สำหรับเซสชันเดียว
WhatsApp ใช้การเข้ารหัสตั้งแต่ต้นทางถึงปลายทางสำหรับข้อความทั้งหมด อันที่จริงมันใช้โปรโตคอลการเข้ารหัสของ Signal แล้วตอนนี้มันมีปัญหาอะไร?
แนวทางต่างๆ ในการเข้ารหัสตั้งแต่ต้นทางถึงปลายทาง
เป็นความจริงที่ WhatsApp ไม่สามารถสอดแนมเนื้อหาข้อความของคุณและไม่สามารถฟังการโทรในแอปของคุณได้ อย่างไรก็ตาม เวอร์ชันของโปรโตคอลการเข้ารหัสของ Signal ที่ WhatsApp ใช้ จะเข้ารหัส เฉพาะ เนื้อหาของข้อความ ซึ่งหมายความว่า WhatsApp และโดยการขยาย Facebook และใครก็ตามที่พวกเขาตัดสินใจที่จะแบ่งปันข้อมูลด้วย สามารถเห็นได้ว่าคุณกำลังพูดกับใคร เมื่อใด และจากที่ใด ข้อมูลเมตา นี้ สามารถเปิดเผยข้อมูลส่วนบุคคลเกี่ยว กับผู้เข้าร่วมทั้งหมดในการสนทนาได้
ในเวลาเดียวกัน แอป Signal ใช้โปรโตคอลที่อัปเดตซึ่งเข้ารหัสข้อมูลเมตาด้วย และ ไม่มีใครแม้แต่เจ้าของแอปก็สามารถถอดรหัสได้โดยไม่ต้องเข้าถึงอุปกรณ์ของผู้ใช้ โดยตรง
นอกจากนี้ ตามนโยบายความเป็นส่วนตัวของ Signal แทบ ไม่มีการจัดเก็บข้อมูลเมตาบนเซิร์ฟเวอร์ของตนอย่างถาวร ตราบเท่าที่ต้องใช้เวลาในการรับข้อความ จากนั้นทุกอย่างยกเว้นวันที่เข้าสู่ระบบครั้งล่าสุดของผู้ใช้จะถูกลบ
แอปผู้ส่งสารอื่นเพียงแอปเดียวที่ทำสิ่งนี้คือโทรเลข อย่างไรก็ตาม ใน Telegram การเข้ารหัสแบบ end-to-end จะใช้เฉพาะในโหมดลับเท่านั้น ไม่ใช่กับการแชททั้งหมดตามค่าเริ่มต้น ข้อความทั่วไปไม่ได้รับการเข้ารหัสอย่างดีบน Telegram อย่างน้อย Telegram ปฏิเสธที่จะแบ่งปันข้อมูลดังกล่าวกับใครก็ตาม ไม่ว่าจะเป็นรัฐบาลหรือผู้โฆษณา
ทุกวันนี้ ความปลอดภัยของแอพส่งข้อความเป็นหัวข้อใหญ่ — ผู้ส่งสารไม่สามารถหรือไม่เต็มใจที่จะแบ่งปันข้อมูลของผู้ใช้กับรัฐบาลมักจะพบกับข้อจำกัดและการแบน ตัวอย่างเช่น โทรเลขถูกห้ามในรัสเซีย บ้านเกิดของผู้สร้าง สหรัฐอาหรับเอมิเรตส์ได้สั่งห้ามบริการ VoIP ที่ไม่ใช่ของรัฐทั้งหมด เพื่อตอบสนอง ผู้คนจากทุกที่ต้องการวิธีการสื่อสารที่ปลอดภัยยิ่งขึ้น และ ตลาดสำหรับแอปรับส่งข้อความทางมือถือที่ปลอดภัยกำลังเติบโตขึ้น
ดังนั้นจะสร้างผู้ส่งสารที่ปลอดภัยได้อย่างไร?
คนส่วนใหญ่ใช้ Messenger อย่างน้อยหนึ่งตัว อาจมีหลายตัว และชุดคุณสมบัติพื้นฐานสำหรับแอพ Messenger แทบจะไม่ทำให้คุณประหลาดใจ ดังนั้นเราจะสรุปสั้น ๆ ในส่วนนี้ นี่คือตารางคุณสมบัติสำหรับโซลูชันการแชทที่ปลอดภัย :
คุณสมบัติ | คำอธิบาย |
---|---|
การเริ่มต้นใช้งาน | แนะนำแอปของคุณสั้นๆ ยิ่งสั้นยิ่งดี แต่ทำให้เข้าใจ |
ลงทะเบียนเข้าสู่ระบบ | บัญชีผู้ส่งสารมักจะผูกติดอยู่กับหมายเลขโทรศัพท์ |
โพรไฟล์ผู้ใช้ | โปรไฟล์จัดเก็บข้อมูลส่วนบุคคลของผู้ใช้และลิงก์ไปยังคุณสมบัติที่สำคัญ เช่น รายชื่อติดต่อ การตั้งค่า และคำถามที่พบบ่อย |
การตั้งค่า | อนุญาตให้ผู้ใช้ปรับผู้ส่งสารเพื่อความสะดวก |
การแจ้งเตือน | ในแอพ Messenger จำเป็นต้องมีระบบที่เชื่อถือได้สำหรับการแจ้งเตือนทันที |
แชทข้อความ | จำเป็นต้องมีแอพส่งข้อความที่ทันสมัยเพื่อรองรับทั้งการแชทแบบตัวต่อตัวและการแชทเป็นกลุ่ม |
การถ่ายโอนไฟล์ | ผู้ใช้ต้องสามารถแลกเปลี่ยนข้อความ แชร์รูปภาพและเอกสารได้ |
แชท/โทรด้วยเสียง | คุณลักษณะ VoIP มีความสำคัญเท่ากับการส่งข้อความในปัจจุบัน เสียงที่มีคุณภาพต้องการการเชื่อมต่อที่เสถียรแม้ความเร็วอินเทอร์เน็ตจะช้า |
ข้อความทำลายตนเอง | แม้จะมีโปรโตคอล Signal หากมีคนจับโทรศัพท์ของผู้ใช้ ก็สามารถเห็นข้อความก่อนหน้าทั้งหมดได้ เว้นแต่ผู้ใช้จะลบทิ้ง คุณอาจเพิ่มตัวเลือกให้ผู้ใช้ตั้งเวลาเพื่อทำลายข้อความและ/หรือไฟล์สื่อ |
ซิงค์ | คนส่วนใหญ่มีอุปกรณ์มากกว่าหนึ่งเครื่องที่ติดตั้งแอปสื่อสารไว้ เพื่อให้ผู้ใช้สามารถสลับระหว่างอุปกรณ์ได้อย่างราบรื่นตามที่เห็นสมควร คุณจะต้องจัดเตรียมคุณลักษณะการซิงค์ |
การยืนยันตัวตนแบบสองขั้นตอน | เพื่อปกป้องข้อมูลของผู้ใช้ได้ดียิ่งขึ้นในกรณีที่อุปกรณ์ถูกขโมย ให้เสนอการรับรองความถูกต้องแบบสองขั้นตอนผ่านลายนิ้วมือ รหัสผ่าน รหัสพิน หรือรหัสยืนยันหรือลิงก์ |
หากคุณต้องการสร้างแอพส่งข้อความแบบ peer-to-peer ที่โดดเด่นกว่าคนอื่น ให้พิจารณาคุณสมบัติเหล่านี้:
สติ๊กเกอร์และ GIF ผู้ส่งสารอื่น ๆ ทุกวันนี้รวมบริการ GIF ยอดนิยม Giphy เข้ากับอินเทอร์เฟซเพื่อเสริมอีโมติคอน สติ๊กเกอร์ได้รับความนิยมเมื่อ Telegram เริ่มให้บริการฟรี (ซึ่งต่างจาก Viber เช่น ที่มีสติกเกอร์ฟรีเพียงบางตัวเท่านั้น)
แชทลับ/ส่วนตัว ไม่ว่าคุณจะเข้ารหัสข้อมูลเมตาของผู้ใช้หรือไม่ก็ตาม ในความเป็นจริงที่มีพายุรุนแรงในปัจจุบัน แอปของคุณอาจกลายเป็นจุดขายของการแชทที่หายไปหรือล็อกได้ ตัวอย่างเช่น Telegram เสนอการแชทลับที่จะหายไปโดยอัตโนมัติหากคุณออกจากระบบ Telegram บนอุปกรณ์ของคุณ แชทเหล่านี้ไม่ได้จัดเก็บไว้ในคลาวด์เซิร์ฟเวอร์ของ Telegram ดังนั้นจึงไม่สามารถสำรองหรือซิงค์ได้ แม้ว่าคุณจะเข้าสู่ระบบบนอุปกรณ์มากกว่าหนึ่งเครื่องก็ตาม
วิดีโอแชท ในปี 2020 ผู้คนจำนวนมากถูกบังคับให้ทำงานทางไกลอันเนื่องมาจากการแพร่ระบาด เครื่องมือการประชุมทางวิดีโอได้รับความนิยมอย่างมาก และหลายคนคร่ำครวญถึงการขาดวิดีโอคอล — แบบตัวต่อตัวและแบบกลุ่ม — ใน Messenger ยอดนิยมที่มีอยู่ มันไม่ได้หมายความว่าเป็นคุณสมบัติที่ต้องมี แต่จะเป็นที่นิยมในหมู่ผู้ใช้อย่างแน่นอน
วิธีรักษาความปลอดภัยแอพส่งข้อความ
ด้านหลังเป็นที่ที่เวทมนตร์เกิดขึ้นในผู้ส่งสาร ผู้เชี่ยวชาญแบ็กเอนด์มีหน้าที่รับผิดชอบต่อความปลอดภัยและความน่าเชื่อถือของแอปแชท เนื่องจากพวกเขาคือผู้รู้วิธีเข้ารหัสข้อความ
มีหลายวิธี ในการใช้การเข้ารหัสแบบ end-to-end และ ทำให้แอปการสื่อสารมีความปลอดภัย โดยปกติ ข้อความที่เข้ารหัสจะถูกเก็บไว้ในเซิร์ฟเวอร์ของ Messenger — เซิร์ฟเวอร์คลาวด์มีความปลอดภัยมากกว่าและดังนั้นจึงแนะนำเพื่อจุดประสงค์นี้ — และคีย์ถอดรหัสจะใช้ได้เฉพาะจากอุปกรณ์ของผู้ใช้เท่านั้น เพื่อหลีกเลี่ยงการละเมิดข้อมูลในกรณีที่เซิร์ฟเวอร์ถูกแฮ็ก
นอกจากนี้ยังสามารถละทิ้งข้อความในเซิร์ฟเวอร์ของคุณโดยสิ้นเชิงและเก็บไว้ในอุปกรณ์ของผู้ใช้ แต่ นั่นหมายความว่าผู้ใช้ของคุณจะไม่สามารถกู้คืนประวัติข้อความได้ ในกรณีที่อุปกรณ์ที่ลงชื่อเข้าใช้สูญหายหรือลบแอป การซิงค์ข้อความระหว่างอุปกรณ์จะเป็นไปไม่ได้เช่นกัน
ในการสร้างแอปส่งข้อความที่ปลอดภัย เช่น Signal คุณสามารถ ใช้ API การส่งข้อความที่เข้ารหัสจาก Signal เอง ได้ โปรโตคอลการเข้ารหัส โอเพนซอร์ซ ของ Signal เป็นที่นิยมมากที่สุดในหมู่นักพัฒนาที่สร้าง Messenger เนื่องจากมีการตรวจสอบและตรวจสอบโดยเพื่อนอย่างต่อเนื่อง ในขณะที่เขียน ผู้ส่งสารต่อไปนี้ใช้โปรโตคอลของ Signal เพื่อเข้ารหัสเนื้อหาของข้อความ:
- Facebook Messenger (แชทลับเท่านั้น)
- Skype (การสนทนาส่วนตัวเท่านั้น)
- Google Messages สำหรับ Android (SMS)
Telegram ใช้อัลกอริธึมที่ใช้การเข้ารหัส AES แบบสมมาตร 256 บิตซึ่งเรียกว่า MTProto สำหรับการแชทลับ อัลกอริธึมนี้เป็นโอเพ่นซอร์ส ซึ่ง Telegram ได้รับการวิพากษ์วิจารณ์อย่างกว้างขวาง
ค่าใช้จ่ายในการสร้างแอพส่งข้อความที่ปลอดภัย
ต้นทุนในการสร้างแอพขึ้นอยู่กับ เวลาที่จำเป็นสำหรับการพัฒนาเป็น อย่างมาก เท่าที่จำนวนของคุณสมบัติดำเนินไป ผู้ส่งสารดูเหมือนจะไม่ซับซ้อนเกินไป อย่างไรก็ตาม แบ็คเอนด์เพียงอย่างเดียวสำหรับแอปรับส่งข้อความที่มีการเข้ารหัสอย่างดีอาจใช้เวลาประมาณ 520 ชั่วโมงในการสร้าง
ตัวเลือกภาษาโปรแกรมปกติสำหรับแบ็คเอนด์ของ Messenger คือ Elixir หรือ Erlang — Ruby on Rails ไม่ใช่ตัวเลือกที่ดีสำหรับข้อมูลจำนวนมากในรูปแบบของข้อความ สื่อ และการโทรด้วยเสียง/วิดีโอ WhatsApp ใช้ Erlang ในขณะที่ Elixir ถูกใช้โดย Discord
ที่ Mind Studios เราได้พัฒนาแอพ Messenger ที่มีแบ็กเอนด์ที่ใช้ Elixir อย่างไรก็ตาม Elixir นั้นมีพื้นฐานมาจาก Erlang ที่มี Ruby ผสมอยู่ ดังนั้นนักพัฒนา Elixir ที่มีประสบการณ์จึงสามารถเขียนโค้ดใน Erlang ได้เช่นกัน
ต่อไปนี้คือสิ่งที่เราต้องใช้เวลาใน การพัฒนาแอปพลิเคชันการส่งข้อความที่ปลอดภัย :
การวิเคราะห์ธุรกิจและการสร้างข้อกำหนด — 96+ ชั่วโมง
การออกแบบ UI/UX — 168+ ชั่วโมง
แอพมือถือฝั่งไคลเอ็นต์ iOS — 450+ ชั่วโมง สำหรับ MVP พร้อมคุณสมบัติที่สำคัญที่สุด
การพัฒนาแบ็กเอนด์ — 520+ ชั่วโมง
การทดสอบแอป iOS — ~ 240 ชั่วโมง
การพัฒนา Android ใช้เวลาน้อยกว่าการพัฒนา iOS เล็กน้อย แต่การทดสอบใช้เวลานานกว่าเนื่องจากมีอุปกรณ์หลากหลายมากขึ้น
ด้วยการประมาณการเวลาคร่าวๆ นี้ ค่าใช้จ่ายในการสร้างแอปพลิเคชันแชทที่ปลอดภัยจริงๆ จะเริ่มต้นที่ 51,590 ดอลลาร์สหรัฐฯ และจะเพิ่มขึ้นด้วยคุณสมบัติพิเศษ
บทสรุป
ผู้ส่งสารที่ปลอดภัยมีความสำคัญเป็นพิเศษ และความต้องการสำหรับพวกเขาสูงในวันนี้และจะสูงขึ้นในวันพรุ่งนี้ แต่การแข่งขันก็เช่นกัน ไม่ใช่ทุกบริษัทที่สามารถสร้างแอพส่งข้อความที่เข้ารหัสได้ ในการพัฒนาแอปส่งข้อความโต้ตอบแบบทันทีที่ปลอดภัย เช่น Signal คุณจะต้องให้นักพัฒนาที่มีประสบการณ์เฉพาะด้าน นี้
คุณจะต้องตามให้ทันกับผู้นำในอุตสาหกรรมในด้านการออกแบบ แอป Signal เรียบง่ายและไม่ขึ้นชื่อในเรื่องความเป็นธรรมชาติ แต่ชนะใจผู้ใช้ที่ใส่ใจความเป็นส่วนตัวมากกว่าเสียงกริ่งและนกหวีด ในทางกลับกัน WhatsApp และ Telegram ดูสวยงามและใช้งานง่ายเป็นพิเศษ นอกจากจะปลอดภัยแล้ว (แม้ว่าความปลอดภัยอาจไม่อยู่ในระดับเดียวกับ Signal แต่ก็ยังน่าประทับใจ) แอปที่คุณกำหนดเองจะต้องมีทั้งความปลอดภัยและใช้งานง่าย เพื่อจะฉายแสงเจิดจ้าในช่องนี้ การปรับสมดุลข้อกำหนดเหล่านี้ไม่ใช่เรื่องเล็ก แต่กับทีมที่ใช่ก็เป็นไปได้