Kiek saugios yra iMessage žinutės

Milijonai žmonių kasdien naudoja iMessage. Apple duomenimis kiekvieną dieną yra išsiunčiama 40 milijardų iMessage žinučių. Kasdien gauname ir siunčiame daugybę žinučių, o kas vyksta su mūsų žinute kai ji yra išsiunčiama?

Iki šiol didesnę dalį žinių apie iMessage „užkulisius“ turėjome iš reversinės inžinerijos meistrų tyrimų rezultatų ir spėlionių, tačiau šią savaitę Apple išleido dokumentą, kuris viską paaiškina.

Jei esate susipažinę su kriptografija skaitant Apple išleistą „iOS Security 2014“ dokumentą jums turėtų būti viskas aišku. Informacija apie iMessage prasideda nuo 20-to puslapio, bet nepradėkite skaityti nuo jo, dokumente yra daug įdomios medžiagos apie „cloud keychain“ bei aparatinės įrangos dalyvavimą saugumo procesuose.

Jei kriptografija nėra tai su kuo esate gerai pažįstamas, pabandysiu bendrais bruožais papasakoti kas nutinka su iMessages žinutėmis jas siunčiant, bet prieš pradedant gilintis į detales turėtumėte suprasti vieną pagrindinių kriptografijos principų apie kurį paprasti žmonės neturėtų daug galvoti, ir tai vadinama viešojo rakto šifravimu.

Tam, kad būtų lengviau suprasti kas tie raktai, pabandysiu paaiškinti kiek suprantamesne kalba. Įsivaizduokite, kad turite pašto dėžutę ir du raktus nuo jos. Vienas raktas leidžia į ją įdėti laiškus, o kitas juos iš dėžutės išimti. Abudu raktai yra visiškai skirtingi ir negali vienas kito pakeisti. Jūs galite padaryti milijonus „įdėjimo“ rakto kopijų ir jas išdalinti bet kam. Tie kas turės „įdėjimo“ raktų kopijas - jų pagalba galės daryti vienintelį veiksmą - į jūsų pašto dėžutę įdėti laišką, …na nebent jie rastų laiškų išėmimui skirtą raktą arba silpną vietą pačios pašto dėžutės konstrukcijoje.

Tai yra maždaug tai, ką turėtumėte įsivaizduoti galvodami apie „viešą raktą“ - raktą, kuris leidžia į pašto dėžutę laišką įdėti. Viešu raktu galite pasidalinti su visu pasauliu ir tie kas jį turi galės jums siųsti šifruotas žinutes. Kai žinutė užšifruojama jūsų viešu raktu - tas raktas negali būti panaudotas tos žinutės iššifravimui (išėmimui iš pašto dėžutės). Norint žinutę iššifruoti reikia turėti „privatų raktą“ - raktą leidžiantį laišką iš pašto dėžutės išimti, ir tai yra vienintelis būdas tą žinutę gauti/išimti arba iššifruoti ir paversti į skaitomą formatą.

Kaip veikia iMessage

Dabar turėdami bent jau dalinį supratimą apie tai kaip vyksta duomenų šifravimas, galime detaliau pažvelgti į iMessage užkulisius.

  • Kai pirmą kartą aktyvuojate iMessages savo iOS įrenginyje ar Mac kompiuteryje - sukuriami du privataus ir viešo raktų rinkiniai: vienas rinkinys (pora) skirta duomenų šifravimui, o kitas rinkinys (pora) duomenų pasirašymui (pasirašymui naudojamas raktas yra skirtas antrai duomenų paketo daliai padedančiai patikrinti, kad užšifruotas tekstas nebuvo pakeistas po to kai buvo išsiųstas. Ir jei šie dalykai nesutampa - iškeliama raudona pavojaus vėliava).
  • Jūsų „viešasis raktas“ yra išsiunčiamas į Apple serverius. Jūsų „privatus raktas“ yra saugomas jūsų įrenginyje ir Apple jo niekada nemato.
  • Kai kas nors rašo jums iMessage žinutę, jie gauna jūsų „viešą raktą“ iš Apple serverių (Messages aplikacijoje galite pastebėti tai, kai adresato laukas tampa melsvas - tai reiškia, kad Apple turi reikalingą „viešą raktą“ bei tai, kad to rakto savininkas naudoja Messages aplikaciją bent viename įrenginyje.
  • O kas jei Apple neturi jūsų „viešojo rakto“, kaip tokiu atveju jums skirtos iMessage žinutės atkeliaus į visus jūsų įrenginiu suprantama forma? Atsakymas paprastas: o gi niekaip. Kiekvienas įrenginys, kuriame esate įgalinę iMessages paslaugą (iOS ir/ar Mac) sukuria savo raktų rinkinį ir kiekviena žinutė yra kiekvienam įrenginiui užkoduojama atskirai. Taigi, jei turite du įrenginius, kuriuose aktyvuota iMessages paslauga, sakykim iPhone ir Mac kompiuterį - kiekviena jums siunčiama žinutė yra užkoduota (AES–128) ir Apple serveriuose išsaugota du kartus (arba tiek kartų, kiek įrenginių turite). Gavę žinutę kiekviename iš savo įrenginių, jūs ją gavote užkoduotą būtent tam įrenginiui.
  • Kai kurie duomenys, tokie kaip laiko žymės ir APN maršrutas nėra užšifruojami.
  • Visi šitie nepriklausomai užšifruoti/nešifruoti duomenys užšifruojami kaip vienas paketas ir tokioje būsenoje keliauja tarp Apple serverių ir įrenginių (iOS ar Mac). Toks duomenų užkodavimas „per vidurį“ (tarp jūsų įrenginio ir Apple serverio - „Man in the middle“) sėdinčiam piktam atakuotojui-programišiui gyvenimą nepaprastai apsunkina, nes jis turi susigaudyti kurie duomenys yra kokie ir kas juose iš tikro yra užšifruota.
  • Kalbant apie ilgas žinutes ir siunčiamas nuotraukas, „veiksmas“ vyksta kiek kitaip ir suteikia Apple galimybę nuotraukas ar kitokius medijos failus išsaugoti iCloud serveryje taip, kad jie jų patys negalėtų pažiūrėti. Tokių siunčiamų failų atveju, įrenginys sukuria atsitiktinį raktą ir URI (Uniform Resource Identifier arba paprasčiau sakant adresą ko nors esančio serveryje) ir gavėjo įrenginys tą failą pasiima iš serverio ir paverčia jį kuo nors „įskaitomu“ žmogui.
  • Kai įrenginys iš Apple serverio žinutę „pasiima“, ta žinutė ištrinama iš Apple serverių. Jei turite kelis įrenginius, kuriuose naudojate iMessage paslaugą susietą su tuo pačiu Apple ID - kitam įrenginiui skirta žinutė vis dar gali būti serveryje. Apple serveriuose žinutės saugomos iki 7-ų dienų.

Ilgas rašinys :) Tikiuosi, kad iki čia perskaitėte ir mano rašinys pakankamai suprantamas net ir tiems kas nelabai artimai susipažinęs su duomenų kriptografija ar šiaip į kompiuterį žiūri kaip į „stebuklingą mašiną“. Žodžiu, nebent Apple ką nors praleidžia arba šiame daugiasluoksniame šifravime yra kokia nors saugumo skylė, kas mažai tikėtina (nesileisiu į platesnes diskusijas susijusias su kriptografija, atsitiktinių skaičių ir π silpnąsias vietas, džiaugiuosi jei supratote ką parašiau ir nenoriu labiau jūsų painioti) - Apple negali perskaityti mūsų siunčiamų iMessage tipo žinučių, nebent tam sutelktų nežemiškas pajėgas. Teoriškai, Apple gali panaudoti jėgos metodą (brute-force) privataus rakto nulaužimui arba tiesiog pakeisti visą šią sistemą ir tikėtis, kad niekas to nesužinos.

Tačiau, tą patį galima pasakyti apie bet kurią paslaugą, kuri bent laikinai saugo jūsų žinutes - kai padedate savo žinutę į juodą dėžę, net jei manote jog žinote kaip ta juoda dėžė veikia, jūs paprasčiausiai tikite, kad tos dėžės niekas nepakeitė. Jei Apple ir norėtų paskaitinėti jūsų žinutes, jų naudojama sistema net jiems patiems sukeltų nepaprastai didelių sunkumų.

Apple ilgų žinučių ar žinučių su prisegtais medijos failais šifravimo mechanizmas
Apple ilgų žinučių ar žinučių su prisegtais medijos failais šifravimo mechanizmas

APNs: „Apple Push Notification Service“ - Apple Push tipo pranešimų iOS įrenginiams paslauga. IDS: „Identity Service“ - Apple saugykla skirta saugoti: iMessage viešiems raktams, APNs adresams, telefonų numeriams ir elektroninių pašto paskyrų adresams susietiems su įrenginiais. URI: „Uniform Resource Identifier“ ko nors esančio serveryje adresas.

Taip pat skaitykite: • Kaip išsaugoti savo privatumą elektroniniuose laiškuose (I dalis)Kaip išsaugoti savo privatumą elektroniniuose laiškuose (II dalis) - S/MIMEKaip išsaugoti savo privatumą elektroniniuose laiškuose (III dalis) – PGPAr iMessage žinutės tikrai „nenulaužiamos“Kaip sustiprinti iOS įrenginio apsaugą naudojant stipresnį apsaugos kodą

Apytikslis skaitymo laikas – 5 minutės.
Pasidalinti straipsniu:

Apie Ramūną Blavaščiūną

Fotografijos, geros technikos ir kavos mylėtojas, didelę savo laisvalaikio dalį skiriantis straipsnių „Mac Arena“ rašymui.

Parašykite komentarą

Jūsų elektroninio pašto adresas nebus viešinamas. Būtini laukai pažymėti *

*