Sekirize notifikasyon pouse: soti nan teyori nan pratik

Hey Habr!

Jodi a mwen pral pale sou sa kòlèg mwen yo ak mwen te fè depi plizyè mwa kounye a: pouse notifikasyon pou mesaje enstantane mobil. Kòm mwen te deja di, nan aplikasyon nou an anfaz prensipal la se sou sekirite. Se poutèt sa, nou te konnen si notifikasyon pouse yo gen "pwen fèb" epi, si se konsa, ki jan nou ka nivelman yo nan lòd yo ajoute opsyon itil sa a nan sèvis nou an.

Mwen pibliye yon tradiksyon nou an atik ki soti nan Medium ak kèk ti ajoute nan men tèt mwen. Li genyen rezilta "ankèt la" ak yon istwa sou fason yo te rezoud pwoblèm nan.

Nou egzamine materyèl la

Nan modèl klasik la, notifikasyon pouse fè mesaje vilnerab a atak MITM (Man-in-the-middle). Pou egzanp, ak Google, Microsoft, ak ansyen vèsyon an nan iMessage, aplikasyon an voye kle chifreman nan serveurs Apple - sou sèvè a, itilizatè yo otantifye ak header mesaj la (oswa kontni li yo) dechifre.

Sekirize notifikasyon pouse: soti nan teyori nan pratik

Kòm yon rezilta, gen yon chans pou li korespondans la pa jwenn aksè nan sèvè notifikasyon pouse a. Sa vle di ke nenpòt chifreman nan korespondans se initil: notifikasyon pouse ap toujou kite posiblite pou yo te li pa twazyèm pati. Otè yo nan atik la te diskite posiblite sa a nan plis detay. "Ankripte kòrèkteman" sou Xaker.ru, dedye a metòd pou kode mesaj.

Si ou panse ke Apple ak Google serveurs yo se 100% an sekirite kont koule itilizatè kle chifreman, konsidere lefèt ke anplwaye yo gen aksè a yo. Ak anplwaye yo se moun.
Malgre tout frajilite notifikasyon pouse yo, anpil mesaje enstantane "sekirite", tankou Signal ak Telegram, sèvi ak yo. Sinon, itilizatè yo pral oblije "manyèlman" kontwole nouvo mesaj pa toujou ap konekte nan aplikasyon an. Ki se trè konvenyan, ak konpetisyon mesaje pral jwenn yon avantaj.

Paranoya ak bon sans


Nan pwojè nou an, nou te pran pwoblèm sa a ak anpil atansyon de sa plizyè mwa. Nou te bezwen ajoute yon opsyon notifikasyon pouse pou nou ka konpetitif. Men, an menm tan an, pa louvri yon twou sekirite, paske nenpòt ki koule done pral mine konfyans nan pwojè a.

Sepandan, nou deja gen yon avantaj enpòtan: mesaje nou an desantralize (done yo estoke sou blockchain a), ak anplwaye yo pa gen aksè a kont. Se sèlman itilizatè yo ki gen kle chifreman, ak kle piblik entèrlokuteur yo disponib sou blockchain la pou pwoteje kont atak MITM.

Nan premye vèsyon an nan notifikasyon pouse, nou deside jwe li an sekirite otank posib epi yo pa transmèt tèks mesaj la ditou. Sèvis pouse a pa t 'resevwa tèks la nan mesaj la soti nan ne la, men se sèlman yon siyal sou reyalite a nan resi li yo. Se poutèt sa, itilizatè a te wè notifikasyon "Nouvo mesaj te rive". Li te posib pou li sèlman nan mesaje a.

Sekirize notifikasyon pouse: soti nan teyori nan pratik
Ki jan li te travay: videyo.

Apre sa, nou te aprann ke dènye vèsyon Apple la nan notifikasyon gen nouvo karakteristik sekirite. Yo lage UNNotificationServiceExtension, ki pèmèt devlopè yo voye done notifikasyon konplètman chiffres sou APNS. Apre sa, aplikasyon an sou aparèy itilizatè final la fè dechifre (oswa telechaje done adisyonèl) epi li montre yon notifikasyon. Nou te pran li kòm baz pou dezyèm vèsyon an nan notifikasyon pouse.

Nou te kounye a devlope dezyèm vèsyon an nan notifikasyon pouse pou iOS, ki pèmèt ou montre tèks la nan mesaj la san yo pa yon risk sekirite. Nan nouvo konsèp la, lojik la sanble sa a:

  • Sèvis pouse a voye yon notifikasyon pouse ak nimewo tranzaksyon an (mesaj chiffres la ka gwo anpil, epi gwosè notifikasyon yo trè limite)
  • Lè aparèy la resevwa yon notifikasyon, li lanse NotificationServiceExtension nou an - yon mikwo-aplikasyon ki mande yon tranzaksyon nan nod la pa id, dekripte li lè l sèvi avèk pasfraz ki sove a, epi voye yon nouvo notifikasyon nan sistèm nan. Pasfraz la estoke nan depo an sekirite.
  • Sistèm nan montre yon notifikasyon ak yon mesaj dechifre oswa tradiksyon.
  • Kle yo pa ale nenpòt kote, menm jan ak mesaj tèks la. Sèvis pouse a pa gen okenn fason pou dechifre mesaj la.

Sekirize notifikasyon pouse: soti nan teyori nan pratik

Nou aksepte vèsyon sa a kòm travay epi aplike li nan dènye aktyalizasyon aplikasyon iOS la.
Moun ki enterese nan bò teknik la ka wè kòd sous la: github.com/Adamant-im/adamant-notificationService.

Sous: www.habr.com

Add nouvo kòmantè