Serangan minggu ini: panggilan suara melalui LTE (ReVoLTE)

Dari penerjemah dan TL;DR

  1. TL; DR:

    Tampaknya VoLTE ternyata lebih terlindungi daripada klien Wi-Fi pertama dengan WEP. Kesalahan perhitungan arsitektural eksklusif yang memungkinkan Anda melakukan XOR sedikit lalu lintas dan memulihkan kunci. Serangan mungkin terjadi jika Anda dekat dengan penelepon dan dia sering menelepon.

  2. Terima kasih atas tip dan TL;DR Klukonin

  3. Para peneliti telah membuat aplikasi untuk menentukan apakah operator Anda rentan, baca lebih lanjut di sini. Bagikan hasilnya di komentar, VoLTE dinonaktifkan di wilayah saya di Megafon.

Tentang penulis

Matius Hijau.

Saya seorang kriptografer dan profesor di Universitas Johns Hopkins. Saya telah merancang dan menganalisis sistem kriptografi yang digunakan dalam jaringan nirkabel, sistem pembayaran, dan platform keamanan konten digital. Dalam penelitian saya, saya mencari berbagai cara menggunakan kriptografi untuk meningkatkan privasi pengguna.

Sudah lama sejak saya menulis format postingan "serangan minggu ini", dan itu membuatku kesal. Bukan karena tidak ada serangan, tapi terutama karena tidak ada serangan terhadap sesuatu yang cukup banyak digunakan untuk mengeluarkan saya dari blokir penulis.

Tapi hari ini saya menemukan serangan yang menarik disebut ReVoLTE untuk protokol yang sangat saya sukai untuk diretas, yaitu protokol jaringan seluler (voice over) LTE. Saya gembira dengan protokol khusus ini—dan serangan baru ini—karena sangat jarang melihat protokol dan implementasi jaringan seluler sebenarnya diretas. Terutama karena standar-standar ini dikembangkan di ruangan yang dipenuhi asap dan didokumentasikan dalam dokumen setebal 12000 halaman yang tidak dapat ditangani oleh semua peneliti. Selain itu, penerapan serangan ini memaksa peneliti untuk menggunakan protokol radio yang kompleks.

Oleh karena itu, kerentanan kriptografi yang serius dapat menyebar ke seluruh dunia, mungkin hanya untuk dieksploitasi oleh pemerintah, sebelum ada peneliti yang menyadarinya. Namun dari waktu ke waktu ada pengecualian, dan serangan hari ini adalah salah satunya.

Penulis seranganKontributor: David Rupprecht, Katharina Kohls, Thorsten Holz dan Christina Pöpper dari Ruhr-University Bochum dan New York University Abu Dhabi. Ini adalah serangan hebat untuk menginstal ulang kunci dalam protokol suara yang mungkin sudah Anda gunakan (dengan asumsi Anda berasal dari generasi lama yang masih melakukan panggilan telepon menggunakan ponsel).

Pertama, perjalanan sejarah singkat.

Apa itu LTE dan VoLTE?

Dasar dari standar telepon seluler modern kita ditetapkan di Eropa pada tahun 80-an berdasarkan standar tersebut Sistem Global untuk Seluler (Sistem Global untuk Komunikasi Seluler). GSM adalah standar telepon seluler digital besar pertama, yang memperkenalkan sejumlah fitur revolusioner, seperti penggunaan enkripsi untuk melindungi panggilan telepon. GSM awal dirancang terutama untuk komunikasi suara, meskipun uang bisa juga digunakan mengirimkan data lainnya.

Ketika transmisi data menjadi lebih penting dalam komunikasi seluler, standar Long Term Evolution (LTE) dikembangkan untuk menyederhanakan jenis komunikasi ini. LTE didasarkan pada sekelompok standar lama seperti GSM, EDGE и HSPA dan dirancang untuk meningkatkan kecepatan pertukaran data. Ada banyak branding dan menyesatkan dengan sebutan yang salahnamun TL;DRnya adalah bahwa LTE adalah sistem transmisi data yang berfungsi sebagai jembatan antara protokol data paket lama dan teknologi data seluler masa depan. 5G.

Tentu saja, sejarah memberi tahu kita bahwa ketika bandwidth (IP) tersedia cukup, konsep seperti “suara” dan “data” akan mulai kabur. Hal yang sama berlaku untuk protokol seluler modern. Untuk membuat transisi ini lebih lancar, standar LTE ditetapkan Suara melalui LTE (VoLTE), yang merupakan standar IP untuk melakukan panggilan suara langsung melalui bidang data sistem LTE, melewati seluruh bagian dial-up jaringan seluler. Seperti standar panggilan VoIP,Panggilan VoLTE dapat diakhiri oleh operator seluler dan dihubungkan ke jaringan telepon biasa. Atau (seperti yang semakin umum) mereka dapat dialihkan langsung dari satu klien seluler ke klien seluler lainnya, dan bahkan antar penyedia yang berbeda.

Seperti VoIP standar, VoLTE didasarkan pada dua protokol berbasis IP yang populer: Session Initiation Protocol (Protokol Inisiasi Sesi – SIP) untuk pengaturan panggilan, dan protokol transport waktu nyata (Protokol Transportasi Waktu Nyata, yang seharusnya disebut RTTP tetapi sebenarnya disebut RTP) untuk memproses data suara. VoLTE juga menambahkan beberapa optimasi bandwidth tambahan, seperti kompresi header.

Oke, apa hubungannya dengan enkripsi?

LTE, seperti GSM, memiliki seperangkat protokol kriptografi standar untuk mengenkripsi paket saat dikirimkan melalui udara. Mereka terutama dirancang untuk melindungi data Anda saat berpindah antara telepon (disebut peralatan pengguna, atau UE) dan menara seluler (atau di mana pun penyedia Anda memutuskan untuk mengakhiri koneksi). Sebab, penyedia layanan seluler memandang alat penyadap eksternal sebagai musuh. Tentu saja.

(Namun, fakta bahwa koneksi VoLTE dapat terjadi secara langsung antara klien pada jaringan penyedia yang berbeda berarti bahwa protokol VoLTE itu sendiri memiliki beberapa protokol enkripsi tambahan dan opsional yang dapat terjadi pada lapisan jaringan yang lebih tinggi. Hal ini tidak relevan dengan artikel ini, kecuali fakta bahwa mereka dapat merusak segalanya (kita akan membicarakannya secara singkat selanjutnya).

Secara historis, enkripsi di GSM sudah ada banyak titik lemah: buruk sandi, protokol di mana hanya telepon yang diautentikasi ke menara (artinya penyerang dapat menyamar sebagai menara, menghasilkan "Ikan pari") dan seterusnya. LTE memperbaiki banyak bug yang terlihat jelas sambil mempertahankan sebagian besar struktur yang sama.

Mari kita mulai dengan enkripsi itu sendiri. Dengan asumsi bahwa pembuatan kunci telah terjadi - dan kita akan membicarakannya sebentar lagi - maka setiap paket data dienkripsi menggunakan enkripsi aliran menggunakan sesuatu yang disebut "EEA" (yang dalam praktiknya dapat diimplementasikan menggunakan hal-hal seperti AES ). Intinya, mekanisme enkripsi di sini adalah CTRseperti di bawah ini:

Serangan minggu ini: panggilan suara melalui LTE (ReVoLTE)
Algoritma enkripsi utama untuk paket VoLTE (sumber: ReVoLTE). EEA adalah sandi, “COUNT” adalah penghitung 32-bit, “BEARER” adalah pengidentifikasi sesi unik yang memisahkan koneksi VoLTE dari lalu lintas Internet biasa. "DIRECTION" menunjukkan ke arah mana lalu lintas mengalir - dari UE ke menara atau sebaliknya.

Karena algoritma enkripsi itu sendiri (EEA) dapat diimplementasikan menggunakan cipher yang kuat seperti AES, kecil kemungkinannya akan ada serangan langsung pada cipher itu sendiri seperti ini. terjadi pada zaman GSM. Namun, jelas bahwa bahkan dengan sandi yang kuat, skema enkripsi ini adalah cara yang bagus untuk merugikan diri Anda sendiri.

Secara khusus: standar LTE menggunakan stream cipher (yang tidak diautentikasi) dengan mode yang akan sangat rentan jika penghitung - dan input lain seperti "pembawa" dan "arah" - digunakan kembali. Dalam bahasa modern, istilah untuk konsep ini adalah “nonce reuse attack”, namun potensi risiko di sini bukanlah sesuatu yang modern. Mereka terkenal dan kuno, berasal dari zaman glam metal dan bahkan disko.

Serangan minggu ini: panggilan suara melalui LTE (ReVoLTE)
Serangan terhadap nonce reuse dalam mode CTR tetap ada bahkan ketika Poison diketahui

Agar adil, standar LTE mengatakan, “Tolong jangan gunakan kembali meteran ini.” Namun standar LTE memiliki panjang sekitar 7000 halaman, dan bagaimanapun juga, ini seperti memohon kepada anak-anak untuk tidak bermain-main dengan senjata. Hal itu pasti akan terjadi, dan hal-hal buruk akan terjadi. Senjata penembakan dalam kasus ini adalah serangan penggunaan kembali keystream, di mana dua pesan rahasia yang berbeda melakukan XOR byte keystream yang sama. Diketahui bahwa ini memiliki efek yang sangat merusak pada kerahasiaan komunikasi.

Apa itu ReVoLTE?

Serangan ReVoLTE menunjukkan bahwa, dalam praktiknya, desain enkripsi yang sangat rentan ini disalahgunakan oleh perangkat keras di dunia nyata. Secara khusus, penulis menganalisis panggilan VoLTE nyata yang dilakukan menggunakan peralatan komersial dan menunjukkan bahwa panggilan tersebut dapat menggunakan sesuatu yang disebut "serangan penginstalan ulang kunci". (Banyak pujian untuk menemukan masalah ini Reise dan Lu (Raza & Lu), orang pertama yang menunjukkan potensi kerentanan. Namun penelitian ReVoLTE mengubahnya menjadi serangan praktis).

Izinkan saya menunjukkan kepada Anda secara singkat inti dari serangan tersebut, meskipun Anda harus melihat dan dokumen sumber.

Orang mungkin berasumsi bahwa setelah LTE membuat koneksi paket data, tugas voice over LTE hanya tinggal merutekan paket suara melalui koneksi tersebut bersama dengan lalu lintas lainnya. Dengan kata lain, VoLTE akan menjadi sebuah konsep yang hanya akan ada selamanya Level 2 [model OSI – kira-kira.]. Hal ini tidak sepenuhnya benar.

Faktanya, lapisan tautan LTE memperkenalkan konsep "pembawa". Pembawa adalah pengidentifikasi sesi terpisah yang memisahkan berbagai jenis lalu lintas paket. Lalu lintas internet reguler (Twitter dan Snapchat Anda) melewati satu pembawa. Sinyal SIP untuk VoIP melewati yang lain, dan paket lalu lintas suara diproses melalui yang ketiga. Saya tidak begitu paham tentang radio LTE dan mekanisme perutean jaringan, tapi saya yakin hal ini dilakukan dengan cara ini karena jaringan LTE ingin menerapkan mekanisme QoS (kualitas layanan) sehingga aliran paket yang berbeda diproses pada tingkat prioritas yang berbeda: yaitu. milikmu kelas dua Koneksi TCP ke Facebook mungkin memiliki prioritas lebih rendah dibandingkan panggilan suara real-time Anda.

Hal ini secara umum tidak menjadi masalah, namun akibat yang ditimbulkan adalah sebagai berikut. Kunci untuk enkripsi LTE dibuat secara terpisah setiap kali “pembawa” baru dipasang. Pada dasarnya, hal ini akan terjadi lagi setiap kali Anda melakukan panggilan telepon baru. Hal ini akan mengakibatkan kunci enkripsi berbeda digunakan untuk setiap panggilan, sehingga menghilangkan kemungkinan penggunaan kembali kunci yang sama untuk mengenkripsi dua set paket panggilan suara yang berbeda. Memang benar, standar LTE mengatakan sesuatu seperti "Anda harus menggunakan kunci yang berbeda setiap kali Anda memasang pembawa baru untuk menangani panggilan telepon baru." Namun bukan berarti hal ini benar-benar terjadi.

Faktanya, dalam implementasi kehidupan nyata, dua panggilan berbeda yang terjadi dalam jarak waktu yang dekat akan menggunakan kunci yang sama - terlepas dari kenyataan bahwa pembawa baru dengan nama yang sama dikonfigurasi di antara keduanya. Satu-satunya perubahan praktis yang terjadi di antara panggilan-panggilan ini adalah penghitung enkripsi disetel ulang ke nol. Dalam literatur hal ini kadang-kadang disebut serangan instalasi ulang kunci. Ada yang berpendapat bahwa hal ini pada dasarnya merupakan kesalahan penerapan, meskipun dalam kasus ini risikonya sebagian besar berasal dari standar itu sendiri.

Dalam praktiknya, serangan ini menghasilkan penggunaan kembali aliran kunci, di mana penyerang dapat memperoleh paket terenkripsi $inline$C_1 = M_1 oplus KS$inline$ dan $inline$C_2 = M_2 oplus KS$inline$, sehingga memungkinkan penghitungan $inline$ C_1 opplus C_2 = M_1 opplus M_2$sebaris$. Lebih baik lagi, jika penyerang mengetahui salah satu dari $inline$M_1$inline$ atau $inline$M_2$inline$, maka dia dapat segera memulihkan yang lain. Hal ini memberinya insentif yang kuat temukan salah satu dari dua komponen yang tidak terenkripsi.

Hal ini membawa kita pada skenario serangan yang lengkap dan paling efektif. Bayangkan seorang penyerang yang dapat mencegat lalu lintas radio antara telepon target dan menara seluler, dan yang cukup beruntung dapat merekam dua panggilan berbeda, dengan panggilan kedua terjadi segera setelah panggilan pertama. Sekarang bayangkan dia bisa menebak konten salah satu panggilan yang tidak terenkripsi. Dengan itu keberuntungan penyerang kami dapat mendekripsi sepenuhnya panggilan pertama menggunakan XOR sederhana antara dua set paket.

Tentu saja keberuntungan tidak ada hubungannya dengan itu. Karena telepon dirancang untuk menerima panggilan, penyerang yang dapat mendengar panggilan pertama akan dapat memulai panggilan kedua tepat pada saat panggilan pertama berakhir. Panggilan kedua ini, jika kunci enkripsi yang sama digunakan kembali dengan penghitung disetel ulang ke nol, akan memungkinkan data yang tidak terenkripsi dipulihkan. Selain itu, karena penyerang kami benar-benar mengontrol data selama panggilan kedua, ia dapat memulihkan konten panggilan pertama - berkat banyak penerapan khusus hal-hal kecil, bermain di sisinya.

Berikut adalah gambar rencana serangan umum yang diambil dokumen asli:

Serangan minggu ini: panggilan suara melalui LTE (ReVoLTE)
Ikhtisar serangan dari dokumen ReVoLTE. Skema ini mengasumsikan bahwa dua panggilan berbeda dilakukan menggunakan kunci yang sama. Penyerang mengontrol sniffer pasif (kiri atas), serta telepon kedua, yang dengannya ia dapat melakukan panggilan kedua ke telepon korban.

Jadi, apakah serangan itu benar-benar berhasil?

Di satu sisi, ini sebenarnya pertanyaan utama untuk artikel tentang ReVoLTE. Semua gagasan di atas secara teori bagus, tetapi meninggalkan banyak pertanyaan. Seperti:

  1. Apakah mungkin (bagi peneliti akademis) untuk mencegat koneksi VoLTE?
  2. Apakah sistem LTE sebenarnya benar-benar melakukan rekey?
  3. Bisakah Anda memulai panggilan kedua dengan cepat dan cukup andal agar telepon dan menara dapat menggunakan kembali kuncinya?
  4. Bahkan jika sistem melakukan rekey, dapatkah Anda benar-benar mengetahui konten panggilan kedua yang tidak terenkripsi - mengingat hal-hal seperti codec dan transcoding dapat sepenuhnya mengubah konten (bit demi bit) dari panggilan kedua tersebut, bahkan jika Anda memiliki akses ke "bit" " datang dari ponsel penyerangmu?

Pekerjaan ReVoLTE menjawab beberapa pertanyaan ini dengan tegas. Penulis menggunakan perangkat lunak komersial yang dapat dikonfigurasi ulang aliran radio yang disebut sniffer Lingkup udara untuk mencegat panggilan VoLTE dari sisi downlink. (Saya pikir untuk memahami perangkat lunak dan mendapatkan gambaran kasar tentang cara kerjanya membutuhkan waktu berbulan-bulan dari kehidupan mahasiswa pascasarjana yang miskin - hal yang biasa terjadi pada penelitian akademis semacam ini).

Para peneliti menemukan bahwa agar penggunaan kembali kunci dapat berfungsi, panggilan kedua harus dilakukan cukup cepat setelah panggilan pertama berakhir, namun tidak terlalu cepat—sekitar sepuluh detik untuk operator yang mereka uji. Untungnya, tidak masalah apakah pengguna menjawab panggilan dalam waktu ini - yaitu "dering". Koneksi SIP sendiri memaksa operator untuk menggunakan kembali kunci yang sama.

Dengan demikian, banyak masalah yang paling buruk berkisar pada masalah (4) - menerima bit dari konten panggilan yang tidak terenkripsi yang diprakarsai oleh penyerang. Hal ini karena banyak hal yang dapat terjadi pada konten Anda saat konten tersebut berpindah dari ponsel penyerang ke ponsel korban melalui jaringan seluler. Misalnya, trik kotor seperti mengkodekan ulang aliran audio yang disandikan, yang membiarkan suaranya tetap sama, tetapi mengubah representasi binernya sepenuhnya. Jaringan LTE juga menggunakan kompresi header RTP, yang secara signifikan dapat mengubah sebagian besar paket RTP.

Terakhir, paket yang dikirim oleh penyerang kira-kira harus sama dengan paket yang dikirim pada panggilan telepon pertama. Hal ini dapat menjadi masalah karena mengubah keheningan selama panggilan telepon menghasilkan pesan yang lebih pendek (alias kebisingan yang menenangkan) yang mungkin tidak sesuai dengan panggilan aslinya.

Bagian "serangan dunia nyata" Perlu dibaca secara detail. Ini mengatasi banyak masalah di atas - khususnya, penulis menemukan bahwa beberapa codec tidak dikodekan ulang, dan sekitar 89% representasi biner panggilan target dapat dipulihkan. Hal ini berlaku untuk setidaknya dua operator Eropa yang diuji.

Ini merupakan tingkat keberhasilan yang sangat tinggi, dan sejujurnya jauh lebih tinggi dari perkiraan saya ketika saya mulai mengerjakan dokumen ini.

Jadi apa yang bisa kita lakukan untuk memperbaikinya?

Jawaban langsung terhadap pertanyaan ini sangat sederhana: karena inti dari kerentanan adalah serangan penggunaan kembali (instal ulang) kunci, cukup perbaiki masalahnya. Pastikan bahwa kunci baru diperoleh untuk setiap panggilan telepon, dan jangan biarkan penghitung paket menyetel ulang penghitung kembali ke nol menggunakan kunci yang sama. Masalah terpecahkan!

Atau mungkin tidak. Hal ini memerlukan peningkatan banyak peralatan, dan sejujurnya, perbaikan seperti itu sendiri tidak terlalu dapat diandalkan. Akan lebih baik jika standar dapat menemukan cara yang lebih aman untuk mengimplementasikan mode enkripsi mereka yang secara default tidak rentan terhadap masalah penggunaan kembali kunci tersebut.

Salah satu opsi yang mungkin adalah menggunakan mode enkripsi di mana penyalahgunaan nonce tidak menimbulkan konsekuensi bencana. Hal ini mungkin terlalu mahal untuk beberapa perangkat keras saat ini, namun hal ini tentunya merupakan hal yang harus dipikirkan oleh para desainer di masa depan, terutama karena standar 5G akan segera mengambil alih dunia.

Studi baru ini juga menimbulkan pertanyaan umum tentang alasannya serangan yang sama terus bermunculan dalam standar demi standar, banyak di antaranya menggunakan desain dan protokol yang sangat mirip. Saat Anda menghadapi masalah dalam menginstal ulang kunci yang sama di beberapa protokol yang banyak digunakan seperti WPA2, bukankah ini saatnya untuk membuat spesifikasi dan prosedur pengujian Anda lebih kuat? Berhentilah memperlakukan pelaksana standar sebagai mitra bijaksana yang memperhatikan peringatan Anda. Perlakukan mereka seperti musuh (yang tidak disengaja) yang pasti akan melakukan kesalahan.

Atau, sebagai alternatif, kita dapat melakukan apa yang semakin banyak dilakukan oleh perusahaan seperti Facebook dan Apple: membuat enkripsi panggilan suara terjadi pada tingkat tumpukan jaringan OSI yang lebih tinggi, tanpa bergantung pada produsen peralatan seluler. Kami bahkan dapat mendorong enkripsi panggilan suara secara end-to-end, seperti yang dilakukan WhatsApp dengan Signal dan FaceTime, dengan asumsi pemerintah AS menghentikannya. membuat kami tersandung. Kemudian (dengan pengecualian beberapa metadata) banyak dari masalah ini akan hilang begitu saja. Solusi ini sangat relevan di dunia dimana bahkan pemerintah pun tidak yakin apakah mereka memercayai pemasok peralatan mereka.

Atau kita bisa melakukan apa yang sudah dilakukan anak-anak kita: berhenti menjawab panggilan suara yang mengganggu itu.

Sumber: www.habr.com

Tambah komentar