Mga secure na push notification: mula sa teorya hanggang sa pagsasanay

Hoy Habr!

Ngayon ay magsasalita ako tungkol sa kung ano ang ginagawa namin ng aking mga kasamahan sa loob ng ilang buwan: mga push notification para sa mga mobile instant messenger. Tulad ng sinabi ko na, sa aming aplikasyon ang pangunahing diin ay sa seguridad. Samakatuwid, nalaman namin kung ang mga push notification ay may "mahina" at, kung gayon, kung paano namin mai-level out ang mga ito upang maidagdag ang kapaki-pakinabang na opsyong ito sa aming serbisyo.

Naglalathala ako ng pagsasalin ng aming mga artikulo mula sa Medium na may ilang maliliit na karagdagan mula sa aking sarili. Naglalaman ito ng mga resulta ng "pagsisiyasat" at isang kuwento tungkol sa kung paano nalutas ang problema.

Sinusuri namin ang materyal

Sa classic na modelo, ang mga push notification ay ginagawang vulnerable ang mga messenger sa mga pag-atake ng MITM (Man-in-the-middle). Halimbawa, sa Google, Microsoft, at sa lumang bersyon ng iMessage, ang application ay nagpapadala ng mga susi sa pag-encrypt sa mga server ng Apple - sa server, ang mga user ay napatotohanan at ang header ng mensahe (o ang nilalaman nito) ay na-decryption.

Mga secure na push notification: mula sa teorya hanggang sa pagsasanay

Bilang resulta, may pagkakataong basahin ang sulat sa pamamagitan ng pagkakaroon ng access sa push notification server. Nangangahulugan ito na ang anumang pag-encrypt ng sulat ay walang silbi: ang mga push notification ay mag-iiwan pa rin ng posibilidad na mabasa ng mga third party. Tinalakay ng mga may-akda ng artikulo ang posibilidad na ito nang mas detalyado. "I-encrypt nang tama" sa Xaker.ru, na nakatuon sa mga paraan ng pag-encrypt ng mga mensahe.

Kung sa tingin mo ay 100% secure ang mga server ng Apple at Google laban sa pag-leak ng mga susi sa pag-encrypt ng user, isaalang-alang ang katotohanan na may access sa kanila ang kanilang mga empleyado. At ang mga empleyado ay mga tao.
Sa kabila ng lahat ng mga kahinaan ng mga push notification, maraming "secure" na instant messenger, kabilang ang Signal at Telegram, ang gumagamit ng mga ito. Kung hindi, ang mga user ay kailangang "manual" na subaybayan ang mga bagong mensahe sa pamamagitan ng patuloy na pag-log in sa application. Na napaka-abala, at ang mga nakikipagkumpitensyang mensahero ay makakakuha ng isang kalamangan.

Paranoya at bait


Sa aming proyekto, tinalakay namin ang isyung ito ilang buwan na ang nakalipas. Kailangan naming magdagdag ng opsyon sa push notification para maging mapagkumpitensya. Ngunit sa parehong oras, huwag magbukas ng butas sa seguridad, dahil ang anumang pagtagas ng data ay magpapanghina sa tiwala sa proyekto.

Gayunpaman, mayroon na kaming mahalagang kalamangan: ang aming messenger ay desentralisado (naka-imbak ang data sa blockchain), at ang mga empleyado ay walang access sa mga account. Ang mga user lang ang may mga encryption key, at ang mga pampublikong key ng mga interlocutor ay available sa blockchain upang maprotektahan laban sa mga pag-atake ng MITM.

Sa unang bersyon ng mga push notification, napagpasyahan naming i-play ito nang ligtas hangga't maaari at hindi na magpadala ng text ng mensahe. Ang serbisyo ng push ay hindi nakatanggap ng teksto ng mensahe mula sa node, ngunit isang senyas lamang tungkol sa katotohanan ng pagtanggap nito. Samakatuwid, nakita ng user ang notification na "Dumating na ang bagong mensahe". Posibleng basahin lamang ito sa messenger.

Mga secure na push notification: mula sa teorya hanggang sa pagsasanay
Paano ito gumana: video.

Pagkatapos noon, nalaman namin na ang pinakabagong bersyon ng mga notification ng Apple ay may mga bagong feature sa seguridad. sila pinakawalan UNNotificationServiceExtension, na nagpapahintulot sa mga developer na magpadala ng ganap na naka-encrypt na data ng notification sa APNS. Ang app sa device ng end user ay nagsasagawa ng decryption (o nagda-download ng karagdagang data) at nagpapakita ng notification. Kinuha namin ito bilang batayan para sa pangalawang bersyon ng mga push notification.

Nagawa na namin ngayon ang pangalawang bersyon ng mga push notification para sa iOS, na nagbibigay-daan sa iyong ipakita ang text ng mensahe nang walang panganib sa seguridad. Sa bagong konsepto, ang lohika ay ganito:

  • Ang serbisyo ng push ay nagpapadala ng push notification na may numero ng transaksyon (ang naka-encrypt na mensahe ay maaaring napakalaki, at ang laki ng mga notification ay napakalimitado)
  • Kapag nakatanggap ang device ng notification, ilulunsad nito ang aming NotificationServiceExtension - isang microapplication na humihiling ng transaksyon mula sa node sa pamamagitan ng id, nagde-decrypt nito gamit ang naka-save na passphrase, at nagpapadala ng bagong notification sa system. Ang passphrase ay nakaimbak sa secure na storage.
  • Nagpapakita ang system ng notification na may naka-decrypt na mensahe o pagsasalin.
  • Ang mga susi ay hindi napupunta kahit saan, tulad ng simpleng text message. Ang serbisyo ng push ay walang paraan upang i-decrypt ang mensahe.

Mga secure na push notification: mula sa teorya hanggang sa pagsasanay

Tinanggap namin ang bersyong ito bilang gumagana at ipinatupad ito sa pinakabagong update ng iOS application.
Maaaring tingnan ng mga interesado sa teknikal na bahagi ang source code: github.com/Adamant-im/adamant-notificationService.

Pinagmulan: www.habr.com

Magdagdag ng komento