Pranešimų siuntimas naudojant „iMessage“ yra populiarus būdas bendrauti tarp „iOS“ įrenginių ir „Mac“ kompiuterių. „Apple“ serveriai kasdien apdoroja dešimtis milijonų pranešimų, o augant „Apple“ įkandamų įrenginių pardavimui, auga „iMessage“ populiarumas. Bet ar kada nors pagalvojote, kaip jūsų pranešimai yra apsaugoti nuo galimų užpuolikų?
„Apple“ neseniai išleido dokumentas aprašant iOS saugumą. Jame gražiai aprašomi iOS naudojami saugumo mechanizmai – sistema, duomenų šifravimas ir apsauga, programų saugumas, tinklo ryšys, interneto paslaugos ir įrenginių apsauga. Jei šiek tiek suprantate apie saugumą ir neturite problemų su anglų kalba, iMessage galite rasti 20 puslapyje. Jei ne, pabandysiu kuo aiškiau aprašyti iMessage saugumo principą.
Pranešimų siuntimo pagrindas yra jų šifravimas. Neprofesionalams tai dažnai asocijuojasi su procedūra, kai jūs užšifruojate pranešimą raktu, o gavėjas jį iššifruoja šiuo raktu. Toks raktas vadinamas simetriniu. Kritinis šio proceso taškas yra rakto perdavimas gavėjui. Jei užpuolikas jį užkluptų, jis galėtų tiesiog iššifruoti jūsų pranešimus ir apsimesti gavėju. Supaprastindami įsivaizduokite dėžutę su užraktu, į kurią telpa tik vienas raktas, o su šiuo raktu galėsite įdėti ir išimti dėžutės turinį.
Laimei, yra asimetrinė kriptografija, naudojanti du raktus – viešąjį ir privatųjį. Principas yra tas, kad visi gali žinoti jūsų viešąjį raktą, žinoma, tik jūs žinote savo privatųjį raktą. Jei kas nors norės jums atsiųsti pranešimą, jis užšifruos jį jūsų viešuoju raktu. Tada užšifruotas pranešimas gali būti iššifruotas tik naudojant jūsų asmeninį raktą. Jei vėl įsivaizduojate pašto dėžutę supaprastintu būdu, tai šį kartą ji turės du užraktus. Naudodami viešąjį raktą, bet kas gali jį atrakinti, kad įterptų turinį, bet tik jūs, turėdami asmeninį raktą, galite jį pasirinkti. Kad įsitikinčiau, pridursiu, kad viešuoju raktu užšifruoto pranešimo negalima iššifruoti šiuo viešuoju raktu.
Kaip sauga veikia „iMessage“:
- Suaktyvinus „iMessage“, įrenginyje sugeneruojamos dvi raktų poros – 1280b RSA duomenims užšifruoti ir 256b ECDSA, kad patikrintų, ar duomenys nebuvo sugadinti.
- Du viešieji raktai siunčiami „Apple“ katalogų tarnybai (IDS). Žinoma, du privatūs raktai lieka saugomi tik įrenginyje.
- IDS viešieji raktai susiejami su jūsų telefono numeriu, el. pašto adresu ir įrenginio adresu Apple Push Notification tarnyboje (APN).
- Jei kas nors norės jums išsiųsti pranešimą, jo įrenginys sužinos jūsų viešąjį raktą (arba kelis viešuosius raktus, jei naudojate „iMessage“ keliuose įrenginiuose) ir jūsų įrenginių APN adresus IDS.
- Jis užšifruoja pranešimą naudodamas 128b AES ir pasirašo jį savo privačiu raktu. Jei pranešimas turi jus pasiekti keliuose įrenginiuose, pranešimas išsaugomas ir užšifruojamas Apple serveriuose kiekvienam iš jų atskirai.
- Kai kurie duomenys, pvz., laiko žymos, visai nešifruojami.
- Visas bendravimas vyksta per TLS.
- Ilgesni pranešimai ir priedai užšifruojami atsitiktiniu raktu „iCloud“. Kiekvienas toks objektas turi savo URI (kažkieno adresą serveryje).
- Kai pranešimas pristatomas į visus jūsų įrenginius, jis ištrinamas. Jei jis nėra pristatytas bent į vieną iš jūsų įrenginių, jis paliekamas serveriuose 7 dienas ir tada ištrinamas.
Šis aprašymas jums gali pasirodyti sudėtingas, tačiau pažvelgę į aukščiau esantį paveikslėlį tikrai suprasite principą. Tokios apsaugos sistemos privalumas yra tas, kad ji gali būti užpulta tik iš išorės naudojant brutalią jėgą. Na, kol kas, nes užpuolikai darosi vis protingesni.
Galima grėsmė kyla pačiai „Apple“. Taip yra todėl, kad jis valdo visą raktų infrastruktūrą, todėl teoriškai jis galėtų priskirti kitą įrenginį (kitą viešojo ir privataus rakto porą) jūsų paskyrai, pavyzdžiui, dėl teismo įsakymo, kuriuo būtų galima iššifruoti gaunamus pranešimus. Tačiau čia Apple pasakė, kad nieko panašaus nedaro ir nedarys.
O prieš ką jis šifruojamas? Ar neužtektų įprasto SSL, žinutė siunčiama į apple ir apple vėl išsiunčia žinutę per SSL? „Apple“ vis tiek turi teisę pasiklausyti pranešimų, tad kam tas triukšmas aplink jį? Bet kokiu atveju tereikia neleisti trečiajai šaliai pasiklausyti pranešimo, o tam pakanka SSL.
Jei manome, kad „Apple“ nesiunčia privačių raktų, jis jų irgi neskaitys. Ir šiaip, SSL yra tik asimetrinio šifravimo įgyvendinimas kliento-serverio ryšyje.
Taigi mes siunčiame žinutę 2x šifruotą per SSL ir Apple gali ją perskaityti arba 2x nešifruotą su tuo, kad iš anksto prašome viešųjų raktų ir naudojame tą patį šifrą kaip ir SSL atveju ir net Apple teoriškai jų neperskaitys.
Ir kodėl duomenys buvo užšifruoti net „Apple“? Nes kažkuris darbuotojas prie jų tikrai turės prieigą. Jį apgavo draugė, todėl jis pradeda parsisiųsti jos žinutes – jos nuteka ir Apple turi bėdų.
Juokingas šūksnis..