Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto téma obsahuje přehled šifrovacích algoritmů používaných k ochraně obsahu v ekosystému PlayReady.
Poznámka:
Informace o šifrovacích termínech a definicích najdete v glosáři .
Základy šifrování
Kryptografie symetrického klíče je nejjednodušším typem šifrování. Pomocí kryptografie symetrického klíče se stejný klíč používá k šifrování obsahu a jeho dešifrování. Symetrické klíčové algoritmy jsou obvykle malé a rychlé. Hromadnou úlohu šifrování obvykle zpracovává nějaká forma šifrování symetrického klíče.
Kryptografie veřejného klíče naopak používá publikovaný veřejný klíč k šifrování a k dešifrování jiného tajného klíče a privátního klíče. Pokud tedy uživatel "A" dává uživateli "B" veřejný klíč, B může šifrovat obsah pro A bez jakýchkoli dalších informací. Bez ohledu na to, jak se obsah přenáší, bude ho moct přečíst jenom A. Průsečíky obsahu nemají privátní klíč (tajný klíč) a nemůžou zprávu dešifrovat. Vzhledem k tomu, že veřejný klíč je veřejně dostupný, může každý zašifrovat A, ale pouze A může dešifrovat. Kryptografie veřejného klíče vyžaduje výpočetně složité algoritmy.
Kryptografie ecc (Elliptic curve cryptography) je kryptografický algoritmus veřejného klíče, který slouží k šifrování a dešifrování obsahu. Jedná se o výpočetně složitou funkci, která popisuje eliptickou křivku. Komponenty tohoto algoritmu se sdílejí jako veřejný klíč. Další komponenty používané k dešifrování tvoří privátní klíč.
Kódy ověřování zpráv jedním klíčem (OMAC) jsou kód ověřování zpráv vytvořený z blokové šifry. Existují dva algoritmy OMAC, OMAC1 a OMAC2.
Certifikáty slouží k zajištění pravosti entit, které nejsou důvěryhodné. Odesílatel certifikátu podepíše svůj název (identifikátor zařízení) pomocí svého privátního klíče. Příjemce certifikátu pak ověří podpis certifikátu pomocí veřejného klíče odesílatele, aby se zajistila identita odesílatele. Vzhledem k tomu, že odesílatel je jediným vlastníkem privátního klíče, je obtížné vytvořit privátní klíč s daným veřejným klíčem a certifikát se neověří správně, pokud není podepsaný privátním klíčem; v tomto případě se předpokládá, že je zdroj dat správný a certifikovaná komunikace je zabezpečená.
Šifrovací algoritmy PlayReady
Symetrické algoritmy
Podporují se následující režimy šifrování AES:
Režim AES 128 CTR – systémy PlayReady mohou chránit soubory a datové proudy, kde jsou vzorky zašifrovány v plném rozsahu nebo kde jsou v režimu CTR operace šifrované pouze vzory vzorků. Patří mezi ně běžné režimy šifrování cenc (společné schéma šifrování) a cens (společné šifrovací schéma využívající vzor nešifrovaných/šifrovaných bajtů), které jsou definovány v ISO/IEC 23001-7.
Režim AES 128 CBC – systémy PlayReady počínaje verzí 4.0 můžou chránit soubory a streamy, které jsou plně nebo částečně šifrované pomocí klíče obsahu AES 128 v režimu provozu CBC. Patří mezi ně běžné režimy šifrování cbc1 a cbcs definované v ISO/IEC 23001-7 a jakýkoli jiný formát, který je šifrovaný pomocí klíče obsahu AES 128 v režimu CBC.
Poznámka:
Systémy PlayReady s verzí 1.X, 2.X a 3.X můžou chránit jen soubory zašifrované v režimu CTR (běžný režim šifrování 'cenc'). 'cens' není podporován. Systémy PlayReady s verzí 4.0 a vyšší můžou chránit soubory zašifrované v režimu CTR (běžné režimy šifrování cenc) a v režimu CBC (běžné režimy šifrování cbcs). Ostatní režimy "cens" a "cbc1" nejsou podporovány.
Algoritmy ECC
Systémy Microsoft PlayReady používají k šifrování klíčů obsahu a podepisování zpráv protokolu ECC (Elliptical curve cryptography).
- ECC ElGamal algoritmus – používá se pro šifrované klíče obsahu.
- ECDSA (algoritmus digitálního podpisu se třemi tečkami) – používá se pro podepisování zpráv všude, kde je to možné v protokolech PlayReady.
- NIST – Systémy Microsoft PlayReady používají standardní algoritmy NIST pro šifrování ECC, pokud je to možné, a aktuálně používají eliptickou křivku P-256.
Podpisové algoritmy
Pro podepisování licencí, přechodných klíčů nebo dat systémy PlayReady používají AES OMAC1, což je ekvivalentem CMAC (Šifrový ověřovací kód zpráv) a stal se doporučením NIST v květnu 2005. Klíče se generují náhodně, ale data se hashují pomocí SHA256 a pak se hodnota hash podepíše pomocí ECC256.
Úvahy o runtime a výkonu
Při aktivaci přehrávání obsahu musí klient PlayReady před zahájením počátečního přehrávání provést několik kroků. To zahrnuje vyhledání licence, vazby nebo interpretaci licence, dešifrování klíče obsahu a nakonec přípravu na dešifrování obsahu. Vytvoření vazby licence ke kusu obsahu v zásobníku klienta PlayReady nějakou dobu trvá a tato operace se vyžaduje před zahájením dešifrování a vykreslování obsahu. To znamená, že čas potřebný k vytvoření vazby licence ovlivňuje dobu pro první snímek při spuštění přehrávání nebo mezeru mezi stopami. Vývojář klienta i vývojář aplikace mohou chtít zvážit optimalizaci kódu pro problémy s modulem runtime a výkonem, zkrátit dobu na první snímek a umožnit přehrávání bez mezer.
Chráněné kontejnery používají šifrování symetrického klíče k šifrování velkého obsahu. Šifrování veřejného klíče se ale používá v rámci licence. Důvodem je to, že licence obsahuje symetrický klíč obsahu a server používá veřejný klíč klienta k šifrování symetrického klíče obsahu.
Když je čas dešifrovat obsah, privátní klíč klienta se použije k dešifrování symetrického klíče z licence. Pouze klient, ke kterému je licence vázána, může extrahovat symetrický klíč.
Dešifrování privátního klíče je výpočetně náročnější než symetrické dešifrování; interpretace licence je proto výpočetně náročná. Po správném zpracování licence se symetrický klíč dešifruje a obsah se může dešifrovat pomocí malých a rychlých algoritmů.
U aplikací nebo zařízení, která jsou omezena prostředky, vyžaduje spuštění významný čas a prostředky. Po dokončení se však prostředky uvolní, dešifrování může probíhat efektivně a je zapotřebí jen několik cyklů procesoru či systémových prostředků.