Veilige stootkennisgewings: van teorie tot praktyk

Haai Habr!

Vandag sal ek jou vertel van wat ek en my kollegas nou al 'n paar maande doen: oor stootkennisgewings vir mobiele boodskappers. Soos ek gesê het, in ons aansoek is die hoofklem op sekuriteit. Daarom het ons uitgevind of stootkennisgewings "swak punte" het en, indien wel, hoe ons dit kan gelykmaak om hierdie nuttige opsie by ons diens te voeg.

Ek publiseer 'n vertaling van ons artikels van Medium met 'n paar toevoegings van myself. Dit bevat die resultate van die "ondersoek" en 'n storie oor hoe die probleem opgelos is.

Verken die materiaal

In die klassieke model maak stootkennisgewings boodskappers kwesbaar vir MITM-aanvalle (Man-in-the-middle). Byvoorbeeld, by Google, Microsoft, en in die ou weergawe van iMessage, stuur die toepassing enkripsiesleutels na Apple-bedieners – gebruikers word op die bediener geverifieer en die boodskapopskrif (of die inhoud daarvan) word gedekripteer.

Veilige stootkennisgewings: van teorie tot praktyk

As gevolg hiervan is daar 'n kans om die korrespondensie te lees deur toegang tot die stootkennisgewingbediener te verkry. En dit beteken dat enige enkripsie van korrespondensie nutteloos is: stootkennisgewings sal steeds die moontlikheid laat om deur derde partye te lees. Hierdie moontlikheid is in meer besonderhede deur die skrywers van die artikel bespreek. "Enkripteer slim" op Xaker.ru, toegewy aan boodskapenkripsiemetodes.

As dit vir jou lyk asof Apple- en Google-bedieners 100% sal verhoed dat gebruikers se enkripsiesleutels lek, neem in ag dat hul werknemers toegang daartoe het. En werknemers is mense.
Met al die kwesbaarhede van stootkennisgewings, gebruik baie "veilige" boodskappers, insluitend Signal en Telegram, dit. Immers, anders sal gebruikers nuwe boodskappe "handmatig" moet monitor en voortdurend die toepassing binnegaan. Wat baie ongerieflik is, en mededingende boodskappers sal 'n voordeel kry.

Paranoia en gesonde verstand


In ons projek het ons 'n paar maande gelede hierdie kwessie onder die knie gekry. Ons het 'n stootkennisgewing-opsie nodig gehad om mededingend te wees. Maar dit maak nie 'n sekuriteitsgat oop nie, want enige datalekkasie sal die geloofwaardigheid van die projek ondermyn.

Ons het egter reeds 'n belangrike voordeel: ons boodskapper is gedesentraliseerd (data word op die blokketting gestoor), terwyl werknemers nie toegang tot rekeninge het nie. Slegs gebruikers het enkripsiesleutels, terwyl die publieke sleutels van die gespreksgenote op die blokketting beskikbaar is om teen MITM-aanvalle te beskerm.

In die eerste weergawe van stootkennisgewings het ons besluit om dit soveel as moontlik veilig te speel en glad nie die teks van die boodskap te stuur nie. Die stootdiens het nie die teks van die boodskap van die nodus af ontvang nie, maar slegs 'n sein oor die feit van die ontvangs daarvan. Daarom het die gebruiker die kennisgewing "'n Nuwe boodskap het aangekom." Dit was moontlik om dit slegs in die boodskapper te lees.

Veilige stootkennisgewings: van teorie tot praktyk
Hoe dit gewerk het: video.

Daarna het ons geleer dat die nuutste weergawe van kennisgewings van Apple nuwe sekuriteitskenmerke het. Hulle vrygelaat UNNotificationServiceExtension wat ontwikkelaars toelaat om volledig geënkripteerde kennisgewingdata via APNS te stuur. Die toepassing op die eindgebruiker se toestel voer dan die dekripsie uit (of laai bykomende data af) en vertoon 'n kennisgewing. Ons het dit as die basis geneem vir die tweede weergawe van stootkennisgewings.

Ons het nou die tweede weergawe van stootkennisgewings vir iOS ontwikkel, wat jou toelaat om die teks van die boodskap te vertoon sonder sekuriteitsrisiko's. In die nuwe konsep lyk die logika soos volg:

  • Die stootdiens stuur 'n stootkennisgewing met die transaksienommer (geïnkripteer boodskap kan baie groot wees, en die grootte van kennisgewings is baie beperk)
  • Wanneer 'n toestel 'n kennisgewing ontvang, loods dit ons NotificationServiceExtension - 'n mikrotoepassing wat 'n transaksie vanaf die nodus versoek volgens ID, dit dekripteer met die gestoorde wagwoordfrase en 'n nuwe kennisgewing na die stelsel stuur. Die wagwoordfrase word in veilige berging gestoor.
  • Die stelsel wys 'n kennisgewing met die gedekodeerde boodskap of vertaling.
  • Die sleutels gaan nêrens heen nie, net soos 'n gewone teksboodskap. Die stootdiens het geen manier om die boodskap te dekripteer nie.

Veilige stootkennisgewings: van teorie tot praktyk

Ons het hierdie weergawe as 'n werkende weergawe geneem en dit in die jongste opdatering van die iOS-toepassing geïmplementeer.
Diegene wat in die tegniese kant belangstel, kan die bronkode sien: github.com/adamant-im/adamant-notificationService.

Bron: will.com

Voeg 'n opmerking