Kabar push sing aman: saka teori nganti praktik

Hey Habr!

Dina iki aku bakal ngomong babagan apa sing wis ditindakake lan kanca-kancaku nganti pirang-pirang wulan saiki: kabar push kanggo utusan cepet seluler. Kaya sing wis dakkandhakake, ing aplikasi kita, penekanan utama yaiku keamanan. Mulane, kita nemokake manawa kabar push duwe "titik lemah" lan, yen mangkono, kepiye carane bisa nambah supaya bisa nambah pilihan sing migunani kanggo layanan kita.

Aku nerbitake terjemahan saka kita artikel saka Medium karo sawetara tambahan cilik saka aku. Isine asil "investigasi" lan crita babagan carane masalah ditanggulangi.

Kita mriksa materi

Ing model klasik, kabar push nggawe utusan rentan marang serangan MITM (Man-in-the-middle). Contone, karo Google, Microsoft, lan versi lawas saka iMessage, aplikasi ngirim kunci enkripsi menyang server Apple - ing server, pangguna wis dikonfirmasi lan header pesen (utawa isine) decrypted.

Kabar push sing aman: saka teori nganti praktik

AkibatΓ©, ana kesempatan kanggo maca korespondensi kanthi entuk akses menyang server kabar push. Iki tegese enkripsi apa wae korespondensi ora ana gunane: kabar push isih bakal ninggalake kemungkinan diwaca dening pihak katelu. Penulis artikel kasebut mbahas kemungkinan kasebut kanthi luwih rinci. "Enkripsi kanthi bener" ing Xaker.ru, darmabakti kanggo cara enkripsi pesen.

Yen sampeyan mikir server Apple lan Google 100% aman nglawan kunci enkripsi pangguna sing bocor, nimbang kasunyatan manawa karyawan duwe akses menyang dheweke. Lan karyawan iku wong.
Senadyan kabeh kerentanan kabar push, akeh utusan cepet sing "aman", kalebu Sinyal lan Telegram, nggunakake. Yen ora, pangguna kudu "manual" ngawasi pesen anyar kanthi terus-terusan mlebu ing aplikasi kasebut. Kang banget ora trep, lan utusan saingan bakal entuk kauntungan.

Paranoia lan akal sehat


Ing proyek kita, kita ngrampungake masalah iki sawetara wulan kepungkur. Kita kudu nambah opsi kabar push supaya bisa kompetitif. Nanging ing wektu sing padha, aja mbukak bolongan keamanan, amarga bocor data bakal ngrusak kapercayan ing proyek kasebut.

Nanging, kita wis duwe kauntungan penting: utusan kita desentralisasi (data disimpen ing pamblokiran), lan karyawan ora duwe akses menyang akun. Mung pangguna sing duwe kunci enkripsi, lan kunci umum interlocutors kasedhiya ing blockchain kanggo nglindhungi saka serangan MITM.

Ing versi pisanan saka kabar push, kita mutusakΓ© kanggo muter aman sabisa lan ora ngirim pesen teks ing kabeh. Layanan push ora nampa teks pesen saka simpul, nanging mung sinyal babagan kasunyatan panrimo. Mulane, pangguna ndeleng kabar "Pesen anyar wis teka". Sampeyan bisa maca mung ing utusan.

Kabar push sing aman: saka teori nganti praktik
Cara kerjane: video.

Sawise iku, kita ngerti manawa kabar versi paling anyar saka Apple duwe fitur keamanan anyar. padha dirilis UNNotificationServiceExtension, sing ngidini pangembang ngirim data kabar sing dienkripsi kanthi lengkap liwat APNS. Aplikasi ing piranti pangguna pungkasan banjur nindakake dekripsi (utawa ngundhuh data tambahan) lan nampilake kabar. Kita njupuk minangka basis kanggo kabar push versi kapindho.

Saiki kita wis ngembangake versi kapindho kabar push kanggo iOS, sing ngidini sampeyan nampilake teks pesen tanpa risiko keamanan. Ing konsep anyar, logika katon kaya iki:

  • Layanan push ngirim kabar push kanthi nomer transaksi (pesen sing dienkripsi bisa dadi gedhe banget, lan ukuran kabar winates banget)
  • Nalika piranti nampa kabar, bakal mbukak NotificationServiceExtension - aplikasi mikro sing njaluk transaksi saka simpul kanthi id, dekripsi nggunakake frasa sandhi sing disimpen, lan ngirim kabar anyar menyang sistem. Tembung sandhi disimpen ing panyimpenan sing aman.
  • Sistem nampilake kabar kanthi pesen utawa terjemahan sing didekripsi.
  • Tombol ora menyang ngendi wae, kaya pesen teks biasa. Layanan push ora duwe cara kanggo dekripsi pesen kasebut.

Kabar push sing aman: saka teori nganti praktik

Kita nampa versi iki minangka digunakake lan dileksanakake ing nganyari paling anyar saka aplikasi iOS.
Sing kasengsem ing sisih teknis bisa ndeleng kode sumber: github.com/Adamant-im/adamant-notificationService.

Source: www.habr.com

Add a comment