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 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).

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. 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.

.
Pas kësaj, ne mësuam se në versionin e fundit të njoftimeve nga Apple ka elemente të reja mbrojtjeje. Ato 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.

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: .
Burimi: habr.com
