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
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.
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.
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.
Ezt követően megtudtuk, hogy az Apple értesítéseinek legújabb verziója új biztonsági funkciókkal rendelkezik. Ők
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.
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:
Forrás: will.com