Njoftime të sigurta shtytëse: nga teoria në praktikë

Hej Habr!

Sot do të flas për atë që unë dhe kolegët e mi kemi bërë prej disa muajsh: njoftime shtytëse për lajmëtarët e çastit celular. Siç thashë tashmë, në aplikacionin tonë theksi kryesor është te siguria. Prandaj, zbuluam nëse njoftimet push kanë "pika të dobëta" dhe, nëse po, si mund t'i nivelojmë ato në mënyrë që të shtojmë këtë opsion të dobishëm në shërbimin tonë.

Po botoj një përkthim tonën artikuj nga Medium me disa shtesa të vogla nga vetja ime. Ai përmban rezultatet e "hetimit" dhe një histori se si u zgjidh problemi.

Ne shqyrtojmë materialin

Në modelin klasik, njoftimet shtytëse i bëjnë lajmëtarët të prekshëm ndaj sulmeve MITM (Man-in-the-middle). Për shembull, me Google, Microsoft dhe versionin e vjetër të iMessage, aplikacioni dërgon çelësat e enkriptimit te serverët e Apple - në server, përdoruesit vërtetohen dhe kreu i mesazhit (ose përmbajtja e tij) deshifrohet.

Njoftime të sigurta shtytëse: nga teoria në praktikë

Si rezultat, ekziston një shans për të lexuar korrespondencën duke fituar akses në serverin e njoftimit push. Kjo do të thotë që çdo kriptim i korrespondencës është i padobishëm: njoftimet shtytëse do të lënë përsëri mundësinë e leximit nga palët e treta. Autorët e artikullit diskutuan këtë mundësi në më shumë detaje. "Enkriptoni saktë" në Xaker.ru, kushtuar metodave të kriptimit të mesazheve.

Nëse mendoni se serverët e Apple dhe Google janë 100% të sigurt nga rrjedhja e çelësave të enkriptimit të përdoruesve, merrni parasysh faktin që punonjësit e tyre kanë qasje në to. Dhe punonjësit janë njerëz.
Pavarësisht nga të gjitha dobësitë e njoftimeve push, shumë lajmëtarë të menjëhershëm "të sigurt", duke përfshirë Signal dhe Telegram, i përdorin ato. Përndryshe, përdoruesit do të duhet të monitorojnë "manualisht" mesazhet e reja duke u kyçur vazhdimisht në aplikacion. E cila është shumë e papërshtatshme, dhe lajmëtarët konkurrues do të kenë një avantazh.

Paranoja dhe sensi i përbashkët


Në projektin tonë, ne e morëm këtë çështje nga afër disa muaj më parë. Na duhej të shtonim një opsion njoftimi shtytës për të qenë konkurrues. Por në të njëjtën kohë, mos hapni një vrimë sigurie, sepse çdo rrjedhje e të dhënave do të dëmtojë besimin në projekt.

Sidoqoftë, ne tashmë kemi një avantazh të rëndësishëm: mesazheri ynë është i decentralizuar (të dhënat ruhen në blockchain) dhe punonjësit nuk kanë qasje në llogari. Vetëm përdoruesit kanë çelësa kriptimi dhe çelësat publikë të bashkëbiseduesve janë të disponueshëm në blockchain për t'u mbrojtur nga sulmet MITM.

Në versionin e parë të njoftimeve push, vendosëm ta luanim sa më të sigurt dhe të mos e transmetonim fare tekstin e mesazhit. Shërbimi shtytës nuk mori tekstin e mesazhit nga nyja, por vetëm një sinjal për faktin e marrjes së tij. Prandaj, përdoruesi pa njoftimin "Mesazhi i ri ka mbërritur". Ishte e mundur të lexohej vetëm në mesazher.

Njoftime të sigurta shtytëse: nga teoria në praktikë
Si funksionoi: video.

Pas kësaj, mësuam se versioni i fundit i njoftimeve të Apple ka veçori të reja sigurie. Ata lëshuar UNNotificationServiceExtension, i cili lejon zhvilluesit të dërgojnë të dhëna njoftimi plotësisht të koduara përmes APNS. Aplikacioni në pajisjen e përdoruesit përfundimtar më pas kryen deshifrimin (ose shkarkon të dhëna shtesë) dhe shfaq një njoftim. Ne e morëm atë si bazë për versionin e dytë të njoftimeve shtytëse.

Tani kemi zhvilluar versionin e dytë të njoftimeve push për iOS, i cili ju lejon të shfaqni tekstin e mesazhit pa rrezik sigurie. Në konceptin e ri, logjika duket si kjo:

  • Shërbimi push dërgon një njoftim push me numrin e transaksionit (mesazhi i koduar mund të jetë shumë i madh dhe madhësia e njoftimeve është shumë e kufizuar)
  • Kur pajisja merr një njoftim, ajo nis NotificationServiceExtension - një mikroaplikacion që kërkon një transaksion nga nyja me ID, e deshifron atë duke përdorur frazën e ruajtur të kalimit dhe i dërgon një njoftim të ri sistemit. Fraza e kalimit ruhet në ruajtje të sigurt.
  • Sistemi shfaq një njoftim me një mesazh ose përkthim të deshifruar.
  • Çelësat nuk shkojnë askund, ashtu si mesazhi i thjeshtë me tekst. Shërbimi push nuk ka asnjë mënyrë për të deshifruar mesazhin.

Njoftime të sigurta shtytëse: nga teoria në praktikë

Ne e pranuam këtë version si funksional dhe e zbatuam në përditësimin më të fundit të aplikacionit iOS.
Të interesuarit për anën teknike mund të shikojnë kodin burimor: github.com/Adamant-im/adamant-notificationService.

Burimi: www.habr.com

Shto një koment