Mostrando entradas con la etiqueta PKI. Mostrar todas las entradas
Mostrando entradas con la etiqueta PKI. Mostrar todas las entradas

28 de noviembre de 2009

Firma Digital (in) Segura

¡Hola!

En el día de hoy vamos a cambiar de tercio hablando de una de las aplicaciones prácticas que la tecnología ha llevado a nuestros hogares / empresas para facilitarnos la vida, la firma electrónica. Esta firma está contemplada en nuestra legislación bajo la Ley 59/2003 de firma electrónica (que tenéis aquí) y cuyo mayor impacto es equiparar la firma manuscrita con la firma digital. Ahora bien existen distintos tipos de firma que la ley contempla:

1. La firma electrónica es el conjunto de datos en forma electrónica, consignados junto a otros o asociados con ellos, que pueden ser utilizados como medio de identificación del firmante.
2. La firma electrónica avanzada es la firma electrónica que permite identificar al firmante y detectar cualquier cambio ulterior de los datos firmados, que está vinculada al firmante de manera única y a los datos a que se refiere y que ha sido creada por medios que el firmante puede mantener bajo su exclusivo control.
3. Se considera firma electrónica reconocida la firma electrónica avanzada basada en un certificado reconocido y generada mediante un dispositivo seguro de creación de firma.
4. La firma electrónica reconocida tendrá respecto de los datos consignados en forma electrónica el mismo valor que la firma manuscrita en relación con los consignados en papel.

Esto es, tenemos 3 tipos de firma. La 1) que es la más sencilla garantizará el no-repudio. La 2) garantizará el no-repudio y la integridad del documento firmado, esto es, que no ha sido alterado por terceras partes. La 3) que garantiza a través de dispositivos seguros de creación de firma todo lo anterior haciendo a esta firma equiparable a la manuscrita en términos jurídicos y legales.

Claro está si se aprovecha el marco legal que esta Ley nos brinda esto puede facilitar trámites a ciudadanos y ahorrar chorros de tinta a las empresas, el Gobierno sabiendo esto enmarcó la factura electrónica dentro del Plan Avanza y presentó el portal Factura-e donde se explica lo que es una factura digital y se proporcionan utilidades a las pymes para que trabajen con ella, ejemplos de facturas electrónicas, etc. Una de las aplicaciones generadas por el ministerio es Facturae, que pinta así:

Interfaz de FacturaE

Incluye tu propio gestor de facturas, envío de las mismas desde servidores SMTP con SSL, listado de servidores OCSP para validar certificados X.509, etc. Parece una buena aplicación, ¿no creéis?

En el mismo marco este verano el Ministerio de Industria, Comercio y Turismo lanzó la EcoFirma, otra aplicación de firma digital de extrema sencillez que acerca la firma digital a ciudadanos y pymes, permitiendo firmar casi cualquier tipo de archivo, desde .doc a imágenes pasando por PDF a los que se pueden incrustar marcas de agua, etc. EcoFirma tiene el siguiente interfaz:

EcoFirma, tan sencillo como esto.

Puede importar certificados de nuestros exploradores habituales (IE, Mozilla) facilitándonos enormemente los procesos de firma y validación de otras firmas.

Todo esto está muy bien pero no puedo evitar lanzarme unas cuantas preguntas, y es aquí cuando viene el verdadero motivo de esta entrada, ¿las firmas que realiza el software que provee el ministerior, son firmas reconocidas? Supongamos que utilizamos los certificados de nuestro DNI electrónico (si tenéis curiosidad por todas las cosas que lleváis en la cartera cuando tenés dentro el DNI electrónico echad un ojo aquí) para firmar un archivo, estos son certificados reconocidos tal como marca la Ley, ¿es el software un dispositivo seguro de creación de firmas? Indagando sobre ello vemos que en Kriptópolis ya se hicieron la misma pregunta, llegando a conclusiones negativas. Repasemos la Ley:

2. Un dispositivo de creación de firma es un programa o sistema informático que sirve para aplicar los datos de creación de firma.
3. Un dispositivo seguro de creación de firma es un dispositivo de creación de firma que ofrece, al menos, las siguientes garantías:
a) Que los datos utilizados para la generación de firma pueden producirse sólo una vez y asegura razonablemente su secreto.
b) Que existe una seguridad razonable de que los datos utilizados para la generación de firma no pueden ser derivados de los de verificación de firma o de la propia firma y de que la firma está protegida contra la falsificación con la tecnología existente en cada momento.
c) Que los datos de creación de firma pueden ser protegidos de forma fiable por el firmante contra su utilización por terceros.
d) Que el dispositivo utilizado no altera los datos o el documento que deba firmarse ni impide que éste se muestre al firmante antes del proceso de firma.

Luego SI, el software (un programa informático) puede considerarse un dispositivo seguro. Ahora bien, ¿quien me lo garantiza?, ¿los estándares internacionales?, ¿como se que no hay gato encerrado?. Simple y llanamente: no lo se y no podré saberlo. En última instancia siempre hay que confiar en alguien, el estado, las autoridades de certificación, la Ley. En mi opinión un software NUNCA debería estar considerado un dispositivo seguro, una combinación Sotware + Hardware SI, ¿por qué? Por que una appliance siempre será una combinación más robusta que código y más código (Maria José Caro de INTECO ofreció una ponencia sobre la seguridad de estos dispositivos bastante interesante). Más robusta y más cara claro, de ahí que se haya optado por la vía cómoda.

Lector de DNI Electronico

En un proceso judicial estas dudas que aquí nos surgen pueden ser indicadas a los jueces quienes inevitablemente tendrán que apoyarse en Peritos para que una firma electrónica no sea impugnada. Esto podría ser un grave problema si no fuese por que la Ley recoge que las partes pueden acordar previamente el sistema de firma electrónica a utilizar, si ese acuerdo se alcanza (y firma) no habrá apelación que valga. Ahora bien, ¿cuantos de vosotros habéis revisado los sistemas de factura electrónica de vuestros proveedores de telecomunicaciones, internet, banca, etc.?, ¿está el ciudadano indefenso viéndose obligado a aceptar y confiar en sistemas que desconoce? Parece que en parte, Si.

Una pequeña reflexión de fin de semana.

Salu2!

9 de octubre de 2009

¿Es tu procesador más seguro que el mío?

¿Qué pregunta más absurda, verdad? Hasta hace bien poco lo único que diferenciaba a los grandes fabricantes de procesadores, léase Intel y AMD, era el precio, la carrera por subir los ciclos de reloj de sus procesadores, y los primeros juegos de instrucciones "dedicados" (¿alguien se acuerda del pentium MMX?) a las actividades más frecuentes de sistema operativo y usuarios, donde por cierto AMD siempre iba un poco por detrás, esto también ocurría en la fiabilidad de los procesadores, muy cuestionada al principio de los tiempos:

¿Cuanto dinero perdió AMD con este vídeo?

Pero AMD solucionó esos problemas volviendo a ganarse la confianza de los consumidores, innovó la arquitectura x86 y saltó hacia los 64 bits hace ya varios años, demostrando que ellos también hacían I+D. En ese caso le tocó a Intel hacer ingeniería inversa y clonar su idea, que fue rápidamente adaptada por Microsoft (& cia) sacando sistemas operativos de 64 bits en sus familias XP, Vista y, dentro de unos días, Windows 7. Así la carrera entre estos dos gigantes ha seguido año tras año, dejó de ser una buena idea subir los ciclos a los procesadores sin comprometer la alimentación y la temperatura y surgieron las arquitecturas basadas en los multiprocesadores que ahora todos conocemos, 2, 4, 8, 16 núcleos (AMD se atrevió con 3), etc.

Mientras tanto,,, ¿Qué pasó con la Seguridad, tenía cabida a nivel procesador? Con este brevísimo repaso a la historia de los procesadores y sus dos grandes fabricantes os pongo en antecedentes de la idea que hoy quiero tratar con vosotros: hay procesadores más seguros que otros, y lo que es peor, no lo aprovechamos. Los fabricantes se han hecho eco de la conocida como “trusted computing” y han incluido mejoras de seguridad y protección a nivel hardware.

Intel Trusted Execution Technology

La arquitectura de ejecución de confianza que ha generado Intel para sus últimos procesadores es cuanto menos interesante, implanta aislación entre procesos, almacenamiento cifrado, protección de los dispositivos de entrada/salida (desde el teclado, hasta la tarjeta grafica), entornos protegidos para los procesos más importantes del sistema, etc. Todo ello a nivel hardware, ¿interesante, verdad? Estamos dejando que el procesador asuma ciertas tareas que históricamente han sido responsabilidad de los sistemas operativos, veamos la arquitectura:


Como veis procesador, chipset y BIOS trabajan en colaboración para ofrecer al sistema operativo y software que corre en el PC particiones protegidas (de forma parecida a como los sistemas operativos lo hacen con su estructura en anillo) donde solo se almacenarán las instrucciones del software crítico, como por ejemplo el kernel de nuestro S.O. o los datos críticos como la clave privada de una infraestructura PKI, impidiendo así que el software no autorizado tenga acceso a esas regiones de memoria o que un dispositivo con DMA intente leer, el procesador impedirá todo. Pero esto puede llegar más lejos, ¿se acabaron los keyloggers?, al menos la tecnología ITET permite que no tengamos que preocuparnos por los que son software, cifrando los datos cuando llegan al procesador y haciendo que no puedan ser interpretados, lo mismo para eventos del ratón, información que se manda a una impresora, etc. Eso sí, recordemos que es protección a nivel procesador, basada en tecnología hardware pero que protege de ataques software, no es la panacea claro está, pero es una gran ayuda.

Características adicionales son la protección contra ataques conocidos (¡buffer overflow!) y los dominios de confianza, a los que se asignan particiones para servicios, sistemas operativos virtuales, procesos, etc. estas pueden ser estándar o protegidas, esta imagen lo ilustra muy bien:

Virtualizar a nivel hardware, ¿es virtualizar?

Finalmente un detalle acerca de él cifrado, la tecnología “Trusted Execution” dispone de su propia infraestructura PKI, en ella la clave privada nunca abandona el “Trusted Protection Module”, es la clave publica la que se comparte y utiliza, así las aplicaciones pueden aprovecharse de esta característica para realizar el cifrado. Esto se extiende de sobremanera, un “domain manager” puede generar un par de claves (con un password que el usuario especifica por software, habría que ver el software claro) y desplegar agentes sobre varios sistemas de confianza, estos agentes pueden verificar una serie de condiciones para saber si el equipo en que se ejecutan son de confianza, si no lo es avisará al “domain manager”, esto se puede hacer a nivel de un procesador y sus entornos virtuales o a nivel de red, lo que es una enorme ventaja para los administradores que podrán aprovechar esta capacidad de la CPU para reparar en tiempo real equipos donde el sistema operativo se ha bloqueado, resetear parámetros de la BIOS, administrar recursos (un volcado de emergencia, por ejemplo), con el consiguiente e importante ahorro en microinformática, ¿merece la pena?, apuesto que sí.

ITDirector para clientes, tráfico ICMP cifrado, se entiende ;-)


AMD Trusted Platform Module y AMD Virtualization

¿Se ha quedado AMD atrás en esta tecnología? Quizás, pero a día de hoy su plataforma de confianza ofrece prácticamente las mismas posibilidades que la de Intel, al menos a nivel local del procesador:

- Autenticación.
- Protección de datos / cifrado.
- Identidad y gestión de acceso.
- Gestión de Password.
- Network Access Control.
- Seguridad en capas
- Virtualización de entornos

Todo ello basado en los estándares reconocidos por el Trusted Computing Group, que parece ser son los que el mercado está aceptando de facto tanto para el Trusted Computing como para el Trusted Network Connect. La única pega que ahora mismo veo (y no he podido comprobar) es que las soluciones de administración remota de PC’s y servidores (conocidas como DASH y SMASH) no incluyen el concepto de “dominio de confianza” que permita al igual que en Intel comprobar si, por ejemplo, un sistema ha dejado de ser de confianza, o llegar a administrar a nivel BIOS, o generar un par de claves para ese sistema. Quizás sea por desconocimiento pero yo no lo he encontrado.

¿Es tu procesador más seguro que el mío?

La respuesta es "depende", la tecnología hardware está ahí, y se puede aprovechar muy bien para hacer hardening al nivel más bajo, si conocemos estas posibilidades y las aprovechamos podremos hacer que los sistemas de nuestros puestos de trabajo y servidores sean más seguros, no es la panacea es verdad, pero es una capa adicional que podemos aprovechar y encima, ¡ahorrando dinero! Estas cuestiones se nos plantearán en la próxima renovación del parqué informático y, como no, tenemos que ponerlas sobre la mesa.

Y esto es todo por hoy, la verdad que tenía pensado hablar de Análisis Forense o de ECC, pero al final me pareció este un tema más interesante. Me voy unos días de puente, intentaremos volver la semana que viene.

Portaros bien y cuidado en la carretera.

Salu2