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
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.
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.
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.
Pas kësaj, mësuam se versioni i fundit i njoftimeve të Apple ka veçori të reja sigurie. Ata
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.
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:
Burimi: www.habr.com