Archivado en la categoría (Identidad Digital, PAPI) por Teresa
Publicado el 21-01-2011

Todos los compontes de PAPI desarrollados en PHP necesitan utilizar la función ‘openssl_pkey_get_details‘, ya que siempre se necesita trabajar con la clave pública RSA de algún componente de la infraestructura PAPI donde está desplegado.

El problema que muchos de nosotros nos hemos encontrado cuando hemos realizado instalaciones de PAPI, es que algunas distribuciones de Linux, como Red Hat, sólo incluyen la versión 5.1.6 dentro de sus ramas o versiones estables.

En adAS hemos intentado hacer la vida más fácil a la hora de instalarlo, por lo que estamos incorporando una solución «de emergencia» (o workaround) para aquellas situaciones en las que es imposible actualizar la versión de PHP. ¿Cómo? Utilizando el ejecutable de OpenSSL.

La función de PHP ‘openssl_pkey_get_details’ necesita un parámetro con un objeto que representa a la clave y devuelve un ‘array’ con la siguiente estructura (para el caso de claves RSA, que es el que nos interesa):

array(
'bits' => ...,
'key' => ...,
'type' => 0,
'rsa' => array(
'n' => ...,
'e' => ...
),
)

Donde,

  • bits: es el número de bits de la clave.
  • key: es la clave en formato PEM.
  • type: su valor es OPENSSL_KEYTYPE_RSA.
  • rsa: es un array con la siguiente información
    • n: es el módulo de la clave RSA.
    • e: es el exponente de la clave RSA.

Toda esta información la podemos obtener también ejecutando el comando ‘openssl’, aunque lo obtendremos en otro formato:

$ openssl rsa -pubin -in test.pem -modulus -text
Modulus (1024 bit):
00:a8:cd:4f:02:e4:b3:2c:b7:3b:3b:77:7c:0f:c8:
9b:24:66:c9:92:9d:05:8e:4b:b4:50:14:8b:41:00:
19:f7:31:49:49:4a:38:40:81:8f:29:a4:99:eb:0c:
4c:ee:a3:6c:d5:04:a1:8a:1f:1b:33:2a:da:95:5e:
62:40:b1:2a:99:36:37:d5:1d:9a:99:26:b7:7b:11:
0c:37:84:e0:d0:15:42:1c:d3:b5:61:f7:0f:8a:b6:
ca:18:03:0d:36:c2:50:f5:ae:b5:60:16:c0:92:f3:
84:68:12:a8:e1:ce:72:21:c9:d1:2c:18:e4:e7:37:
c3:79:d8:22:38:86:2a:dc:97
Exponent: 65537 (0x10001)
Modulus=A8CD4F02E4B32C ... C18E4E737C379D82238862ADC97
writing RSA key
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCozU8C5LMstzs7d3wPyJskZsmS
nQWOS7RQFItBABn3MUlJSjhAgY8ppJnrDEzuo2zVBKGKHxszKtqVXmJAsSqZNjfV
HZqZJrd7EQw3hODQFUIc07Vh9w+KtsoYAw02wlD1rrVgFsCS84RoEqjhznIhydEs
GOTnN8N52CI4hirclwIDAQAB
-----END PUBLIC KEY-----
Obtener el número de bits de la clave pública es bastante fácil ya que no tenemos que hacer ninguna conversión (de la clave pública en formato PEM ni hablamos, ya que sin ella no hubiésemos podido ejecutar dicho comando).
El exponente se nos indica en hexadecimal: 0x10001. Éste valor hemos de procesarlo en PHP de la siguiente manera:
$data = explode("\n", trim($salida));
for ($i = 0; $i < count($data); $i++) {
$temp = explode(" ", $data[$i]);
if ($temp[0] == "Exponent:") {
$exp = $temp[1];
}
}
$e = base_convert($exp, 10, 16);
$e = asciihex2hex($e);
Como vemos, nos quedamos con el valor en decimal que nos indica OpenSSL, 65537 en nuestro ejemplo, y lo pasamos a hexadecimal cambiando la base de 10 a 16. Como obtendremos el valor ‘10001’, utilizaremos la siguiente función para obtener el valor en decimal:
function asciihex2hex($str) {
while ((strlen($str) % 2) != 0) {
$str = "0" . $str;
}
$out = "";
for ($i = 0; $i < strlen($str); $i+=2) {
$out .= chr(hexdec($str[$i] . $str[$i + 1]));
}
return $out;
}
Con respecto al módulo de la clave RSA, OpenSSL nos ofrece su valor en hexadecimal en una cadena de texto, por lo que para pasarlo a decimal número utilizaremos la siguiente receta:
$data = explode("\n", trim($salida));
for ($i = 0; $i < count($data); $i++) {
$temp = explode(" ", $data[$i]);
if (strpos($data[$i], "Modulus=") !== false) {
$modulus = substr($data[$i], strlen("Modulus="));
}
}
$m = $modulus;
$m = self::asciihex2hex($m);
De esta forma ya tenemos toda la información que nos hubiese dado la función de openssl ‘openssl_pkey_get_details':
$res = array(
'bits' => $keylength,
'key' => $publickeypem,
'type' => 0,
'rsa' => array(
'n' => $m,
'e' => $e
)
);
Archivado en la categoría (PRiSE) por Teresa
Publicado el 03-01-2011

Ante todo, !Feliz Año nuevo desde PRiSE¡

Y para entrar con buen pie en el 2011, acabamos de lanzar nuestra forja de desarrollo. En ella iremos publicando, y gestionando de manera sencilla su desarrollo, todos aquellos software de código abierto que estamos desarrollando en PRiSE.

Para inaugurarla, entre otros proyectos, hemos dado de alta adAS, nuestro Servidor de Autenticación Avanzado que realiza funciones de Proveedor de Identidad ofreciendo a su vez un entorno gráfico de configuración. Ya está disponible la versión 1.0.0 de adAS para descargar.

Nota: autor de la imagen Nina Matthews.

Archivado en la categoría (Protección de datos) por PRiSE
Publicado el 16-12-2010

Recuerdo la primera vez que leí: Encargado de Tratamiento.

No fue ni en una novela ni en el periódico, si no en la misma ley.

Atículo 3. Definiciones

g) Encargado del tratamiento: la persona física o jurídica, autoridad pública, servicio o cualquier otro organismo que, sólo o conjuntamente con otros, trate datos personales por cuenta del responsable del tratamiento.

Y una explicación muy sencilla: Es el responsable de los datos, pero externalizado.

Eso sí, debemos tener correctamente el contrato respectivo, en concreto, la seguridad de los Datos Personales que tratará esta otra organización.

Esta empresa sólo podrá tratar esos datos con la misma finalidad para los que los ha recogido la organización original.

Muchas veces este rol no se suele tratar correctamente: o no se trata o se confunde con una cesión de datos.

Como explica la propia AEPD en el Informe 0177/2010:

… delimitaremos si nos encontramos ante una cesión de datos o ante una realización de actividades reguladas por el artículo 12 de la Ley Orgánica, y para ello será preciso atender a las circunstancias de cada caso, de tal forma que existirá cesión en aquellos supuestos en los que quien reciba los datos pueda aplicar los mismos a sus propias finalidades, decidiendo sobre el objeto y finalidad del tratamiento, lo que la convertirá a su vez en un responsable del fichero o tratamiento, mientras que la figura regulada por el artículo 12 de la Ley Orgánica tendrá cabida en aquellos otros casos en que la entidad receptora de los datos se limite a efectuar determinadas operaciones sobre los mismos, sin decidir sobre su finalidad, restituyendo los datos al responsable una vez concluida la prestación contratada con aquél.

Así que cuando entre otra organización en escena, deberemos preguntarnos y tener claro con que careta subirá al escenario.

En el caso de que se trate de cesión lo más importante es que el propietario de los datos sea consciente de este hecho y nos haya dado su consentimiento.

Respecto al contrato entre la organización original y el Encargado de Tratamiento citado anteriormente, éste debe ser por escrito o en cualquier otra forma que permita acreditar su celebración y contenido, que deberá especificar las circunstancias previstas por los apartados 2 y 3 del artículo 12.

En el citado informe, recoge también la Sentencia de 19 de noviembre de 2003 de la Audiencia Nacional:

Para tener la condición legal de encargado del tratamiento, al que por cierto le es de aplicación el régimen sancionador que establece la Ley Orgánica 15/1999, según dispone el artículo 43.1 de la expresada Ley, es necesario cumplir una serie de exigencias necesarias, que operan a modo de garantías, establecidas en el artículo 12 de la Ley Orgánica 15/1999. Así es, cuando el tratamiento se realice por cuenta de un tercero debe constar “por escrito o en alguna otra forma que permita acreditar su celebración y contenido.”, por lo que no basta con acreditar que existe una relación jurídica entre el responsable del fichero y el encargado del tratamiento, sino que ésta ha de constar por escrito o por otra forma que permita acreditar su “celebración y contenido”. En este sentido, la propia Ley prevé un contenido mínimo del contrato entre las partes en el que deben constar una serie de estipulaciones necesarias, a saber, seguir las instrucciones del responsable del tratamiento, no utilizar los datos para un fin distinto, no comunicarlos a otras personas, estipular las medidas de seguridad.

En otro post será interesante hablar del periodo de conservación de los datos, establecido por el artículo 12.3:

Una vez cumplida la prestación contractual, los datos de carácter personal deberán ser destruidos o devueltos al responsable del tratamiento, al igual que cualquier soporte o documentos en que conste algún dato de carácter personal objeto del tratamiento.

Y más interesante aún, hablar de la realización por cuenta de un tercero de software que trate Datos Personales. ¿Cuántas veces hemos visto que para realizar un software se han dado directamente todos los datos reales? Eso no es ni cesión, ni Encargado de Tratamiento. Es directamente una bestialidad. Pero no quiero adelantarme en esta temática. Próximamente…

Referencias:

Archivado en la categoría (adAS, I+D+i, Identidad Digital, PAPI) por Teresa
Publicado el 15-11-2010

Desde PRiSE queremos anunciar la salida a la luz de la página oficial de adAS (advanced Authentication Server).

Para los que aún no hayáis escuchado nada de él, adAS es un Servidor de Autenticación Avanzado que realiza funciones de proveedor de identidad y que integran los distintos protocolos que se engloban la identidad digital de una organización, como pueden ser PAPI v1, SAML 1.1/Shibboleth 1.3 o SAML 2.0.

adAS ofrece muchas ventajas con respecto a aplicaciones similares, pero una de las principales es la facilidad de gestión y mantenimiento de los sistemas integrados en este Single Sign-On, gracias a su interfaz web de administración. Mediante éste es posible configurar todos los aspectos que integran una aplicación de este tipo: gestión de proveedores de servicio, metadatos, políticas de atributos, soporte de diferentes fuentes de datos, etc.

Además, no solo se centra en facilitar la configuración y en tener un buen funcionamiento, si no que su objetivo es, además, facilitar el trabajo a los encargados de la identidad digital de las distintas organizaciones, integrando herramientas de visualización y búsquedas rápidas en los archivos de log, generando estadísticas de acceso y autenticación del sistema e incluso posibilitando el funcionamiento de esta herramienta con DNI electrónico.

¿Quiéres saber más sobre adAS?: Visita su nueva página web.

adAS Dashboard