Қауіпсіз push хабарландырулары: теориядан тәжірибеге дейін

Эй Хабр!

Бүгін мен әріптестеріммен бірнеше ай бойы не істеп жатқанымыз туралы айтатын боламын: мобильді жедел хабаршылар үшін push-хабарландырулар. Жоғарыда айтқанымдай, біздің қосымшамызда қауіпсіздікке басты назар аударылады. Сондықтан біз push хабарландыруларының «әлсіз тұстары» бар-жоғын білдік және егер бар болса, осы пайдалы опцияны қызметімізге қосу үшін оларды қалай теңестіруге болатынын білдік.

Мен өзіміздің аудармасын шығарып жатырмын Ортадан мақалалар Өзімнен кейбір шағын толықтырулармен. Онда «тергеу» нәтижелері және мәселенің қалай шешілгені туралы әңгіме бар.

Біз материалды тексереміз

Классикалық үлгіде 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 хабарландыруларының соңғы нұсқасында жаңа қауіпсіздік мүмкіндіктері бар екенін білдік. Олар босатылды Әзірлеушілерге APNS арқылы толық шифрланған хабарландыру деректерін жіберуге мүмкіндік беретін UNNotificationServiceExtension. Соңғы пайдаланушының құрылғысындағы қолданба шифрды шешуді орындайды (немесе қосымша деректерді жүктеп алады) және хабарландыруды көрсетеді. Біз оны push хабарландыруларының екінші нұсқасына негіз ретінде алдық.

Біз қазір iOS үшін push хабарландыруларының екінші нұсқасын жасадық, ол қауіпсіздікке қауіп төндірмей хабарлама мәтінін көрсетуге мүмкіндік береді. Жаңа тұжырымдамада логика келесідей көрінеді:

  • Push қызметі транзакция нөмірі бар push хабарландыруын жібереді (шифрланған хабарлама өте үлкен болуы мүмкін және хабарландырулардың өлшемі өте шектеулі)
  • Құрылғы хабарландыруды алған кезде ол біздің NotificationServiceExtension - идентификатор бойынша түйіннен транзакцияны сұрайтын микро қолданбаны іске қосады, сақталған құпия фразаны пайдаланып оның шифрын ашады және жүйеге жаңа хабарландыру жібереді. Құпия сөз қауіпсіз жадта сақталады.
  • Жүйе шифры шешілген хабарлама немесе аудармасы бар хабарландыруды көрсетеді.
  • Кілттер қарапайым мәтіндік хабар сияқты ешқайда кетпейді. Push қызметінде хабарламаның шифрын ашу мүмкіндігі жоқ.

Қауіпсіз push хабарландырулары: теориядан тәжірибеге дейін

Біз бұл нұсқаны жұмыс ретінде қабылдадық және оны iOS қолданбасының соңғы жаңартуында енгіздік.
Техникалық жағына қызығушылық танытқандар бастапқы кодты көре алады: github.com/Adamant-im/adamant-notificationService.

Ақпарат көзі: www.habr.com

пікір қалдыру