Suojatut push-ilmoitukset: teoriasta käytäntöön

Hei Habr!

Tänään puhun siitä, mitä kollegani ja minä olemme tehneet jo useita kuukausia: push-ilmoituksia mobiilipikaviestintäille. Kuten jo sanoin, sovelluksessamme pääpaino on turvallisuudessa. Siksi selvitimme, onko push-ilmoituksilla "heikkoja kohtia" ja jos on, kuinka voimme tasoittaa ne, jotta voimme lisätä tämän hyödyllisen vaihtoehdon palveluumme.

Julkaisen käännöksen meidän Mediumin artikkelit pienillä lisäyksillä itseltäni. Se sisältää "tutkimuksen" tulokset ja tarinan siitä, kuinka ongelma ratkesi.

Tutkimme materiaalia

Klassisessa mallissa push-ilmoitukset tekevät lähettijät alttiiksi MITM-hyökkäyksille (Man-in-the-middle). Esimerkiksi Googlen, Microsoftin ja iMessagen vanhan version kanssa sovellus lähettää salausavaimet Applen palvelimille - palvelimella käyttäjät todennetaan ja viestin otsikon (tai sen sisällön) salaus puretaan.

Suojatut push-ilmoitukset: teoriasta käytäntöön

Tämän seurauksena on mahdollisuus lukea kirjeenvaihto päästämällä push-ilmoituspalvelimeen. Tämä tarkoittaa, että kaikki kirjeenvaihdon salaus on hyödytöntä: push-ilmoitukset jättävät silti mahdollisuuden lukea ne kolmansille osapuolille. Artikkelin kirjoittajat käsittelivät tätä mahdollisuutta yksityiskohtaisemmin. "Salaa oikein" osoitteessa Xaker.ru, joka on omistettu viestien salausmenetelmille.

Jos uskot, että Applen ja Googlen palvelimet ovat 100 % suojattuja käyttäjien salausavaimien vuotamista vastaan, ota huomioon, että niiden työntekijöillä on pääsy niihin. Ja työntekijät ovat ihmisiä.
Kaikista push-ilmoitusten haavoittuvuuksista huolimatta monet "suojatut" pikaviestit, mukaan lukien Signal ja Telegram, käyttävät niitä. Muuten käyttäjien on "manuaalisesti" valvottava uusia viestejä kirjautumalla jatkuvasti sovellukseen. Mikä on erittäin hankalaa, ja kilpailevat sanansaattajat saavat etua.

Paranoia ja maalaisjärki


Käsittelimme tätä asiaa tiiviisti projektissamme useita kuukausia sitten. Meidän piti lisätä push-ilmoitusvaihtoehto ollaksemme kilpailukykyisiä. Mutta samalla älä avaa tietoturva-aukkoa, koska kaikki tietovuoto heikentää luottamusta projektiin.

Meillä on kuitenkin jo tärkeä etu: messengerimme on hajautettu (tiedot tallennetaan lohkoketjuun), eikä työntekijöillä ole pääsyä tileille. Vain käyttäjillä on salausavaimet, ja keskustelukumppanien julkiset avaimet ovat saatavilla lohkoketjussa suojaamaan MITM-hyökkäyksiltä.

Push-ilmoitusten ensimmäisessä versiossa päätimme pelata mahdollisimman turvallisesti ja olla välittämättä viestitekstiä ollenkaan. Push-palvelu ei saanut solmulta viestin tekstiä, vaan vain signaalin sen vastaanottamisesta. Siksi käyttäjä näki "Uusi viesti on saapunut" -ilmoituksen. Se oli mahdollista lukea vain messengerissä.

Suojatut push-ilmoitukset: teoriasta käytäntöön
Kuinka se toimi: video.

Sen jälkeen saimme tietää, että Applen uusimmassa ilmoitusversiossa on uusia suojausominaisuuksia. Ne vapautettiin UNNotificationServiceExtension, jonka avulla kehittäjät voivat lähettää täysin salattuja ilmoitustietoja APNS:n kautta. Tämän jälkeen loppukäyttäjän laitteen sovellus suorittaa salauksen purkamisen (tai lataa lisätiedot) ja näyttää ilmoituksen. Otimme sen pohjaksi push-ilmoitusten toiselle versiolle.

Olemme nyt kehittäneet iOS:lle toisen push-ilmoitusten version, jonka avulla voit näyttää viestin tekstin ilman turvallisuusriskiä. Uudessa konseptissa logiikka näyttää tältä:

  • Push-palvelu lähettää push-ilmoituksen tapahtumanumerolla (salattu viesti voi olla erittäin suuri ja ilmoitusten koko on hyvin rajoitettu)
  • Kun laite vastaanottaa ilmoituksen, se käynnistää NotificationServiceExtension - mikrosovelluksemme, joka pyytää tapahtumaa solmulta tunnuksella, purkaa sen salauksen käyttämällä tallennettua tunnuslausetta ja lähettää uuden ilmoituksen järjestelmään. Tunnuslause on tallennettu suojattuun tallennustilaan.
  • Järjestelmä näyttää ilmoituksen, jossa on purettu viesti tai käännös.
  • Avaimet eivät mene minnekään, aivan kuten pelkkä tekstiviesti. Push-palvelulla ei ole keinoa purkaa viestin salausta.

Suojatut push-ilmoitukset: teoriasta käytäntöön

Hyväksyimme tämän version toimivaksi ja otimme sen käyttöön iOS-sovelluksen viimeisimmässä päivityksessä.
Teknisestä puolesta kiinnostuneet voivat tarkastella lähdekoodia: github.com/Adamant-im/adamant-notificationService.

Lähde: will.com

Lisää kommentti