A HDCP ( High-bandwidth Digital Content Protection ) az Intel által kifejlesztett médiatartalom-védelmi technológia [ 1] , és célja a DVI interfészeken keresztül továbbított , jó minőségű videó illegális másolásának megakadályozása (a HDCP opcionális opció ehhez az interfészhez [2] ), DisplayPort (a HDCP opcionális ehhez az interfészhez), HDMI , GVIF vagy UDI . A védett videojel csak HDCP-t támogató berendezésen játszható le.
A HDCP titkosítási rendszer 1.x verzióját végül 2010-ben törték fel (visszaállították a rendszer főkulcsát) [3] [4] .
A HDCP-t a HDCP-adó és a HDCP-vevő közötti médiatartalom átvitelének védelmére tervezték. A technológia biztonságos portokkal rendelkező HDCP átjátszók használatát is biztosítja a downstream adatáramláshoz (a szolgáltatótól a szolgáltatás ügyfeléig). A rendszer akár hét szintű HDCP-ismétlővel és akár 128 HDCP-kompatibilis eszközzel is rendelkezhet.
A védelmi rendszer három fő részből áll:
2010. szeptember 14-én több online média (ZDNet, Engadget) beszámolt a HDCP főkulcs nyílt közzétételéről, amellyel HDCP-kulcs-infrastruktúra segítsége nélkül hozhat létre privát kulcsokat HDCP-eszközökhöz ( eszköz privát kulcsa ). operátor ( The Digital Content Protection LLC ). A főkulcs közzétételével az eszközkulcsok visszavonását célzó minden intézkedés semlegesített, mivel a régi (visszavont) eszközkulcs helyett mindig lehet újat generálni [5] [6] . Nem teljesen világos, hogyan szerezték meg a főkulcsot, ismert, hogy a kulcs közzététele a használati utasítással együtt a Twitteren és a pastebin keresztül történt . Az Engadget úgy véli, hogy a támadó Crosby (2001) módszerét alkalmazhatta.
2 nappal később, szeptember 16-án az Intel (a HDCP megalkotója) megerősítette, hogy ez a főkulcs valódi, és a HDCP-védelem valóban megszakadt [3] [7] [8] . Az Intel jogi lépésekkel fenyegetőzik mindenki ellen, aki HDCP-védelmet megkerülő hardvereszközöket gyárt [9] .
A HDCP-adó és a HDCP-vevő között hitelesítési protokollt használnak annak ellenőrzésére, hogy ez utóbbi olyan eszköz-e, amely képes fogadni a megfelelő tartalmat . Megerősítés - egy titkos kulcskészlet ismerete. Minden HDCP-eszköz egy negyven 56 bites titkos kulcsból álló egyedi készlettel rendelkezik, amelyeket DPK-knak ( eszköz privát kulcsainak ) neveznek, és amelyeket a DCP LLC -től szereztek be . A kommunikáció során az eszközök létrehoznak egy megosztott titkot, amelyet a kommunikáció során nem lehet lehallgatni, majd ezt a titkot használják szimmetrikus kulcsként a hitelesített eszköznek szánt HDCP-tartalom visszafejtésére.
Minden HDCP-eszköz a Device Private Keys mellett tárolja a megfelelő 40 bites azonosítót is - KSV ( angol kulcsválasztó vektor , kulcsválasztó vektor), amelyet a DPK-hoz hasonlóan a DCP LLC-től kap.
A hitelesítési protokoll három részre bontható:
Az ábra a hitelesítési protokoll első részét mutatja. Első lépésben a HDCP adó ( A eszköz ) trigger üzenetet küld a HDCP vevőnek ( B eszköz ). Az üzenet tartalmazza az adó KSV-jét ( Aksv ) és egy 64 bites pszeudo-véletlen számot ( An ) (a számot a hdcpRngCipher függvény generálja ).
Az adó bármikor elindíthatja a hitelesítési folyamatot, még akkor is, ha az előző éppen befejeződött.
A második lépésben a HDCP-vevő egy üzenettel válaszol a vevő KSV-jével ( Bksv ) és egy REPEATER bittel , amely jelzi, hogy a B eszköz ismétlő-e vagy sem. A HDCP adó ellenőrzi, hogy az Aksv pontosan 20 nullát és 20 egyest tartalmaz-e, és nincs-e feketelistán.
Ebben a szakaszban mindkét eszközben közös 56 bites titkos Km és Km' kerül kiszámításra .
A számítás a következőképpen történik:
A DPK készletből a kulcsok összegzése a vett KSV bitreprezentációja szerint történik: ha a bit egyenlő eggyel, akkor a megfelelő kulcs kerül felhasználásra. A kulcsokat modulo módon adják hozzá túlcsordulás nélkül.
Példa:Tegyük fel, hogy a Bksv 0x5A3. A bináris reprezentáció 10110100011.
Ezért az A eszköz összeadja titkos kulcsait a 0, 1, 5, 7, 8, 10 pozíciókban, és kiszámítja a megosztott titkos Km értéket .
A B eszköz hasonló számítást végez saját titkos kulcskészletével és az A készüléktől kapott választási vektorral a Km' kiszámításához .
A harmadik lépés a hdcpBlockCipher függvényt használja a Ks , M0 , R0 kiszámításához . A funkció működéséhez a triggerértékek Km (vagy Km' ) és a REPEATER bit összefűzése An -nal ( a REPEATER bit azt jelzi, hogy a HDCP vevő támogatja a HDCP adatok további átvitelét, azaz ismétlő) .
Ha a hitelesítés sikeres volt, akkor R0 = R0' , egyébként a legtöbb esetben nem egyenlőek. Továbbá a protokoll harmadik része során kapott Ri' segítségével megállapítható lesz, hogy a hitelesítés sikertelen volt, abban az esetben, ha az R0 értéke tévesen jelezte a hitelesítés sikerességét.
A hitelesítési protokoll második része szükséges, ha a HDCP-vevő HDCP-ismétlő. A HDCP adó csak akkor hajtja végre a protokoll második részét, ha a REPEATER bit be van állítva , ami azt jelenti, hogy a HDCP vevő egy HDCP átjátszó. A protokoll ezen része felsorolja az összes KSV-eszközt, amely a HDCP-ismétlőhöz csatlakozik: HDCP-védett portok, HDCP-ismétlők, HDCP-vevők. Ez a lista bájtok összefüggő halmazaként jelenik meg, amelyben minden KSV 5 bájtot foglal el közvetlen sorrendben.
A KSV-lista teljes hossza = 5 bájt * a csatlakoztatott aktív HDCP-eszközök száma
Az inaktív HDCP eszközökkel rendelkező HDCP-védett portok nem adnak hozzá semmit a KSV-készlethez, ahogy maga a lista létrehozását kezdeményező HDCP-ismétlő sem ad hozzá saját KSV-t.
Integritás-ellenőrzés szükséges az előző HDCP-ismétlőtől kapott KSV-lista hozzáadásához. A listát kérő HDCP átjátszó kiszámítja a V -t és összehasonlítja a vett V' értékkel .
V = SHA-1 (KSV lista || B állapot || M0 )
Ahol:
Minden bitreprezentáció közvetlen sorrendben van.
Ha V≠ V' , akkor az integritás ellenőrzése sikertelen, és a HDCP átjátszó nem fogadja el a listát. Ezzel lejár a watchdog időzítő, és a HDCP adó képes lesz észlelni ezt a hibát.
A KSV-lista összeállítása mellett a topológiai információk (szám és mélység) továbbíthatók az eszközfán a HDCP-adóig. Az eszközök számát ( magyar eszközök száma ) a rendszer az összes HDCP-ismétlő és vevőegység számából számítja ki az összeget számláló eszköztől lefelé. A HDCP-ismétlő mélysége megegyezik a HDCP-ismétlőfában a downstream eszközöktől kapott maximális mélységértékkel, plusz egy. Például egy HDCP átjátszó esetén négy HDCP lefelé irányuló célponttal a mélység egy, az eszközök száma pedig négy.
Egy fában az eszközök száma nem haladhatja meg a 127-et, a szintek száma (mélysége) pedig nem haladhatja meg a hetet.
Példa:A HDCP jeladó, ha észleli, hogy a REPEATER bit átvitelre került , beállít egy 5 másodperces watchdog időzítőt, és kéri a HDCP átjátszó READY állapotát. Ha az állapotbit 1-re (ready) van állítva, akkor a HDCP adó beolvassa a KSV listát és ellenőrzi, hogy az eszközlista meghaladja-e a specifikációban meghatározott méretet és mélységet, majd V kiszámításával ellenőrzi a lista integritását . Ha valamelyik feltétel nem teljesül, vagy az időzítő lejár, akkor a hitelesítés nem történik meg.
Az újrapróbálkozás egy új An és Aksv érték átadásával történik .
Mező neve | Foglalt bitek | Mező leírása |
---|---|---|
Rsvd | 15:14 | Fenntartott. Az érték 0. |
HDMI_RESERVED_2 | 13 | Fenntartott. |
HDMI_MODE | 12 | HDMI mód. Ha a bit egyre van állítva, a HDCP-vevő DVI módból HDMI módba vált. A bit alaphelyzetbe áll, amikor az eszközt bekapcsolják, újraindítják, HDCP-adót csatlakoztatnak vagy leválasztanak, vagy a HDCP-vevő 30 képkocka óta nem fogad adatokat. |
MAX_CASCADE_EXCEEDED | tizenegy | A topológia hibáit jeleníti meg. Ha egy értékre van állítva, akkor az eszközfában hétnél több ismétlőszint található. |
MÉLYSÉG | 10:8 | Megmutatja a szintek számát a rendszerben |
MAX_DEVS_EXCEEDED | 7 | A topológia hibáit jeleníti meg. Ha egy értékre van állítva, több mint 127 eszköz van a rendszerfában. |
DEVICE_COUNT | 6:0 | A csatlakoztatott eszközök teljes száma. Mindig nulla HDCP átjátszóknál. Ez a szám nem magát a HDCP átjátszót tartalmazza, hanem a hozzájuk csatlakoztatott eszközöket. |
A protokoll harmadik része a keretet megelőző függőleges törlési intervallumban fut . A két HDCP-eszköz mindegyike új kezdőszámot számít ki Ki , Mi és Ri , ahol az i index a keretszámot jelöli, egytől kezdve az első titkosított keretnél (a hitelesítési protokoll első részének befejezése után). Az index eggyel növekszik minden egyes kerettel vagy minden titkosított kerettel, attól függően, hogy az ADVANCE_CIPHER mód engedélyezve van-e . A képkockaszámláló nem növekszik, ha a HDCP-eszköz HDMI AVMUTE állapotban van (az az üzemmód, amikor a hang ki van kapcsolva, ha olyan változások történnek, amelyek zajhoz vezethetnek az audiocsatornában [10] ), és nem növekszik az állapotból való kilépés után. az első titkosított keretig.
A HDCP adó a saját számításaival ellenőrzi az Ri'-t , hogy megbizonyosodjon arról, hogy a videovevő képes helyesen dekódolni az információt. Ez az ellenőrzés legalább kétmásodpercenként megtörténik, az Ri szinkron olvasása is lehetséges a következő változtatáskor (minden 128 képkocka). Ebben az esetben az Ri' kiolvasást egy milliszekundumon belül be kell fejezni attól a pillanattól számítva, hogy a HDCP adó elindítja ezt a műveletet, ha valamilyen okból a művelet meghiúsul, akkor a HDCP adó úgy ítéli meg, hogy a HDCP vevő nincs hitelesítve.
A titkosítási szinkrontól eltérő észlelés valószínűségének növelése érdekében a HDCP adó és vevő opcionálisan támogathatja az Enhanced Link Verification funkciót, amelyben a titkosítási időzítés vezérlésének fenntartása érdekében számításokat hajtanak végre, ha egy adott pixel kerül átvitelre.
Az ADVANCE_CIPHER mód egy opcionális mód, amelyben a titkosítás állapota és a képkockaszámláló DVI módban minden képkockával, HDMI módban pedig minden képkockával növekszik (kivéve, ha az AVMUTE állapotban van ), függetlenül attól, hogy a titkosítás engedélyezve van-e vagy sem.
A HDCP titkosítás a kódoló TMDS ( Transition Minimized Differential Signaling , differenciális jelátvitel a szintkülönbségek minimalizálásával) bemenetén történik, és a visszafejtés a TMDS dekóder kimenetén történik. A titkosítási eljárás az adatfolyam bitenkénti összeadásából ( XOR ) áll a HDCP-rejtjel által generált pszeudo-véletlen sorrendben.
A függőleges intervallum alatt a hdcpBlockCipher függvény felkészíti a HDCP-rejtjelet, hogy a bemeneti adatfolyam minden pixeléhez kulcsfüggő, 24 bites pszeudo-véletlenszerű sorozatot hozzon létre. Ezek a bitek a TMDS csatornákon vannak átfedve, amint az egy példa RGB videofolyamra vonatkozó táblázatban látható.
Rejtjel kimenet | TMDS csatorna | Video stream bitek |
---|---|---|
23:16 | 2 | Piros [7:0] |
15:8 | egy | zöld [7:0] |
7:0 | 0 | kék [7:0] |
A vízszintes törlési intervallum alatt a HDCP-rejtjel 56 bitenként újraosztja a kulcsot, ami megnehezíti a titkosítás soronkénti feltörését.
A HDCP titkosítás általános szerkezete három rétegre osztható. Az első réteg négy lineáris visszacsatolási eltolási regiszterből áll ( angol linear feedback shift register, LFSR ), amelyek kimenete egy bit. Ha kulcs-újrabeviteli jelet adunk, akkor ez a bit a középső rétegbe kerül. A középső réteg két hasonló részből áll. Az első rész, a B round függvény , végrehajtja a blokk titkosításának egy körét három 28 bites Bx, By, Bz regiszter használatával . A második rész – a K körfüggvény – szerkezetében hasonló a B függvényhez , de a Ky retesz kimeneteként működik (28 bites kerek billentyűk folyama a B kerek függvényhez egy 28 bites kulcs frekvenciájával óránként). Az alsó rétegben minden ciklus a 28 bites By, Bz, Ky, Kz regiszterek négy kimenetét egy 24 bites pszeudo-véletlen sorozatblokkba tömöríti .
A lineáris eltolási regiszter modul négy különböző hosszúságú LFSR -ből és különböző keverőkből áll ( kombinációs funkció ) . A keverési funkció minden regiszter három érintésétől ( angol koppintás ) függ.
Regisztrációs szám | Regisztrálja a polinomot | A keverési funkcióhoz használt kimenetek | ||
---|---|---|---|---|
0 | egy | 2 | ||
3 | 5 | tizenegy | 16 | |
2 | 5 | 9 | tizenöt | |
egy | négy | nyolc | 13 | |
0 | 3 | 7 | 12 |
A keverési funkció négy lépcsőzetes kevert hálózatból áll , amelyek mindegyike két állapotbitet tartalmaz . A négy regiszter mindegyik leágazásán egy XOR műveletet hajtanak végre a hálózat első szakaszának bemeneti adatainak kialakítása érdekében. Más regiszterérintkezőkkel lehet kiválasztani az egyik hálózat bemenetét. A negyedik hálózat kimenete hozzáadódik ( XOR ) minden regiszterből egy érintéssel.
Hálózat csatornamozgássalAz ábra sematikusan ábrázol egy hálózatot csatornamozgással. Abban az esetben, ha a hálózat egy pár logikai értéket (A, B) tartalmaz, a bemenet D logikai érték, a kiválasztási bemenet pedig S, akkor az S paraméter értéke határozza meg a következő állapotot. Ha S nulla, akkor a kimenet A, és az állapot (B, D) be van állítva. Ha S egy, akkor a kimenet B és az állapot (A, D) be van állítva.
Az LSFR és a keverési funkció minden üzemmódban 56 bites számra inicializálódik. Az LSFR állapot 60 bitje közvetlenül ezt az 56 bitet használja, plusz mintegy négy bitet. A véletlenszerű hálózatok azonos értékre vannak inicializálva.
A keverési függvény 1 bites kimeneti adatfolyama az egyetlen adat, amelyet az LSFR modul működéséből nyerünk. Ez az áramlás ellátja a blokkmodult olyan anyaggal, amely kulcsokat generál, ha jel érkezik a kulcs újradefiniálására.
Bit | Kezdő érték | |
---|---|---|
LFSR3 | [16] | Bemeneti bit kiegészítése [47] |
[15:0] | Bemeneti bitek [55:40] | |
LFSR2 | [tizenöt] | Bemeneti bit kiegészítése [32] |
[14:0] | Bemeneti bitek [39:25] | |
LFSR1 | [13] | Bemeneti bit kiegészítése [18] |
[12:0] | Bemeneti bitek [24:12] | |
LFSR0 | [12] | Bemeneti bit kiegészítése [6] |
[11:0] | Bemeneti bitek [11:0] | |
Véletlenszerű hálózatok | Regisztráció A | 0 |
Regisztráció B | egy |
Ez a modul két különálló komponensből, úgynevezett kerek függvényekből áll . Az egyik komponens, a K kerek funkció a másik komponenst, a B kerek funkciót látja el billentyűfolyammal. Mindegyik összetevő három 28 bites regiszterből álló megfelelő készlettel működik.
Ha a kulcs újradefiniálására jelet kapott, akkor az LSFR modul kimeneti adatfolyamának bitje a Ky regiszter tizenharmadik bitjébe kerül.
Az S-box mindkét körfunkcióhoz hét S-boxból áll, négy bemenettel és négy kimenettel. K körfüggvény esetén az S-dobozok neve SK0, SK1.. ,SK6 . A B kerek függvény esetében az S-dobozok neve SB0, SB1.., SB6 . A Bx vagy Kx regiszterek I*7+J számú bitje a J blokk I. bemenetére kerül , a Bz, Kz regiszterek I *7+J bitje pedig a J blokk I kimenetére kerül . Ebben az esetben a nulla bitet tekintjük a legkisebb jelentőségű bitnek.
A K körfüggvény diffúziós hálózatait a táblázat tartalmazza. Megjegyzendő, hogy ehhez a funkcióhoz egyetlen diffúziós hálózatban sincsenek további bemenetek. A B függvény diffúziós komponenseinek fele további bemeneteket tartalmaz, amelyek a K körfüggvény Ky regiszteréből kapnak biteket .
A Ky, Kz, By, Bz regiszterek logikai kimeneti függvényt alkotnak. A 24 bit mindegyikét kilenc tag összeadásával (XOR) kapjuk, amint azt az alábbi képlet mutatja:
Ahol - XOR , a - logikai szorzás
Példa:
A 0 kimeneti bit kiszámítása a következőképpen történik:
Ezt a sorozatot használják a hitelesítési protokoll első részében a Ks munkamenetkulcs generálására, és a titkosított keretet megelőző függőleges intervallumban a Ki keretkulcs származtatására .
A hdcpBlockCipher függvény működési sorrendje | A hdcpBlockCipher kezdeti állapotai és kimenete \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
8 bites a és b számok esetén az ab összefűzésének eredménye egy 16 bites szám, ahol a a legjelentősebb bit, b pedig a legkisebb jelentőségű bit.
Mind a B , mind a K körfüggvényben az x, y, z regiszter egy 84 bites regiszternek tekinthető.
Ha 84-nél kevesebb regiszterbitre van szükség, a legkisebb jelentőségű biteket használja a rendszer. Ha kevesebb, mint 84 bit áll rendelkezésre az inicializáláshoz, a rendszer a legkisebb jelentőségű biteket tölti ki, a fennmaradó biteket pedig nullára állítja.
Példa:A REPEATER bit és az An érték összefűzésének 65 bites eredménye a Bx és By regiszterekbe kerül , plusz a Bz regiszter 9 legkisebb jelentőségű bitjében , míg a regiszter felső 19 bitje nullákkal lesz kitöltve. Az Mi és Ri bitek származási helye a fenti táblázatban látható.Ezt a függvényt véletlenszám-generátorként használják , és a függvénynek támogatnia kell egy olyan módszert, amely lehetővé teszi bitek fogadását egy külső forrásból. A biteket kívülről össze kell keverni a regiszterek értékeivel (csere nélkül). Vagyis ne legyen mód a generált érték meghatározására.
A külső forrásnak ésszerű valószínűséggel vagy entrópiával kell rendelkeznie . Vagyis ha például 1000000 különböző ciklust adunk meg, akkor az ismétlődő számok száma 1000000 An között nem haladhatja meg az 50%-ot. Ez körülbelül negyven (feltéve, hogy ) tetszőleges bitnek felel meg a 64-ből.
A megosztott titok megszerzése érdekében az eszközök hozzáadják az Ai titkos kulcsukat a kapott kulcsvektortól függően. Az eredmény egy 56 bites titkos Km (adó) és Km' (vevő), és ezeknek egyenlőnek kell lenniük.
Ezután a vevő a hitelesítés után a kapott kulccsal titkosítja a lehetőséget és elküldi az adónak. Ez viszont a Km kulcsával ellenőrzi, hogy az alkalom megfelelően van-e titkosítva.
Ha tehát 40 lineárisan független vektort (eszköz titkos kulcsát) definiálunk , akkor teljesen feltörhetjük a rendszert, hiszen ezek a kulcsok egy 40 dimenziós titkos kulcstér alapját képezik, és bármilyen titkos kulcs készletet összeállíthatunk. készüléket tőlük. Másrészt, ha nem mind a 40 kulcs lineárisan független, akkor is létrehozhatunk bizonyos titkos kulcskészleteket a talált altérben.
Példa: Tegyük fel, hogy van 40 készülékünk , amelyekhez ismerem a kulcskiválasztási vektorait és titkos kulcskészletek , majd az eszközzel folytatott információcsere eredményeként amelyet fel akarunk törni, egy egyenletrendszert kapunk:melynek megoldásával megkapjuk a megtámadott eszköz titkos kulcsait. Feltételezzük, hogy mind a 40 ksv kulcskiválasztási vektor lineárisan független.
Ha a fedett terület nem 40 dimenziós, akkor is kell lennie egy kiskapunak. Ezek a kulcskiválasztó vektorok vagy úgy vannak megszerkesztve, hogy ne legyen belőlük negyvendimenziós tér bázisa, vagy pedig több mint 40 KSV -re van szükségünk a teljes tér lefedéséhez (minden további eszköznek kicsi az esélye lineárisan függ a már kapott halmaztól, megközelítőleg , ahol n a lefedett tér dimenziója)
A készülék kulcskiválasztási vektorának és titkos kulcsainak megfelelő készleteit magunk is elkészíthetjük egy általunk már ismert lineáris kombinációból.
Példa:
1. Válasszunk egy tetszőleges B eszközt, ha B hitelesíteni tudja Ai-t, akkor az egyenlőség igaz:
2. Hagyjuk
3. Tudjuk, hogy amikor a B eszköz hitelesíti az X eszközt , a Km érték kerül felhasználásra :
4. Azaz, emlékezve arra a tényre, hogy (Ki)'m = Ki minden i -re , kiszámíthatjuk Km' :
5. Mivel B választása tetszőleges volt, ez bármelyik B-re működik, és
A B és X közötti hitelesítés sikeres lesz. Az egyetlen nehézség az lehet , hogy az Xksv -t úgy állítjuk össze, hogy az 20 nullából és 20 egyesből álljon.
HD DVD és Blu-ray lejátszókban használatos. Ha a lejátszó eszköz és számítógép használata esetén a szoftver nem támogatja a HDCP-t, akkor a jel nem, vagy az lesz, de romlott minőségben ( Image Constraint Token flag ) .
2004. augusztus 4-én hagyta jóvá az Egyesült Államok Szövetségi Kommunikációs Bizottsága ( FCC) " Digitális kimenetvédelmi technológia " néven .
A technológiát a Windows Vista támogatja .
A HDCP-támogatás előfeltétele a „ HD ready ” márkának való megfelelésnek, és ennek használatát az Egyesült Államok törvényei kényszerítik minden HD-műsorsugárzó vevőkészülékre.
optikai lemez | ||
---|---|---|
Általános információ |
| |
Az optikai lemezek típusai |
| |
Formátumok |
| |
Védelmi technológiák |