SÀkra push-notiser: frÄn teori till praktik

Hej, Habr!

I dag ska jag berÀtta om vad jag och mina kollegor har arbetat med de senaste mÄnaderna: push-notifikationer för mobila meddelandeapplikationer. Som jag redan nÀmnt, Àr vÄrt fokus pÄ sÀkerhet. DÀrför har vi undersökt om det finns "svaga punkter" i push-notifikationer och om sÄ Àr fallet, hur vi kan motverka dem för att lÀgga till denna anvÀndbara funktion i vÄr tjÀnst.

Jag publicerar en översÀttning av vÄr artikel frÄn Medium med nÄgra egna tillÀgg. Den innehÄller resultatet av en "utredning" och en berÀttelse om hur vi löste problemet.

Vi undersöker materialet

I den klassiska modellen gör push-notifikationer meddelandetjÀnster sÄrbara för MITM-attacker (Man-in-the-middle, "Mannen i mitten"). Till exempel, hos Google, Microsoft och den gamla versionen av iMessage skickar applikationen krypteringsnycklar till Apples servrar - dÀr sker autentisering av anvÀndare och avkodning av meddelandets rubrik (eller dess innehÄll).

SÀkra push-notiser: frÄn teori till praktik

Slutresultatet Ă€r att det finns en chans att lĂ€sa konversationer om man fĂ„r tillgĂ„ng till push-notifikationsservern. Det betyder att alla krypteringar av meddelanden Ă€r meningslösa: push-notifikationer ger Ă€ndĂ„ möjlighet för tredje parter att lĂ€sa dem. Detta diskuteras mer ingĂ„ende av författarna till artikeln “Kryptera dig korrekt” pĂ„ Xaker.ru, som handlar om metoder för meddelandekryptering.

Om du tror att Apples och Googles servrar 100% kommer att förhindra lÀckor av anvÀndarnas krypteringsnycklar, tÀnk pÄ att deras anstÀllda har tillgÄng till dem. Och anstÀllda Àr mÀnniskor.
Trots alla sÄrbarheter hos push-notifikationer anvÀnder mÄnga "sÀkra" meddelandetjÀnster, inklusive Signal och Telegram, dem. Annars skulle anvÀndarna behöva "manuellt" övervaka nya meddelanden, stÀndigt gÄ in i applikationen. Vilket Àr ganska obekvÀmt, och konkurrerande meddelandetjÀnster skulle fÄ en fördel.

Paranoia och sunt förnuft


I vÄrt projekt tog vi itu med denna frÄga för nÄgra mÄnader sedan. Vi behövde skapa en push-notifikationsfunktion för att vara konkurrenskraftiga. Men vi ville inte skapa en sÀkerhetslucka, eftersom varje datalÀcka skulle underminera förtroendet för projektet.

Emellertid har vi redan en viktig fördel: vÄr meddelandetjÀnst Àr decentraliserad (data lagras i blockchain), och anstÀllda har inte tillgÄng till kontona. Krypteringsnycklarna finns endast hos anvÀndarna, medan offentliga nycklar för samtalspartnerna Àr tillgÀngliga i blockchain för att skydda mot MITM-attacker.

I den första versionen av push-notiser beslutade vi att vara vÀldigt försiktiga och inte överhuvudtaget överföra meddelandetexten. Push-tjÀnsten fick frÄn noden inte meddelandetexten, utan bara en signal om att det hade mottagits. DÀrför sÄg anvÀndaren notifikationen "Du har fÄtt ett nytt meddelande". Det gick endast att lÀsa i meddelandeappen.

SÀkra push-notiser: frÄn teori till praktik
Hur det fungerade: video.

Efter detta fick vi veta att den senaste versionen av notifikationer frÄn Apple har nya skyddselement. De utvecklarna av musikservicen Spotify. Den modifierade Spotify Lite ser ut som den fullstÀndiga versionen, men saknar mÄnga instÀllningar och tillÄter inte nedladdning av lÄtar för lyssning utan internetanslutning. UNNotificationServiceExtension, som gör det möjligt för utvecklare att skicka helt krypterade data i notifikationer via APNS. Sedan utför appen pÄ slutanvÀndarens enhet dekryptering (eller laddar ner ytterligare data) och visar notifikationen. Denna lösning anvÀnde vi som grund för den andra versionen av push-notiserna.

Nu har vi utvecklat den andra versionen av push-notifikationer för iOS, som möjliggör visning av meddelande-texten utan sÀkerhetsrisk. I den nya konceptet ser logiken ut sÄ hÀr:

  • Push-tjĂ€nsten skickar push-notifikationen med transaktionsnumret (det krypterade meddelandet kan vara mycket stort, medan notifikationernas storlek Ă€r kraftigt begrĂ€nsad)
  • Enheten vid mottagandet av notifikationen startar vĂ„r NotificationServiceExtension – en mikrotjĂ€nst som begĂ€r transaktionen frĂ„n noden via id, dekrypterar den med hjĂ€lp av den sparade passfrasen, och ger systemet en ny notifikation. Passfrasen lagras i ett sĂ€kert utrymme.
  • Systemet visar notifikationen med det dekrypterade meddelandet eller översĂ€ttningen.
  • Nycklarna lĂ€mnar inte nĂ„gonstans, precis som meddelandet i klartext. Push-tjĂ€nsten har ingen möjlighet att dekryptera meddelandet.

SÀkra push-notiser: frÄn teori till praktik

Denna version antog vi som en fungerande och implementerade den i den senaste uppdateringen av appen för iOS.
Den som Àr intresserad av den tekniska sidan kan titta pÄ koden: github.com/Adamant-im/adamant-notificationService.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster