Bewara push aman: ti téori ka prakték

Héy Habr!

Dinten ieu kuring bakal ngobrol ngeunaan naon anu kuring sareng kolega kuring parantos lakukeun sababaraha bulan ayeuna: nyorong béwara pikeun utusan instan mobile. Sakumaha anu kuring parantos nyarios, dina aplikasi kami, tekenan utama nyaéta kaamanan. Ku alatan éta, urang manggihan naha bewara push boga "titik lemah" na, upami kitu, kumaha urang tiasa level aranjeunna kaluar pikeun nambahkeun pilihan mangpaat ieu pikeun layanan urang.

Kuring medarkeun tarjamahan urang artikel ti Medium kalawan sababaraha tambahan leutik ti kuring sorangan. Ieu ngandung hasil tina "panalungtikan" jeung carita ngeunaan kumaha masalah ieu direngsekeun.

Urang nalungtik materi

Dina modél klasik, béwara push ngajadikeun utusan rentan ka serangan MITM (Man-in-the-middle). Salaku conto, sareng Google, Microsoft, sareng versi iMessage anu lami, aplikasi ngirimkeun konci enkripsi ka server Apple - dina server, pangguna dioténtikasi sareng lulugu pesen (atanapi eusina) didekripsi.

Bewara push aman: ti téori ka prakték

Hasilna, aya kasempetan pikeun maca korespondensi ku gaining aksés ka server bewara push. Ieu ngandung harti yén énkripsi naon waé susuratan henteu aya gunana: béwara push tetep bakal ngantepkeun kamungkinan dibaca ku pihak katilu. Nu nulis artikel ngabahas kamungkinan ieu leuwih jéntré. "Énkripsi leres" on Xaker.ru, dedicated ka métode encrypting pesen.

Upami anjeun pikir server Apple sareng Google 100% aman ngalawan konci enkripsi pangguna anu bocor, pertimbangkeun kanyataan yén karyawanna ngagaduhan aksés ka aranjeunna. Sareng karyawan mangrupikeun jalma.
Sanaos sadaya kerentanan béwara push, seueur utusan instan anu "aman", kalebet Signal sareng Telegram, ngagunakeunana. Upami teu kitu, pamaké kudu "sacara manual" ngawas pesen anyar ku terus asup kana aplikasi. Anu teu merenah, sareng utusan anu bersaing bakal nampi kauntungan.

Paranoia jeung akal sehat


Dina proyék urang, urang nyandak up masalah ieu raket sababaraha bulan ka tukang. Urang kedah nambihan pilihan béwara push pikeun bersaing. Tapi dina waktos anu sareng, ulah muka liang kaamanan, sabab sagala bocor data bakal ngaruksak kapercayaan di proyek.

Najan kitu, urang geus boga kaunggulan penting: utusan urang desentralisasi (data disimpen dina blockchain), sarta pagawé teu boga aksés ka rekening. Ngan pamaké nu boga konci enkripsi, sarta konci publik interlocutors sadia dina blockchain nu ngajaga ngalawan serangan MITM.

Dina versi mimiti bewara push, urang mutuskeun pikeun muterkeunana aman saloba mungkin jeung teu ngirimkeun téks pesen pisan. Ladenan push henteu nampi téks pesen ti node, tapi ngan ukur sinyal ngeunaan kanyataan resi na. Ku alatan éta, pamaké nempo bewara "Pesen anyar geus anjog". Ieu mungkin maca eta ngan dina utusan.

Bewara push aman: ti téori ka prakték
Kumaha gawéna: video.

Saatos éta, urang diajar yén béwara versi panganyarna Apple gaduh fitur kaamanan anyar. aranjeunna dileupaskeun UNNotificationServiceExtension, anu ngamungkinkeun pamekar pikeun ngirim data béwara énkripsi pinuh ngaliwatan APNS. Aplikasi dina alat pangguna akhir teras ngalakukeun dekripsi (atanapi ngaunduh data tambahan) sareng ningalikeun bewara. Kami nyandak éta salaku dasar pikeun versi kadua bewara push.

Kami ayeuna parantos ngembangkeun versi kadua béwara push pikeun ios, anu ngamungkinkeun anjeun pikeun nampilkeun téks pesen tanpa résiko kaamanan. Dina konsép anyar, logika sapertos kieu:

  • Ladenan push ngirimkeun béwara push kalayan nomer transaksi (pesen énkripsi tiasa ageung pisan, sareng ukuran béwara terbatas pisan)
  • Nalika alat nampi béwara, éta ngaluncurkeun NotificationServiceExtension kami - aplikasi mikro anu nyuhunkeun transaksi tina node ku id, ngadekrip nganggo frasa sandi anu disimpen, sareng ngirim béwara énggal ka sistem. Frasa sandi disimpen dina panyimpenan anu aman.
  • Sistem nampilkeun béwara kalayan pesen atanapi tarjamahan anu didekripsi.
  • Kenopna henteu kamana-mana, sapertos pesen téks biasa. Ladenan push teu aya cara pikeun ngadekrip pesen.

Bewara push aman: ti téori ka prakték

Kami nampi vérsi ieu salaku jalan sareng dilaksanakeun dina apdet panganyarna tina aplikasi ios.
Anu resep kana sisi téknis tiasa ningali kode sumber: github.com/Adamant-im/adamant-notificationService.

sumber: www.habr.com

Tambahkeun komentar