Leçon
La théorie — Chiffrer un bloc sur dix (CENC cbcs)
La norme Common Encryption (ISO/IEC 23001-7) permet à un même jeu de fichiers chiffrés de servir plusieurs systèmes DRM. Elle chiffre les échantillons multimédias avec AES-128 et garde leur structure lisible. Chaque tranche vidéo codée est divisée en une partie en clair (la longueur de l'unité NAL, son en-tête et l'en-tête de la tranche) et une plage protégée qui la suit. Le schéma cenc applique AES en mode compteur sur chaque octet de cette plage. Le schéma cbcs applique AES en mode CBC sur un motif de blocs complets de 16 octets : un chiffré et neuf laissés en clair. Ce motif se répète jusqu'à la fin de la plage, et un éventuel bloc partiel à la fin reste en clair.
Ce que signifie chaque symbole
L- la tranche, une unité NAL de tranche codée, en octets
h- l'en-tête en clair : préfixe de longueur, en-tête NAL et en-tête de tranche, que le chiffrement de sous-échantillon laisse lisibles
B- blocs complets de 16 octets dans la plage protégée P = L − h ; cbcs en chiffre ⌈B/10⌉
- Suppose
- Une seule taille de tranche pour l'ensemble du flux. Un véritable encodeur écrit de grandes tranches pour les images servant de prédiction et de petites pour les autres. Les chiffres par tranche restent valables tranche par tranche, et les chiffres du flux décrivent un flux de tranches égales. L'en-tête en clair fait 32 octets par défaut, car c'est la seule longueur fixée par une spécification : le format SAMPLE-AES d'Apple laisse en clair l'octet de type NAL et les 31 octets qui le suivent. Un empaqueteur CENC laisse en clair exactement les en-têtes, qui varient d'une tranche à l'autre. Les jeux de paramètres, les messages SEI et les boîtes MP4 autour des échantillons sont en clair et exclus du calcul. La part chiffrée d'un vrai fichier est donc légèrement inférieure. L'audio est en AAC-LC à 48 kHz, 1 024 échantillons par trame, et chiffré. Un service qui laisse son audio en clair retire également l'audio du travail.
- Ne tient plus quand
- Comme moyen de dissimuler autre chose que les images. Les en-têtes en clair sont là pour être lus. Ils révèlent le type de chaque tranche, la taille de chaque image et le minutage du flux complet à quiconque possède le fichier, avec ou sans la clé.
Problème entièrement résolu
-
Le maximum qu'un motif 1:9 peut surchiffrer 3 étapes
Jusqu'où une tranche peut-elle dépasser un dixième ? Cliquez sur Une tranche par ligne : 306 octets, 10,46 % de texte chiffré. La page affiche une tranche à la fois. Trouvez la plus grande part que cbcs puisse chiffrer dans une tranche d'au moins 1 000 octets avec un en-tête de 32 octets, et observez comment ce pire cas diminue à mesure que les tranches s'allongent.
Ouvrez ce problème dans l'outil
-
La part est de 16⌈B/10⌉/L. Tant que ⌈B/10⌉ reste constant, elle ne fait que baisser à mesure que L augmente. Les pires tailles sont donc celles où un nouveau bloc chiffré vient de commencer : une plage protégée d'exactement 10k + 1 blocs complets, dont k + 1 sont chiffrés.
-
À ces tailles, L = h + 16(10k + 1). Divisez, et séparez le dixième : ce qui reste est l'excédent au-delà de 10 %, un nombre fixe d'octets sur L.
-
Avec h = 32, l'excédent est de 11,2 octets sur L. La première pire taille à partir de 1 000 octets correspond à k = 6 : 61 blocs complets, dont 7 chiffrés, dans une tranche de 1 008 octets.
Réponse
112 octets sur 1 008, soit 11,11 %. Aucune taille de 1 000 octets ou plus ne fait pire. L'excédent baisse en 1/L : la pire tranche de 10 000 octets ou plus fait 10 128 octets à 10,11 %, soit le haut de la fourchette citée dans le premier aperçu. La formule indique aussi quel en-tête met fin au surchiffrement. L'excédent est de 16 − (h + 16)/10 octets. Il tombe à zéro pour h = 144. Ainsi, une tranche dont l'en-tête en clair atteint ou dépasse 144 octets ne voit jamais plus d'un dixième de son contenu chiffré, quelle que soit sa taille.
-
Références (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.