Agahiyên pêbawer ên ewledar: ji teoriyê heya pratîkê

Hey Habr!

Îro ez ê li ser tiştê ku ez û hevkarên xwe ev çend meh in ku dikin bipeyivim: ji bo peyamberên tavilê yên mobîl notifications push. Wekî ku min berê jî got, di serlêdana me de giraniya sereke li ser ewlehiyê ye. Ji ber vê yekê, me fêhm kir ka notifications push xwedan "xalên qels" in û, heke wusa be, em çawa dikarin wan bihejînin da ku vê vebijarka kêrhatî li karûbarê xwe zêde bikin.

Ez wergereke me diweşînim gotarên ji Medium bi hin zêdekirinên piçûk ji xwe re. Ew encamên "lêkolînê" û çîrokek li ser ka pirsgirêk çawa hate çareser kirin.

Em materyalê lêkolîn dikin

Di modela klasîk de, ragihandinên pêvekê peyamberan ji êrişên MITM (Man-in-the-navîn) xeternak dike. Mînakî, bi Google, Microsoft, û guhertoya kevn a iMessage re, serîlêdan mifteyên şîfrekirinê ji serverên Apple re dişîne - li ser serverê, bikarhêner têne pejirandin û sernavê peyamê (an naveroka wê) tê deşîfrekirin.

Agahiyên pêbawer ên ewledar: ji teoriyê heya pratîkê

Wekî encamek, şansek heye ku hûn bi gihîştina servera ragihandina push-ê re hevpeyivîn bixwînin. Ev tê vê wateyê ku her şîfrekirina nameyan bêkêr e: agahdariya push dê hîn jî îhtîmala xwendina ji hêla aliyên sêyemîn ve bihêle. Nivîskarên gotarê li ser vê îhtîmalê bi hûrgulî nîqaş kirin. "Rast şîfre bike" li ser Xaker.ru, ji bo rêbazên şîfrekirina peyaman veqetandî ye.

Ger hûn difikirin ku serverên Apple û Google ji sedî 100% ewledar in li hember derketina bişkojkên şîfrekirina bikarhêner, vê rastiyê bihesibînin ku karmendên wan bigihîjin wan. Û karmend jî mirov in.
Tevî hemî qelsiyên ragihandinên push, gelek peyamberên tavilê yên "ewle", tevî Signal û Telegram, wan bikar tînin. Wekî din, bikarhêner neçar in ku bi domdarî têketina serîlêdanê peyamên nû "bi destan" bişopînin. Ya ku pir nerehet e, û qasidên hevrik dê feydeyek bistînin.

Paranoya û aqilê hevpar


Di projeya xwe de, me ev mijar ji nêz ve çend meh berê girt. Me hewce kir ku vebijarkek ragihandina pêvek zêde bikin da ku bibin pêşbaz. Lê di heman demê de, qulikek ewlehiyê venekin, ji ber ku her lehiyek daneyê dê baweriya bi projeyê xera bike.

Lêbelê, me berê xwedan avantajek girîng e: peyamnêra me nenavendî ye (daneyên li ser zincîra blokê têne hilanîn), û karmend bigihîjin hesabên. Tenê bikarhêner xwedan mifteyên şîfrekirinê ne, û mifteyên giştî yên muxatab li ser zincîra blokê hene ku li dijî êrîşên MITM biparêzin.

Di guhertoya yekem a notifications push de, me biryar da ku ew bi qasî ku gengaz bi ewle bilîzin û bi tevahî nivîsa peyamê neguhezînin. Karûbarê push nivîsa peyamê ji nodê wernegirt, lê tenê îşaretek li ser rastiya wergirtina wê. Ji ber vê yekê, bikarhêner agahdariya "Peyama Nû hat" dît. Tenê di peyamnêrê de xwendina wê gengaz bû.

Agahiyên pêbawer ên ewledar: ji teoriyê heya pratîkê
Çawa xebitî: vîdyoyê.

Piştî wê, em fêr bûn ku guhertoya herî dawî ya agahdariya Apple xwedan taybetmendiyên ewlehiyê yên nû ye. Ew berdan UNNotificationServiceExtension, ku destûrê dide pêşdebiran ku daneyên agahdariya bi tevahî şîfrekirî li ser APNS bişînin. Dûv re sepana li ser cîhaza bikarhênerê dawî deşîfrekirinê pêk tîne (an daneya zêde dadixe) û agahiyek nîşan dide. Me ew ji bo guhertoya duyemîn a notifications push esas girt.

Me naha guhertoya duyemîn a notifications push ji bo iOS-ê pêşve xistiye, ku dihêle hûn nivîsa peyamê bêyî xeterek ewlehiyê nîşan bidin. Di konsepta nû de, mantiq wiha xuya dike:

  • Karûbarê push bi nimreya danûstendinê re agahdariyek push dişîne (peyama şîfrekirî dikare pir mezin be, û mezinahiya agahdariyan pir kêm e)
  • Gava ku cîhaz agahdariyek distîne, ew NotificationServiceExtension-a me dide destpêkirin - mîkroserîlêdanek ku ji girêka bi id veguheztinê daxwaz dike, bi karanîna şîfreya tomarkirî wê deşîfre dike û agahdariyek nû ji pergalê re dişîne. Daxuyaniya derbasbûnê di depoya ewle de tê hilanîn.
  • Pergal bi peyamek an wergerek deşîfrekirî agahdariyek nîşan dide.
  • Bişkojk naçin cîhekî, mîna peyama nivîsê ya sade. Xizmeta push çu rê tune ku peyamê deşîfre bike.

Agahiyên pêbawer ên ewledar: ji teoriyê heya pratîkê

Me ev versiyon wekî kar qebûl kir û di nûvekirina herî dawî ya serîlêdana iOS-ê de bicîh kir.
Kesên ku di aliyê teknîkî de eleqedar dibin dikarin koda çavkaniyê bibînin: github.com/Adamant-im/adamant-notificationService.

Source: www.habr.com

Add a comment