MTProto. Telegram-en protokoloa

Telegram, Whatsapp-aren alternatiba nagusiena, segurua dena eta ez denaren garaian.

MTProto, Mobile Protocol ingelesez deritzona, esplikatu nahi dizuet. Suposatu mezu bat bidali nahi diogula gure lagunen bati (honek ere Telegram aplikazioa eduki beharko du).

Mezua bidali aurretik, mezua zifratu egiten da eta honi, 64 bitetako gako identifikatzaile bat gehitzen zaio buruan. Gako identifikatzaile honek, baimen gako bakarra eta mezu gakoa identifikatu ahal izango ditu zerbitzariarentzat edo erabiltzailearentzat.

Erabiltzaile gako batek eta mezu gako batek, uneko gako bat eta hastapen bektore bat (IV) definitzen ditu (biak 256 bitekoak). Honela, mezua zifra daiteke AES 256 enkriptazioa erabilita. Hala ere, mezuaren hasierako datu aldakorrek (sesioa, mezuaren identifikatzailea, sekuentzia zenbakia,…) mezuaren gakoan eragina izan dezakete (eta honela AES 256 eta IV bektorean ere bai).

 

 

MTProto enkriptazio prozesua
MTProto enkriptazio prozesua

Hemen enkriptazio sistemaren eremu batzuk.

  • AuthKey: 64 biteko SHA1 gakoa, mezua zifratzeko zein gako partikular erabili den adierazteko.
  • Salt: ausazko 64 bit, zerbitzariari eginiko eskaera bakoitzeko alda daitezke. Reply motatako erasoak saihetsi daitezke.
  • Session_id: bezeroak sortutako 64 bit instantzia desberdinak identifikatzeko. Sesioak eta gako identifikatzaileak, aplikazioaren instantzia bat osatzen dute.
  • Payload. 24 bytetako burua. 16 byte gako identifikatzailearentzat eta 16 byte mezu gakoarentzat. Mezua jasotzen duenak, payload guztia egiaztatzen du.
  • Padding: byte betegarriak.

 

Agur HTTP 1, ongietorri HTTP 2

HTTP handia, bigarren bertsiora eboluzionatu da. CERN eko zientzialariek garatutako protokoloak, komunikazio forma berriei erantzun azkar eta hobeago bat emateko gai izango da.

Zer da HTTP 2?

2015 eko otsailean, HTTP protokoloa eguneratua izan zen, nahiz eta, bi bertsioak oraindik bateragarriak diren. HTTP2, Google-ren SPDY protokoloan oinarritzen da.

Lehenengo eta bigarren bertsioaren artean, diferentzia nabarmenak aurki ditzazkegu. Horien artean, latentzia. HTTP 1 bertsioarekin, webgune baten edozein errekurtso bakoitza atzitzeko (irudi, css horriak, javascript fitxategiak,…),eskaera bat egin behar zen zerbitzariari. HTTP2 bertsioarekin, hori guztia aldatu eta TCP konexio bakar bat sortzen da.

Http1 eta Http2 aren, funtzionamendu desberditasuna
Http1 eta Http2 aren, funtzionamendu desberditasuna

 

Nahiz eta, HTTP2-ak egoera kodigo eta metodoak (POST, GET,…) mantentzen dituen, diferentzia gehiago ditu:

  • Kompresioa, informazio errepikakorra ezabatuz.
  • Buruak bitarrean bidali, eta ez textuz.
  • Server-Push. TCP konexio bakar batez, errekurtso guztiak atzitu.
  • Multiplexazioa. Hainbat eskaera kolpez bidali. Head of line blocking arazoa deuseztatuz.

Tramaren formatua

Gehienez, 16Kb eko trama.

trama

  • Length: Tramaren luzeera
  • Type: Tramaren formatua eta semantika.
  • Flags: 8 bit trama mota adierazteko.
  • R: bit erreserbatua.
  • Stream identifier: Stream-aren identifikatzailea.

Fluxu kontrola

HTTP2 protokolak, WINDOW_UPDATE tramaren bitartez, fluxu kontrol bat emateko aukera eskaintzen du. Bezeroek, tramsmisio bakoitzeko eta TCP konexio guztian, zenbat byte jasotzeko gai diren adierazten die zerbitzariei. Honela,  paketeak bidaltzen dituenak, limite hori errespetatu beharko du.

HTTP2 konexio bat ezartzerakoan, stream berriak sortzen dira, 65535 byteko fluxu kontrol lehioekin. Hala ere, endpoint-ek tramen tamainua alda dezakete stream berrientzat. Honetarako, SETTINGS_INITIAL_WINDOW_SIZE propietatea aldatu beharko da.

Nabigatzaile berriak prest al daude?

Nabigatzaile bateragarriak
Nabigatzaile bateragarriak