Lección
La teoría — Revocar un dispositivo sin avisar a los demás
En el cifrado de difusión, la misma película cifrada llega a todos los dispositivos, y la licencia decide quién puede abrirla. Organiza los dispositivos como las hojas de un árbol binario y asigna a cada nodo su propia clave; un dispositivo recibe las claves de su propio camino desde su hoja hasta la raíz, es decir, log₂N + 1 claves. Un nodo define así un conjunto de dispositivos, formado por todos los que descienden de él, y la cabecera de la licencia transporta la clave de la película cifrada una vez por cada conjunto dentro de una colección que cubre a los dispositivos legítimos y excluye a los comprometidos. Revocar un dispositivo consiste en elegir una colección distinta.
Qué significa cada símbolo
N- cuántos dispositivos existen, aquí siempre una potencia de dos para que el árbol esté completo
r- cuántos de ellos están comprometidos y deben quedar bloqueados
S(i,j)- el conjunto de diferencia de subconjuntos: cada dispositivo bajo el nodo i excepto los que están bajo el nodo j, lo que permite que una sola entrada de la cabecera evite una única hoja defectuosa
- Supone
- Que un dispositivo revocado no puede repararse, solo excluirse, y que jamás olvida las claves que se le asignaron. Esto es lo que significa "receptor sin estado" en el título del artículo, y es la razón por la que la respuesta es un problema de cobertura en lugar de uno de renovación de claves: nadie puede enviarle a un dispositivo una clave nueva, porque el dispositivo que filtró sus claves también la recibiría.
- Falla cuando
- Cuando los dispositivos comprometidos se distribuyen de forma uniforme. Ambos esquemas alcanzan su máxima eficacia con un lote de números de serie consecutivos, y muestran su peor comportamiento en dispositivos alternos, donde ningún subárbol queda limpio y la cabecera necesita una entrada por cada dispositivo superviviente, el mismo coste que pagarías por no aplicar ningún esquema.
Problemas resueltos al detalle
-
¿De dónde sale 2r − 1? La herramienta lo muestra en la cuarta fila y es la cifra que sostiene todo el esquema. Sin importar el tamaño del sistema, una cabecera de diferencia de subconjuntos nunca necesita más de dos entradas por dispositivo comprometido. La demostración es un argumento de conteo sobre el algoritmo y cabe en cuatro líneas.
Abre este problema en la herramienta
-
Empieza por la espina: la unión de los caminos desde la raíz hasta las r hojas comprometidas. Cada hoja de esa espina es un dispositivo comprometido, así que arranca con r hojas. Todo el trabajo del algoritmo consiste en consumirlas.
-
Una ronda: encuentra un nodo v cuyas dos ramas contengan exactamente una hoja restante cada una. Emite un subconjunto por cada rama que sea algo más que una simple hoja (lo que da un máximo de dos subconjuntos). Luego colapsa todo lo que hay por debajo de v para que este se convierta en una hoja.
-
Cuenta qué le hizo esa ronda a las hojas. Dos desaparecieron y surgió una nueva. La espina tiene ahora una hoja menos, sin importar el aspecto que tuviera el árbol.
-
Por tanto, se producen exactamente r − 1 rondas antes de que quede una sola hoja. Cada una añade como máximo 2 subconjuntos, más un subconjunto final de cierre para lo que queda por encima de esa última hoja.
-
Nada en ese argumento menciona la profundidad del árbol, y esa es la clave. Una ronda cuesta lo mismo tanto si v se encuentra tres niveles por debajo como si está a treinta.
-
La cota también es holgada en casi todos los casos, porque necesita que cada ronda emita ambos subconjuntos. En 200 conjuntos de revocación generados sobre 1.048.576 dispositivos, la cabecera promedio es de 1,2513 claves por dispositivo comprometido con 64 revocados, 1,2520 con 32 y 1,2580 con 10, frente a una cota de 2. Por eso, la cifra de diseño para un formato de licencia ronda el 1,25r, mientras que la cifra a garantizar es 2r − 1.
Respuesta
Como máximo 2 subconjuntos por ronda, r − 1 rondas, más 1 de cierre: 2(r − 1) + 1 = 2r − 1, sin ninguna N por ninguna parte. La cota del subárbol completo es r·log₂(N/r) para las mismas revocaciones, y el log₂(N/r) es exactamente lo que elimina la diferencia de subconjuntos. El precio a pagar es guardar ½log₂²N + ½log₂N + 1 claves dentro de cada dispositivo en lugar de log₂N + 1.
-
-
¿Cuánto cuesta un Media Key Block real? La herramienta cuenta la cabecera en entradas, que es la parte matemática. Un disco Blu-ray la transporta en bytes, en un formato que cualquiera puede interpretar. La especificación AACS detalla con exactitud cómo se escribe una diferencia de subconjuntos, por lo que el tamaño de la cabecera en un disco real se puede calcular en lugar de adivinar.
Abre este problema en la herramienta
-
AACS identifica cada diferencia de subconjuntos mediante una máscara u de un byte y un número
uvde cuatro bytes, y transporta dieciséis bytes de datos de clave cifrados para ella. "Para cada diferencia de subconjuntos incluida en la parte de identificación, hay 16 bytes de datos de clave en la parte de datos de clave", según las propias palabras de la especificación. Veintiún bytes por subconjunto, y absolutamente nada más. -
El recubrimiento en sí es lo que calcula la herramienta. Alrededor de 1,25 entradas por dispositivo revocado en la práctica, y nunca más de dos.
-
Así que un Media Key Block ronda los veintiséis bytes por dispositivo revocado. Ese es todo el cálculo de tamaño, y resulta lineal respecto a la cantidad de reproductores bloqueados, sin que intervenga el tamaño del sistema.
-
Compara los dos esquemas uno junto al otro para las mismas revocaciones. La columna de diferencia de subconjuntos es la que llega al mercado. La columna del subárbol completo indica lo que habrían costado esas mismas revocaciones con el esquema más simple.
-
En la segunda columna es donde entra en juego la altura del árbol. En un sistema de 2³¹ dispositivos, el máximo que puede direccionar un número uv de 32 bits, revocar mil reproductores cuesta unas 21.000 entradas de subárbol completo frente a 1.250 de diferencia de subconjuntos. Esto sucede porque el log₂(2³¹/1000) es aproximadamente 21 y cada dispositivo revocado paga ese costo.
Respuesta
Un Media Key Block requiere unos 26 bytes por dispositivo revocado: 2,6 kB para cien reproductores, 26 kB para mil, 262 kB para diez mil, y nunca supera los 42 kB, 420 kB y 4,2 MB en el peor de los casos que permite la cota. El subárbol completo exigiría 442 kB donde la diferencia de subconjuntos solo necesita 26 kB. De esto se deducen dos cosas que la herramienta no muestra. El disco se prensa una vez y se lee durante veinte años, por lo que un MKB solo puede crecer. Por este motivo, la parte de identificación ocupa cinco bytes en lugar de una dirección de nodo completa, y el formato agrupa los datos de las claves en una sección independiente en vez de intercalarlos. Además, una cabecera de 26 kB resulta insignificante frente a un disco de 25 GB. La razón por la que se impuso la diferencia de subconjuntos nunca fueron los bytes. Lo hizo porque la alternativa crece con el tamaño del sistema, y un disco prensado hoy tiene que dar servicio a los dispositivos de 2040.
-
Ruta de aprendizaje
Proteger una transmisión: revocar un dispositivo y descubrir cuál fue
Referencias (3)
- Both schemes on this page, the two bounds, and the algorithm the worked problem follows: D. Naor, M. Naor and J. Lotspiech, "Revocation and Tracing Schemes for Stateless Receivers." Advances in Cryptology — CRYPTO 2001, LNCS 2139, pp. 41–62.
- Why this scheme rather than a nicer one: the Media Key Block on a Blu-ray disc is a subset-difference tree, and the specification says so in as many words. AACS LA, Advanced Access Content System (AACS): Introduction and Common Cryptographic Elements, Revision 0.91, 17 February 2006, §3.2.1 "Subset-Difference Tree Overview".
- The problem before either scheme existed, and the source of the term: A. Fiat and M. Naor, "Broadcast Encryption." Advances in Cryptology — CRYPTO '93, LNCS 773, pp. 480–491.