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
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.
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.
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ä.
Sen jälkeen saimme tietää, että Applen uusimmassa ilmoitusversiossa on uusia suojausominaisuuksia. Ne
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.
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:
Lähde: will.com