Prosty całościowy system

W typowym użyciu usługa Microsoft PlayReady chroni zawartość, udostępniając licencje na pliki multimedialne. Nie ma potrzeby ukrywania plików, czynienia ich niedostępnymi ani wprowadzania specjalnej ochrony, gdy pliki są przesyłane z systemu do systemu. Innymi słowy, nie są wymagane żadne wymagania dotyczące systemu operacyjnego ani mechanizmy transportu plików o wysokim poziomie zabezpieczeń. Jednak skopiowanie pliku i przekazanie go znajomemu nie umożliwi znajomemu używania pliku, jeśli jest on chroniony przez PlayReady. Aby korzystać z pliku multimedialnego, użytkownicy potrzebują licencji. Ta licencja jest podstawowym sposobem kontrolowania zawartości (pliku multimedialnego). Licencja jest przyznawana jednemu klientowi (na przykład odtwarzaczowi multimedialnemu) lub domenie. Licencja nie będzie działać na innych klientach ani w innych domenach.

Każda licencja zawiera prawa i ograniczenia, definiując dokładnie, jak można używać zawartości i w jakich warunkach. Na przykład licencja na plik muzyczny może włączyć "prawo do odtwarzania", ale ograniczyć poziom zabezpieczeń aplikacji, na której można odtwarzać zawartość. Licencja może być ważna w okresie od 1 października 2017 r. do 1 listopada 2017 r. Może istnieć wiele licencji dla jednego pliku. Użytkownik będzie mógł uzyskiwać dostęp do jego zawartości i korzystać z niej, o ile jedna z licencji przyznaje odpowiednie prawa, a ograniczenia nie uniemożliwiają dostępu.

Omówienie kompleksowej usługi wideo

Poniższa ilustracja zawiera ogólne spojrzenie na kompleksową usługę wideo, w tym zaplecze usługi po lewej stronie i klientów po prawej stronie.

Architektura usługi wideo

Po lewej stronie ilustracji widać, że usługa ma niektóre serwery do przesyłania strumieniowego wideo (sieć dystrybucji zawartości). Istnieją również niektóre serwery, które umożliwiają użytkownikom przeglądanie zawartości i wybieranie zawartości, którą chcą odtworzyć (interfejs użytkownika). Ponadto istnieją serwery, które umożliwiają użytkownikom logowanie się i uwierzytelnianie, a także płacenie za zawartość (uwierzytelnianie, płatność). Istnieje również serwer licencji PlayReady.

Po prawej stronie ilustracji znajdują się klienci. Klienty mogą być aplikacjami systemu Windows, aplikacjami na smartfony lub określonymi urządzeniami, takimi jak dekodery, odbiorniki sieciowe itd. Niektórzy z tych klientów mogą mieć zintegrowanego klienta PlayReady w swoich odtwarzaczach, na przykład OEM mógł zintegrować PlayReady w systemie operacyjnym lub w sprzęcie. Inni mogą korzystać z klienta zintegrowanego w aplikacji opublikowanej w sklepie z aplikacjami. Istnieje wiele różnych opcji integracji odtwarzaczy PlayReady po stronie klienta.

W tym temacie skupimy się na tym, co robi PlayReady dla usługi, jak pokazano na poniższej ilustracji.

Co playReady robi dla usługi

Usługa PlayReady umożliwia klientowi żądanie licencji z serwera, który następnie dostarcza klucze, które chronią zawartość w postaci chronionej za pośrednictwem otwartej sieci. Drugą rzeczą, jaką robi PlayReady, jest dostarczanie praw i restrykcji dotyczących praw klientowi. Usługa PlayReady może podać klucz do odtwarzania zawartości, ale na przykład zezwolić klientowi na używanie tego klucza przez dwa dni w scenariuszu wypożyczania. Dlatego PlayReady umożliwia deklarowanie praw i właściwych ograniczeń za pomocą klucza.

Element PlayReady umożliwia również bezpieczniejsze przechowywanie klucza zawartości po stronie klienta, dzięki czemu klient będzie mógł używać tego klucza klienta do odszyfrowywania zawartości do renderowania, ale nie zezwala na zapisywanie zawartości w czytelnej postaci i udostępnianie jej innym użytkownikom.

Aby upewnić się, że klienci PlayReady zachowują się prawidłowo, usługa PlayReady wymaga implementacji sprzętu i oprogramowania w celu przestrzegania reguł zgodności i niezawodności. Te reguły określają, jak klient musi zachowywać się podczas odszyfrowywania lub przetwarzania zawartości PlayReady.  Wymagają one również, aby klienci przetwarzali ograniczenia znalezione w licencji poprawnie.  W związku z tym, jeśli klient otrzyma instrukcje dotyczące używania klucza zawartości przez nie więcej niż 48 godzin, klient musi postępować zgodnie z tymi instrukcjami. Te reguły są udostępniane przez firmę Microsoft w regułach zgodności i niezawodności, a deweloper klienta musi wymusić te reguły na swoich klientach.

Podstawowy proces szyfrowania i licencjonowania

Poniższe kroki ilustrują kompleksową procedurę szyfrowania i licencjonowania zawartości oraz sposób, w jaki usługa PlayReady jest zaangażowana w ten proces.

Poniższa ilustracja zawiera jeden zasób — plik audio/wideo — który nie został zaszyfrowany. Metoda używana do szyfrowania zawartości jest całkowicie dostępna dla dostawcy zawartości i nie jest udostępniana w ramach elementu PlayReady.

Szyfrowanie pliku zawartości

  1. Aby zaszyfrować ten plik, usługa musi użyć generatora kluczy w szyfratorze zawartości, który generuje nowy klucz zawartości, który będzie używany do szyfrowania zawartości. Ten klucz zawartości zostanie później dostarczony z serwera licencji PlayReady do klienta, aby umożliwić odszyfrowywanie zawartości i renderowanie dla użytkownika. Wraz z kluczem zawartości, który jest wartością prywatną, usługi szyfrowania kojarzą również identyfikator klucza (KeyID) — który jest identyfikatorem GUID — z kluczem zawartości. KeyID jest wartością publiczną.

  2. Klucz i identyfikator keyID są projektowane w czasie szyfrowania i są przechowywane w systemie zarządzania kluczami, który jest zwykle pewnego rodzaju bazą danych. PlayReady nie zapewnia systemu zarządzania kluczami, dlatego to usługa lub partner, który buduje usługę z nadawcą, musi dostarczyć system zarządzania kluczami.

  3. Oprócz przechowywania klucza i identyfikatora KeyID w systemie zarządzania kluczami należy również dopasować identyfikator KeyID do modułu packager, który następnie generuje nagłówek. Ten nagłówek jest sformatowany przez usługę lub partnera zgodnie ze specyfikacją nagłówka PlayReady, a następnie osadzony jako jawny w nagłówku pliku zawartości.

    W tym momencie dźwięk i wideo będą szyfrowane przy użyciu identyfikatora KeyID, a zaszyfrowany plik zawartości będzie gotowy do dostarczenia do klienta.

    Uwierzytelnianie użytkownika

  4. Teraz klient może rozpocząć korzystanie z zawartości. Pierwszą rzeczą, którą prawdopodobnie zrobi klient, jest uwierzytelnienie użytkownika w usłudze, zazwyczaj przez podanie nazwy logowania i hasła, ale każdy inny mechanizm uwierzytelniania użytkownika i urządzenia jest w porządku. Zazwyczaj token sesji jest zwracany do klienta po zweryfikowaniu użytkownika. Należy pamiętać, że niezależnie od mechanizmu uwierzytelniania użytkownika, to od usługi zależy, jak użytkownik zostanie uwierzytelniony; PlayReady nie dostarcza tej technologii.

    Dostarczanie zawartości

  5. Następnie zawartość jest dostarczana do klienta (na przykład klient zaczął pobierać część strumienia danych tworzącego zawartość). Następnie klient zaczyna analizować tę zawartość i odnajduje, że jest zaszyfrowany i używa nieznanego klucza, ale zawiera identyfikator KeyID.

    Pozyskiwanie licencji

  6. W tym momencie klient wyśle żądanie uzyskania licencji do serwera licencji.

  7. Następnie serwer licencji współpracuje z usługą uwierzytelniania, aby zweryfikować użytkownika. Zazwyczaj pierwszą rzeczą, jaką robi serwer licencji, jest sprawdzenie, czy klient/użytkownik ma prawo do tej konkretnej licencji. I znowu, PlayReady nie zapewnia tego układu (uwierzytelniania), po prostu udostępniamy serwer licencji. Usługa uwierzytelniania zazwyczaj odpowiada tak lub nie, a czasem tak z ograniczeniami (na przykład ten użytkownik ma prawo do tego konkretnego filmu, ale tylko w niższej jakości wideo, ponieważ użytkownik nie ma najwyższego poziomu subskrypcji — w zależności od opłaty miesięcznej).

  8. Następnie serwer licencji żąda wartości klucza na podstawie identyfikatora KeyID z systemu zarządzania kluczami, który przechowuje klucze, a system zarządzania kluczami odpowiada na to żądanie. Dla przypomnienia, PlayReady nie dostarcza składników systemu zarządzania kluczami, więc pojawi się zawnioskowanie z serwera licencji PlayReady do dowolnego składnika, który usługa zbudowała w celu przechowywania kluczy.

  9. Klucz jest odbierany przez serwer licencji, a serwer licencji może dostarczyć licencję. Chroniona odpowiedź licencyjna PlayReady zawiera wartość klucza oraz listę praw i ograniczeń praw, które klient może wymusić.

    Mimo że w tym pokazie pokazano, że serwer licencji PlayReady dostarcza tylko jeden klucz, możliwe, że serwer licencji dostarczy stos licencji w jednej odpowiedzi licencji. Wiele licencji może być uwzględnionych w jednej transakcji, z każdą licencją dostarczającą jeden klucz, jeśli zawartość jest chroniona wieloma kluczami lub jeśli usługa chce dostarczyć wiele kluczy z wyprzedzeniem, ponieważ na przykład usługa wie, że użytkownik będzie nasłuchiwać ośmiu ścieżek z rzędu.

    Sklep z licencjami

  10. Drugą technologią, którą zapewnia PlayReady, jest sposób przechowywania klucza i praw w kliencie, który jest nazywany Magazynem licencji.

  The License Store is typically called the HDS because the structure of the License Store is a *hashed data store*. There can be multiple types of License Stores on a device — one application could contain its own HDS just to ensure that one company's HDS is not in the same file as another company's HDS. It is entirely up to the client developer to make this design choice. For example, using PlayReady on Windows, Microsoft chose to have one HDS for Internet Explorer and another for Microsoft Edge per site, as well as one for each Windows Universal App.

   The HDS can be stored in a persistent way, such as on the hard drive or persistent memory of the device, or it can be stored in a non-persistent way, such as in non-persistent memory. Therefore, when the License Server issues a license, it could set a property of the license indicating that the license should not be stored on the hard drive of the client, or in the case of a set top box or phone, that it should not be stored in persistent memory because, as a service, you don't want to have your licenses stored in persistent memory. In that case, just store the HDS in memory in the context of the player application, so as soon as the user closes the player application, the license and its rights will vanish.