Pemberitahuan tolak selamat: daripada teori kepada amalan

Hai Habr!

Hari ini saya akan bercakap tentang perkara yang telah saya dan rakan sekerja saya lakukan selama beberapa bulan sekarang: pemberitahuan tolak untuk pemesej segera mudah alih. Seperti yang telah saya katakan, dalam aplikasi kami, penekanan utama adalah pada keselamatan. Oleh itu, kami mengetahui sama ada pemberitahuan tolak mempunyai "titik lemah" dan, jika ya, bagaimana kami boleh meratakannya untuk menambahkan pilihan berguna ini pada perkhidmatan kami.

Saya sedang menerbitkan terjemahan kami artikel daripada Medium dengan sedikit tambahan dari saya sendiri. Ia mengandungi hasil "penyiasatan" dan cerita tentang bagaimana masalah itu diselesaikan.

Kami meneliti bahan

Dalam model klasik, pemberitahuan tolak menjadikan pemesej terdedah kepada serangan MITM (Man-in-the-middle). Contohnya, dengan Google, Microsoft dan versi lama iMessage, aplikasi menghantar kunci penyulitan ke pelayan Apple - pada pelayan, pengguna disahkan dan pengepala mesej (atau kandungannya) dinyahsulit.

Pemberitahuan tolak selamat: daripada teori kepada amalan

Akibatnya, terdapat peluang untuk membaca surat-menyurat dengan mendapatkan akses kepada pelayan pemberitahuan tolak. Ini bermakna bahawa sebarang penyulitan surat-menyurat tidak berguna: pemberitahuan tolak masih akan meninggalkan kemungkinan dibaca oleh pihak ketiga. Penulis artikel membincangkan kemungkinan ini dengan lebih terperinci. β€œSulitkan dengan betul” pada Xaker.ru, khusus untuk kaedah menyulitkan mesej.

Jika anda fikir pelayan Apple dan Google 100% selamat daripada kebocoran kunci penyulitan pengguna, pertimbangkan hakikat bahawa pekerja mereka mempunyai akses kepada mereka. Dan pekerja adalah orang.
Walaupun terdapat semua kelemahan pemberitahuan tolak, banyak pemesej segera yang "selamat", termasuk Signal dan Telegram, menggunakannya. Jika tidak, pengguna perlu "secara manual" memantau mesej baharu dengan sentiasa log masuk ke dalam aplikasi. Yang sangat menyusahkan, dan utusan yang bersaing akan mendapat kelebihan.

Paranoia dan akal sehat


Dalam projek kami, kami mengambil isu ini dengan teliti beberapa bulan lalu. Kami perlu menambah pilihan pemberitahuan tolak untuk berdaya saing. Tetapi pada masa yang sama, jangan buka lubang keselamatan, kerana sebarang kebocoran data akan menjejaskan keyakinan terhadap projek itu.

Walau bagaimanapun, kami sudah mempunyai kelebihan penting: utusan kami tidak berpusat (data disimpan pada blok blok), dan pekerja tidak mempunyai akses kepada akaun. Hanya pengguna yang mempunyai kunci penyulitan, dan kunci awam interlocutor tersedia pada blockchain untuk melindungi daripada serangan MITM.

Dalam versi pertama pemberitahuan tolak, kami memutuskan untuk memainkannya dengan selamat sebanyak mungkin dan tidak menghantar teks mesej sama sekali. Perkhidmatan push tidak menerima teks mesej dari nod, tetapi hanya isyarat tentang fakta penerimaannya. Oleh itu, pengguna melihat pemberitahuan "Mesej baharu telah tiba". Ia mungkin untuk membacanya hanya dalam utusan.

Pemberitahuan tolak selamat: daripada teori kepada amalan
Bagaimana ia berfungsi: video.

Selepas itu, kami mengetahui bahawa versi terbaru pemberitahuan Apple mempunyai ciri keselamatan baharu. mereka dilepaskan UNNotificationServiceExtension, yang membenarkan pembangun menghantar data pemberitahuan yang disulitkan sepenuhnya melalui APNS. Apl pada peranti pengguna akhir kemudian melakukan penyahsulitan (atau memuat turun data tambahan) dan memaparkan pemberitahuan. Kami mengambilnya sebagai asas untuk versi kedua pemberitahuan tolak.

Kami kini telah membangunkan versi kedua pemberitahuan tolak untuk iOS, yang membolehkan anda memaparkan teks mesej tanpa risiko keselamatan. Dalam konsep baru, logiknya kelihatan seperti ini:

  • Perkhidmatan tolak menghantar pemberitahuan tolak dengan nombor transaksi (mesej yang disulitkan boleh menjadi sangat besar dan saiz pemberitahuan sangat terhad)
  • Apabila peranti menerima pemberitahuan, ia melancarkan NotificationServiceExtension kami - aplikasi mikro yang meminta transaksi daripada nod melalui id, menyahsulitnya menggunakan frasa laluan yang disimpan dan menghantar pemberitahuan baharu kepada sistem. Frasa laluan disimpan dalam storan selamat.
  • Sistem memaparkan pemberitahuan dengan mesej atau terjemahan yang dinyahsulit.
  • Kekunci tidak pergi ke mana-mana, sama seperti mesej teks biasa. Perkhidmatan tolak tidak mempunyai cara untuk menyahsulit mesej.

Pemberitahuan tolak selamat: daripada teori kepada amalan

Kami menerima versi ini sebagai berfungsi dan melaksanakannya dalam kemas kini terkini aplikasi iOS.
Mereka yang berminat dalam bahagian teknikal boleh melihat kod sumber: github.com/Adamant-im/adamant-notificationService.

Sumber: www.habr.com

Tambah komen