Öruggar tilkynningar: frá kenningu til framkvæmda

Hæ Habr!

Í dag mun ég tala um það sem ég og samstarfsmenn mínir höfum verið að gera í nokkra mánuði núna: ýta tilkynningar fyrir farsíma spjallforrit. Eins og ég sagði þegar, í umsókn okkar er megináherslan lögð á öryggi. Þess vegna komumst við að því hvort ýta tilkynningar hafi „veika punkta“ og, ef svo er, hvernig við getum jafnað þær út til að bæta þessum gagnlega valkosti við þjónustu okkar.

Ég er að gefa út þýðingu á okkar greinar frá Medium með smá viðbótum frá mér. Það inniheldur niðurstöður „rannsóknarinnar“ og sögu um hvernig vandamálið var leyst.

Við skoðum efnið

Í klassísku líkaninu gera ýttutilkynningar boðbera viðkvæma fyrir MITM (Man-in-the-middle) árásum. Til dæmis, með Google, Microsoft og gömlu útgáfunni af iMessage, sendir forritið dulkóðunarlykla til Apple netþjóna - á þjóninum eru notendur auðkenndir og skilaboðahausinn (eða innihald hans) afkóðaður.

Öruggar tilkynningar: frá kenningu til framkvæmda

Fyrir vikið er möguleiki á að lesa bréfaskiptin með því að fá aðgang að tilkynningaþjóninum. Þetta þýðir að öll dulkóðun bréfaskipta er gagnslaus: ýttu tilkynningar munu samt leyfa þriðja aðila að lesa þær. Greinarhöfundar ræddu þennan möguleika nánar. „Dulkóða rétt“ á Xaker.ru, tileinkað aðferðum við að dulkóða skilaboð.

Ef þú heldur að Apple og Google netþjónar séu 100% öruggir gegn leka dulkóðunarlykla notenda skaltu íhuga þá staðreynd að starfsmenn þeirra hafa aðgang að þeim. Og starfsmenn eru fólk.
Þrátt fyrir alla veikleika ýtatilkynninga nota margir „öruggir“ spjallforrit, þar á meðal Signal og Telegram. Annars verða notendur að „handvirkt“ fylgjast með nýjum skilaboðum með því að skrá sig stöðugt inn í forritið. Sem er mjög óþægilegt og boðberar sem keppa munu fá forskot.

Paranoja og skynsemi


Í verkefninu okkar tókum við þetta mál vel upp fyrir nokkrum mánuðum. Við þurftum að bæta við valmöguleika fyrir ýtt tilkynningar til að vera samkeppnishæf. En á sama tíma skaltu ekki opna öryggisgat, því hvers kyns gagnaleki mun grafa undan trausti á verkefninu.

Hins vegar höfum við nú þegar mikilvægan kost: boðberinn okkar er dreifður (gögn eru geymd á blockchain) og starfsmenn hafa ekki aðgang að reikningum. Aðeins notendur hafa dulkóðunarlykla og opinberir lyklar viðmælenda eru fáanlegir á blockchain til að vernda gegn MITM árásum.

Í fyrstu útgáfunni af ýttutilkynningum ákváðum við að spila það öruggt eins mikið og mögulegt var og alls ekki senda skilaboðatextann. Þrýstiþjónustan fékk ekki texta skilaboðanna frá hnútnum, heldur aðeins merki um móttöku þess. Þess vegna sá notandinn tilkynninguna „Ný skilaboð eru komin“. Það var aðeins hægt að lesa það í messenger.

Öruggar tilkynningar: frá kenningu til framkvæmda
Hvernig það virkaði: myndband.

Eftir það komumst við að því að nýjasta útgáfa Apple af tilkynningum hefur nýja öryggiseiginleika. Þeir sleppt UNNotificationServiceExtension, sem gerir forriturum kleift að senda fullkomlega dulkóðuð tilkynningagögn yfir APNS. Forritið á tæki notandans framkvæmir síðan afkóðunina (eða hleður niður viðbótargögnum) og birtir tilkynningu. Við tókum það sem grundvöll fyrir seinni útgáfuna af ýttutilkynningum.

Við höfum nú þróað aðra útgáfu af ýttu tilkynningum fyrir iOS, sem gerir þér kleift að birta texta skilaboðanna án öryggisáhættu. Í nýju hugtakinu lítur rökfræðin svona út:

  • Þrýstiþjónustan sendir ýta tilkynningu með færslunúmerinu (dulkóðuðu skilaboðin geta verið mjög stór og stærð tilkynninga er mjög takmörkuð)
  • Þegar tækið fær tilkynningu ræsir það NotificationServiceExtension okkar - örforrit sem biður um færslu frá hnútnum með auðkenni, afkóðar það með vistaða lykilorðinu og sendir nýja tilkynningu til kerfisins. Aðgangsorðið er geymt í öruggri geymslu.
  • Kerfið birtir tilkynningu með afkóðaðri skilaboðum eða þýðingu.
  • Lyklarnir fara ekki neitt, rétt eins og látlaus textaskilaboð. Þrýstiþjónustan hefur enga leið til að afkóða skilaboðin.

Öruggar tilkynningar: frá kenningu til framkvæmda

Við samþykktum þessa útgáfu sem virka og innleiddum hana í nýjustu uppfærslu iOS forritsins.
Þeir sem hafa áhuga á tæknilegu hliðinni geta skoðað frumkóðann: github.com/Adamant-im/adamant-notificationService.

Heimild: www.habr.com

Bæta við athugasemd