Njoftimet push të sigurta: nga teoria në praktikë

Përshëndetje, Habr!

Sot do të flas rreth asaj çfarë ne dhe kolegët e mi kemi bërë për disa muaj: rreth njoftimeve push për aplikacionet mobile. Siç e kam thënë më parë, në aplikacionin tonë fokusimi kryesor është në siguri. Prandaj, ne kemi hetuar nëse njoftimet push kanë 'pika të dobëta' dhe nëse po, si mund t'i eliminojmë ato, për të shtuar këtë opsion të dobishëm në shërbimin tonë.

Po publikoj pĂ«rkthimin e artikullit tonĂ« nga Medium me disa shtesa nga vetja. NĂ« tĂ« gjenden pĂ«rfundimet e ‘hetimit’ dhe tregimi se si e zgjidhĂ«m problemin.

Po studiojmë materialin

NĂ« modelin klasik, njoftimet push e bĂ«jnĂ« aplikacionet e mesazheve tĂ« cenueshme ndaj sulmeve tĂ« MITM (Man-in-the-middle, 'Njeriu nĂ« mes'). PĂ«r shembull, Google, Microsoft dhe versioni i vjetĂ«r i iMessage dĂ«rgojnĂ« çelĂ«sat e enkriptimit nĂ« serverat e Apple — nĂ« server ndodh autentifikimi i pĂ«rdoruesve dhe dekriptimi i titullit tĂ« mesazhit (ose i pĂ«rmbajtjes sĂ« tij).

Njoftimet push të sigurta: nga teoria në praktikë

NĂ« fund, ka njĂ« mundĂ«si pĂ«r tĂ« lexuar bisedat, duke fituar akses nĂ« serverin e njoftimeve tĂ« shtytura. Kjo do tĂ« thotĂ« se çdo kriptim i bisedave Ă«shtĂ« i paefekt, pasi njoftimet e shtytura gjithsesi do tĂ« lejojnĂ« leximin nga palĂ«t e treta. Kjo mundĂ«si Ă«shtĂ« diskutuar mĂ« hollĂ«sisht nga autorĂ«t e artikullit. “Kripto me mençuri” nĂ« Xaker.ru, qĂ« Ă«shtĂ« e dedikuar pĂ«r metodat e kriptimit tĂ« mesazheve.

Nëse mendoni se serverët e Apple dhe Google nuk do të lejojnë asnjëherë rrjedhjen e çelsave të kriptimit të përdoruesve, mendojeni se punonjësit e tyre kanë akses në to. Dhe punonjësit janë njerëz.
Pavarësisht gjithçkaje dhe të gjitha dobësive të njoftimeve të shtytura, shumë mesazhere "të sigurta", përfshirë Signal dhe Telegram, i përdorin ato. Ndryshe, përdoruesit do të detyroheshin të monitoronin manualisht mesazhet e reja, duke hyrë vazhdimisht në aplikacion. Kjo është shumë e pakëndshme, dhe konkurentët e mesazhereve do të kenë avantazh.

Paranoja dhe shëndeti i arsyes


Në projektin tonë, kemi filluar të merremi me këtë çështje disa muaj më parë. Na duhej të krijonim opsionin e njoftimeve të shtytura për të qenë konkurrues. Por në të njëjtën kohë, nuk duhej të hapnim një vrimë në siguri, sepse çdo rrjedhje e të dhënave do të dëmtonte besimin në projekt.

MegjithatĂ«, ne tashmĂ« kemi njĂ« avantazh tĂ« rĂ«ndĂ«sishĂ«m: mesazhi ynĂ« Ă«shtĂ« i decentralizuar (tĂ« dhĂ«nat ruhen nĂ« blockchain), ndĂ«rsa punonjĂ«sit nuk kanĂ« akses nĂ« llogaritĂ«. ÇelĂ«sat e enkriptimit janĂ« vetĂ«m te pĂ«rdoruesit, ndĂ«rsa çelĂ«sat publik tĂ« biseduesve janĂ« tĂ« disponueshĂ«m nĂ« blockchain pĂ«r t'u mbrojtur nga sulmet MITM.

Në versionin e parë të njoftimeve, ne vendosëm të jemi shumë të kujdesshëm dhe në të vërtetë nuk dërguam tekstin e mesazhit. Shërbimi i njoftimeve merrte nga nodo jo tekstin e mesazhit, por vetëm një sinjal për faktin e marrjes së tij. Prandaj, përdoruesi shihte njoftimin 'Ka ardhur një mesazh i ri'. Leximi i tij ishte i mundur vetëm në mesazhier.

Njoftimet push të sigurta: nga teoria në praktikë
Si funksiononte kjo: video.

Pas kësaj, ne mësuam se në versionin e fundit të njoftimeve nga Apple ka elemente të reja mbrojtjeje. Ato në lëshuan UNNotificationServiceExtension, i cili u lejon zhvilluesve të dërgojnë të dhëna të plota të enkriptuara të njoftimeve përmes APNS. Pastaj, aplikacioni në pajisjen e përdoruesit përfundimtar kryen dekriptimin (ose ngarkon të dhëna shtesë) dhe tregon njoftimin. Këtë ne e morëm si bazë për versionin e dytë të njoftimeve.

Tani kemi zhvilluar versionin e dytë të njoftimeve push për iOS, i cili lejon shfaqjen e mesazheve pa rrezik për sigurinë. Në konceptin e ri, logjika duket kështu:

  • ShĂ«rbimi i push-it dĂ«rgon njĂ« njoftim push me numrin e transaksionit (mesazhi i enkriptuar mund tĂ« jetĂ« shumĂ« i madh, ndĂ«rsa madhĂ«sia e njoftimeve Ă«shtĂ« shumĂ« e kufizuar)
  • Pajisja, kur merr njoftimin, aktivizon NotificationServiceExtension tonĂ« — njĂ« mikroaplikacion qĂ« kĂ«rkon nga nodi transaksionin sipas id, e dekripton me anĂ« tĂ« frazĂ«s sĂ« ruajtur, dhe i jep sistemit njĂ« njoftim tĂ« ri. FrazĂ«n e ruajmĂ« nĂ« njĂ« depo tĂ« sigurt.
  • Sistemi tregon njoftimin me mesazhin e dekriptuar ose pĂ«rkthimin.
  • ÇelĂ«sat nuk shkojnĂ« askund, as mesazhi plain text. ShĂ«rbimi i push-it nuk ka mundĂ«si tĂ« dekriptojĂ« mesazhin.

Njoftimet push të sigurta: nga teoria në praktikë

Këtë version e pranuam si funksional dhe e realizuam në përditësimin e fundit të aplikacionit për iOS.
Ata që janë të interesuar për anën teknike mund të shikojnë kodin burimor: github.com/Adamant-im/adamant-notificationService.

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster