Push jakinarazpen seguruak: teoriatik praktikara

Aupa Habr!

Gaur hainbat hilabetetan nire lankideek eta biok egiten ari garenari buruz hitz egingo dizuet: mugikorreko berehalako mezularientzako push jakinarazpenak. Lehen esan dudan bezala, gure aplikazioan segurtasunari ematen zaio garrantzia. Hori dela eta, jakin dugu push jakinarazpenek "puntu ahulak" dituzten ala ez eta, hala bada, nola berdindu ditzakegun aukera erabilgarria gure zerbitzuari gehitzeko.

Gure itzulpena argitaratzen ari naiz Medium-eko artikuluak neure buruaren gehigarri txiki batzuekin. "Ikerketaren" emaitzak eta arazoa nola konpondu zen azaltzen duen istorio bat jasotzen du.

Materiala aztertzen dugu

Eredu klasikoan, push jakinarazpenek MITM (Man-in-the-middle) erasoen aurrean zaurgarri bihurtzen dituzte mezulariak. Adibidez, Google, Microsoft eta iMessage-ren bertsio zaharrarekin, aplikazioak enkriptatze-gakoak bidaltzen ditu Apple zerbitzarietara; zerbitzarian, erabiltzaileak autentifikatzen dira eta mezuen goiburua (edo bere edukia) deszifratzen da.

Push jakinarazpen seguruak: teoriatik praktikara

Ondorioz, korrespondentzia irakurtzeko aukera dago push jakinarazpen zerbitzarirako sarbidea lortuz. Horrek esan nahi du korrespondentziaren edozein enkriptatzea alferrikakoa dela: push jakinarazpenek hirugarrenek irakurtzeko aukera utziko dute oraindik. Artikuluaren egileek aukera hori zehatzago eztabaidatu zuten. "Ondo enkriptatu" Xaker.ru-n, mezuak enkriptatzeko metodoei eskainia.

Apple eta Google zerbitzariak % 100 seguruak direla uste baduzu erabiltzaileen enkriptatze-gakoak isurtzearen aurka, kontuan hartu langileek haietarako sarbidea dutela. Eta langileak pertsonak dira.
Push jakinarazpenen ahultasun guztiak gorabehera, berehalako mezulari "seguru" askok, Signal eta Telegram barne, erabiltzen dituzte. Bestela, erabiltzaileek mezu berriak "eskuz" kontrolatu beharko dituzte etengabe aplikazioan saioa hasiz. Hori oso deserosoa da, eta lehian mezulariek abantaila lortuko dute.

Paranoia eta sen ona


Gure proiektuan, duela zenbait hilabete hurbiletik hartu genuen gai hau. Lehiakorra izateko push jakinarazpen aukera bat gehitu behar genuen. Baina, aldi berean, ez ireki segurtasun-zulorik, edozein datu-isuriak proiektuarekiko konfiantza ahulduko duelako.

Hala ere, dagoeneko badugu abantaila garrantzitsu bat: gure mezularia deszentralizatuta dago (datuak blockchain-en gordetzen dira), eta langileek ez dute kontuetarako sarbidea. Erabiltzaileek soilik dituzte enkriptatze-gakoak, eta solaskideen gako publikoak eskuragarri daude bloke-katean MITM erasoetatik babesteko.

Push jakinarazpenen lehen bertsioan, ahalik eta gehien seguru jokatzea eta mezuaren testua batere ez transmititzea erabaki genuen. Push-zerbitzuak ez zuen nodotik mezuaren testua jaso, jaso izanaren seinalea baizik. Hori dela eta, erabiltzaileak "Mezu berria iritsi da" jakinarazpena ikusi zuen. Mezularitzan bakarrik irakurtzea posible zen.

Push jakinarazpen seguruak: teoriatik praktikara
Nola funtzionatu zuen: bideoa.

Horren ostean, Appleren jakinarazpenen azken bertsioak segurtasun funtzio berriak dituela jakin genuen. Haiek askatu UNNotificationServiceExtension, garatzaileek APNS bidez guztiz enkriptatutako jakinarazpen-datuak bidaltzeko aukera ematen diena. Ondoren, azken erabiltzailearen gailuko aplikazioak deszifratzea egiten du (edo datu gehigarriak deskargatzen ditu) eta jakinarazpen bat bistaratzen du. Push jakinarazpenen bigarren bertsioaren oinarritzat hartu genuen.

Orain iOS-erako push jakinarazpenen bigarren bertsioa garatu dugu, mezuaren testua segurtasun arriskurik gabe bistaratzeko aukera ematen duena. Kontzeptu berrian, logikak honela dauka:

  • Push-zerbitzuak push jakinarazpena bidaltzen du transakzio-zenbakiarekin (enkriptatutako mezua oso handia izan daiteke eta jakinarazpenen tamaina oso mugatua da)
  • Gailuak jakinarazpen bat jasotzen duenean, gure NotificationServiceExtension abiarazten du: nodoari idaren bidez transakzio bat eskatzen dion mikroaplikazioa, gordetako pasaesaldia erabiliz deszifratzen du eta sistemara jakinarazpen berri bat bidaltzen du. Pasaesaldia biltegiratze seguruan gordetzen da.
  • Sistemak jakinarazpen bat erakusten du deszifratutako mezu edo itzulpen batekin.
  • Teklak ez doaz inora, testu arrunteko mezua bezala. Push zerbitzuak ez du mezua deszifratzeko modurik.

Push jakinarazpen seguruak: teoriatik praktikara

Bertsio hau funtzionatzen zuela onartu genuen eta iOS aplikazioaren azken eguneratzean ezarri genuen.
Alde teknikoan interesa dutenek iturburu kodea ikus dezakete: github.com/Adamant-im/adamant-notificationService.

Iturria: www.habr.com

Gehitu iruzkin berria