Õppetund
Teooria — Ühe bloki krüpteerimine kümnest (CENC cbcs)
Common Encryption (ISO/IEC 23001-7) võimaldab ühel krüpteeritud failide kogumil teenindada mitut DRM-süsteemi. See krüpteerib meedia valimid AES-128-ga ning hoiab nende struktuuri loetavana. Iga kodeeritud videoviil jagatakse lahtiseks osaks, mis sisaldab NAL-i ühiku pikkust, päist ja viilu päist, ning sellele järgnevaks kaitstud vahemikuks. Skeem cenc käitab AES-i loendurirežiimis selle vahemiku iga baidi peal. Skeem cbcs käitab AES-i CBC režiimis tervete 16-baidiste blokkide mustri peal, kus üks blokk on krüpteeritud ja üheksa jäetakse lahtiseks. Seda mustrit korratakse vahemiku lõpuni ning lõpus olev osaline blokk jääb lahtiseks.
Mida iga sümbol tähendab
L- viil, üks kodeeritud viilu NAL-i ühik, baitides
h- lahtine päis: pikkuse eesliide, NAL-i päis ja viilu päis, mille alamvalimi krüpteerimine jätab loetavaks
B- terved 16-baidised blokid kaitstud vahemikus P = L − h; cbcs krüpteerib neist ⌈B/10⌉
- Eeldab
- Kogu voo peale on üks viilu suurus. Päris kooder kirjutab suured viilud piltidele, millelt ennustatakse teisi, ning väikesed ülejäänutele. Seega peavad viilupõhised näitajad paika viilu kaupa ning voo näitajad kirjeldavad võrdsete viiludega voogu. Lahtine päis on vaikimisi 32 baiti, kuna see on ainus pikkus, mille ükski spetsifikatsioon fikseerib. Nimelt jätab Apple'i SAMPLE-AES lahtiseks NAL-i tüübi baidi ja sellele järgnevad 31 baiti. CENC-i pakendaja jätab lahtiseks täpselt päised, mis aga erinevad viiluti. Parameetrite komplektid, SEI-sõnumid ja valimeid ümbritsevad MP4 kastid on lahtised ja jäetakse välja, seega on tõelise faili krüptoteksti osakaal veidi väiksem. Heli on krüpteeritud AAC-LC sagedusel 48 kHz, kus kaadris on 1024 valimit. Teenus, mis jätab oma heli lahtiseks, eemaldab heli ka töökoormusest.
- Ei kehti, kui
- See ei sobi peitma midagi muud peale piltide. Lahtised päised on mõeldud lugemiseks. Need reedavad faili valdajale nii iga viilu tüübi, iga kaadri suuruse kui ka terve voo ajastuse, olgu tal võti või mitte.
Ülesanne täielikult lahendatud
-
Maksimum, mida 1:9 muster suudab üle krüpteerida 3 sammu
Kui palju üle kümnendiku võib üks viil minna? Vajuta Viil makrobloki reale: 306 baiti, 10,46% krüptoteksti. Leht prindib välja ühe viilu korraga. Leia suurim osakaal, mida cbcs suudab krüpteerida vähemalt 1 000-baidises viilus 32-baidise päisega, ning jälgi, kuidas see halvim juhtum viilude kasvades kahaneb.
-
Osakaal on 16⌈B/10⌉/L. Kuni ⌈B/10⌉ püsib paigal, langeb see vaid L-i kasvades. Seega on halvimad suurused need, kus uus krüpteeritud blokk on just alanud. See on täpselt 10k + 1 tervest blokist koosnev kaitstud vahemik, millest k + 1 on krüpteeritud.
-
Nende suuruste juures L = h + 16(10k + 1). Jaga läbi ja eralda kümnendik. Järele jääb 10% ületav osa ehk fikseeritud baidide arv L-i suhtes.
-
Kui h = 32, on see ülejääk 11,2 baiti L-i kohta. Esimene halvim suurus vähemalt 1 000 baidi juures on k = 6 ehk 1 008-baidises viilus 61 tervet blokki, millest 7 on krüpteeritud.
Vastus
112 baiti 1 008-st ehk 11,11% ning ükski 1 000-baidine või suurem viil ei anna halvemat tulemust. Ülejääk langeb suhtes 1/L. Halvim vähemalt 10 000-baidine viil on 10 128 baiti osakaaluga 10,11%, mis on esimeses arusaamas viidatud vahemiku ülempiir. Valem ütleb ka, milline päis lõpetab ülekrüpteerimise. Ülejääk on 16 − (h + 16)/10 baiti, mis annab h = 144 juures nulli. Viil, mille lahtine päis on 144 baiti või pikem, ei saa seega ühelgi suurusel olla üle kümnendiku ulatuses krüpteeritud.
-
Allikad (3)
- The standard itself. Paywalled; the publisher's preview is openly readable and carries the introduction, the scope and the table of contents, which is where the page's two quotations come from: ISO/IEC 23001-7:2023, Information technology — MPEG systems technologies — Part 7: Common encryption in ISO base media file format files. 4th edition. Preview via iTeh Standards.
- The cbcs rules as a working decryptor applies them, with the standard's §9.6.1 and §10.4.2 quoted in its comments: the pattern over whole blocks, the partial block left clear, and a 0:0 pattern meaning every block: The Chromium Authors, media/cdm/cbcs_decryptor.cc, Chromium source tree (BSD licence).
- HLS's transport-stream format, SAMPLE-AES, which uses the same one-block-in-ten pattern with a fixed 32-byte clear leader. RFC 8216 names it as the format for non-fMP4 segments and 'cbcs' for fMP4 ones: Apple Inc., "MPEG-2 Stream Encryption Format for HTTP Live Streaming", §2.2 H.264 Video Streams and §2.3 Audio Streams. Documentation Archive, updated 2015-10-29.