HDCP ( High-bandwidth Digital Content Protection ) er en teknologi til beskyttelse af medieindhold udviklet af Intel [ 1] og designet til at forhindre ulovlig kopiering af video i høj kvalitet , der transmitteres via DVI -grænseflader (HDCP er en valgfri mulighed for denne grænseflade [2] ), DisplayPort (HDCP er valgfrit til denne grænseflade), HDMI , GVIF eller UDI . Det beskyttede videosignal kan kun afspilles på udstyr, der understøtter HDCP.
HDCP-krypteringssystemet version 1.x blev endelig knækket i 2010 (systemets hovednøgle blev gendannet) [3] [4] .
HDCP er designet til at beskytte transmissionen af medieindhold mellem en HDCP-sender og en HDCP-modtager. Teknologien giver også mulighed for brug af HDCP-repeatere med sikre porte til downstream dataflow (fra udbyderen til kunden af tjenesten). Systemet kan have op til syv niveauer af HDCP-repeatere og op til 128 HDCP-kompatible enheder.
Beskyttelsessystemet består af tre hovedkomponenter:
Den 14. september 2010 rapporterede adskillige onlinemedier (ZDNet, Engadget) kendsgerningen om den åbne udgivelse af HDCP-hovednøglen, med hvilken du kan oprette private nøgler til HDCP-enheder ( enheds private nøgler ) uden hjælp fra HDCP-nøgleinfrastrukturen operatør ( The Digital Content Protection LLC ). Med udgivelsen af hovednøglen blev alle foranstaltninger til at tilbagekalde enhedsnøgler neutraliseret, da en ny altid kan genereres i stedet for den gamle (tilbagekaldte) enhedsnøgle [5] [6] . Det er ikke helt klart, hvordan hovednøglen blev opnået, det er kendt, at offentliggørelsen af nøglen, sammen med brugsanvisninger, skete via Twitter og pastebin . Engadget mener, at angriberen kan have brugt Crosbys (2001) metode.
2 dage senere, den 16. september, bekræftede Intel (skaberen af HDCP), at denne hovednøgle var ægte, og at HDCP-beskyttelsen faktisk var blevet brudt [3] [7] [8] . Intel truer med at tage retslige skridt mod enhver, der laver hardwareenheder, der omgår HDCP-beskyttelse [9] .
En godkendelsesprotokol bruges mellem en HDCP-sender og en HDCP-modtager for at bekræfte, at sidstnævnte er en enhed, der har tilladelse til at modtage det relevante indhold . Bekræftelse - viden om et hemmeligt sæt nøgler. Hver HDCP-enhed er forsynet med et unikt sæt af fyrre 56-bit hemmelige nøgler, kaldet DPK'er ( enheds private nøgler ), hentet fra DCP LLC . Under kommunikationen opretter enhederne en delt hemmelighed, som ikke kan aflyttes under kommunikationen, og denne hemmelighed bruges derefter som en symmetrisk nøgle til at dekryptere HDCP-indhold, der er bestemt til den godkendte enhed.
Hver HDCP-enhed gemmer, udover Device Private Keys, den tilsvarende 40-bit identifikator - KSV ( engelsk nøglevalgsvektor , nøgleudvælgelsevektor), som ligesom DPK modtager fra DCP LLC.
Godkendelsesprotokollen kan opdeles i tre dele:
Figuren viser den første del af godkendelsesprotokollen. I det første trin sender HDCP-senderen ( enhed A ) en triggermeddelelse til HDCP-modtageren ( enhed B ). Meddelelsen indeholder senderens KSV ( Aksv ) og et 64-bit pseudo-tilfældigt tal ( An ) (tallet genereres af hdcpRngCipher- funktionen ).
Senderen kan på et hvilket som helst tidspunkt starte godkendelsesprocessen, selvom den forrige lige er afsluttet.
I det andet trin svarer HDCP-modtageren med en besked med modtagerens KSV ( Bksv ) og en REPEATER-bit , der angiver, om enhed B er en repeater eller ej. HDCP-senderen kontrollerer, at Aksv indeholder præcis 20 nuller og 20 enere og ikke er sortlistet.
På dette trin beregnes en fælles 56-bit hemmelig Km og Km' i begge enheder .
Beregningen er lavet som følger:
Fra DPK-sættet summeres nøglerne i overensstemmelse med bitrepræsentationen af den modtagne KSV: hvis biten er lig med én, bruges den tilsvarende nøgle. Nøgler tilføjes modulo uden overløb.
Eksempel:Lad os sige, at Bksv er 0x5A3. Den binære repræsentation er 10110100011.
Derfor lægger Enhed A sine hemmelige nøgler sammen ved positionerne 0, 1, 5, 7, 8, 10 og beregner den delte hemmelige Km .
Enhed B udfører en lignende beregning ved at bruge sit eget sæt af hemmelige nøgler og valgvektoren modtaget fra enhed A til at beregne Km' .
Det tredje trin bruger hdcpBlockCipher- funktionen til at beregne Ks , M0 , R0 . Triggerværdierne for, at denne funktion fungerer, er Km (eller Km' ) og sammenkædningen af REPEATER -bitten med An ( REPEATER- bitten angiver, at HDCP-modtageren understøtter yderligere transmission af HDCP-data, det vil sige, at den er en repeater) .
Hvis godkendelsen lykkedes, så er R0 = R0' , ellers er de ulige i de fleste tilfælde. Ydermere, ved hjælp af Ri' opnået under den tredje del af protokollen, vil det være muligt at detektere, at autentificeringen er mislykket, i tilfælde af at værdien af R0 fejlagtigt indikerede succesen af autentificeringen.
Den anden del af godkendelsesprotokollen er påkrævet, hvis HDCP-modtageren er en HDCP-repeater. HDCP-senderen udfører kun den anden del af protokollen, når REPEATER-bitten er indstillet , hvilket betyder, at HDCP-modtageren er en HDCP-repeater. Denne del af protokollen viser alle KSV-enheder, der er tilsluttet HDCP-repeateren downstream: HDCP-beskyttede porte, HDCP-repeatere, HDCP-modtagere. Denne liste er repræsenteret som et sammenhængende sæt af bytes, hvor hver KSV optager 5 bytes skrevet i direkte rækkefølge.
Samlet længde af KSV-liste = 5 bytes * antal tilsluttede aktive HDCP-enheder
HDCP-beskyttede porte med inaktive HDCP-enheder tilføjer ikke noget til KSV-sættet, ligesom HDCP-repeateren selv, der starter oprettelsen af listen, ikke tilføjer sin egen KSV til den.
Integritetskontrol er påkrævet for at tilføje KSV-listen modtaget fra den tidligere HDCP-repeater. HDCP-repeateren, der anmodede om listen, beregner V og sammenligner den med den modtagne V' .
V = SHA-1 (liste KSV || tilstand B || M0 )
Hvor:
Alle bitrepræsentationer er i direkte rækkefølge.
Hvis V≠ V' , mislykkes integritetskontrollen, og HDCP-repeateren skal ikke acceptere listen. Dette vil udløbe watchdog-timeren, og HDCP-senderen vil være i stand til at detektere denne fejl.
Udover at kompilere KSV-listen, forplantes topologisk information (antal og dybde) op i enhedstræet til HDCP-senderen. Antallet af enheder ( eng. device count ) beregnes som antallet af alle HDCP repeatere og modtagere ned fra den enhed, der tæller summen. Dybden for en HDCP-repeater er lig med den maksimale dybdeværdi , der modtages fra downstream-enhederne i HDCP-repeatertræet, plus én. For eksempel, for en HDCP repeater med fire HDCP downstream-mål, er dybden én, og antallet af enheder er fire.
Antallet af enheder i et træ kan ikke overstige 127, og antallet af niveauer (dybde) må ikke overstige syv.
Eksempel:Når HDCP-senderen detekterer, at REPEATER -bitten er blevet transmitteret , indstiller den en 5-sekunders watchdog-timer og anmoder om HDCP-repeaterens READY -status. Hvis statusbitten er sat til 1 (klar), så læser HDCP-senderen KSV-listen og kontrollerer, om enhedslisten overskrider størrelsen og dybden specificeret af specifikationen, kontrollerer derefter listen for integritet ved at beregne V . Hvis nogen af betingelserne ikke er opfyldt, eller timeren udløber, udføres godkendelsen ikke.
Genforsøget udføres ved at sende en ny værdi af An og Aksv .
Feltnavn | Optaget stykker | Feltbeskrivelse |
---|---|---|
Rsvd | 15:14 | Reserveret. Værdien er 0. |
HDMI_RESERVED_2 | 13 | Reserveret. |
HDMI_MODE | 12 | HDMI-tilstand. Når bit er indstillet til én, skifter HDCP-modtageren fra DVI-tilstand til HDMI-tilstand. Bitten nulstilles, når enheden tændes, genstartes, en HDCP-sender tilsluttes eller afbrydes, eller HDCP-modtageren ikke har modtaget data i 30 billeder. |
MAX_CASCADE_EXCEEDED | elleve | Viser fejl i topologien. Hvis indstillet til én, er der mere end syv niveauer af repeatere i enhedstræet. |
DYBDE | 10:8 | Viser antallet af niveauer i systemet |
MAX_DEVS_EXCEEDED | 7 | Viser fejl i topologien. Hvis indstillet til én, er der mere end 127 enheder i systemtræet. |
DEVICE_COUNT | 6:0 | Det samlede antal tilsluttede enheder. Altid nul for HDCP repeatere. Dette nummer inkluderer ikke selve HDCP-repeaterne, men de enheder, der er tilsluttet dem. |
Den tredje del af protokollen kører under det lodrette blanking - interval, der går forud for rammen . Hver af de to HDCP-enheder beregner nye startnumre Ki , Mi og Ri , hvor indeks i repræsenterer rammenummeret, startende ved én for den første krypterede ramme (efter fuldførelsen af den første del af autentificeringsprotokollen). Indekset øges med én for hver ramme eller med hver krypteret ramme, afhængigt af om ADVANCE_CIPHER -tilstanden er aktiveret . Billedtælleren øges ikke, hvis HDCP-enheden er i HDMI AVMUTE-tilstanden (tilstanden, når lyden slukkes, hvis der sker ændringer, der kan føre til støj i lydkanalen [10] ), og stiger ikke efter at have forladt denne tilstand indtil den første krypterede ramme.
HDCP-senderen kontrollerer Ri' med sine egne beregninger for at bekræfte, at videomodtageren er i stand til at afkode informationen korrekt. Denne kontrol udføres mindst hvert andet sekund, det er også muligt at læse Ri synkront ved næste ændring (hver 128. frames). I dette tilfælde skal aflæsningen af Ri' afsluttes inden for et millisekund fra det øjeblik, HDCP-senderen starter denne handling, hvis operationen af en eller anden grund mislykkes, så vurderer HDCP-senderen, at HDCP-modtageren ikke er blevet autentificeret.
For at øge sandsynligheden for at detektere ude af sync i kryptering, kan HDCP-senderen og -modtageren valgfrit understøtte Enhanced Link Verification, hvor beregninger for at opretholde chiffertimingskontrol udføres, hvis en specifik pixel transmitteres.
ADVANCE_CIPHER -tilstand er en valgfri tilstand, hvor krypteringstilstanden og billedtælleren øges hver frame i DVI -tilstand eller hver frame i HDMI -tilstand (medmindre den er i AVMUTE -tilstand ), uanset om kryptering er aktiveret eller ej.
HDCP-kryptering forekommer ved indgangen af TMDS ( Transition Minimized Differential Signaling , differentiel signaltransmission med minimering af niveauforskelle) af koderen, og dekryptering sker ved outputtet af TMDS-dekoderen. Krypteringsproceduren består af bitvis addition ( XOR ) af datastrømmen med en pseudo-tilfældig sekvens genereret af HDCP-krypteringen.
Under det lodrette interval forbereder hdcpBlockCipher- funktionen HDCP-chifferet til at generere en nøgleafhængig 24-bit pseudo-tilfældig sekvens for hver pixel i inputstrømmen. Disse bits er overlejret på TMDS-kanalerne som vist i tabellen for et eksempel på RGB-videostream.
Cipher output | TMDS kanal | Video stream bits |
---|---|---|
23:16 | 2 | Rød [7:0] |
15:8 | en | Grøn [7:0] |
7:0 | 0 | Blå [7:0] |
I løbet af det horisontale slukningsinterval omtildeler HDCP -krypteringen nøglen hver 56. bit, hvilket gør det sværere at bryde chifferen linje for linje.
Den overordnede struktur af en HDCP-chiffer kan opdeles i tre lag. Det første lag består af fire lineære feedbackskifteregistre ( engelsk linear feedback shift register, LFSR ), hvis output er en bit. Hvis der gives et nøgle-re-entry-signal, placeres denne bit i mellemlaget. Mellemlaget består af to ens dele. Den første del, B round-funktionen , udfører en runde af blokchifferet ved hjælp af tre 28-bit registre Bx, By, Bz . Den anden del - K round-funktionen - ligner i strukturen B-funktionen , men fungerer som output fra Ky - låsen (en strøm af 28-bit runde nøgler til den runde funktion B med en frekvens på én 28-bit nøgle pr. ur). I det nederste lag komprimerer hver cyklus de fire udgange fra 28-bit registrene By, Bz, Ky, Kz til en 24-bit pseudo-tilfældig sekvensblok .
Det lineære skifteregistermodul består af fire LFSR'er af forskellig længde og forskellige mixere ( kombinationsfunktion ) . Blandefunktionen afhænger af tre tryk ( engelsk tap ) i hvert register.
Registernummer | Registrer polynomium | Udgange, der bruges til blandefunktionen | ||
---|---|---|---|---|
0 | en | 2 | ||
3 | 5 | elleve | 16 | |
2 | 5 | 9 | femten | |
en | fire | otte | 13 | |
0 | 3 | 7 | 12 |
Blandingsfunktionen består af fire kaskadede blandede netværk , som hver inkluderer to statusbits . En XOR- operation udføres på et af udtagene i hvert af de fire registre for at danne inputdataene for det første trin af netværket. Andre registerhaner bruges til at vælge input til et af netværkene. Udgangen fra det fjerde netværk tilføjes ( XOR ) med et tryk fra hvert register.
Netværk med kanalbevægelseFiguren viser skematisk et netværk med kanalbevægelse. I tilfælde af at netværket indeholder et par booleske værdier (A, B), input er en boolesk værdi D, og valg input er S, så bestemmer værdien af parameteren S den næste tilstand. Hvis S er nul, er outputtet A, og tilstanden (B, D) er indstillet. Hvis S er én, så er output B, og tilstanden (A, D) er indstillet.
I alle driftstilstande initialiseres LSFR og blandingsfunktionen til et 56-bit tal. De 60 bit LSFR-status bruger disse 56 bit direkte, plus tilføjelsen af nogle fire bits. Shuffle-netværk initialiseres til samme værdi.
Blandingsfunktionens 1-bit outputstrøm er de eneste data, der opnås fra driften af LSFR-modulet. Dette flow forsyner blokmodulet med materiale til at generere nøgler, hvis der modtages et signal om at omdefinere nøglen.
Bit | Startværdi | |
---|---|---|
LFSR3 | [16] | Komplement til inputbit [47] |
[15:0] | Input bits [55:40] | |
LFSR2 | [femten] | Komplement til inputbit [32] |
[14:0] | Input bits [39:25] | |
LFSR1 | [13] | Komplement til inputbit [18] |
[12:0] | Input bits [24:12] | |
LFSR0 | [12] | Komplement til inputbit [6] |
[11:0] | Input bits [11:0] | |
Bland netværk | Registrer A | 0 |
Registrer B | en |
Dette modul består af to separate komponenter kaldet runde funktioner . En af komponenterne, den runde funktion K, forsyner den anden komponent, den runde funktion B , med en strøm af taster. Hver komponent fungerer med et tilsvarende sæt af tre 28-bit registre.
Hvis der blev modtaget et signal for at omdefinere nøglen, så skrives bit fra outputstrømmen af LSFR-modulet til den trettende bit af Ky- registret.
S-boksene til begge runde funktioner består af syv S-bokse med fire indgange og fire udgange. For en rund funktion K hedder S-boksene SK0, SK1.. ,SK6 . For den runde funktion B er S-boksene navngivet SB0, SB1.., SB6 . Bitnummer I*7+J af registre Bx eller Kx skrives til den I-te indgang af blok J , og bit I*7+J af registre Bz, Kz føres til output I fra blok J. I dette tilfælde betragtes bit nul som den mindst signifikante bit.
Diffusionsnet for den runde funktion K er vist i tabellen. Det skal bemærkes, at der ikke er yderligere input til denne funktion i noget diffusionsnetværk. Halvdelen af diffusionskomponenterne i funktionen B indeholder yderligere input, som modtager bit fra registret Ky for den runde funktion K .
Registre Ky, Kz, By, Bz danner en logisk udgangsfunktion. Hver af de 24 bit opnås ved at tilføje (XOR) ni led, som vist med formlen nedenfor:
Hvor - XOR , en - logisk multiplikation
Eksempel:
Output bit 0 beregnes som følger:
Denne sekvens bruges under den første del af autentificeringsprotokollen til at generere sessionsnøglen Ks og under det lodrette interval forud for den krypterede ramme til at udlede rammenøglen Ki .
Driftssekvens for hdcpBlockCipher- funktionen | Indledende tilstande og output af hdcpBlockCipher \ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
For 8-bit tal a og b er resultatet af sammenkædning af ab et 16-bit tal, hvor a er den mest signifikante bit og b er den mindst signifikante bit.
I både B- og K- rundefunktionerne kan x-, y- og z-registrene opfattes som ét register på 84 bit.
Når der kræves mindre end 84 registerbit, bruges de mindst signifikante bits. Hvis mindre end 84 bits er tilgængelige til initialisering, udfyldes de mindst signifikante bits, og de resterende bits sættes til nul.
Eksempel: 65-bit resultatet af sammenkædningen af REPEATER -bitten og An - værdien vil blive skrevet til Bx- og By -registrene , plus i de 9 mindst signifikante bit i Bz- registret , mens de øverste 19 bit af registret vil være fyldt med nuller. Hvor Mi- og Ri-bittene kommer fra, er vist i tabellen ovenfor.Denne funktion bruges som en tilfældig talgenerator , og funktionen skal understøtte en metode, der vil tillade dig at modtage bits fra en ekstern kilde. Bittene skal blandes eksternt med registrenes værdier (uden erstatning). Det vil sige, at der ikke burde være nogen måde at bestemme den genererede værdi på.
Den eksterne kilde skal have en rimelig sandsynlighed eller entropi . Det vil sige, at hvis der for eksempel er givet 1000000 forskellige cyklusser, så bør antallet af gentagne tal blandt 1000000 An ikke overstige 50%. Dette svarer til omkring fyrre (forudsat at ) vilkårlige bits ud af 64.
For at få den delte hemmelighed tilføjer enhederne deres hemmelige nøgler Ai afhængigt af den modtagne nøglevektor. Resultatet er en 56-bit hemmelig Km (sender) og Km' (modtager), og de skal være ens.
Derefter, efter godkendelse, krypterer modtageren muligheden med den modtagne nøgle og sender den til senderen. Det tjekker til gengæld med sin nøgle Km , at lejligheden er krypteret korrekt.
Derfor, hvis vi definerer 40 lineært uafhængige vektorer (enhedens hemmelige nøgler), så kan vi fuldstændig bryde systemet, da disse nøgler vil danne grundlaget for et 40-dimensionelt hemmeligt nøglerum, og vi kan sammensætte ethvert sæt af hemmelige nøgler af enhver enhed fra dem. På den anden side, hvis ikke alle 40 nøgler er lineært uafhængige, så kan vi stadig oprette visse sæt hemmelige nøgler inkluderet i det fundne underrum.
Eksempel: Antag, at vi har 40 enheder, for hvilke jeg kender deres nøglevalgsvektorer og sæt hemmelige nøgler , så som et resultat af udvekslingen af information med enheden, som vi ønsker at knække, får vi et ligningssystem:ved at løse hvilken, får vi de hemmelige nøgler til den angrebne enhed. Den antagelse, vi gør, er, at alle 40 nøglevalgsvektorer ksv er lineært uafhængige.
Hvis det dækkede rum ikke er 40-dimensionelt, så skal der stadig være et smuthul. Enten er disse nøglevalgsvektorer konstrueret på en sådan måde, at det ikke vil være muligt at danne grundlag for et fyrredimensionelt rum ud fra dem, eller også skal vi bruge mere end 40 KSV til at dække hele rummet (hver ekstra enhed har en lille chance at være lineært afhængig af det allerede opnåede sæt, omtrent , hvor n er dimensionen dækket rum)
Vi kan også selv oprette de korrekte sæt af nøglevalgsvektoren og hemmelige nøgler på enheden fra en lineær kombination, som vi allerede kender.
Eksempel:
1. Lad os vælge en vilkårlig enhed B, hvis B kan autentificere Ai, så er ligheden sand:
2. Lad
3. Vi ved, at når enhed B godkender enhed X , bruges Km - værdien :
4. Det vil sige, at huske det faktum, at (Ki)'m = Ki for alle i , kan vi beregne Km' :
5. Da valget af B var vilkårligt, vil dette fungere for enhver B, og
Autentificering mellem B og X vil lykkes. Den eneste vanskelighed kan være at konstruere Xksv , så den består af 20 nuller og 20 enere.
Anvendes i HD DVD og Blu-ray afspillere. Hvis afspilningsenheden og, hvis en computer bruges, softwaren ikke understøtter HDCP, vil signalet ikke blive transmitteret til outputtet, eller det vil det være, men med forringet kvalitet ( Image Constraint Token flag ) .
Godkendt 4. august 2004 af US Federal Communications Commission ( FCC) som " Digital Output Protection Technology " .
Teknologien understøttes af Windows Vista .
HDCP-understøttelse er en forudsætning for at være i overensstemmelse med " HD ready "-mærket, og dets brug håndhæves af amerikanske love for alle HD-udsendelsesmodtagere.
optisk disk | ||
---|---|---|
generel information |
| |
Typer af optiske diske |
| |
Formater |
| |
Beskyttelsesteknologier |