Locked History Actions

SHOUTcast Cipher Key Exchange and Authentication

Šifro rakto apsikeitimas ir autentifikavimas

SHOUTcast 2 protokole yra šešios pagrindinės transliuotojo komunikacijos su paskirstymo vieta stadijos:

  • Šifro rakto apsikeitimas;
  • Jungimasis ir autentifikavimas;
  • Srauto konfigūracija;
  • Įvadas ir atsarginių failų perdavimas;
  • Laukimas ir duomenų perdavimas;
  • Transliacijos nutraukimas.

Šifro rakto apsikeitimas

SHOUTcast Ultravos 2.1 protokole, vartotojo identifikatorius (UID) ir autentifikavimo laukas (Auth-Blob), kurie yra dalis pranešimo tipo 0x1001 (Autentifikavimo transliacija) yra užšifruoti naudojant XTEA algoritmą. Kai transliuotojas ir serveris yra prisijungę, transliuotojas siunčia šifro rakto užklausą, siųsdamas pranešimą, kurio tipas 0x1009. Pagal šį pranešimą serveris, gali atpažinti, kuris protokolas yra naudojamas, ar Ultravox 2.0 ar Ultravox 2.1. Pastarasis protokolas naudoja 0x1009 pranešimo tipą. Į šią užklausą serveris atsako pranešimu, kuris turi simbolių eilutę su 16 baitų (128 bitų) maksimaliu ilgiu. Tai ir yra šifro raktas, kuris naudojamas užšifruoti UID ir Auth-Blob 0x1001 pranešimo laukelius. Pagal protokolą vartotojo ID ir autentifikavimo laukai yra atskirti dvitaškiu, dėl to nenaudojamas XTEA algoritmo rezultatas tiesiogiai. Iš tiesų, teoriškai įmanoma, kad tiesioginiai išvesties duomenys turėtų savyje dvitaškį, tačiau tai gali sukelti pranešimo apdorojimo klaidą. Vietoj įprasto rezultato, tada yra naudojamas XTEA algoritmo rezultatas kaip 32 bitų serijų šešioliktainiai skaičiai. Siunčiant šifro rakto užklausą, gali būti atsiųstas patvirtinimas ACK su nurodytu šifro raktu arba NAK pranešimas ir nurodyta priežastis.

cipher.png

1 pav. Šifro rakto apsikeitimas

Autentifikavimas

Susijungus serveriui su transliuotoju ir apsikeitus šifro raktais, turi būti siunčiama transliacijos autentifikavimo užklausa. Ši užklausa susideda iš tokių dalių kaip:

authenthification.png

2 pav. Autentifikavimo procedūra

Serveris taip pat turi autentifikavimo duomenis ir pagal tai gali nustatyti transliuotojo autentifikavimą. Jeigu transliuotojas yra sėkmingai autentifikuotas, tai serveris atsiunčia autentifikavimo transliacijos pranešimą su ACK pranešimu, kuriame nurodytas leidimas. Jeigu transliuotojas neatitinka autentifikavimo duomenų yra išsiunčiamas atsakymas, kuriame nurodyta NAK ir priežastis dėl ko bandymas nesėkmingas. Priežastys gali būti tokios: lentele.png

Naudota literatūra

1. http://wiki.winamp.com/wiki/SHOUTcast_2_%28Ultravox_2.1%29_Protocol_Details