Hysbysiadau gwthio diogel: o theori i ymarfer

Hei Habr!

Heddiw, byddaf yn siarad am yr hyn y mae fy nghydweithwyr a minnau wedi bod yn ei wneud ers sawl mis bellach: hysbysiadau gwthio ar gyfer negeswyr gwib symudol. Fel y dywedais eisoes, yn ein cais mae'r prif bwyslais ar ddiogelwch. Felly, fe wnaethom ddarganfod a oes gan hysbysiadau gwthio “bwyntiau gwan” ac, os felly, sut y gallwn eu gwastatáu er mwyn ychwanegu’r opsiwn defnyddiol hwn at ein gwasanaeth.

Yr wyf yn cyhoeddi cyfieithiad o'n erthyglau o Ganolig gyda rhai ychwanegiadau bychain gennyf fy hun. Mae’n cynnwys canlyniadau’r “ymchwiliad” a stori am sut y cafodd y broblem ei datrys.

Rydym yn archwilio'r deunydd

Yn y model clasurol, mae hysbysiadau gwthio yn gwneud negeswyr yn agored i ymosodiadau MITM (Dyn-yn-y-canol). Er enghraifft, gyda Google, Microsoft, a'r hen fersiwn o iMessage, mae'r rhaglen yn anfon allweddi amgryptio i weinyddion Apple - ar y gweinydd, mae defnyddwyr yn cael eu dilysu ac mae pennawd y neges (neu ei gynnwys) yn cael ei ddadgryptio.

Hysbysiadau gwthio diogel: o theori i ymarfer

O ganlyniad, mae cyfle i ddarllen yr ohebiaeth trwy gael mynediad i'r gweinydd hysbysu gwthio. Mae hyn yn golygu bod unrhyw amgryptio gohebiaeth yn ddiwerth: bydd hysbysiadau gwthio yn dal i adael y posibilrwydd o gael eu darllen gan drydydd partïon. Trafododd awduron yr erthygl y posibilrwydd hwn yn fwy manwl. “Amgryptio yn gywir” ar Xaker.ru, sy'n ymroddedig i ddulliau o amgryptio negeseuon.

Os ydych chi'n meddwl bod gweinyddwyr Apple a Google 100% yn ddiogel rhag gollwng allweddi amgryptio defnyddwyr, ystyriwch y ffaith bod gan eu gweithwyr fynediad atynt. Ac mae gweithwyr yn bobl.
Er gwaethaf holl wendidau hysbysiadau gwthio, mae llawer o negeswyr gwib “diogel”, gan gynnwys Signal a Telegram, yn eu defnyddio. Fel arall, bydd yn rhaid i ddefnyddwyr fonitro negeseuon newydd â llaw trwy fewngofnodi i'r rhaglen yn gyson. Sydd yn anghyfleus iawn, a bydd negeswyr cystadleuol yn cael mantais.

Paranoia a synnwyr cyffredin


Yn ein prosiect, fe wnaethom drafod y mater hwn yn agos sawl mis yn ôl. Roedd angen i ni ychwanegu opsiwn hysbysu gwthio i fod yn gystadleuol. Ond ar yr un pryd, peidiwch ag agor twll diogelwch, oherwydd bydd unrhyw ollyngiad data yn tanseilio hyder yn y prosiect.

Fodd bynnag, mae gennym fantais bwysig eisoes: mae ein negesydd wedi'i ddatganoli (mae data'n cael ei storio ar y blockchain), ac nid oes gan weithwyr fynediad at gyfrifon. Dim ond defnyddwyr sydd ag allweddi amgryptio, ac mae allweddi cyhoeddus interlocutors ar gael ar y blockchain i amddiffyn rhag ymosodiadau MITM.

Yn y fersiwn gyntaf o hysbysiadau gwthio, fe wnaethom benderfynu ei chwarae'n ddiogel cymaint â phosibl a pheidio â throsglwyddo testun y neges o gwbl. Ni dderbyniodd y gwasanaeth gwthio destun y neges o'r nod, ond dim ond signal am y ffaith ei fod wedi'i dderbyn. Felly, gwelodd y defnyddiwr yr hysbysiad “Neges newydd wedi cyrraedd”. Dim ond yn y negesydd yr oedd modd ei ddarllen.

Hysbysiadau gwthio diogel: o theori i ymarfer
Sut y gweithiodd: fideo.

Ar ôl hynny, fe wnaethom ddysgu bod gan fersiwn diweddaraf Apple o hysbysiadau nodweddion diogelwch newydd. Hwy rhyddhau UNNotificationServiceExtension, sy'n caniatáu i ddatblygwyr anfon data hysbysu wedi'i amgryptio'n llawn dros APNS. Yna mae'r app ar ddyfais y defnyddiwr terfynol yn cyflawni'r dadgryptio (neu'n lawrlwytho data ychwanegol) ac yn arddangos hysbysiad. Fe wnaethom ei gymryd fel sail ar gyfer yr ail fersiwn o hysbysiadau gwthio.

Rydym bellach wedi datblygu'r ail fersiwn o hysbysiadau gwthio ar gyfer iOS, sy'n eich galluogi i arddangos testun y neges heb risg diogelwch. Yn y cysyniad newydd, mae'r rhesymeg yn edrych fel hyn:

  • Mae'r gwasanaeth gwthio yn anfon hysbysiad gwthio gyda rhif y trafodiad (gall y neges wedi'i hamgryptio fod yn fawr iawn, ac mae maint yr hysbysiadau yn gyfyngedig iawn)
  • Pan fydd y ddyfais yn derbyn hysbysiad, mae'n lansio ein NotificationServiceExtension - microgymhwysiad sy'n gofyn am drafodiad o'r nod trwy id, yn ei ddadgryptio gan ddefnyddio'r cyfrinair sydd wedi'i gadw, ac yn anfon hysbysiad newydd i'r system. Mae'r cyfrinair yn cael ei storio mewn storfa ddiogel.
  • Mae'r system yn dangos hysbysiad gyda neges neu gyfieithiad wedi'i ddadgryptio.
  • Nid yw'r allweddi'n mynd i unrhyw le, yn union fel y neges destun plaen. Nid oes gan y gwasanaeth gwthio unrhyw ffordd i ddadgryptio'r neges.

Hysbysiadau gwthio diogel: o theori i ymarfer

Fe wnaethom dderbyn bod y fersiwn hon yn gweithio a'i rhoi ar waith yn y diweddariad diweddaraf o'r cymhwysiad iOS.
Gall y rhai sydd â diddordeb yn yr ochr dechnegol weld y cod ffynhonnell: github.com/Adamant-im/adamant-notificationService.

Ffynhonnell: hab.com

Ychwanegu sylw