Biztonságos push értesítések: az elmélettől a gyakorlatig

Szia Habr!

Ma arról fogok beszélni, amit kollégáimmal már több hónapja csinálunk: push értesítések a mobil azonnali üzenetküldők számára. Ahogy már mondtam, alkalmazásunkban a fő hangsúly a biztonságon van. Ezért utánajártunk, hogy a push értesítéseknek vannak-e „gyenge pontjai”, és ha igen, hogyan tudjuk ezeket kiegyenlíteni, hogy szolgáltatásunkba beépítsük ezt a hasznos lehetőséget.

Közreadom a mi fordításunkat cikkek a Médiumtól néhány apró kiegészítéssel magamtól. Tartalmazza a „nyomozás” eredményeit és a probléma megoldásának történetét.

Megvizsgáljuk az anyagot

A klasszikus modellben a push értesítések sebezhetővé teszik az üzenetküldőket az MITM (Man-in-the-middle) támadásokkal szemben. Például a Google, a Microsoft és az iMessage régi verziója esetén az alkalmazás titkosítási kulcsokat küld az Apple szervereinek – a szerveren a felhasználók hitelesítésre kerülnek, és az üzenet fejléce (vagy annak tartalma) visszafejtésre kerül.

Biztonságos push értesítések: az elmélettől a gyakorlatig

Ennek eredményeként lehetőség nyílik a levelezés elolvasására a push értesítési szerverhez való hozzáféréssel. Ez azt jelenti, hogy a levelezés bármilyen titkosítása haszontalan: a push értesítések továbbra is lehetővé teszik, hogy harmadik felek elolvassák. A cikk szerzői részletesebben tárgyalták ezt a lehetőséget. „Titkosítás helyesen” a Xaker.ru webhelyen, amely az üzenetek titkosítási módszereivel foglalkozik.

Ha úgy gondolja, hogy az Apple és a Google szerverei 100%-ban biztonságban vannak a felhasználói titkosítási kulcsok kiszivárgásával szemben, vegye figyelembe azt a tényt, hogy alkalmazottaik hozzáférhetnek hozzájuk. Az alkalmazottak pedig emberek.
A push értesítések minden sebezhetősége ellenére sok „biztonságos” azonnali üzenetküldő, köztük a Signal és a Telegram használja őket. Ellenkező esetben a felhasználóknak „manuálisan” kell figyelniük az új üzeneteket, folyamatosan bejelentkezve az alkalmazásba. Ez nagyon kényelmetlen, és a versengő hírnökök előnyhöz jutnak.

Paranoia és józan ész


Projektünkben néhány hónappal ezelőtt szorosan foglalkoztunk ezzel a kérdéssel. Hozzá kellett adnunk egy push értesítési lehetőséget, hogy versenyképesek legyünk. Ugyanakkor ne nyisson ki biztonsági rést, mert minden adatszivárgás aláássa a projektbe vetett bizalmat.

Egy fontos előnyünk azonban már most is van: a messengerünk decentralizált (az adatok a blokkláncon vannak tárolva), és az alkalmazottak nem férnek hozzá a fiókokhoz. Csak a felhasználók rendelkeznek titkosítási kulccsal, és a beszélgetőpartnerek nyilvános kulcsai állnak rendelkezésre a blokkláncon a MITM támadások elleni védelem érdekében.

A push értesítések első verziójában úgy döntöttünk, hogy a lehető legnagyobb biztonságban játsszuk, és egyáltalán nem továbbítjuk az üzenet szövegét. A push szolgáltatás nem az üzenet szövegét kapta a csomóponttól, hanem csak egy jelzést a beérkezés tényéről. Ezért a felhasználó az „Új üzenet érkezett” értesítést látta. Csak a messengerben lehetett elolvasni.

Biztonságos push értesítések: az elmélettől a gyakorlatig
Hogyan működött: videó.

Ezt követően megtudtuk, hogy az Apple értesítéseinek legújabb verziója új biztonsági funkciókkal rendelkezik. Ők megjelent UNNotificationServiceExtension, amely lehetővé teszi a fejlesztők számára, hogy teljesen titkosított értesítési adatokat küldjenek APNS-en keresztül. A végfelhasználó eszközén lévő alkalmazás ezután végrehajtja a visszafejtést (vagy további adatokat tölt le), és értesítést jelenít meg. Ezt vettük alapul a push értesítések második verziójához.

Most kifejlesztettük a push értesítések második verzióját iOS-re, amely lehetővé teszi az üzenet szövegének megjelenítését biztonsági kockázat nélkül. Az új koncepcióban a logika így néz ki:

  • A push szolgáltatás push értesítést küld a tranzakciószámmal (a titkosított üzenet nagyon nagy lehet, és az értesítések mérete nagyon korlátozott)
  • Amikor az eszköz értesítést kap, elindítja a NotificationServiceExtension-ünket - egy mikroalkalmazást, amely tranzakciót kér a csomóponttól azonosítóval, dekódolja azt a mentett jelszó használatával, és új értesítést küld a rendszernek. A jelszót biztonságos tárhelyen tároljuk.
  • A rendszer megjelenít egy értesítést egy visszafejtett üzenettel vagy fordítással.
  • A billentyűk nem mennek sehova, akárcsak az egyszerű szöveges üzenet. A push szolgáltatásnak nincs módja az üzenet visszafejtésére.

Biztonságos push értesítések: az elmélettől a gyakorlatig

Elfogadtuk ezt a verziót működőnek, és bevezettük az iOS alkalmazás legújabb frissítésébe.
A technikai oldal iránt érdeklődők megtekinthetik a forráskódot: github.com/Adamant-im/adamant-notificationService.

Forrás: will.com

Hozzászólás