Versija 6 nuo 2018-04-11 14:29:53

Išvalyti žinutę
Locked History Actions

Real Time Messaging Protocol

RTMP protokolo saugumas

1. RTMP PROTOKOLO ANALIZĖ

RTMP (angl. Real Time Massage Protocol) – protokolas, kuris naudojamas srautiniams multimedijos duomenims perduoti t. y. garso ir vaizdo įrašams tarp Flash Media Server ir Flash Player. [1] Pagrindinė RTMP srauto funkcija yra optimizuoti garso ir vaizdo duomenų perdavimą tarp kliento ir serverio. Protokolas naudoja 1935 prievadą ir yra tinkamiausias norint transliuoti tiesioginius įrašus nenaudojant duomenų buferį. [1] Tačiau, naudojant šį prievadą didėją RTMP srauto pažeidimo tikimybė, nes dauguma ugniasienių šį prievadą blokuoją.

RTMP protokolas pagrįstas TCP viekimo principu, kuris palaiko nuolatinius sujungimus tarp A ir B tinklo mazgų, tokiu atveju leidžiamas nedidelis perduodamų duomenų vėlinimas. Norint perduoti kuo daugiau informacijos, protokolas suskaido srautą į fragmentus, o jų dydį dinamiškai keičią tarp kliento ir serverio siuntimo metu. Fragmentų dydis priklausomai nuo perduodamo turinio gali skirtis. Pavyzdžiui, garso duomenims vieną fragmentą sudaro 64 baitai, o vaizdo ir kitiems128 baitai.

Be to, įmanomas duomenų siuntimas per virtualius kanalus, kuriais paketai gali būti siunčiami ir gaunami nepriklausomai vienas nuo kito. RTMP sesijos metu keli kanalai gali būti aktyvūs vienu metu. Paketo antraštėje nurodoma informacija apie kanalą (kuriuo kanalu turi būti išsiųsta), ID, laiko juostą (kada buvo paketas sukurtas) ir paketo naudingosios apkrovos dydį. [1] Po antraštės seka faktinis paketo turinys, kuris yra suskaidytas į fragmentus pagal sutartą dydį.

RTMP sesijos gali būti šifruojami:

  • Naudojant RTMPS protokolą. Tokiu atveju RTMP sesija inkapsuliuojama į TLS/SSL sesiją;
  • Naudojant RTMPE protokolą, kuris yra patobulintas RTMP protokolas su šifravimo mechanizmu. [2]

RTMPE protokolas turi papildoma šifravimo sluoksnį, kuriame realizuotas anoniminis Diffie-Hellman rakto apsikeitimo metodas. Šis metodas suteikia galimybę per nesaugu sujungimo kanalą apsikeisti slaptaisiais raktais tarp A ir B tinklo mazgu. [3] Gauti raktas naudojamas tolimesniam srauto šifravimui ir dešifravimui.

1.1 Diffie-Hellman metodo aprašymas

Tarkime, kad yra du tinklo mazgai, kurių vaidmuo atlieka Alice ir Bobas abonentai. Abu abonentai žino apie du skaičius g ir p 10300 eiles, kurie nėra slapti ir gali būti žinomi kitiems abonentams. Norint sukurti kitą niekam nežinoma privatų raktą, abu abonentai generuoja didelį atsitiktinį skaičių 10100 eiles. [4] Alice generuoja skaičių – a, o Bobas skaičių – b. Tada Alice skaičiuoja.

  • А = gа mod p (1.1)

Ir išsiunčia A reikšmę Bobui. Tada Bob skaičiuoja viešojo rakto B reikšmę pagal 1.2 formulę.

  • B = gb mod p (1.2)

Ir išsiunčia B reikšmę Alice. Daroma prieiga, kad užpuolikas gali gauti A ir B verčių reikšmes bet nekeisti jų t. y. jis neturi galimybės kištis į perdavimo procesą. [5]

Antrame etape Alice skaičiuoja slaptą raktą iš savo privataus rakto – a ir Bobo viešojo rakto B pagal 1.3 formulę.

  • Bа mod p = gab mod p (1.3)

O Bobas atlieka tą pati veiksmą bet jau su savo privataus rakto – b ir Alice viešojo rakto A pagal 1.4 formulę.

  • Ab mod p = gab mod p (1.4)

Iš 1.3 ir 1.4 formulių matome, kad skaičiuojamas Alice ir Bobo slaptas raktas bus vienodas. Slaptas raktas skaičiuojamas pagal 1.5 formulę.

  • K = gab mod p (1.5)

Naudojant Diffie-Hellman algoritmą Alice ir Bobas abonentai tarpusavyje apsikeičia tik g ir p skaičiais bei viešaisiais raktais A ir B tam, kad apskaičiuoti privatus raktus. Be to, naudojamas algoritmas puikiai tinka apsaugoti kanalą nuo MITM (angl. Man-In-The-Middle) atakos. Sekančiame skyrelyje sumoduliuosime situaciją, kai vykdoma MITM ataka.