Čau Habr!
Šodien es runāšu par to, ko es un mani kolēģi darām jau vairākus mēnešus: push paziņojumi mobilajiem tūlītējajiem ziņojumiem. Kā jau teicu, mūsu pieteikumā galvenais uzsvars tiek likts uz drošību. Tāpēc mēs noskaidrojām, vai push paziņojumiem ir “vājās vietas” un, ja ir, kā mēs varam tos izlīdzināt, lai mūsu pakalpojumam pievienotu šo noderīgo iespēju.
Es publicēju mūsu tulkojumu
Mēs pārbaudām materiālu
Klasiskajā modelī push paziņojumi padara kurjerus neaizsargātus pret MITM (cilvēks vidū) uzbrukumiem. Piemēram, izmantojot Google, Microsoft un veco iMessage versiju, lietojumprogramma nosūta šifrēšanas atslēgas uz Apple serveriem – serverī tiek autentificēti lietotāji un atšifrēta ziņojuma galvene (vai tās saturs).
Tā rezultātā ir iespēja lasīt korespondenci, iegūstot piekļuvi push paziņojumu serverim. Tas nozīmē, ka jebkāda korespondences šifrēšana ir bezjēdzīga: push paziņojumi joprojām atstās iespēju tos izlasīt trešajām pusēm. Raksta autori šo iespēju apsprieda sīkāk.
Ja uzskatāt, ka Apple un Google serveri ir 100% droši pret lietotāja šifrēšanas atslēgu noplūdi, ņemiet vērā faktu, ka viņu darbiniekiem ir piekļuve tiem. Un darbinieki ir cilvēki.
Neskatoties uz visām push paziņojumu ievainojamībām, daudzi “droši” tūlītējie kurjeri, tostarp signāls un telegramma, tos izmanto. Pretējā gadījumā lietotājiem būs “manuāli” jāuzrauga jauni ziņojumi, pastāvīgi piesakoties lietojumprogrammā. Tas ir ļoti neērti, un konkurējošie kurjeri iegūs priekšrocības.
Paranoja un veselais saprāts
Mūsu projektā mēs šo jautājumu rūpīgi aplūkojām pirms vairākiem mēnešiem. Lai mēs būtu konkurētspējīgi, mums bija jāpievieno push paziņojumu opcija. Bet tajā pašā laikā neatveriet drošības caurumu, jo jebkura datu noplūde iedragās pārliecību par projektu.
Tomēr mums jau ir svarīga priekšrocība: mūsu kurjers ir decentralizēts (dati tiek glabāti blokķēdē), un darbiniekiem nav piekļuves kontiem. Šifrēšanas atslēgas ir tikai lietotājiem, un blokķēdē ir pieejamas sarunu partneru publiskās atslēgas, lai aizsargātu pret MITM uzbrukumiem.
Pirmajā push paziņojumu versijā mēs nolēmām, ka tas ir pēc iespējas drošāks un ziņojuma tekstu vispār nepārraida. Pusdienests no mezgla nesaņēma ziņas tekstu, bet tikai signālu par tā saņemšanas faktu. Tāpēc lietotājs redzēja paziņojumu “Ir saņemts jauns ziņojums”. To bija iespējams izlasīt tikai ziņnesī.
Pēc tam uzzinājām, ka Apple jaunākajai paziņojumu versijai ir jauni drošības līdzekļi. Viņi
Tagad esam izstrādājuši otro push paziņojumu versiju operētājsistēmai iOS, kas ļauj parādīt ziņojuma tekstu bez drošības riska. Jaunajā koncepcijā loģika izskatās šādi:
- Push pakalpojums nosūta push paziņojumu ar darījuma numuru (šifrētais ziņojums var būt ļoti liels, un paziņojumu lielums ir ļoti ierobežots)
- Kad ierīce saņem paziņojumu, tā palaiž mūsu NotificationServiceExtension — mikrolietojumprogrammu, kas pieprasa darījumu no mezgla pēc ID, atšifrē to, izmantojot saglabāto ieejas frāzi, un nosūta sistēmai jaunu paziņojumu. Ieejas frāze tiek glabāta drošā krātuvē.
- Sistēma parāda paziņojumu ar atšifrētu ziņojumu vai tulkojumu.
- Taustiņi nekur nepazūd, tāpat kā vienkārša īsziņa. Puspiegādes pakalpojumam nav iespējas atšifrēt ziņojumu.
Mēs pieņēmām šo versiju kā strādājošu un ieviesām to jaunākajā iOS lietojumprogrammas atjauninājumā.
Tie, kurus interesē tehniskā puse, var apskatīt avota kodu:
Avots: www.habr.com