viernes, 29 de mayo de 2009

Windows, ¿demasiados secretos?

Aquellos que nos seguís sabeís de sobra qué es ReactOS( FAQ1, FAQ2), y que los desarrolladores de este Sistema Operativo GPL son verdaderos estudiosos del comportamiento de los S.O Windows, por lo que sorprenderles a estas alturas es complicado. Sin embargo, aún, se siguen encontrando con verdaderas joyas WTFuckeras que alegran las tardes/noches de programación. Y esta anécdota es una de ellas.

Existe un listado de los errores que las funciones de Windows pueden devolver, son los System Error Codes. Se pueden consultar aquí.

Hay miles de ellos, pero uno de los más habituales (por ejemplo) suele ser:

ERROR_INVALID_PARAMETER -->El parámetro(pasado a la función) es incorrecto.

Ayer, uno de los programadores se encontró con el siguiente error:

ERROR_TOO_MANY_SECRETS (Error_Demasiados_Secretos)

Lógicamente al comentarlo nos quedamos primero sorprendidos(00)  y luego perplejos(0o).¿Demasiados secretos?Algunos comenzaron con las típicas bromas de "¿Qué tendrá escondido Windows?", otros se enzarzaron en conspiranoias echelonianas y los que teníamos ganas de saber nos enfundamos el SDK y el MSDN y nos pusimos a buscar.

El SDK apenas decía nada:






ERROR_TOO_MANY_SECRETSEl máximo numero de secretos que se pueden almacenar en un sistema han sido excedidos.

El MSDN decía un poco más:






ERROR_TOO_MANY_SECRETSEl máximo numero de secretos que se pueden almacenar en un sistema han sido excedidos.La longitud y numero de secretos está limitada para satisfacer las restricciones del Departamento de Exportaciones de Estados Unidos

Después de leer lo de "Departamento de Exportaciones" se nos termino de cambiar la cara de 0o a ¬¬', ¿algun tipo de broma por el April Fools Day?¿Qué es un "secreto"?¿Qué tiene que ver la exportación de "secretos" con Windows?("Señor del Departamento...quiero exportar el siguiente secreto de solo 5 palabras..")
 
Buscar en el MSDN la palabra "secret" es buscar una aguja en un pajar. Sin embargo,encontramos lo siguiente:
"Un secreto es una pieza encriptada de información,tal como un password o el nombre de un usuario".

 
 
Asi pues Microsoft define como "secreto" a cualquier fichero encriptado en tu ordenador. Y actualmente se encuentra limitado a 4096 piezas encriptadas.Ya sea una pequeña cadena como un Password o un fichero grande de 2 gigas encriptado.
 
 
Ahora quedaba preguntarse,¿y que tiene que ver el Departamento de Exportaciones de EE.UU con todo esto?.Que sea EE.UU no es raro, allí está asentada Microsoft.¿Pero el  Departamento de Exportaciones que tiene que ver?¿Tiene mi fichero pinta de tomate acaso?
 
 
Pues si esto te parece raro...¿que tal si te digo que antes el Departamento que lo llevaba era el Departamento de Estado de EE.UU y que estos "secretos" eran considerados como Armamento,junto a las metralletas,bombas y submarinos?!.
 
 

[caption id="attachment_868" align="aligncenter" width="300" caption="ReactLOSt"]ReactLOSt[/caption]

Tras la segunda guerra mundial, Estados Unidos e Inglaterra, pensaban, que habian desarrollado unas mayores habilidades criptográficas que el resto de los países.Por ello las agencias de inteligencia intentaron controlar la diseminación de las técnicas de criptografía. Dentro de EE.UU era dificil de controlar,debido a la Primera Enmienda,pero controlar el acceso de otros paises/empresas a la tecnología desarrollada en EEUU era mucho más práctico. Asi pues EEUU decidió incluir a las técnicas criptográficas dentro del listado del Armamento y bajo el control del Departamento de Estado, de esta manera eran necesarias solicitar licencias de exportación. Las regulaciones establecían que la criptografía por encima de una cierta fuerza(definida por el algoritmo y la longitud de la llave)no podrían ser exportadas.
 
 
Un ejemplo curioso durante esta época fue el de Netscape, que usaba un cifrado  SSL con una longitud de llave de 128 bits. Como la longitud máxima de la llave (para permitir la exportación) era de 40 bits, se crearon dos versiones del navegador. Una interna para los Estados Unidos, que usaba los 128 bits, y otra versión Internacional cuya llave efectiva era de 40 bits ya que mostraba los otros 88 bits restantes sin encriptación alguna en el protocolo SSL . Esto era un grave problema de seguridad,pues una llave de 40 bits puede ser rota en cuestión de dias con un ordenador personal.
 
 
Desde 1996 la criptografía pasó de la "Lista de Armamentos" a la "Lista de Comercio", la cual está controlada por el Departamento de Exportaciones.Ciertamente se han ido suavizando las regulaciones, pero siguen siendo muy complejas (y normalmente requieren consultas a expertos legales y a expertos en criptografía), sobre todo para aplicaciones(como un Sistema Operativo) que puedan llegar a manos de un gran público(incluidos terroristas).
 
 
Es por ello que cualquiera de los SO Windows, al ser un producto exportado de EE.UU,que permite contener almacenar archivos encriptados,debe acogerse a las leyes de exportación de EE.UU de criptografía y tiene por ello limitado el número de archivos encriptados almacenables,entre otras cosas.
 
Por fortuna ReactOS no es un producto creado en EEUU y por lo tanto no necesita acogerse a las leyes de exportación estadounidenses ;)
 
 
PD: Aquí podeís encontrar una conversación con el departamento técnico sobre la cuestión del ERROR_TOO_MANY_SECRETS

6 comentarios:

  1. Vaya que ahora lo he visto todo o_0

    Serán esos "secretos" algo que esconde "The Kid" ???

    ResponderEliminar
  2. Si alguien tiene todas las cuentas de internet con sus password estaria claro que se harian estafas mundiales con ello. un que tambien puede guardar la informacion que acaba de ser borrada??? si es asin seria para que el enemigo no pueda proteger la informacion

    ResponderEliminar
  3. Lo del "Too Many Secrets" demuestra que los de Microsoft tienen su sentido del humor... Era justo la contraseña de acceso de "El Decodificador" en la pelicula "Los fisgones" de Robert Redford, pelicula que (aparte de ser muy buena :-) ) trataba precisamente de un aparato capaz de romper en segundos cualquier tipo de encriptacion por fuerte que fuese :-P

    ResponderEliminar
  4. Si no creo mal, no es que la "otra versión Internacional cuya llave efectiva era de 40 bits ya que mostraba los otros 88 bits restantes sin encriptación alguna en el protocolo SSL".
    Según entiendo, los bits se refieren al largo de la clave que se usa para encriptar. Por consiguiente la clave de 40 bits son solamente 5 bytes y la de 128 bits son 16 bytes. Calculen la cantidad de posibilidades diferentes entre ambas claves y se van a dar cuenta por qué la de 40 es más fácil de romper.

    ResponderEliminar
  5. No entiendo la primera frase de tu comentario :)
    Respecto al resto: Efectivamente 40 bits son 5 bytes(40/8) y 128bits son 16 bytes(128/8).Simplemente en el ejemplo lo puse en Bits(dado que las claves se miden en bits) y tu lo has pasado a Bytes.Es tan complicado romper una clave de 40 bits que una de 5 bytes,ya que son lo mismo.
    Voy a intentarlo explicar mejor.
    Tanto la version de EEUU como la Internacional la encriptaban con una llave de 128 bits.La longitud de la llave es la longitud de la llave y ante eso no se podía hacer nada.Pero como no se podía exportar uno llave encriptada con más de 40 bits optaron por mostrar directamente los 88 bits que no se podian exportar.Veamos un ejemplo:

    Imaginate que la clave es ELBLOGDEREACTOS(15 letras).Imaginate que la ley americana no permite que una clave encriptada exportada sea mayor de 5 letras.

    Entonces en la versión EEUU la clave sería: *************
    (Totalmente desconocida ya que como se expuso DENTRO de EEUU no hay limitaciones)

    Pero en la versión Internacional la clave sería: ELBLOGDERE*****.
    Técnicamente esta clave solo está exportando 5 letras encriptadas,por lo que cumple la normativa de exportación aunque la longitud de la clave sea de 15 Letras.

    En ambos la longitud es de 15 letras,sin embargo un cracker para la versión EEUU se tiraría años para dar con la clave(ya que tiene que descubrir TODAS las letras: ELBLOGDEREACTOS), en la versión Internacional tardaría días(ya que solo tiene que descubrir las que faltan: ACTOS)

    Por cierto la proporción con respecto al problema real es prácticamente la misma (128/40=3,2 frente a 15/5= 3), con lo que se ve "del tirón" la falta de seguridad.

    La info de Netscape fue sacada de aqui: http://en.wikipedia.org/wiki/Export_of_cryptography

    ResponderEliminar
  6. [...] Fuente: http://reactos.wordpress.com/ Etiquetas: emulacion seguridad cypherpunk cifrado WINE win32 Mandar a un amigo | | Comentar Nombre * E-mail * [...]

    ResponderEliminar