Turvalised tõukemärguanded: teooriast praktikani

Tere Habr!

Täna räägin sellest, mida kolleegid ja mina oleme juba mitu kuud teinud: mobiilsete kiirsõnumite tõukemärguanded. Nagu ma juba ütlesin, on meie rakenduses põhirõhk turvalisusel. Seetõttu saime teada, kas tõukemärguannetel on nõrku kohti ja kui jah, siis kuidas saame neid tasandada, et see kasulik valik meie teenusesse lisada.

Avaldan meie tõlke artiklid meediast väikeste täiendustega minu enda poolt. See sisaldab "juurdluse" tulemusi ja lugu probleemi lahendamisest.

Uurime materjali

Klassikalises mudelis muudavad tõukemärguanded sõnumitoojad MITM-i (Man-in-the-middle) rünnakute suhtes haavatavaks. Näiteks Google’i, Microsofti ja iMessage’i vana versiooni puhul saadab rakendus Apple’i serveritesse krüpteerimisvõtmed – serveris autenditakse kasutajad ja sõnumi päis (või selle sisu) dekrüpteeritakse.

Turvalised tõukemärguanded: teooriast praktikani

Selle tulemusel on võimalus kirjavahetust lugeda, hankides juurdepääsu tõuketeatiste serverile. See tähendab, et igasugune kirjavahetuse krüpteerimine on kasutu: tõukemärguanded jätavad endiselt võimaluse neid lugeda kolmandatele isikutele. Artikli autorid käsitlesid seda võimalust lähemalt. "Krüptige õigesti" saidil Xaker.ru, mis on pühendatud sõnumite krüptimise meetoditele.

Kui arvate, et Apple'i ja Google'i serverid on 100% kaitstud kasutajate krüpteerimisvõtmete lekkimise eest, arvestage asjaoluga, et nende töötajatel on neile juurdepääs. Ja töötajad on inimesed.
Vaatamata kõigile tõukemärguannete haavatavustele kasutavad paljud "turvalised" kiirsõnumitoojad, sealhulgas signaal ja telegramm, neid. Vastasel juhul peavad kasutajad uusi sõnumeid "käsitsi" jälgima, logides pidevalt rakendusse. Mis on väga ebamugav ja konkureerivad sõnumitoojad saavad eelise.

Paranoia ja terve mõistus


Oma projektis käsitlesime seda teemat põhjalikult mitu kuud tagasi. Konkurentsivõime tagamiseks pidime lisama push-teavituse valiku. Kuid samal ajal ärge avage turvaauku, sest igasugune andmete leke õõnestab usaldust projekti vastu.

Kuid meil on juba praegu üks oluline eelis: meie messenger on detsentraliseeritud (andmed salvestatakse plokiahelasse) ja töötajatel puudub juurdepääs kontodele. Krüpteerimisvõtmed on ainult kasutajatel ja MITM-i rünnakute eest kaitsmiseks on plokiahelas saadaval vestluspartnerite avalikud võtmed.

Tõukemärguannete esimeses versioonis otsustasime võimalikult ohutult mängida ja sõnumi teksti üldse mitte edastada. Tõuketeenus ei saanud sõlmelt sõnumi teksti, vaid ainult signaali selle vastuvõtmise fakti kohta. Seetõttu nägi kasutaja teadet "Uus sõnum on saabunud". Seda oli võimalik lugeda ainult messengeris.

Turvalised tõukemärguanded: teooriast praktikani
Kuidas see töötas: video.

Pärast seda saime teada, et Apple'i uusimal teavitusversioonil on uued turvafunktsioonid. Nad vabastati UNNotificationServiceExtension, mis võimaldab arendajatel saata APNS-i kaudu täielikult krüptitud teavitusandmeid. Seejärel teostab lõppkasutaja seadmes olev rakendus dekrüpteerimise (või laadib alla lisaandmed) ja kuvab teatise. Võtsime selle tõukemärguannete teise versiooni aluseks.

Nüüd oleme iOS-i jaoks välja töötanud tõukemärguannete teise versiooni, mis võimaldab kuvada sõnumi teksti ilma turvariskita. Uues kontseptsioonis näeb loogika välja järgmine:

  • Tõuketeenus saadab tõuketeate koos tehingunumbriga (krüpteeritud sõnum võib olla väga suur ja teadete suurus on väga piiratud)
  • Kui seade saab teatise, käivitab see meie NotificationServiceExtension - mikrorakenduse, mis taotleb sõlmelt tehingut ID järgi, dekrüpteerib selle salvestatud parooli abil ja saadab süsteemile uue teate. Paroolifraas salvestatakse turvalises salvestusruumis.
  • Süsteem kuvab teatise dekrüpteeritud sõnumi või tõlkega.
  • Võtmed ei kao kuhugi, nagu ka tavaline tekstsõnum. Tõuketeenusel pole võimalust sõnumit dekrüpteerida.

Turvalised tõukemärguanded: teooriast praktikani

Me aktsepteerisime seda versiooni töötavana ja rakendasime selle iOS-i rakenduse uusimas värskenduses.
Tehnilise poole huvilised saavad vaadata lähtekoodi: github.com/Adamant-im/adamant-notificationService.

Allikas: www.habr.com

Lisa kommentaar