Tere, Habr!
TÀna rÀÀgin sellest, millega oleme kolleegidega juba mitu kuud tegelenud: mobiilimessengerite push-teadete vÔimalustega. Nagu juba mainisin, on meie rakenduses pÔhitÀhelepanu suunatud turvalisusele. SeetÔttu uurisime, kas push-teadetel on 'nÔrku kohti' ja kui jah, siis kuidas saame neid neutraliseerida, et lisada see kasulik funktsioon meie teenusesse.
Avaldan meie mÔningate lisandustega. Artiklis on kokkuvÔte 'uurimisest' ja jutt sellest, kuidas probleemi lahendasime.
Uurime materjali
Klassikalises mudelis teevad push-teated messengerid vastuvĂ”tlikuks MITM (Man-in-the-middle, 'Inimene keskel') rĂŒnnakutele. NĂ€iteks Google'il, Microsoftil ja vanas iMessage'i versioonis saadab rakendus ĆĄifreerimisvĂ”tmed Apple'i serveritesse â serveris toimub kasutajate autentimine ja sĂ”numi pealkirja (vĂ”i selle sisu) deĆĄifreerimine.

LĂ”ppkokkuvĂ”ttes on vĂ”imalus lugeda vestlusi, kui pÀÀseb juurde push-teadete serverile. See tĂ€hendab, et kĂ”ik vestluste krĂŒpteerimine on kasutu: push-teated jĂ€tavad ikkagi vĂ”imaluse kolmandate isikute lugemiseks. Autoriartiklis arutleti pĂ”hjalikumalt nende vĂ”imaluste ĂŒle. Xaker.ru-s, mis on pĂŒhendatud sĂ”numite krĂŒptimise meetoditele.
Kui arvate, et Apple'i ja Google'i serverid ei lase kunagi kasutajate krĂŒptimisvĂ”tmete lekkeid, siis mĂ”elge, et neile pÀÀsevad ligi nende töötajad. Ja töötajad â need on inimesed.
KĂ”igist push-i haavatavustest hoolimata kasutavad paljud âturvalisedâ sĂ”numirakendused, sealhulgas Signal ja Telegram, neid. Ilma nendeta peaksid kasutajad uusi sĂ”numeid pidevalt rakendusse 'kĂ€si' kontrollima, mis on vĂ€ga ebamugav ja konkurentsivĂ”imelised sĂ”numirakendused saavad eelise.
Paranoia ja ratsionaalne mÔtlemine
Meie projektis tegelesime sellega lÀhemalt paar kuud tagasi. Me vajasime push-teavituste funktsiooni, et olla konkurentsivÔimelised. Kuid samal ajal ei tohtinud me turvapisaraid avada, sest iga andmeleke kahjustaks projekti usaldusvÀÀrsust.
Kuid meil on juba oluline eelis: meie sĂ”numirakendus on detsentraliseeritud (andmed salvestatakse plokiahelas), samas kui töötajatel puudub juurdepÀÀs kontodele. KrĂŒptimisvĂ”tmed on ainult kasutajatel, ja vestluskaaslaste avalikud vĂ”tmed on plokiahelas saadaval, et kaitsta MITM-rĂŒnnakute eest.
Esimeses versioonis otsustasime maksimaalselt ettevaatlik olla ja mitte edastada sĂ”numi teksti ĂŒldse. Push-teenus sai sĂ”lmpunktist mitte sĂ”numi teksti, vaid vaid signaali selle vastuvĂ”tmise kohta. SeetĂ”ttu nĂ€gi kasutaja teadet âSaabunud on uus sĂ”numâ. Selle lugemine oli vĂ”imalik vaid sĂ”numitoojast.

.
PĂ€rast seda saime teada, et Apple'i viimases versioonis on uusi kaitseelemente. Need UNNotificationServiceExtension, mis vĂ”imaldab arendajatel saata tĂ€ielikult krĂŒpteeritud teadete andmeid lĂ€bi APNS. SeejĂ€rel dekrĂŒpteerib rakendus lĂ”ppkasutaja seadmes (vĂ”i laadib tĂ€iendavaid andmeid) ja kuvab teadet. Selle vĂ”tsime aluseks push-ĂŒlesannete teise versiooni.
Praegu oleme vÀlja töötanud teise versiooni push-teadetest iOS-ile, mis vÔimaldab kuvada sÔnumi teksti ilma turvariskita. Uue kontseptsiooni loogika nÀeb vÀlja jÀrgmiselt:
- Push-teenus saadab push-teate tehingu numbriga (krĂŒpteeritud sĂ”num vĂ”ib olla vĂ€ga suur ja teadete suurus on tugevalt piiratud)
- Seade, kui see saab teate, aktiveerib meie NotificationServiceExtension'i â mikro-rakenduse, mis kĂŒsib sĂ”lme tehingut id alusel, dekrĂŒpteerib selle salvestatud parooliga ja edastab sĂŒsteemile uue teate. Parool on salvestatud turvalisse hoidmesse.
- SĂŒsteem kuvab teate dekrĂŒpteeritud sĂ”numi vĂ”i tĂ”lke.
- Ahnud ei lĂ€he kuhugi, nagu ka plaintext sĂ”num. Push-teenusel pole vĂ”imalust sĂ”numit dekrĂŒpteerida.

Seda versiooni peeti tööks ja rakendati viimases iOS-i rakenduse uuenduses.
Tehnilist poolt huvitavad saavad vaadata allikat: .
Allikas: habr.com
