Feilige push-notifikaasjes: fan teory oant praktyk

Hoi Habr!

Hjoed sil ik prate oer wat myn kollega's en ik al ferskate moannen dien hawwe: push-notifikaasjes foar mobile instant messengers. Lykas ik al sei, yn ús applikaasje leit de wichtichste klam op feiligens. Dêrom fûnen wy út oft push-notifikaasjes "swakke punten" hawwe en, as dat sa is, hoe't wy se kinne nivellerje om dizze nuttige opsje ta te foegjen oan ús tsjinst.

Ik publisearje in oersetting fan ús artikels út Medium mei wat lytse tafoegings fan mysels. It befettet de resultaten fan it "ûndersyk" en in ferhaal oer hoe't it probleem oplost is.

Wy ûndersykje it materiaal

Yn it klassike model meitsje push-notifikaasjes boaden kwetsber foar MITM (Man-in-the-middle) oanfallen. Bygelyks, mei Google, Microsoft, en de âlde ferzje fan iMessage stjoert de applikaasje fersiferingskaaien nei Apple-tsjinners - op 'e server wurde brûkers authentisearre en de berjochtkop (as de ynhâld dêrfan) wurdt ûntsifere.

Feilige push-notifikaasjes: fan teory oant praktyk

As resultaat is d'r in kâns om de korrespondinsje te lêzen troch tagong te krijen ta de push-notifikaasjetsjinner. Dit betsjut dat elke fersifering fan korrespondinsje nutteloos is: push-notifikaasjes litte noch de mooglikheid litte om te lêzen troch tredden. De skriuwers fan it artikel besprutsen dizze mooglikheid yn mear detail. "Koarte fersiferje" op Xaker.ru, wijd oan metoaden fan fersifering fan berjochten.

As jo ​​tinke dat de servers fan Apple en Google 100% feilich binne tsjin lekkende fersiferingskaaien fan brûkers, beskôgje dan it feit dat har meiwurkers tagong hawwe ta har. En meiwurkers binne minsken.
Nettsjinsteande alle kwetsberens fan push-notifikaasjes, brûke in protte "feilige" instant messengers, ynklusyf Signal en Telegram, se. Oars sille brûkers nije berjochten "hânmjittich" moatte kontrolearje troch konstant oan te melden by de applikaasje. Wat heul ûngemaklik is, en konkurrearjende boaden sille in foardiel krije.

Paranoia en sûn ferstân


Yn ús projekt hawwe wy dit probleem ferskate moannen lyn nau opnommen. Wy moasten in push-notifikaasje-opsje tafoegje om kompetitive te wêzen. Mar tagelyk, iepenje gjin befeiligingsgat, om't elk datalek it fertrouwen yn it projekt sil ûndergrave.

Wy hawwe lykwols al in wichtich foardiel: ús messenger is desintralisearre (gegevens wurde opslein op 'e blockchain), en meiwurkers hawwe gjin tagong ta akkounts. Allinich brûkers hawwe fersiferingskaaien, en iepenbiere kaaien fan petearen binne beskikber op 'e blockchain om te beskermjen tsjin MITM-oanfallen.

Yn 'e earste ferzje fan push-notifikaasjes besleaten wy it safolle mooglik feilich te spyljen en de berjochttekst hielendal net oer te stjoeren. De push-tsjinst krige gjin tekst fan it berjocht fan 'e knooppunt, mar allinich in sinjaal oer it feit fan har ûntfangst. Dêrom seach de brûker de notifikaasje "Nije berjocht is oankommen". It wie mooglik om it allinich yn 'e boadskip te lêzen.

Feilige push-notifikaasjes: fan teory oant praktyk
Hoe it wurke: fideo.

Dêrnei learden wy dat Apple's lêste ferzje fan notifikaasjes nije befeiligingsfunksjes hat. Sy frijlitten UNNotificationServiceExtension, wêrtroch ûntwikkelders folslein fersifere notifikaasjegegevens oer APNS kinne stjoere. De app op it apparaat fan 'e ein brûker fiert dan de dekodearring (of downloadt ekstra gegevens) en toant in notifikaasje. Wy namen it as basis foar de twadde ferzje fan push-notifikaasjes.

Wy hawwe no de twadde ferzje fan push-notifikaasjes foar iOS ûntwikkele, wêrtroch jo de tekst fan it berjocht kinne werjaan sûnder feiligensrisiko. Yn it nije konsept sjocht de logika der sa út:

  • De push-tsjinst stjoert in push-notifikaasje mei it transaksjenûmer (it fersifere berjocht kin heul grut wêze, en de grutte fan notifikaasjes is heul beheind)
  • As it apparaat in notifikaasje ûntfangt, lanseart it ús NotificationServiceExtension - in mikroapplikaasje dy't in transaksje freget fan 'e knooppunt troch id, it ûntsiferet mei de bewarre passphrase en stjoert in nije notifikaasje nei it systeem. De passphrase wurdt opslein yn feilige opslach.
  • It systeem toant in notifikaasje mei in ûntsifere berjocht of oersetting.
  • De kaaien geane net oeral, krekt as it platte tekstberjocht. De push-tsjinst hat gjin manier om it berjocht te ûntsiferjen.

Feilige push-notifikaasjes: fan teory oant praktyk

Wy akseptearren dizze ferzje as wurkjend en ymplementearre it yn 'e lêste update fan' e iOS-applikaasje.
Wa't ynteressearre is yn 'e technyske kant, kin de boarnekoade besjen: github.com/Adamant-im/adamant-notificationService.

Boarne: www.habr.com

Add a comment