[LACNIC/Seguridad] Generación de IPv6 Frag ID, etc.

Fernando Gont fgont en si6networks.com
Lun Feb 13 03:28:14 BRST 2012


On 02/12/2012 11:50 PM, Iván Arce wrote:
>> Pese a que el "Frag ID" de IPv6 es de 32 bits, si en el medio hubiera un
>> traductor IPv6/IPv4, solo los low-order 16-bits son utilizados... lo
>> cual ahce que, a la practica, uno probablemente tenga que considerar que
>> el Frag ID tiene un largo efectivo de 16 bits.
>>
>> En tales escenarios, si uno simplemente random()iza el frag ID, las
>> posibilidades de colision son bastante posibles.
> 
> "bastante posibles" es una definición un tanto ambigua pero estoy de
> acuerdo en general, por eso es que lo que yo pregunte originalmente es
> porque no utilizaban un  Lineal Congruential Generator (LCG) para genera
> una sequencia pseudoaleatoria global

Como te mencionaba, considerando Frag IDs de 32-bits (léase, salteando
esto de arriba), mi propuesta era justamente hacer algo tipo rand(). (el
resto de esta historia sobre como llegamos a donde llegamos, ya lo
hablamos).

Respecto al LCG en particular, creo recordar alguna publicación respecto
de problemas con los mismos (seguridad? frecuencia de valores?) -- de
cualquier modo, para mi el algoritmo en si es una "caja negra", ya que
realmente no conozco del tema como para decir "entre todas las opciones
posibles, hay que elegir *esta*". De hecho, creo que especificar uno en
particular tal vez podría ser "sobre-especificar" la cuestión.



> Fijate que eso es lo que utiliza OpenBSD:
> 
> http://www.openbsd.org/cgi-bin/cvsweb/src/sys/netinet6/ip6_id.c?rev=1.7;content-type=text%2Fx-cvsweb-markup
> 
> Y fijate que eso es "sospechosamente parecido" a la solución que
> encontramos para generar query IDs de DNS hace 15 años:
> 
> http://www.openbsd.org/advisories/res_random.txt

NO habia habido un problema con el algoritmo utilizado por OpenBSD? --
Creo recordar una publicación de Amit Klein (?)... pero a esta altura no
recuerdo los detalles.



> De más esta aclarar que el query IDs de DNS es un campo de 16bits y que
> las consideraciones sobre predictibilidad y probabilidad de colisiones
> que señalás eran completamente aplicables en aquel caso.

Se me ocurre que en el caso del query ID, es *algo* menos problemático
-- en el caso de fragmentación, los fragmentos se almacenan en el queue
por hasta 60 segundos.

P.S.: Por si vale la aclaración, mi objetivo discutiendo estas cosas es
mejorar mi propio entendimiento del tema, y lograr recomendaciones de
mejor calidad. -- no estoy "casado" con ningun algoritmo ni
recomendación en particular.

Saludos,
-- 
Fernando Gont
SI6 Networks
e-mail: fgont en si6networks.com
PGP Fingerprint: 6666 31C6 D484 63B2 8FB1 E3C4 AE25 0D55 1D4E 7492






Más información sobre la lista de distribución Seguridad