به نظر می رسد که VoLTE حتی بدتر از اولین مشتریان Wi-Fi با WEP محافظت شده است. یک اشتباه محاسباتی منحصراً معماری که به شما امکان می دهد کمی ترافیک را XOR کنید و کلید را بازیابی کنید. اگر به تماس گیرنده نزدیک باشید و او مکرراً تماس بگیرد، حمله ممکن است.
محققان اپلیکیشنی را برای تعیین آسیب پذیر بودن اپراتور شما ساخته اند، بیشتر بخوانید اینجا. نتایج را در نظرات به اشتراک بگذارید، VoLTE در منطقه من در Megafon غیرفعال است.
درباره نویسنده
متیو گرین.
من رمزنگار و استاد دانشگاه جانز هاپکینز هستم. من سیستم های رمزنگاری مورد استفاده در شبکه های بی سیم، سیستم های پرداخت و پلت فرم های امنیتی محتوای دیجیتال را طراحی و تجزیه و تحلیل کرده ام. در تحقیقاتم، من به روشهای مختلف استفاده از رمزنگاری برای بهبود حریم خصوصی کاربران نگاه میکنم.
مدتی بود که قالب پستی را نوشتم "حمله هفته"، و من را ناراحت کرد. نه به این دلیل که حملاتی وجود نداشت، بلکه بیشتر به این دلیل بود که حمله ای به چیزی که به اندازه کافی مورد استفاده قرار می گرفت وجود نداشت تا من را از بلاک نویسنده خارج کند.
ولی امروز باهاش آشنا شدم حمله جالب ReVoLTE برای پروتکلهایی که من بهویژه در مورد هک کردن آنها هیجانزده هستم، یعنی پروتکلهای LTE شبکه سلولی (صدا از طریق صدا) نامیده میشود. من در مورد این پروتکل های خاص - و این حمله جدید - هیجان زده هستم، زیرا بسیار نادر است که شاهد هک شدن پروتکل ها و پیاده سازی های شبکه سلولی واقعی باشیم. عمدتاً به این دلیل که این استانداردها در اتاقهای پر از دود ایجاد شده و در اسناد 12000 صفحهای مستند شدهاند که هر محققی نمیتواند از عهده آن برآید. علاوه بر این، اجرای این حملات محققان را مجبور به استفاده از پروتکل های پیچیده رادیویی می کند.
بنابراین، آسیبپذیریهای رمزنگاری جدی میتوانند در سراسر جهان گسترش پیدا کنند، شاید فقط برای اینکه دولتها از آنها سوءاستفاده کنند، قبل از اینکه محققی متوجه شود. اما هر از گاهی استثناهایی وجود دارد که حمله امروز یکی از آنهاست.
نویسنده حملاتمشارکت کنندگان: دیوید روپرشت، کاترینا کولز، تورستن هولز و کریستینا پوپر از دانشگاه روهر بوخوم و دانشگاه نیویورک ابوظبی. این یک حمله عالی برای نصب مجدد کلید در پروتکل صوتی است که احتمالاً از قبل استفاده میکنید (با فرض اینکه از نسل قدیمیتری هستید که هنوز با استفاده از تلفن همراه تماسهای تلفنی برقرار میکنند).
برای شروع، یک سفر تاریخی کوتاه.
LTE و VoLTE چیست؟
اساس استانداردهای مدرن تلفن همراه ما در اروپا در دهه 80 توسط استاندارد گذاشته شد. سیستم جهانی برای موبایل (سیستم جهانی ارتباطات سیار). GSM اولین استاندارد عمده تلفن همراه دیجیتال بود که تعدادی از ویژگی های انقلابی مانند استفاده را معرفی کرد. رمزگذاری برای محافظت از تماس های تلفنی GSM اولیه در درجه اول برای ارتباطات صوتی طراحی شده بود، اگرچه پول می توانست انتقال داده های دیگر.
همانطور که انتقال داده در ارتباطات سلولی اهمیت بیشتری پیدا کرد، استانداردهای Long Term Evolution (LTE) برای ساده کردن این نوع ارتباطات توسعه یافت. LTE بر اساس گروهی از استانداردهای قدیمی مانند GSM است. EDGE и HSPA و برای افزایش سرعت تبادل اطلاعات طراحی شده است. برندسازی زیاد است و گمراه کننده با نامگذاری های نادرستاما TL;DR این است که LTE یک سیستم انتقال داده است که به عنوان پلی بین پروتکل های داده بسته قدیمی و فناوری های داده سلولی آینده عمل می کند. 5G.
البته، تاریخ به ما می گوید که وقتی پهنای باند کافی (IP) در دسترس باشد، مفاهیمی مانند «صدا» و «داده» شروع به محو شدن خواهند کرد. همین امر در مورد پروتکل های سلولی مدرن نیز صدق می کند. برای روانتر کردن این انتقال، استانداردهای LTE تعریف میکنند Voice over-LTE (VoLTE)، که یک استاندارد IP برای انتقال تماسهای صوتی به طور مستقیم از طریق صفحه داده یک سیستم LTE است و بخش شمارهگیری شبکه تلفن همراه را به طور کامل دور میزند. همانند استاندارد تماس های VoIP، تماس های VoLTE را می توان توسط اپراتور تلفن همراه خاتمه داد و به شبکه تلفن معمولی متصل شد. یا (همانطور که رو به افزایش است) آنها می تواند مسیریابی شود مستقیماً از یک مشتری تلفن همراه به مشتری دیگر و حتی بین ارائه دهندگان مختلف.
مانند VoIP استاندارد، VoLTE بر اساس دو پروتکل محبوب مبتنی بر IP است: پروتکل شروع جلسه (پروتکل شروع جلسه – SIP) برای تنظیم تماس و پروتکل حمل و نقل بلادرنگ (پروتکل حمل و نقل در زمان واقعی، که باید RTTP نامیده شود اما در واقع RTP نامیده می شود) برای پردازش داده های صوتی. VoLTE همچنین برخی بهینه سازی های پهنای باند اضافی مانند فشرده سازی هدر را اضافه می کند.
خوب، این چه ربطی به رمزگذاری دارد؟
LTE، مانند پارس جی اس ام، دارای یک مجموعه استاندارد از پروتکل های رمزنگاری برای رمزگذاری بسته ها در حین انتقال از طریق هوا است. آنها عمدتاً برای محافظت از داده های شما در حین حرکت بین تلفن (به نام تجهیزات کاربر یا UE) و برج تلفن (یا هر جایی که ارائه دهنده شما تصمیم به قطع اتصال داشته باشد) طراحی شده اند. این به این دلیل است که ارائه دهندگان تلفن همراه دستگاه های شنود خارجی را به عنوان دشمن می بینند. خوب البته.
(با این حال، این واقعیت که اتصالات VoLTE می تواند مستقیماً بین مشتریان در شبکه های ارائه دهنده مختلف رخ دهد به این معنی است که پروتکل VoLTE خود دارای پروتکل های رمزگذاری اضافی و اختیاری است که می تواند در لایه های شبکه بالاتر رخ دهد. این به مقاله فعلی مربوط نمی شود، به جز اینکه آنها می توانند همه چیز را خراب کنند (در ادامه به طور خلاصه در مورد آنها صحبت خواهیم کرد).
از لحاظ تاریخی، رمزگذاری در GSM بوده است بسیاری از نقاط ضعف: بد رمزها، پروتکل هایی که در آن فقط تلفن در برج احراز هویت شده است (به این معنی که مهاجم می تواند هویت برج را جعل کند و ایجاد کند "سفره ماهی") و غیره. LTE بسیاری از اشکالات آشکار را اصلاح کرد و در عین حال ساختار مشابهی را حفظ کرد.
بیایید با خود رمزگذاری شروع کنیم. با فرض اینکه ایجاد کلید قبلاً اتفاق افتاده است - و ما در یک دقیقه در مورد آن صحبت خواهیم کرد - سپس هر بسته داده با استفاده از رمزگذاری جریان با استفاده از چیزی به نام "EEA" رمزگذاری می شود (که در عمل می تواند با استفاده از چیزهایی مانند AES پیاده سازی شود). اساساً، مکانیسم رمزگذاری در اینجا است CTRمانند زیر:
الگوریتم اصلی رمزگذاری برای بسته های VoLTE (منبع: ReVoLTE). EEA یک رمز است، "COUNT" یک شمارنده 32 بیتی است، "BEARER" یک شناسه جلسه منحصر به فرد است که اتصالات VoLTE را از ترافیک معمولی اینترنت جدا می کند. "DIRECTION" نشان می دهد که ترافیک در کدام جهت جریان دارد - از UE به برج یا بالعکس.
از آنجایی که خود الگوریتم رمزگذاری (EEA) را می توان با استفاده از یک رمز قوی مانند AES پیاده سازی کرد، بعید است که هیچ حمله مستقیمی به خود رمز مانند این وجود داشته باشد. در روزهای GSM اتفاق افتاد. با این حال، واضح است که حتی با یک رمز قوی، این طرح رمزگذاری یک راه عالی برای شلیک به پای خود است.
به طور خاص: استاندارد LTE از رمز جریانی (تصویر نشده) با حالتی استفاده می کند که در صورت استفاده مجدد از شمارنده - و ورودی های دیگر مانند "حامل" و "جهت" - بسیار آسیب پذیر خواهد بود. در اصطلاح مدرن، اصطلاح این مفهوم «حمله بدون استفاده مجدد» است، اما خطرات بالقوه در اینجا چیزی مدرن نیستند. آنها معروف و باستانی هستند و قدمت آنها به دوران گلم متال و حتی دیسکو برمی گردد.
حتی زمانی که Poison شناخته شد، حملات به استفاده مجدد غیرمنتظره در حالت CTR وجود داشت
برای منصفانه بودن، استانداردهای LTE می گویند: "لطفاً از این مترها استفاده مجدد نکنید." اما استانداردهای LTE حدود 7000 صفحه است و در هر صورت مثل این است که از بچه ها التماس کنیم که با تفنگ بازی نکنند. آنها ناگزیر خواهند شد و اتفاقات وحشتناکی رخ خواهد داد. تفنگ شلیک در این مورد، یک حمله استفاده مجدد از جریان کلید است، که در آن دو پیام محرمانه متفاوت XOR بایت های جریان کلید یکسان را ارسال می کنند. معلوم است که این تأثیر بسیار مخربی بر محرمانه بودن ارتباطات دارد.
ReVoLTE چیست؟
حمله ReVoLTE نشان میدهد که در عمل، این طراحی رمزگذاری بسیار آسیبپذیر توسط سختافزار دنیای واقعی سوء استفاده میشود. به طور خاص، نویسندگان تماسهای VoLTE واقعی را که با استفاده از تجهیزات تجاری انجام میشوند تجزیه و تحلیل میکنند و نشان میدهند که میتوانند از چیزی به نام «حمله نصب مجدد کلید» استفاده کنند. (برای یافتن این مشکل اعتبار زیادی وجود دارد ریسه و لو (Raza & Lu)، که اولین کسانی بودند که به آسیب پذیری احتمالی اشاره کردند. اما تحقیقات ReVoLTE آن را به یک حمله عملی تبدیل می کند).
اجازه دهید به طور خلاصه جوهر حمله را به شما نشان دهم، اگرچه باید نگاه کنید و سند منبع.
ممکن است تصور شود که وقتی LTE یک اتصال داده بسته ایجاد می کند، وظیفه صدا از طریق LTE فقط به مسیریابی بسته های صوتی روی آن اتصال همراه با بقیه ترافیک شما تبدیل می شود. به عبارت دیگر، VoLTE مفهومی خواهد بود که فقط وجود دارد سطح 2 [مدل های OSI – تقریبا]. این کاملا درست نیست.
در واقع، لایه پیوند LTE مفهوم "حامل" را معرفی می کند. حامل ها شناسه های جلسه جداگانه ای هستند که انواع مختلف ترافیک بسته را از هم جدا می کنند. ترافیک منظم اینترنت (توئیتر و اسنپ چت شما) از طریق یک حامل انجام می شود. سیگنالینگ SIP برای VoIP از طریق دیگری انجام می شود و بسته های ترافیک صوتی از طریق یک سوم پردازش می شوند. من در مورد مکانیسمهای رادیویی و مسیریابی شبکه LTE اطلاع چندانی ندارم، اما معتقدم که این کار به این صورت انجام میشود، زیرا شبکههای LTE میخواهند مکانیسمهای QoS (کیفیت سرویس) را اعمال کنند تا جریانهای بستههای مختلف در سطوح اولویت متفاوت پردازش شوند: مال شما درجه دوم اتصالات TCP به فیس بوک ممکن است اولویت کمتری نسبت به تماس های صوتی بلادرنگ شما داشته باشد.
این به طور کلی یک مشکل نیست، اما عواقب آن به شرح زیر است. هر بار که یک حامل جدید نصب می شود، کلیدهای رمزگذاری 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$. حتی بهتر از آن، اگر مهاجم یکی از $inline$M_1$inline$ یا $inline$M_2$inline$ را بشناسد، میتواند فوراً دیگری را بازیابی کند. این به او انگیزه قوی می دهد یکی از دو مؤلفه رمزگذاری نشده را پیدا کنید.
این ما را به کامل ترین و موثرترین سناریوی حمله می رساند. مهاجمی را در نظر بگیرید که میتواند ترافیک رادیویی بین یک تلفن هدف و یک برج تلفن همراه را رهگیری کند و به نحوی به اندازهای خوش شانس میشود که دو تماس مختلف را ضبط کند، در حالی که تماس دوم بلافاصله پس از تماس اول اتفاق میافتد. حال تصور کنید که او بتواند محتوای رمزگذاری نشده یکی از تماس ها را حدس بزند. با چنین خوشبختی مهاجم ما می تواند با استفاده از یک XOR ساده بین دو مجموعه بسته، اولین تماس را به طور کامل رمزگشایی کند.
البته شانس ربطی به آن ندارد. از آنجایی که تلفنها برای دریافت تماس طراحی شدهاند، مهاجمی که میتواند تماس اول را بشنود، میتواند تماس دوم را دقیقاً در لحظه پایان تماس اول آغاز کند. این تماس دوم، اگر از همان کلید رمزگذاری مجدداً با تنظیم مجدد شمارنده به صفر استفاده شود، امکان بازیابی داده های رمزگذاری نشده را فراهم می کند. علاوه بر این، از آنجایی که مهاجم ما در واقع داده ها را در طول تماس دوم کنترل می کند، می تواند محتویات تماس اول را بازیابی کند - به لطف بسیاری از مواردی که به طور خاص اجرا شده اند. چیزهای کوچک، در کنار او بازی می کند.
در اینجا تصویری از طرح حمله کلی است که از آن گرفته شده است سند اصلی:
نمای کلی حمله از سند ReVoLTE. این طرح فرض می کند که دو تماس مختلف با استفاده از یک کلید انجام می شود. مهاجم sniffer غیرفعال (بالا سمت چپ) و همچنین یک تلفن دوم را کنترل می کند که با آن می تواند تماس دوم را با تلفن قربانی برقرار کند.
پس آیا حمله واقعا کار می کند؟
از یک طرف، این واقعاً سؤال اصلی مقاله در مورد ReVoLTE است. همه ایده های فوق از نظر تئوری عالی هستند، اما سوالات زیادی را به جای می گذارند. مانند:
آیا واقعاً (برای محققان دانشگاهی) امکان رهگیری اتصال VoLTE وجود دارد؟
آیا واقعاً می توانید یک تماس دوم را به اندازه کافی سریع و قابل اعتماد آغاز کنید تا تلفن و دکل بتوانند از کلید دوباره استفاده کنند؟
حتی اگر سیستمها مجدداً کلید بزنند، آیا واقعاً میتوانید محتوای رمزگذاری نشده تماس دوم را بدانید - با توجه به اینکه چیزهایی مانند کدکها و رمزگذاری میتوانند به طور کامل محتوای (بیت به بیت) آن تماس دوم را تغییر دهند، حتی اگر به «بیتها» دسترسی داشته باشید. "از تلفن حمله شما می آید؟
کار ReVoLTE به برخی از این سوالات پاسخ مثبت می دهد. نویسندگان از یک ردیابی جریان رادیویی قابل تنظیم مجدد با نرم افزار تجاری استفاده می کنند که نام دارد ایرسکوپ برای رهگیری یک تماس VoLTE از سمت downlink. (فکر میکنم فقط دستیابی به نرمافزار و دریافت ایدهای تقریبی از نحوه کارکرد آن، ماهها از زندگی دانشجویان فارغالتحصیل فقیر گرفت - که برای این نوع تحقیقات دانشگاهی معمول است).
محققان دریافتند که برای استفاده مجدد از کلید، تماس دوم باید به اندازه کافی سریع پس از پایان تماس اول انجام شود، اما نه خیلی سریع - حدود ده ثانیه برای اپراتورهایی که آنها با آنها آزمایش کردند. خوشبختانه، مهم نیست که کاربر در این زمان به تماس پاسخ دهد - "حلقه" یعنی. اتصال SIP خود اپراتور را مجبور به استفاده مجدد از همان کلید می کند.
بنابراین، بسیاری از بدترین مشکلات حول مشکل (4) می چرخند - دریافت بیت هایی از محتوای رمزگذاری نشده تماسی که توسط یک مهاجم آغاز شده است. این به این دلیل است که وقتی محتوای شما از تلفن مهاجم به تلفن قربانی از طریق شبکه تلفن همراه منتقل می شود، اتفاقات زیادی می تواند بیفتد. به عنوان مثال، ترفندهای کثیفی مانند رمزگذاری مجدد یک جریان صوتی رمزگذاری شده، که صدا را یکسان می کند، اما نمایش باینری آن را کاملاً تغییر می دهد. شبکههای LTE همچنین از فشردهسازی هدر RTP استفاده میکنند که میتواند به طور قابلتوجهی بسیاری از بستههای RTP را تغییر دهد.
در نهایت، بسته های ارسال شده توسط مهاجم باید تقریباً با بسته های ارسال شده در اولین تماس تلفنی مطابقت داشته باشند. این میتواند مشکلساز باشد، زیرا تغییر سکوت در طول تماس تلفنی منجر به پیامهای کوتاهتر (معروف به نویز راحت) میشود که ممکن است به خوبی با تماس اصلی مطابقت نداشته باشد.
بخش "حمله در دنیای واقعی" ارزش خواندن با جزئیات را دارد. این به بسیاری از مسائل فوق می پردازد - به ویژه، نویسندگان دریافتند که برخی از کدک ها دوباره کدگذاری نمی شوند و تقریباً 89٪ از نمایش دودویی تماس هدف قابل بازیابی است. این امر برای حداقل دو اپراتور اروپایی که آزمایش شده اند صادق است.
این نرخ موفقیت شگفتآور بالایی است، و صادقانه بگویم که بسیار بالاتر از آن چیزی است که زمانی که کار روی این سند را شروع کردم، انتظار داشتم.
پس برای رفع آن چه کنیم؟
پاسخ فوری به این سوال بسیار ساده است: از آنجایی که ماهیت آسیبپذیری حمله استفاده مجدد (نصب مجدد) کلیدی است، به سادگی مشکل را برطرف کنید. اطمینان حاصل کنید که برای هر تماس تلفنی یک کلید جدید دریافت کنید و هرگز اجازه ندهید که شمارنده بسته با استفاده از همان کلید شمارنده را به صفر برگرداند. مشکل حل شد!
یا شاید هم نه. این به ارتقاء تجهیزات زیادی نیاز دارد و صادقانه بگویم، چنین تعمیری به خودی خود فوق العاده قابل اعتماد نیست. خوب است اگر استانداردها بتوانند راه امن تری برای پیاده سازی حالت های رمزگذاری خود بیابند که به طور پیش فرض به طور فاجعه باری در برابر چنین مشکلات استفاده مجدد کلیدی آسیب پذیر نباشد.
این مطالعه جدید همچنین این سوال کلی را مطرح می کند که چرا همان حملات لعنتی در استانداردهای یکی پس از دیگری ظاهر می شوند، که بسیاری از آنها از طرح ها و پروتکل های بسیار مشابه استفاده می کنند. وقتی با مشکل نصب مجدد کلید یکسان در چندین پروتکل پرکاربرد مانند WPA2 مواجه میشوید، آیا فکر نمیکنید زمان آن رسیده که مشخصات و روشهای تست خود را قویتر کنید؟ از اینکه با اجراکنندگان استانداردها به عنوان شرکای متفکری که مراقب هشدارهای شما هستند رفتار نکنید. با آنها مانند دشمنان (غیر عمدی) رفتار کنید که به ناچار دچار اشتباه می شوند.
یا، ما میتوانیم کاری را انجام دهیم که شرکتهایی مانند فیسبوک و اپل به طور فزایندهای انجام میدهند: رمزگذاری تماس صوتی در سطح بالاتری از پشته شبکه OSI، بدون تکیه بر تولیدکنندگان تجهیزات سلولی انجام شود. ما حتی میتوانیم برای رمزگذاری سرتاسر تماسهای صوتی فشار بیاوریم، مانند آنچه که واتساپ با سیگنال و فیستایم انجام میدهد، با فرض اینکه دولت ایالات متحده متوقف شود. به ما سفر کن. سپس (به استثنای برخی ابرداده ها) بسیاری از این مشکلات به سادگی ناپدید می شوند. این راه حل به ویژه در دنیایی که در آن حتی دولت ها نیز مطمئن نیستند که به تامین کنندگان تجهیزات خود اعتماد دارند یا خیر.
یا میتوانیم به سادگی کاری را انجام دهیم که فرزندانمان قبلاً انجام دادهاند: پاسخ دادن به تماسهای صوتی مزاحم را متوقف کنیم.