Təhlükəsiz təkan bildirişləri: nəzəriyyədən təcrübəyə

Hey Habr!

Bu gün mən həmkarlarımın və mənim bir neçə aydır etdiklərimizdən danışacağam: mobil ani mesajlaşmalar üçün push bildirişləri. Artıq dediyim kimi, bizim tətbiqimizdə əsas diqqət təhlükəsizlik məsələsidir. Buna görə də, push bildirişlərinin "zəif nöqtələri" olub-olmadığını və əgər varsa, bu faydalı seçimi xidmətimizə əlavə etmək üçün onları necə düzəldə biləcəyimizi öyrəndik.

Bizim tərcüməni dərc edirəm Mediumdan məqalələr özümdən bəzi kiçik əlavələrlə. O, “araşdırma”nın nəticələrini və problemin necə həll edildiyi barədə hekayəni ehtiva edir.

Materialı yoxlayırıq

Klassik modeldə push bildirişləri messencerləri MITM (Man-in-the-middle) hücumlarına qarşı həssas edir. Məsələn, Google, Microsoft və köhnə iMessage versiyası ilə tətbiq Apple serverlərinə şifrələmə açarlarını göndərir - serverdə istifadəçilərin autentifikasiyası aparılır və mesaj başlığının (və ya onun məzmununun) şifrəsi açılır.

Təhlükəsiz təkan bildirişləri: nəzəriyyədən təcrübəyə

Nəticədə push bildiriş serverinə giriş əldə edərək yazışmaları oxumaq şansı var. Bu o deməkdir ki, yazışmaların hər hansı şifrələnməsi faydasızdır: push bildirişləri hələ də üçüncü tərəflər tərəfindən oxunma ehtimalını tərk edəcək. Məqalə müəllifləri bu ehtimalı daha ətraflı müzakirə ediblər. "Düzgün şifrələ" Xaker.ru saytında mesajların şifrələnməsi üsullarına həsr olunub.

Əgər Apple və Google serverlərinin istifadəçi şifrələmə açarlarının sızmasına qarşı 100% təhlükəsiz olduğunu düşünürsünüzsə, işçilərinin onlara giriş imkanı olduğunu nəzərə alın. Və işçilər insanlardır.
Push bildirişlərinin bütün zəifliklərinə baxmayaraq, Signal və Telegram da daxil olmaqla bir çox “təhlükəsiz” ani messencer onlardan istifadə edir. Əks halda, istifadəçilər daim proqrama daxil olaraq yeni mesajlara “əl ilə” nəzarət etməli olacaqlar. Bu, çox əlverişsizdir və rəqabət aparan messencerlər üstünlük əldə edəcəklər.

Paranoya və sağlam düşüncə


Layihəmizdə bu məsələni bir neçə ay əvvəl yaxından müzakirə etdik. Rəqabətli olmaq üçün push bildiriş seçimini əlavə etməmiz lazım idi. Ancaq eyni zamanda təhlükəsizlik çuxurunu açmayın, çünki hər hansı məlumat sızması layihəyə inamı sarsıdacaq.

Bununla belə, bizim artıq mühüm üstünlüyümüz var: messencerimiz mərkəzləşdirilməmişdir (məlumatlar blokçeyndə saxlanılır) və işçilərin hesablara girişi yoxdur. Yalnız istifadəçilərin şifrələmə açarları var və MITM hücumlarından qorunmaq üçün blokçeynində həmsöhbətlərin açıq açarları mövcuddur.

Push bildirişlərinin ilk versiyasında biz onu mümkün qədər təhlükəsiz oynamağa və mesaj mətnini ümumiyyətlə ötürməməyə qərar verdik. Push xidməti qovşaqdan mesajın mətnini qəbul etməyib, sadəcə onun alınması faktı haqqında siqnal verib. Beləliklə, istifadəçi “Yeni mesaj gəldi” bildirişini gördü. Onu ancaq messencerdə oxumaq mümkün idi.

Təhlükəsiz təkan bildirişləri: nəzəriyyədən təcrübəyə
Necə işlədi: video.

Bundan sonra biz öyrəndik ki, Apple-ın ən son bildiriş versiyasında yeni təhlükəsizlik xüsusiyyətləri var. Onlar sərbəst buraxıldı Tərtibatçılara tam şifrələnmiş bildiriş məlumatlarını APNS üzərindən göndərməyə imkan verən UNNotificationServiceExtension. Son istifadəçinin cihazındakı proqram daha sonra şifrənin açılmasını həyata keçirir (və ya əlavə məlumatları yükləyir) və bildiriş göstərir. Biz bunu push bildirişlərinin ikinci versiyası üçün əsas götürdük.

İndi biz iOS üçün push bildirişlərinin ikinci versiyasını hazırlamışıq ki, bu da mesajın mətnini təhlükəsizlik riski olmadan göstərməyə imkan verir. Yeni konsepsiyada məntiq belə görünür:

  • Push xidməti əməliyyat nömrəsi ilə təkan bildirişi göndərir (şifrələnmiş mesaj çox böyük ola bilər və bildirişlərin ölçüsü çox məhduddur)
  • Cihaz bildiriş aldıqda, o, NotificationServiceExtension-umuzu işə salır - id ilə qovşaqdan əməliyyat tələb edən, saxlanmış paroldan istifadə edərək onun şifrəsini açan və sistemə yeni bildiriş göndərən mikro proqram. Parolu söz təhlükəsiz anbarda saxlanılır.
  • Sistem şifrəsi açılmış mesaj və ya tərcümə ilə bildiriş göstərir.
  • Açarlar heç yerə getmir, adi mətn mesajı kimi. Push xidmətinin mesajın şifrəsini açmaq üçün heç bir yolu yoxdur.

Təhlükəsiz təkan bildirişləri: nəzəriyyədən təcrübəyə

Biz bu versiyanı işlək kimi qəbul etdik və onu iOS tətbiqinin son yeniləməsində tətbiq etdik.
Texniki tərəflə maraqlananlar mənbə koduna baxa bilərlər: github.com/Adamant-im/adamant-notificationService.

Mənbə: www.habr.com

Добавить комментарий