Коопсуз push эскертмелери: теориядан практикага

Эй Хабр!

Бүгүн мен кесиптештерим менен бир нече айдан бери эмне кылып жаткандыгым жөнүндө сүйлөшөм: мобилдик мессенджерлер үчүн push эскертмелери. Мен буга чейин айткандай, биздин колдонмодо негизги басым коопсуздук болуп саналат. Ошондуктан, биз push эскертмелеринде "алсыз жактары" бар-жогун жана эгер андай болсо, бул пайдалуу опцияны кызматыбызга кошуу үчүн аларды кантип түздөө керектигин билдик.

Биздин котормосун чыгарып жатам Medium макалалар өзүмдөн кичинекей кошумчалар менен. Анда “иликтөөнүн” жыйынтыгы жана маселе кандайча чечилгени тууралуу баян камтылган.

Биз материалды карап чыгабыз

Классикалык моделде push эскертмелери мессенджерлерди MITM (Man-in-the-middle) чабуулдарына алсыз кылат. Мисалы, Google, Microsoft жана iMessage'дин эски версиясы менен тиркеме шифрлөө ачкычтарын Apple серверлерине жөнөтөт - серверде колдонуучулар аутентификацияланат жана билдирүүнүн аталышы (же анын мазмуну) дешифрленет.

Коопсуз push эскертмелери: теориядан практикага

Натыйжада, push-билдирүү серверине жетүү аркылуу кат-кабарларды окуу мүмкүнчүлүгү бар. Бул кат-кабарларды шифрлөөнүн эч кандай пайдасы жок экенин билдирет: push эскертмелери дагы эле үчүнчү жактар ​​тарабынан окуу мүмкүнчүлүгүн калтырат. Макаланын авторлору бул мүмкүнчүлүктү кененирээк талкуулашты. "Туура шифрлөө" Xaker.ru сайтында, билдирүүлөрдү шифрлөө ыкмаларына арналган.

Эгер сиз Apple жана Google серверлери колдонуучу шифрлөө ачкычтарынын агып кетишинен 100% коопсуз деп ойлосоңуз, алардын кызматкерлеринин аларга кирүү мүмкүнчүлүгү бар экенин эске алыңыз. Ал эми кызматкерлер адамдар.
Push-билдирүүлөрдүн бардык кемчиликтерине карабастан, көптөгөн "коопсуз" мессенджерлер, анын ичинде Signal жана Telegram, аларды колдонушат. Болбосо, колдонуучулар тиркемеге тынымсыз кирип, жаңы билдирүүлөрдү "кол менен" көзөмөлдөөгө туура келет. Бул абдан ыңгайсыз жана атаандаш кабарчылар артыкчылыкка ээ болушат.

Паранойя жана акыл-эс


Долбоорубузда биз бул маселени бир нече ай мурун жакындан караганбыз. Биз атаандаштыкка жөндөмдүү болуу үчүн push эскертме опциясын кошушубуз керек болчу. Бирок ошол эле учурда коопсуздук тешигин ачпаңыз, анткени ар кандай маалымат агып кетсе, долбоорго болгон ишенимди кетирет.

Бирок, бизде маанилүү артыкчылыгыбыз бар: биздин мессенджер децентрализацияланган (маалымат блокчейнде сакталат), кызматкерлердин аккаунттарга кирүү мүмкүнчүлүгү жок. Колдонуучуларда гана шифрлөө ачкычтары бар жана маектештердин ачык ачкычтары MITM чабуулдарынан коргоо үчүн блокчейнде жеткиликтүү.

Push эскертмелеринин биринчи версиясында биз аны мүмкүн болушунча коопсуз ойноону жана билдирүүнүн текстин такыр өткөрбөй коюуну чечтик. Push кызматы түйүндөн билдирүүнүн текстин кабыл алган жок, болгону аны алуу фактысы жөнүндө сигналды алган. Ошондуктан, колдонуучу "Жаңы билдирүү келди" билдирүүсүн көрдү. Аны мессенджерден гана окууга мүмкүн болчу.

Коопсуз push эскертмелери: теориядан практикага
Бул кантип иштеген: видео.

Андан кийин, биз Apple'дин акыркы версиясында жаңы коопсуздук функциялары бар экенин билдик. Алар бошотулду UNNotificationServiceExtension, ал иштеп чыгуучуларга APNS аркылуу толук шифрленген эскертме дайындарын жөнөтүүгө мүмкүндүк берет. Андан соң акыркы колдонуучунун түзмөгүндөгү колдонмо шифрди чечүүнү ишке ашырат (же кошумча маалыматтарды жүктөп алат) жана эскертмени көрсөтөт. Биз аны push эскертмелеринин экинчи версиясына негиз катары алдык.

Биз азыр iOS үчүн push эскертмелеринин экинчи версиясын иштеп чыктык, ал коопсуздук коркунучу жок билдирүүнүн текстин көрсөтүүгө мүмкүндүк берет. Жаңы концепцияда логика мындай көрүнөт:

  • Push кызматы транзакциянын номери менен push эскертмесин жөнөтөт (шифрленген билдирүү абдан чоң болушу мүмкүн, ал эми эскертмелердин көлөмү өтө чектелген)
  • Түзмөк эскертмени алганда, ал биздин NotificationServiceExtension-ти ишке киргизет - id боюнча түйүндөн транзакцияны сураган микротиркеме, сакталган купуя сөз айкашынын жардамы менен аны чечмелеп, системага жаңы эскертме жөнөтөт. Купуя сөз айкашы коопсуз сактагычта сакталат.
  • Система шифрленген билдирүү же котормосу бар эскертмени көрсөтөт.
  • Ачкычтар эч жакка кетпейт, жөнөкөй текст кабары сыяктуу. Push кызматында билдирүүнүн шифрин чечүүгө мүмкүнчүлүк жок.

Коопсуз push эскертмелери: теориядан практикага

Биз бул версияны иштеп жаткан деп кабыл алып, аны iOS тиркемесинин акыркы жаңыртуусунда ишке ашырдык.
Техникалык тарапка кызыккандар булак кодун көрө алышат: github.com/Adamant-im/adamant-notificationService.

Source: www.habr.com

Комментарий кошуу