Lección
La teoría — Cifrar un bloque de cada diez (CENC cbcs)
Common Encryption (ISO/IEC 23001-7) permite que un solo conjunto de archivos cifrados sirva para varios sistemas DRM. Cifra las muestras multimedia con AES-128 y mantiene su estructura legible: cada fragmento de vídeo codificado se divide en una parte en claro, la longitud de la unidad NAL, la cabecera y la cabecera del fragmento, y un rango protegido a continuación. El esquema cenc ejecuta AES en modo contador sobre cada byte de ese rango. El esquema cbcs ejecuta AES en modo CBC sobre un patrón de bloques enteros de 16 bytes, uno cifrado y nueve en claro, repetido hasta el final del rango, y cualquier bloque parcial final se mantiene en claro.
Qué significa cada símbolo
L- el fragmento, una unidad NAL de fragmento codificado, en bytes
h- la cabecera en claro: prefijo de longitud, cabecera NAL y cabecera del fragmento, que el cifrado de submuestras deja legibles
B- bloques enteros de 16 bytes en el rango protegido P = L − h; cbcs cifra ⌈B/10⌉ de ellos
- Supone
- Un único tamaño de fragmento para todo el flujo. Un codificador real escribe fragmentos grandes para las imágenes que sirven de predicción y pequeños para el resto, por lo que las cifras individuales se aplican fragmento a fragmento y las del flujo describen uno de fragmentos idénticos. La cabecera en claro es de 32 bytes por defecto porque es la única longitud fijada por una especificación: el SAMPLE-AES de Apple deja en claro el byte de tipo NAL y los 31 bytes posteriores. Un empaquetador CENC deja en claro exactamente las cabeceras, que varían entre fragmentos. Los conjuntos de parámetros, los mensajes SEI y las cajas MP4 que envuelven las muestras van en claro y se omiten, por lo que la proporción cifrada de un archivo real es algo menor. El audio es AAC-LC a 48 kHz, 1024 muestras por trama, y está cifrado; un servicio que deja su audio en claro también lo resta del trabajo.
- Falla cuando
- Como forma de ocultar cualquier cosa que no sean las imágenes. Las cabeceras en claro están ahí para leerse, y revelan el tipo de cada fragmento, el tamaño de cada trama y la sincronización de todo el flujo a cualquiera que tenga el archivo, ya disponga de la clave o no.
Problema resuelto al detalle
-
Lo máximo que puede sobrecifrar un patrón 1:9 3 pasos
¿Cuánto por encima de una décima parte puede llegar un fragmento? Pulsa Un fragmento por fila: 306 bytes, un 10,46 % de texto cifrado. La página imprime un fragmento cada vez. Encuentra la mayor proporción que cbcs puede cifrar en cualquier fragmento de al menos 1.000 bytes con una cabecera de 32 bytes, y cómo se reduce ese peor caso a medida que crecen los fragmentos.
Abre este problema en la herramienta
-
La proporción es 16⌈B/10⌉/L. Mientras ⌈B/10⌉ se mantenga constante, solo disminuye a medida que L crece, así que los peores tamaños son aquellos donde acaba de empezar un nuevo bloque cifrado: un rango protegido de exactamente 10k + 1 bloques enteros, con k + 1 de ellos cifrados.
-
En esos tamaños L = h + 16(10k + 1). Divide y separa la décima parte: lo que queda es el exceso sobre el 10 %, un número fijo de bytes sobre L.
-
Con h = 32 el exceso es de 11,2 bytes sobre L. El primer peor tamaño igual o superior a 1.000 bytes es k = 6: 61 bloques enteros, 7 de ellos cifrados, en un fragmento de 1.008 bytes.
Respuesta
112 bytes de 1.008, el 11,11 %, y ninguno de 1.000 bytes o más lo supera. El exceso cae como 1/L: el peor fragmento de 10.000 bytes o más tiene 10.128 bytes con un 10,11 %, el tope de la franja que cita la primera explicación. La fórmula también indica qué cabecera pone fin al sobrecifrado. El exceso es de 16 − (h + 16)/10 bytes, que equivale a cero con h = 144, y un fragmento cuya cabecera en claro sea de 144 bytes o más nunca tendrá más de una décima parte cifrada, independientemente de su tamaño.
-
Referencias (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.