จากนักแปลและ TL;DR
-
TL; DR:
ดูเหมือนว่า VoLTE ได้รับการปกป้องที่แย่กว่าไคลเอนต์ Wi-Fi แรกที่มี WEP การคำนวณผิดทางสถาปัตยกรรมโดยเฉพาะที่ช่วยให้คุณสามารถ XOR การรับส่งข้อมูลเล็กน้อยและกู้คืนคีย์ได้ การโจมตีอาจเกิดขึ้นได้หากคุณอยู่ใกล้ผู้โทรและเขาโทรบ่อยๆ
-
ขอบคุณสำหรับคำแนะนำและ TL; DR
คลูโคนิน -
นักวิจัยได้สร้างแอปเพื่อตรวจสอบว่าผู้ให้บริการของคุณมีช่องโหว่หรือไม่ อ่านเพิ่มเติม
ที่นี่ . แบ่งปันผลลัพธ์ในความคิดเห็น VoLTE ถูกปิดใช้งานในภูมิภาคของฉันบน Megafon
เกี่ยวกับผู้แต่ง
แมทธิว กรีน.
ฉันเป็นนักเข้ารหัสและเป็นศาสตราจารย์ที่มหาวิทยาลัย Johns Hopkins ฉันได้ออกแบบและวิเคราะห์ระบบการเข้ารหัสที่ใช้ในเครือข่ายไร้สาย ระบบการชำระเงิน และแพลตฟอร์มความปลอดภัยเนื้อหาดิจิทัล ในการวิจัยของฉัน ฉันดูวิธีการต่างๆ ในการใช้การเข้ารหัสเพื่อปรับปรุงความเป็นส่วนตัวของผู้ใช้
เป็นเวลานานแล้วที่ฉันเขียนรูปแบบการโพสต์
แต่วันนี้มาเจอ.
ดังนั้น ช่องโหว่ด้านการเข้ารหัสที่ร้ายแรงอาจแพร่กระจายไปทั่วโลก บางทีอาจเป็นเพียงเพื่อให้รัฐบาลใช้ประโยชน์เท่านั้น ก่อนที่นักวิจัยคนใดจะสังเกตเห็น แต่ในบางครั้ง ก็มีข้อยกเว้น และการโจมตีในวันนี้ก็เป็นหนึ่งในนั้น
ผู้เขียน
เริ่มต้นด้วยการเที่ยวชมประวัติศาสตร์โดยย่อ
LTE และ VoLTE คืออะไร
พื้นฐานของมาตรฐานระบบโทรศัพท์เซลลูล่าร์สมัยใหม่ของเรามีการวางมาตรฐานไว้ในยุโรปในยุค 80
เนื่องจากการส่งข้อมูลมีความสำคัญมากขึ้นในการสื่อสารเคลื่อนที่ มาตรฐาน Long Term Evolution (LTE) จึงได้รับการพัฒนาเพื่อปรับปรุงการสื่อสารประเภทนี้ LTE ขึ้นอยู่กับกลุ่มมาตรฐานเก่าเช่น GSM
แน่นอนว่า ประวัติศาสตร์บอกเราว่าเมื่อมีแบนด์วิธ (IP) เพียงพอ แนวคิดเช่น “เสียง” และ “ข้อมูล” จะเริ่มเบลอ เช่นเดียวกับโปรโตคอลเซลลูล่าร์สมัยใหม่ เพื่อให้การเปลี่ยนแปลงนี้ราบรื่นยิ่งขึ้น มาตรฐาน LTE จึงได้กำหนดไว้
เช่นเดียวกับ VoIP มาตรฐาน VoLTE ใช้โปรโตคอล IP ยอดนิยมสองโปรโตคอล: Session Initiation Protocol (
โอเค มันเกี่ยวอะไรกับการเข้ารหัสล่ะ?
LTE เช่น
(อย่างไรก็ตาม ความจริงที่ว่าการเชื่อมต่อ VoLTE สามารถเกิดขึ้นได้โดยตรงระหว่างไคลเอนต์บนเครือข่ายผู้ให้บริการที่แตกต่างกัน หมายความว่าโปรโตคอล VoLTE นั้นมีโปรโตคอลการเข้ารหัสเพิ่มเติมและเป็นทางเลือกบางอย่างที่สามารถเกิดขึ้นได้ที่เลเยอร์เครือข่ายที่สูงกว่า สิ่งนี้ไม่เกี่ยวข้องกับบทความปัจจุบัน ยกเว้นความจริงที่ว่า พวกเขาสามารถทำลายทุกสิ่งได้ (เราจะพูดถึงพวกเขาสั้น ๆ ต่อไป)
ในอดีตมีการเข้ารหัสในระบบ GSM
เริ่มจากการเข้ารหัสกันก่อน สมมติว่าการสร้างคีย์ได้เกิดขึ้นแล้ว - และเราจะพูดถึงเรื่องนี้ในอีกสักครู่ - จากนั้นแต่ละแพ็คเก็ตของข้อมูลจะถูกเข้ารหัสโดยใช้การเข้ารหัสสตรีมโดยใช้สิ่งที่เรียกว่า "EEA" (ซึ่งในทางปฏิบัติสามารถใช้งานได้โดยใช้สิ่งต่าง ๆ เช่น AES ) โดยพื้นฐานแล้วกลไกการเข้ารหัสที่นี่คือ
อัลกอริธึมการเข้ารหัสหลักสำหรับแพ็กเก็ต VoLTE (ที่มา:
เนื่องจากอัลกอริธึมการเข้ารหัส (EEA) สามารถนำไปใช้ได้โดยใช้การเข้ารหัสที่รัดกุมเช่น AES จึงไม่น่าเป็นไปได้ที่จะมีการโจมตีโดยตรงต่อตัวเข้ารหัสเช่นนี้
โดยเฉพาะอย่างยิ่ง: มาตรฐาน LTE ใช้รหัสสตรีม (ไม่ได้รับการรับรองความถูกต้อง) พร้อมโหมดที่จะมีความเสี่ยงอย่างมากหากตัวนับและอินพุตอื่น ๆ เช่น "ผู้ถือ" และ "ทิศทาง" ถูกนำมาใช้ซ้ำ ในสำนวนสมัยใหม่ แนวคิดนี้คือ "การโจมตีแบบไม่ใช้ซ้ำ" แต่ความเสี่ยงที่อาจเกิดขึ้นในที่นี้ไม่ใช่เรื่องสมัยใหม่ พวกมันมีชื่อเสียงและเก่าแก่ ย้อนกลับไปในสมัยของโลหะแกลมและแม้แต่ดิสโก้
การโจมตีเมื่อไม่ใช้ซ้ำในโหมด CTR ยังคงมีอยู่แม้ว่าจะทราบพิษแล้วก็ตาม
เพื่อความเป็นธรรม มาตรฐาน LTE ระบุว่า "โปรดอย่าใช้มิเตอร์เหล่านี้ซ้ำ" แต่มาตรฐาน LTE มีความยาวประมาณ 7000 หน้า และไม่ว่าในกรณีใด มันก็เหมือนกับการขอร้องเด็กๆ ไม่ให้เล่นปืน พวกเขาจะหลีกเลี่ยงไม่ได้และสิ่งเลวร้ายจะเกิดขึ้น ปืนยิงในกรณีนี้คือการโจมตีแบบใช้คีย์สตรีมซ้ำ โดยข้อความลับสองข้อความที่แตกต่างกัน XOR ไบต์คีย์สตรีมเดียวกัน เป็นที่ทราบกันดีว่าสิ่งนี้
ReVoLTE คืออะไร?
การโจมตี ReVoLTE แสดงให้เห็นว่าในทางปฏิบัติ การออกแบบการเข้ารหัสที่มีช่องโหว่สูงนี้ถูกใช้ในทางที่ผิดโดยฮาร์ดแวร์ในโลกแห่งความเป็นจริง โดยเฉพาะอย่างยิ่ง ผู้เขียนวิเคราะห์การโทร VoLTE จริงที่ทำโดยใช้อุปกรณ์เชิงพาณิชย์ และแสดงให้เห็นว่าพวกเขาสามารถใช้สิ่งที่เรียกว่า "การโจมตีการติดตั้งคีย์ใหม่" (เครดิตมากสำหรับการค้นหาปัญหานี้ไปที่
ฉันขอแสดงให้คุณเห็นโดยย่อถึงแก่นแท้ของการโจมตีแม้ว่าคุณจะควรดูก็ตาม
อาจมีคนสันนิษฐานว่าเมื่อ LTE สร้างการเชื่อมต่อข้อมูลแพ็คเก็ต งานเสียงผ่าน LTE จะกลายเป็นเพียงเรื่องของการกำหนดเส้นทางแพ็คเก็ตเสียงผ่านการเชื่อมต่อนั้นพร้อมกับการรับส่งข้อมูลที่เหลือทั้งหมดของคุณ กล่าวอีกนัยหนึ่ง VoLTE จะเป็นแนวคิดที่มีอยู่เท่านั้น
ในความเป็นจริง เลเยอร์ลิงก์ LTE แนะนำแนวคิดของ "ผู้ถือ" ผู้ถือคือตัวระบุเซสชันที่แยกจากกันซึ่งแยกการรับส่งข้อมูลแพ็กเก็ตประเภทต่างๆ การรับส่งข้อมูลทางอินเทอร์เน็ตเป็นประจำ (Twitter และ Snapchat ของคุณ) ต้องผ่านผู้ให้บริการรายเดียว การส่งสัญญาณ SIP สำหรับ VoIP จะต้องผ่านอีกช่องทางหนึ่ง และแพ็กเก็ตการรับส่งข้อมูลเสียงจะถูกประมวลผลผ่านหนึ่งในสาม ฉันไม่มีความรู้เกี่ยวกับกลไกการกำหนดเส้นทางวิทยุและเครือข่าย LTE มากนัก แต่ฉันเชื่อว่าวิธีนี้เกิดขึ้นเนื่องจากเครือข่าย LTE ต้องการบังคับใช้กลไก QoS (คุณภาพของการบริการ) เพื่อให้สตรีมแพ็คเก็ตที่แตกต่างกันได้รับการประมวลผลในระดับความสำคัญที่แตกต่างกัน: กล่าวคือ ของคุณ อัตราที่สอง การเชื่อมต่อ TCP กับ Facebook อาจมีลำดับความสำคัญต่ำกว่าการโทรด้วยเสียงแบบเรียลไทม์ของคุณ
โดยทั่วไปไม่เป็นปัญหา แต่ผลที่ตามมามีดังนี้ คีย์สำหรับการเข้ารหัส LTE จะถูกสร้างขึ้นแยกกันทุกครั้งที่มีการติดตั้ง “ผู้ถือ” ใหม่ โดยพื้นฐานแล้วสิ่งนี้ควรเกิดขึ้นอีกครั้งทุกครั้งที่คุณโทรออกใหม่ ซึ่งจะส่งผลให้มีการใช้คีย์การเข้ารหัสที่แตกต่างกันสำหรับการโทรแต่ละครั้ง ซึ่งช่วยลดความเป็นไปได้ในการใช้คีย์เดิมซ้ำเพื่อเข้ารหัสแพ็กเก็ตการโทรด้วยเสียงที่แตกต่างกันสองชุด แท้จริงแล้วมาตรฐาน LTE บอกว่า "คุณควรใช้คีย์ที่แตกต่างกันในแต่ละครั้งที่คุณติดตั้งผู้ถือใหม่เพื่อรองรับการโทรใหม่" แต่นี่ไม่ได้หมายความว่าสิ่งนี้จะเกิดขึ้นจริง
ในความเป็นจริงในการใช้งานในชีวิตจริง การโทรที่แตกต่างกันสองครั้งที่เกิดขึ้นในระยะใกล้เคียงกันจะใช้คีย์เดียวกัน - แม้ว่าจะมีการกำหนดค่าผู้ถือใหม่ที่มีชื่อเดียวกันก็ตาม การเปลี่ยนแปลงในทางปฏิบัติเพียงอย่างเดียวที่เกิดขึ้นระหว่างการโทรเหล่านี้คือตัวนับการเข้ารหัสถูกรีเซ็ตเป็นศูนย์ ในวรรณคดีบางครั้งเรียกว่า
ในทางปฏิบัติ การโจมตีนี้ส่งผลให้เกิดการใช้คีย์สตรีมซ้ำ โดยที่ผู้โจมตีสามารถรับแพ็กเก็ตที่เข้ารหัส $inline$C_1 = M_1 oplus KS$inline$ และ $inline$C_2 = M_2 oplus KS$inline$ ทำให้สามารถคำนวณ $inline$ C_1 oplus C_2 = M_1 oplus M_2$อินไลน์$ ยิ่งไปกว่านั้น หากผู้โจมตีรู้จัก $inline$M_1$inline$ หรือ $inline$M_2$inline$ อันใดอันหนึ่ง เขาก็จะสามารถกู้คืนอีกอันได้ทันที สิ่งนี้ทำให้เขามีแรงจูงใจที่แข็งแกร่ง ค้นหาหนึ่งในสององค์ประกอบที่ไม่ได้เข้ารหัส.
สิ่งนี้นำเราไปสู่สถานการณ์การโจมตีที่สมบูรณ์และมีประสิทธิภาพมากที่สุด พิจารณาผู้โจมตีที่สามารถสกัดกั้นการรับส่งข้อมูลวิทยุระหว่างโทรศัพท์เป้าหมายและเสาสัญญาณมือถือ และใครบ้างที่โชคดีพอที่จะบันทึกการโทรที่แตกต่างกันสองครั้ง โดยการโทรครั้งที่สองจะเกิดขึ้นทันทีหลังจากการโทรครั้งแรก ทีนี้ลองจินตนาการว่าเขาสามารถเดาเนื้อหาที่ไม่ได้เข้ารหัสของการโทรสายใดสายหนึ่งได้ ดังกล่าวด้วย ความบังเอิญ ผู้โจมตีของเราสามารถถอดรหัสการโทรครั้งแรกได้อย่างสมบูรณ์โดยใช้ XOR แบบธรรมดาระหว่างแพ็กเก็ตสองชุด
แน่นอนว่าโชคไม่เกี่ยวอะไรกับมัน เนื่องจากโทรศัพท์ได้รับการออกแบบให้รับสาย ผู้โจมตีที่สามารถได้ยินสายแรกจะสามารถโทรสายที่สองได้ทันทีที่สายแรกวางสาย การโทรครั้งที่สองนี้ หากใช้คีย์เข้ารหัสเดิมอีกครั้งโดยรีเซ็ตตัวนับเป็นศูนย์ จะทำให้สามารถกู้คืนข้อมูลที่ไม่ได้เข้ารหัสได้ ยิ่งไปกว่านั้น เนื่องจากผู้โจมตีของเราควบคุมข้อมูลระหว่างการโทรครั้งที่สองจริงๆ เขาจึงสามารถกู้คืนเนื้อหาของการโทรครั้งแรกได้ - ต้องขอบคุณหลายๆ โปรแกรมที่นำมาใช้โดยเฉพาะ สิ่งเล็ก ๆ น้อย ๆกำลังเล่นอยู่ข้างเขา
นี่คือภาพแผนการโจมตีทั่วไปที่นำมา
ภาพรวมการโจมตีจาก
แล้วการโจมตีได้ผลจริงหรือ?
ในแง่หนึ่ง นี่เป็นคำถามหลักสำหรับบทความเกี่ยวกับ ReVoLTE แนวคิดข้างต้นทั้งหมดนั้นยอดเยี่ยมในทางทฤษฎี แต่ก็ทิ้งคำถามไว้มากมาย เช่น:
- เป็นไปได้หรือไม่ (สำหรับนักวิจัยเชิงวิชาการ) ที่จะสกัดกั้นการเชื่อมต่อ VoLTE จริง ๆ
- ระบบ LTE จริงทำการรีคีย์จริงหรือไม่
- คุณสามารถเริ่มต้นการโทรครั้งที่สองได้อย่างรวดเร็วและเชื่อถือได้เพียงพอสำหรับโทรศัพท์และทาวเวอร์ที่จะใช้กุญแจซ้ำได้หรือไม่?
- แม้ว่าระบบจะรีคีย์ แต่คุณสามารถทราบเนื้อหาที่ไม่ได้เข้ารหัสของการเรียกครั้งที่สองได้หรือไม่ เนื่องจากสิ่งต่าง ๆ เช่นตัวแปลงสัญญาณและการแปลงรหัสสามารถเปลี่ยนเนื้อหา (ทีละบิต) ของการเรียกครั้งที่สองนั้นได้อย่างสมบูรณ์ แม้ว่าคุณจะสามารถเข้าถึง "บิต" " มาจากโทรศัพท์โจมตีของคุณเหรอ?
งานของ ReVoLTE ตอบคำถามเหล่านี้บางส่วนด้วยการยืนยัน ผู้เขียนใช้ซอฟต์แวร์ดมกลิ่นสตรีมวิทยุที่กำหนดค่าใหม่เชิงพาณิชย์ที่เรียกว่า
นักวิจัยพบว่าเพื่อให้การใช้คีย์ซ้ำได้ผล การเรียกครั้งที่สองจะต้องเกิดขึ้นอย่างรวดเร็วเพียงพอหลังจากการโทรครั้งแรกสิ้นสุดลง แต่ไม่เร็วเกินไป—ประมาณสิบวินาทีสำหรับผู้ปฏิบัติงานที่พวกเขาทดลองด้วย โชคดีที่ผู้ใช้จะรับสายภายในเวลานี้ไม่สำคัญ - "เสียงเรียกเข้า" เช่น การเชื่อมต่อ SIP นั้นบังคับให้ผู้ปฏิบัติงานใช้คีย์เดิมซ้ำ
ดังนั้น ปัญหาที่น่ารังเกียจที่สุดหลายประการจึงวนเวียนอยู่กับปัญหา (4) นั่นคือการรับบิตของเนื้อหาที่ไม่ได้เข้ารหัสของการโทรที่เริ่มต้นโดยผู้โจมตี เนื่องจากอาจมีสิ่งต่างๆ มากมายเกิดขึ้นกับเนื้อหาของคุณในขณะที่มันเดินทางจากโทรศัพท์ของผู้โจมตีไปยังโทรศัพท์ของเหยื่อผ่านเครือข่ายเซลลูล่าร์ ตัวอย่างเช่น เคล็ดลับสกปรก เช่น การเข้ารหัสสตรีมเสียงที่เข้ารหัสอีกครั้ง ซึ่งทำให้เสียงเหมือนเดิม แต่เปลี่ยนการแสดงไบนารี่โดยสิ้นเชิง เครือข่าย LTE ยังใช้การบีบอัดส่วนหัว RTP ซึ่งสามารถเปลี่ยนแปลงแพ็กเก็ต RTP ได้มาก
สุดท้ายนี้ แพ็กเก็ตที่ผู้โจมตีส่งมาควรอยู่ในแนวเดียวกับแพ็กเก็ตที่ส่งระหว่างการโทรครั้งแรก นี่อาจเป็นปัญหาได้ เนื่องจากการแก้ไขความเงียบระหว่างการโทรส่งผลให้มีข้อความสั้นลง (หรือที่เรียกว่าเสียงรบกวน) ซึ่งอาจไม่เหมาะกับการโทรครั้งแรก
นี่เป็นอัตราความสำเร็จที่สูงอย่างน่าประหลาดใจ และสูงกว่าที่ฉันคาดไว้มากเมื่อเริ่มทำงานกับเอกสารนี้
แล้วเราจะทำอย่างไรเพื่อแก้ไขมัน?
คำตอบสำหรับคำถามนี้ทันทีนั้นง่ายมาก เนื่องจากแก่นแท้ของช่องโหว่คือการโจมตีแบบใช้ซ้ำ (ติดตั้งใหม่) คุณเพียงแค่แก้ไขปัญหาเท่านั้น ตรวจสอบให้แน่ใจว่าได้รับรหัสใหม่สำหรับการโทรแต่ละครั้ง และไม่อนุญาตให้ตัวนับแพ็กเก็ตรีเซ็ตตัวนับกลับเป็นศูนย์โดยใช้รหัสเดียวกัน แก้ไขปัญหา!
หรืออาจจะไม่ สิ่งนี้จะต้องมีการอัพเกรดอุปกรณ์จำนวนมาก และพูดตามตรง การแก้ไขดังกล่าวในตัวเองนั้นไม่น่าเชื่อถืออย่างยิ่ง คงจะดีไม่น้อยหากมาตรฐานสามารถหาวิธีที่ปลอดภัยกว่านี้ในการใช้โหมดการเข้ารหัส ซึ่งโดยค่าเริ่มต้นแล้วจะไม่เสี่ยงต่อภัยพิบัติจากปัญหาการนำคีย์กลับมาใช้ใหม่
ทางเลือกหนึ่งที่เป็นไปได้คือการใช้
การศึกษาใหม่นี้ยังทำให้เกิดคำถามทั่วไปว่าทำไม
หรืออีกทางหนึ่ง เราสามารถทำสิ่งที่บริษัทต่างๆ เช่น Facebook และ Apple กำลังทำกันมากขึ้นได้: ทำให้การเข้ารหัสการโทรด้วยเสียงเกิดขึ้นในระดับที่สูงขึ้นของสแต็กเครือข่าย OSI โดยไม่ต้องพึ่งพาผู้ผลิตอุปกรณ์มือถือ เรายังสามารถผลักดันให้มีการเข้ารหัสการโทรด้วยเสียงแบบ end-to-end ได้ เหมือนกับที่ WhatsApp ทำกับ Signal และ FaceTime โดยสมมติว่ารัฐบาลสหรัฐฯ เพิ่งจะหยุด
หรือเราทำสิ่งที่ลูกๆ ของเราทำไปแล้วก็ได้ นั่นคือหยุดรับสายสนทนาที่น่ารำคาญเหล่านั้น
ที่มา: will.com