source: libros/maquetacion/capitulo5/capitulo5.tex @ 385f126

revisionfinal
Last change on this file since 385f126 was 385f126, checked in by aaraujo <aaraujo@…>, 10 years ago

Correcciones capítulo 5.

Signed-off-by: Dhionel Díaz <ddiaz@…>
Signed-off-by: aaraujo <aaraujo@moe>

  • Property mode set to 100644
File size: 92.4 KB
Line 
1%\chapter{Certificaci\'on Electr\'onica}
2
3\chapter{Desarrollo de una aplicaci\'on para Gesti\'on de una Autoridad de Certificaci\'on Ra\'iz bajo Est\'andar X.509 utilizando Software Libre}
4
5
6
7\chapterauthors{Víctor Bravo y Antonio Araujo
8\chapteraffil{Fundación Centro Nacional de Desarrollo e Investigación en Tecnologías Libres}
9}
10\label{capitulo5}
11
12% Se crea un ambiente bibunit para el cual se creará la bibliografía
13\begin{bibunit}[unsrt]
14
15% Desarrollo de una aplicación para Gestión de una Autoridad de Certificación Raíz bajo Estándar X.509 utilizando Software Libre
16
17% La gestión de certificados electrónicos de una Infraestructura
18% de Clave Pública (ICP) para establecer identidades digitales se conoce como
19% Certificación Electrónica. Entre los procesos de gestión están la generación,
20% almacenamiento y publicación de certificados, así como la publicación de información
21% y consulta del estado de vigencia y validez de los mismos.
22%
23% En la sección \ref{subsubsection:certificadosElectronicos} se presentó el
24% certificado electrónico como un documento electrónico que permite establecer
25% la identidad digital de personas y/o dispositivos.
26
27
28
29
30%\begin{abstract}
31Una Autoridad de Certificación Raíz (AC Raíz) es un componente que
32tiene el rol de ser el
33punto más alto de confianza en una ICP. Una ICP genera certificados
34electrónicos de acuerdo al
35estándar X.509 proporcionando seguridad lógica, y vinculación
36legal a las transacciones que realiza el titular del certificado en
37la Internet. La confianza reside en la protección, a través de esquemas fuertes de
38seguridad física y lógica, de la clave privada que permite la
39generación de estos certificados.
40
41Este trabajo muestra el proceso de desarrollo de una aplicación para gestionar
42una Autoridad de Certificación Raíz utilizando bibliotecas, herramientas,
43compiladores, sistemas operativos y licencias compatibles con
44los principios del software libre.
45En primer lugar, se determinan los requisitos a ser satisfechos en función de una
46descripción general de las funciones y características de una Autoridad de
47Certificación; posteriormente, se diseñan funcionalidades y se especifican
48requisitos, con el objetivo de producir una visión formal de los procesos a
49automatizar. Se dedica una sección a la implementación que consiste
50en la codificación en un lenguaje de programación
51de los procesos previstos en las etapas anteriores, como
52también, de la incorporación de mecanismos fuertes de
53validación de identidad de usuarios, registro de eventos,
54firma de acciones por parte de los administradores de la aplicación, y
55especificación de conexiones con hardware especializado, como tarjetas
56inteligentes. Finalmente, se describe el despliegue y
57configuración de la aplicación, que involucra la instalación
58en un ambiente seguro (bóveda o centro de datos) y el enlace de la AC Raíz con
59los demás componentes de la infraestructura. 
60
61
62%\end{abstract}
63
64%\begin{abstract}
65%A Certification Authority Root (CA Root) is a component which role is to represent the highest
66% confidence point in a hierarchical structure denominated Public Key Infrastructure (PKI).
67% A PKI provides people, IP addresses and Web domains with digital certificates under X.509
68% standard, offering logic security and legal entailment to transactions performed on the
69% internet by the certificate’s owner. Confidence resides in private key protection through
70% strong physical and logical security schemes, so these schemes allow the certificate emission.
71% This work shows the development process of a CA root management application. For this development
72% it's used libraries, tools, compilers, operating systems and licenses compatible with the
73% principles of free software. In first place, the requirements to satisfy are determined
74% based on a general description of a CA's functions and characteristics; subsequently,
75% functionalities are designed and requirements are specified in order to produce a formal
76% vision of the processes
77%to automate. A section is dedicated to the implementation, this consists on codification
78% in a programming language of the processes forseen in the previous stages, like also,
79% of the incorporation of strong mechanisms of validation of identity of users, registry
80% of events, actions signature by application's administrators, and connections
81% specification with specialized hardware, like smart cards. Finally, application display
82% and configuration are shown, it involves its installation in a safe environment
83% (vault or data center) and CA Root connection with other components of the infrastructure.
84%\end{abstract}
85
86%\begin{keywords} Infraestructura de Clave Pública, Estándar X.509, Certificado Digital, Firma Electrónica, Autoridad de Certificación Raíz.
87%\end{keywords}
88
89
90\section{Introducción}
91
92\label{sec:intro}La disponibilidad de Internet como medio digital %seguro permite
93permite que cualquier persona, empresa, institución,
94o administración realice transacciones
95gubernamentales, comerciales o personales en la mayoría de los casos, tal cual,
96como se realizarían en una oficina o espacio físico de forma presencial. Dado este
97hecho, al utilizar Internet para establecer relaciones humanas, se está de acuerdo
98que es necesario trasladar el concepto de ``identidad''
99al medio digital\cite{NIC:03}.
100La criptografía provee algoritmos y mecanismos para construir este concepto
101en la red, ya que es posible utilizar herramientas que aporten elementos para
102definir la identidad de un usuario, entidad o institución, de la misma forma de
103la que se está familiarizado en el mundo real.
104
105En muchas ocasiones para realizar actividades cotidianas personales
106o de trabajo, se debe establecer contacto con un individuo u organización
107que no se conoce o del cuál no se tiene ninguna referencia. Mediante un
108contacto personal o directo, los sentidos humanos permiten percibir
109un gran número de detalles que le caracterizan, y cuya combinación
110muy probablemente le hace irrepetible. Esta combinación  permite
111identificar al individuo  de forma única y certera. Dicho esto,
112la identidad se define como el reconocimiento que se hace de las
113credenciales físicas o informativas, que ese individuo ofrece para
114que se le acepte como poseedor de una determinada individualidad
115\cite{STAL:03}. Las credenciales físicas pueden ser documentos como
116la Cédula de Identidad, el Pasaporte, la Licencia de Conducir,
117entre otros. Todos los documentos citados  generalmente incluyen una
118fotografía que permite la comparación con la apariencia del interlocutor;
119también usualmente se agrega otra característica informativa que puede
120ser un nombre, una  firma manuscrita y posiblemente un número de referencia.
121
122Cuando se traslada el concepto de identidad al medio informático, se habla de
123identidad digital, y se hace necesario contar con credenciales traducibles a
124información binaria. Por otro lado, la criptografía, por sí misma
125no proporciona este concepto: es el uso de una infraestructura
126computacional que utiliza algoritmos criptográficos para representar
127credenciales digitales, como por ejemplo el certificado
128electrónico, y que son otorgados por terceros de confianza,
129denominados Autoridades de Certificación (AC), y que se describen
130como Raíz cuando son el punto inicial de una jerarquía, las que
131proveen a usuarios y organizaciones de identidad digital, y que
132cuenta con las mismas connotaciones que tiene este concepto en el ámbito personal
133y jurídico.
134\\
135Uno de los problemas que aparece en este punto, es la disponibilidad de la
136infraestructura mencionada anteriormente, la cuál debe contar como un elemento
137obligatorio una aplicación que gestione, bajo un estándar aceptado, como lo es el
138estándar X.509\cite{NASH:02}, los certificados electrónicos que emite la AC.
139La discusión de importantes aspectos que surgen en las diferentes etapas del
140proceso de desarrollo de la aplicación de gestión, y que están vinculados con
141los principios del software libre y los requisitos muy particulares del ambiente
142de despliegue, subrayan los objetivos propuestos de este trabajo.
143
144\section{Marco Teórico}
145
146Con el objetivo de contextualizar los términos   ``identidad'', ``confianza'', o
147``transacción segura'' y``AC Raíz'' en el medio digital, y específicamente en
148relación con la Internet; es imprescindible en una primera aproximación, 
149discutir sobre
150determinados temas y conceptos vinculados con la seguridad informática.
151En los párrafos
152siguientes se abordan brevemente algunos de los puntos más importantes
153relacionados con el tema.
154 
155\subsection{Seguridad Informática}
156
157Se ha llegado a un consenso sobre lo que significa seguridad
158informática \cite{STAL:03}.
159En general, se dice que un activo de información, (información
160digital con un valor
161real para una empresa o persona) está asegurado si cumple con
162niveles  aceptables
163relativos a su valor potencial en los siguientes aspectos:
164\\ \\
165\textbf{Disponibilidad:} es el grado en que un dato está en el lugar, momento y
166forma en que es requerido por uno o un conjunto de usuarios autorizados. Como
167premisa, un sistema seguro debe mantener la información disponible para los
168usuarios autorizados. Disponibilidad también significa que el sistema, debe
169mantenerse funcionando eficientemente y es capaz de recuperarse rápidamente
170en caso de fallo.
171\\ \\
172\textbf{Confidencialidad:} es el aspecto de la seguridad que permite mantener en
173secreto la información y sólo los usuarios autorizados pueden manipularla.
174Igual que para la disponibilidad, los usuarios pueden ser personas, procesos o
175programas. Para evitar que ninguna persona no autorizada pueda tener acceso
176a la información transferida y que recorre la red se utilizan técnicas de
177cifrado o codificación de
178datos. Hay que mantener una cierta coherencia para determinar cuál es el grado de
179confidencialidad de la información que se está manejando, para así evitar
180un esfuerzo
181suplementario a la hora de decodificar una información previamente codificada.
182\\ \\
183\textbf{Integridad:} corresponde a garantizar que la información transmitida entre dos
184entidades autorizadas no sea modificada por un tercero no autorizado.
185Un mecanismo
186para lograrlo es la utilización de firmas electrónicas.
187Mediante una firma electrónica se codifican los mensajes
188a transferir, de forma que una
189función, denominada hash \cite{ACE:03}, calcula un resumen de
190dicho mensaje y se
191le añade. La validación de la integridad del mensaje se realiza
192aplicándole al original la
193misma función y comparando el resultado con el resumen que se
194añadió al final cuando
195se calculó por primera vez antes de enviarlo.
196Mantener la integridad es importante para verificar que en el tiempo de viaje por
197la red de la información entre el sitio emisor y receptor ningún agente externo o
198extra\~no ha modificado el mensaje.
199
200\subsection{Criptografía}
201La criptografía  es la ciencia o arte de ocultar información
202utilizando técnicas matemáticas
203que hagan posible el intercambio de mensajes de manera que sólo puedan ser leídos
204por las personas o usuarios autorizados \cite{STAL:03}. La criptografía ha tomado
205gran importancia en los últimos años, ya que es posible transformar las
206``técnicas matemáticas'' en algoritmos que pueden ser
207comprendidos por una computadora. 
208Se puede clasificar la criptografía en dos tipos, según el tipo
209de clave que se utilice:
210
211\textbf{Criptografía Simétrica:} los sistemas de criptografía
212simétrica son aquellos
213que utilizan una única clave para cifrar y descifrar un texto
214claro. Este tipo de
215sistema conlleva una desventaja, que consiste en el conocimiento de las partes
216(emisor y receptor) de la  clave única que les permite intercambiar información
217por un canal seguro. Como respuesta a ello, se hace necesario
218formalizar un procedimiento
219que muestre a las partes autorizadas la información sobre la clave, sin que sea
220develada a un tercero no autorizado.
221
222\textbf{Criptografía Asimétrica:} también se conoce como  Sistema de Cifrado
223de Clave Pública \cite{STAL:03}. Usa dos claves diferentes, una de ellas es la
224Clave Pública que puede ser enviada a cualquier persona y otra que se
225denomina Clave Privada, que es secreta y no debe ser revelada. A diferencia del
226sistema de cifrado simétrico donde las partes deben concertar un procedimiento
227para conocer la clave única, en este tipo de sistema el remitente usa la clave
228pública del destinatario para cifrar el documento. Una vez que el documento o
229mensaje ha sido cifrado, solamente con la clave privada del destinatario el
230mensaje puede ser descifrado.
231
232\subsection{Certificados electrónicos}
233
234Un certificado electrónico es un documento de
235acreditación que permite a las partes
236tener confianza en las transacciones que realicen en internet. Por tanto,
237garantiza la identidad de su poseedor mediante un sistema de claves administrado
238por una tercera parte de confianza. Para validar un certificado basta con conocer
239la clave pública de la tercera parte conocida
240como la Autoridad de Certificación (AC).
241Para cuidarnos de que piratas informáticos cambien su clave pública por la de la
242autoridad de confianza, la AC debe crear un certificado
243con su propia información de
244identidad y a la vez su clave pública y firmar el certificado,
245este certificado se le conoce como certificado autofirmado.
246Dado que los certificados son información pública y lo que se desea es que todos
247tengan acceso a ellos, pueden hacerse copias del
248certificado %de acuerdo sea necesario.
249para su distribución.
250Los certificados electrónicos permiten varias cosas, entre ellas
251se pueden citar que los
252usuarios pueden añadir firmas electrónicas a los formularios en línea; que los
253destinatarios pueden comprobar la autenticidad del
254correo electrónico confidencial;
255que los compradores pueden estar seguros de que un sitio web
256es legítimo; y por último,
257controla el acceso a bancos y comercios en línea, así como
258las intranets y extranets.
259
260\subsection{Estándar X.509}
261
262
263X.509 y X.500 fueron originalmente dise\~nados a
264mediados de los a\~nos 80, antes
265del enorme crecimiento de usuarios en la Internet.
266Es por esto que se
267dise\~naron para operar en un ambiente donde sólo los
268computadores se interconectaban
269intermitentemente entre ellos. En las versiones  1 y 2 de X.509 se utiliza una
270lista estandarizada denominada lista de revocación de certificados
271(CRL por sus siglas en inglés)
272que contiene la información referente a certificados que han sido revocados.
273
274La versión 3 introduce cambios significativos en el estándar. El cambio fundamental
275es el hacer el formato de los certificados y las CRL extensible. Ahora los que
276implementen X.509 pueden definir el contenido de los certificados como crean
277conveniente. Además se han definido extensiones estándares para proveer una
278funcionalidad mejorada.
279
280
281Con la utilización de la tecnología de certificados electrónicos se provee a los
282clientes (personas o programas) de un nivel más alto en los procesos de
283autenticación y autorización, ya que se le otorga al cliente
284algo que puede poseer,
285incluso incluir dentro de un elemento físico, como una tarjeta inteligente.
286Los certificados en el formato X.509 v3 contienen datos del sujeto,
287como su nombre, dirección, correo electrónico, etc.
288La figura \ref{fig:estandarx509}
289muestra un bosquejo de la especificación del estándar X.509 versión 3.
290
291En la versión 3 de X.509, no hace falta aplicar restricciones sobre la estructura
292del certificado, gracias a la definición de las extensiones de certificados.
293Se permite que una organización pueda definir sus propias extensiones para
294contener información específica dentro de su entorno de operación.
295%Este tipo de certificados es el que usa el protocolo de comercio electrónico
296%SET (del inglés Secure Electronic Transaction, Transacción Electrónica Segura) \cite{IBM:98}.
297
298\begin{figure}[htb]
299\centering
300%\includegraphics[width=8cm]{imagenes/estandarX509.png}
301\includegraphics[scale=1]{imagenes/estandarX509.JPEG}
302\caption{Especificación del estandar X.509}
303\label{fig:estandarx509}
304\end{figure}
305
306
307%Los certificados electrónicos tienen multitud de usos, entre los tipos de certificados
308%más utilizados están:
309
310Entre los tipos de certificados más comunes están:
311
312
313\begin{itemize}
314 \item \textbf{Certificado de Servidor de Conexión Segura
315(SSL por sus siglas en inglés):} 
316 Permite incorporar el protocolo SSL a un servidor web con el objetivo que
317 toda la comunicación entre el cliente y el servidor permanezca segura,
318 cifrando la información que envía cada parte. El certificado
319 del servidor posibilita
320 la autenticación fuerte, es decir, que el servidor puede exigir certificados
321 personales de navegación a los usuarios para acceder a determinadas carpetas,
322 lo que repercute en la seguridad y en la comodidad por la ausencia de cuentas
323 y contrase\~nas para la identificación de los usuarios.
324
325 \item \textbf{Certificados personales (Correo electrónico y
326navegación):} Un certificado electrónico
327 personal es la herramienta necesaria para navegar, comprar y
328enviar o recibir correo  a través de la Internet, de una manera
329segura. Con el uso de este certificado se pueden
330 firmar o cifrar los mensajes  de correo para tener la seguridad
331que el receptor será
332 el único lector de nuestro mensaje. Se puede aumentar la
333seguridad y confianza entre el
334 cliente y el servidor web, al autenticarse también al usuario,
335esto también va a permitir
336 a las empresas la posibilidad de personalizar los contenidos
337a un usuario concreto,
338 con la certeza que otros usuarios no podrán ver dicho contenido,
339tales como información
340 confidencial, ofertas especiales, entre otros.
341
342 \item \textbf{Certificado para firma de código:} El certificado para la firma de
343 código permite a un administrador, desarrollador o empresa de software firmar su
344 software y macros, y distribuirlo de una forma segura.
345 Esta solución de Seguridad es el
346 requisito mínimo que necesitan los clientes o lista de correo, para confiar y
347 tener la seguridad de que el fichero que reciben o se descargan,
348 proviene exclusivamente
349 de una empresa determinada. Con ello se evitan los problemas causados por la
350 suplantación de identidad y la distribución de objetos da\~ninos o perjudiciales
351 bajo esta supuesta identidad. Cualquier modificación (por ejemplo: inclusión de un
352 troyano o infección de un virus) sobre el software original
353 lo invalidará, con lo que el
354 usuario tendrá la confirmación para rechazarlo al comprobar
355que la firma electrónica
356 no corresponde con la del software modificado.   
357\end{itemize}
358
359
360\subsection{Lenguaje Unificado de Modelado}
361
362%UML ( del inglés Unified Modeling Language,  Lenguaje de Modelado Unificado) es un lenguaje
363El Lenguaje de Modelado Unificado (UML por sus siglas en inglés)
364permite diseñar sistemas a través de  modelos, que se componen de un conjunto
365de símbolos y diagramas en donde se plasman las ideas de funcionalidad.
366El UML fue creado por Grady Booch, James Rumbaugh e Ivar Jacobson en el año
3671997\cite{SCHM:03},\cite{BOOC:99} y \cite{MULL:97}. Cada diagrama
368tiene fines distintos
369dentro del proceso de desarrollo, su finalidad es presentar diversas perspectivas
370de un sistema. La clave está en organizar el proceso
371de diseño de tal forma que los analistas,
372clientes, desarrolladores y otras personas involucradas
373en el desarrollo del modelo
374lo comprendan y convengan con él. Los diagramas que componen el lenguaje son:
375
376\begin{itemize}
377\item Diagramas de clases
378\item Diagramas de casos de uso
379\item Diagramas de estados
380\item Diagramas de secuencias
381\item Diagramas de colaboraciones
382\item Diagramas de distribución
383\item Diagramas de actividades
384\item Diagramas de componentes
385\item Diagrama de despliegue
386\end{itemize}
387
388En este trabajo se utilizaron esencialmente los
389diagramas de clases, los diagramas de
390casos de uso y los diagramas de actividades, que se
391describen brevemente a continuación:
392
393\textbf{Diagramas de clases:} son representaciones gráficas
394de las categorías en que
395pueden clasificarse los objetos del mundo real. En general,
396se hace una descripción
397de las categorías que se utilizan en la aplicación a desarrollar. Las clases se
398dise\~nan en función de sus atributos y relaciones con otras clases.
399
400\textbf{Diagramas de casos de uso:} son descripciones de las acciones que debe
401realizar el usuario en el sistema \cite{SCHM:03}.
402Por ejemplo: Usuario que tiene la
403necesidad de expedir un certificado electrónico a una AC de confianza.
404
405
406\textbf{Diagramas de actividades:}  muestran el flujo de actividades que ocurren
407dentro de un caso de uso o dentro de un comportamiento de un objeto\cite{SCHM:03}.
408Por ejemplo, las actividades que se realizan
409para expedir un certificado electrónico.
410
411\subsection{Software Libre}
412
413\label{sec:softlibre}El software libre \cite{FSF:07} es un asunto de libertad,
414no de precio. Para que un programa, aplicación o conjunto concreto se
415considere ``software libre'' debe cumplir con las siguientes libertades:
4161) Libertad de ejecutar el programa en cualquier sitio, cualquier propósito,
417por siempre; 2) Libertad de estudiarlo y adaptarlo a nuestras necesidades;
4183) Libertad de redistribuirlo a cualquiera, logrando ayudar a un amigo o vecino;
419y por último 4) la Libertad de mejorar el programa y publicar las mejoras.
420
421Las libertades antes expuestas, proveen  muchos beneficios
422a los usuarios finales.
423En particular, en el área de seguridad informática. Se pueden
424nombrar  entre los
425beneficios más importantes: la no dependencia  de un único
426fabricante, y la posibilidad
427de realizar auditorías y pruebas exhaustivas por parte de terceros, que pueden
428ser personas, empresas o instituciones diferentes responsables del proyecto
429de software. Los procesos de adaptación, mantenimiento, integración y auditorías
430son más transparentes y colaborativos.
431
432
433\section{Infraestructura de Clave Pública}
434
435Uno de los problemas del despliegue de la tecnologías basada en certificados y
436firmas electrónicas, es contar con un elemento que proporcione una relación
437fuerte de confianza entre dos o más sujetos que desean realizar una operación o
438transacción utilizando como medio la Internet. Es por ello,  que se recurre a
439establecer un tercero de confianza, que se define, como un actor encargado de
440brindar confianza basada en la disponibilidad de una infraestructura robusta que
441incluya el uso de tecnologías basadas en algoritmos criptográficos
442estandarizados,
443y la aplicación estricta de políticas para los procesos de registro, publicación,
444firma, renovación y revocación de certificados.
445El tercero de confianza se denomina Infraestructura
446de Clave Pública (ICP) \cite{NASH:02},
447y consiste en la combinación de hardware y software, políticas y procedimientos
448que permiten asegurar la identidad de los participantes en un intercambio de datos
449usando criptografía de clave pública. Una ICP debe proporcionar
450los tres conceptos de
451seguridad mencionados anteriormente.
452
453\subsection{Componentes de la Infraestructura de Clave Pública (ICP)}
454Los componentes habituales que conforman la infraestructura  son los siguientes
455(Ver Fig. \ref{fig:arquitecturapsc}):
456\begin{itemize}
457\item Autoridad de Registro (AR): es el nodo o conjunto de nodos responsables
458del registro y la autenticación inicial de los usuarios a quiénes
459se les expide un certificado, después de  aprobada una solicitud de registro.
460\item  Autoridad de Certificación (AC): es el nodo central de la infraestructura,
461se encarga de los procedimientos  de firma, renovación  y revocación de
462certificados electrónicos. El procedimiento de firma  de certificados utiliza
463la clave privada de la AC.
464\item Interfaz con los clientes (PUB): es el nodo  que brinda toda la información
465a las entidades finales (usuarios) sobre el estado de su certificado, además de
466ofrecer una información al público en general sobre los aspectos y servicios
467relevantes de la ICP.
468\end{itemize}
469
470
471Los nodos de una ICP pueden ordenarse según diversos modelos.  El más utilizado es
472el modelo jerárquico, que presenta una raíz y nodos hijos que distribuyen los
473certificados a los clientes o entidades finales. En la figura \ref{fig:jerarquia} 
474se muestra un ejemplo de modelo de jerarquía de una ICP de cuatro niveles,
475que se encuentra en el tercer nivel del modelo, que certifica a los usuarios.
476
477\begin{figure}[htb]
478\centering
479%\includegraphics[width=8cm]{imagenes/jerarquia.png}
480\includegraphics[scale=1]{imagenes/jerarquia.JPEG}
481\caption{Modelo jerárquico de una ICP}
482\label{fig:jerarquia}
483\end{figure}
484
485Este modelo de establecimiento de relaciones de confianza, es necesario entre
486múltiples autoridades de certificación para garantizar que los usuarios
487(entidades finales) no tengan que depender y confiar
488en una sola AC, algo que haría
489imposible el manejo de estabilidad, administración y protección. El objetivo
490es que las entidades finales que utilizan identidades creadas por una AC puedan
491confiar en ellas, aunque dichas partes tengan una autoridad expedidora
492diferente.
493
494
495
496\section{Desarrollo de la aplicación}
497
498En los párrafos siguientes se discuten los aspectos, procesos y técnicas
499principales, que se siguen a lo largo del desarrollo de la aplicación (software)
500de gestión del componente Autoridad de Certificación Raíz.
501
502
503\subsection{Conceptualización}
504
505
506Uno de los objetivos de esta etapa es determinar el rol  del componente AC Raíz
507en la ICP, con la finalidad de obtener los requisitos, procesos y funciones que
508deben ser implementados por el software. Este rol tiene que ver con la definición
509de la AC Raíz como elemento central y de máximo resguardo de la infraestructura,
510ya que este nodo inicial o ``Raíz'' contiene la clave privada que valida todos los
511certificados de los otros nodos de la jerarquía.
512
513Se considera como punto importante en esta etapa, distinguir las diferencias entre
514una AC Raíz y una AC de un Proveedor de
515Servicios de Certificación (PSC). La diferencia
516principal entre estos dos tipos de AC, es la cantidad
517de certificados que deben gestionar
518(firmar, renovar, revocar, etc.) , en un determinado
519periodo cada uno de ellos.
520Esto es, una
521AC Raíz solo gestiona un número mínimo de certificados,
522los cuáles sirven para dar inicio a
523la jerarquía (certificados otorgados a los PSC), por el
524contrario, una AC de un PSC debe
525gestionar un número mucho mayor de certificados, ya que
526la función de este  nodo es
527entregar certificados  periódicamente a usuarios,
528también llamados entidades finales.
529
530La diferencia de escala de los dos tipos de AC conlleva a que la AC Raíz tenga
531características particulares, que tienen que ver con los niveles
532y elementos de seguridad
533tanto físicos como lógicos que deben considerarse en la gestión del componente.
534Por ejemplo, la desconexión de red del equipo  donde se ejecuta la aplicación de
535gestión hace que la recepción y entrega de certificados se realice a través de
536unidades de memoria externas y portátiles, debidamente validadas, con las cuáles
537el software debe mantener una comunicación segura.
538
539
540La conexión de la aplicación con hardware especializado,
541como el Módulo de Seguridad en Hardware
542(HSM por sus siglas en inglés) que permite generar y almacenar
543claves o las tarjetas inteligentes,
544es un factor que debe considerarse en el momento de
545enumerar las funciones iniciales del software de gestión.   
546
547La selección del sistema operativo Linux \cite{SARW:03} para
548desplegar la aplicación,
549ya que cumple con los principios del software libre, y cuenta
550con gran número de
551herramientas en el área de programación \cite{KURT:01}, es
552un requisito no funcional que se establece en esta etapa.
553
554Considerando los aspectos nombrados anteriormente,
555 en este punto se elabora una lista
556inicial de requisitos, con la cual debe cumplir
557la aplicación. Como técnicas utilizadas
558en esta etapa están la realización de entrevistas
559a clientes, a posibles administradores
560y operadores; así como la elaboración de tablas
561comparativas entre diferentes aplicaciones que
562existen en las bibliotecas o portales de software libre, con
563la finalidad de evaluar las herramientas a utilizar en la
564elaboración de la aplicación.
565
566
567\subsection{Dise\~no}
568
569La etapa de dise\~no consiste en elaborar diagramas
570formales que permitan en la etapa
571de implementación la representación de requisitos y
572procesos de la gestión del componente AC Raíz
573en un lenguaje de programación.  Para el dise\~no de
574requisitos se utilizan los diagramas
575de casos de uso del lenguaje UML, que muestran una
576primera aproximación de las operaciones
577que se deben realizar en relación con las entradas dadas
578por los usuarios. Los actores
579(usuarios) del caso de uso principal que se muestra en la
580figura \ref{fig:casodeusoprincipal} 
581son: el Administrador del componente AC, el Administrador
582del Componente AR, el Administrador
583del componente PUB, y el actor PSC, quiénes son los que
584interactúan con la aplicación.
585
586\begin{figure}[htb]
587\centering
588%\includegraphics[width=8cm]{imagenes/casodeusogeneral.png}
589\includegraphics[scale=1]{imagenes/casodeUsoGeneral.JPEG}
590\caption{Caso de uso principal}
591\label{fig:casodeusoprincipal}
592\end{figure}
593
594Para el resto de la especificación de requisitos se elaboran casos de uso que modelan
595las funcionalidades con que debe contar la aplicación. Para cada actor, se especifican
596el correspondiente diagrama de caso de uso. En la figura \ref{fig:casodeusoac} se
597muestra el caso de uso para el actor del componente AC. Las acciones que realiza
598este actor son emisión, renovación y revocación de certificados, que conlleva procesos
599de firma con la clave privada, modificación de los periodos de vigencia del certificado
600y elaboración de listas de certificados revocados respectivamente para cada caso
601de uso.
602
603\begin{figure}[htb]
604\centering
605%\includegraphics[width=8cm]{imagenes/casodeusoac.png}
606\includegraphics[scale=1]{imagenes/casodeUsoAc.JPEG}
607\caption{Caso de uso para el actor Administrador Autoridad de Certificación}
608\label{fig:casodeusoac}
609\end{figure}
610
611
612También en esta etapa se construye  el modelo de datos de la aplicación.
613La figura \ref{fig:diagramadeclases} muestra de forma parcial, ya que no se incluyen
614los atributos,  el diagrama de clases que explica el modelo de datos. Se consideran
615como objetos persistentes del sistema a elementos como usuarios, clientes,
616certificados, autoridades o proveedores de certificación, solicitudes de autoridad de
617certificación, solicitudes de entidad finales, y sus respectivas relaciones.
618
619\begin{figure}[htb]
620\centering
621%\includegraphics[width=8cm]{imagenes/diagramadeclases.png}
622\includegraphics[scale=1]{imagenes/diagramadeClases.JPEG}
623\caption{Diagrama de clases}
624\label{fig:diagramadeclases}
625\end{figure}
626
627
628Para modelar la secuencia de acciones que se realizan para cada caso de uso se
629utilizan los diagramas de actividades. La figura \ref{fig:diagramaactividades} 
630muestra el diagrama de actividades generales para el caso de uso  ``Emisión de
631certificados''' del actor Administrador del componente AC. Para este conjunto de
632actividades participan cuatro (4) actores: Administrador del PSC, quien entrega los
633recaudos necesarios para que se le firme su solicitud, el Administrador de la AR,
634quién es el encargado de chequear los recaudos entregados por el PSC, el Administrador
635de la AC Raíz  y el Administrador PUB, este último encargado de publicar en
636los
637diferentes repositorios los certificados (claves públicas) para que sean visibles por
638el mayor número de usuarios interesados. 
639
640
641\begin{figure}[htb]
642\centering
643%\includegraphics[width=8cm]{imagenes/diagramaactividades.png}
644\includegraphics[scale=1]{imagenes/diagramadeActividades.JPEG}
645\caption{Diagrama de actividades para el caso de uso ``Emisión de Cerificados``}
646\label{fig:diagramaactividades}
647\end{figure}
648 
649
650\subsection{Implementación}
651
652
653En esta etapa se utilizan como insumo los diagramas de casos de uso, diagrama
654de clases y actividades, generados en la etapa de  diseño. Se traduce  el
655diagrama de clases al que se hace referencia en la figura \ref{fig:diagramaactividades} 
656en un modelo de datos relacional, y se genera un guión SQL que genera el mapa de
657tablas relacional, donde las tablas representan relaciones tales como usuarios,
658clientes, certificados, y las demás entidades que conforman el modelo de datos.
659
660Se utilizan y validan los diagramas de casos de uso mediante la elaboración de
661interfaces gráficas de usuarios y funcionalidades de interacción con el usuario.
662Los diagramas de actividades ayudan en el planteamiento de  algoritmos que proveen
663funcionalidades o características con las cuáles debe contar la aplicación y
664que deben estar en coordinación con los respuestas y valores esperados.
665
666
667Haciendo uso de las ventajas que trae el uso de software libre, descritos en \ref{sec:softlibre},
668se implementa la aplicación utilizando la mayor cantidad de líneas de códigos
669disponibles en los repositorios y proyectos de la comunidad, de tal manera que
670satisfagan los requisitos y funcionalidades planteadas en la etapa de diseño.
671En este sentido, se utiliza el código fuente del  proyecto XCA \cite{XCA:03},
672desarrollado por Christian Hohnst\"{a}dt, que tiene como objetivo proveer  una
673aplicación escrita  en el lenguaje de programación C++\cite{STRO:02} y la
674biblioteca Trolltech Qt\cite{BLAN:06}, que cumpla con el estándar X.509. La aplicación
675satisface los requisitos básicos para la gestión del componente de gestión de AC Raíz,
676esto es, los diagramas UML de la etapa de diseño calzan con un gran conjunto de requisitos
677satisfechos en el proyecto XCA, esto ocurre debido a que este trabajo comparte
678objetivos con dicho proyecto; por ejemplo, para el caso de uso de la figura \ref{fig:casodeusoac},
679donde el actor debe ejecutar tres acciones: emitir, renovar y revocar certificados,
680la aplicación XCA incorpora estas tres actividades, pero se hace necesario adaptar
681la interfaz de usuario y agregar características en función de los requisitos capturados.
682
683Es importante recalcar, que XCA no sastiface todos los requisitos documentados en la
684etapa de diseño. En respuesta a este hecho, se realiza un proceso de incorporación de
685funcionalidades. En este sentido, se agregan características a la aplicación acorde
686con la especificaciones de diseño, entre las cuáles se enumeran:
687\begin{itemize}
688 \item La incorporación de un sub-sistema de seguridad para acceso a los activos de
689 información que gestiona la aplicación,  que incluya aspectos de autenticación y
690 autorización de usuarios,  como lo es  la validación de credenciales a través del
691 uso de tarjetas inteligentes, el registro y firma electrónica de las acciones realizadas
692 por los usuarios dentro de la aplicación.
693En la figura \ref{fig:registro} se muestra la característica de registro de acciones.
694La ventana a la derecha muestra los detalles de la acción seleccionada en la lista,
695se incluyen datos importantes como nombre de la cuenta de usuario, fecha, hora, y
696otros datos particulares relacionadas con la acción realizada por el correspondiente
697usuario.
698
699\begin{figure}[htb]
700\centering
701%\includegraphics[width=8cm]{imagenes/registro.png}
702\includegraphics[scale=1]{imagenes/registro.JPEG}
703\caption{Sistema de registro de acciones}
704\label{fig:registro}
705\end{figure}
706
707\item  Estandarización del sistema de gestión de documentos  como solicitudes,
708plantillas de certificados y certificados.
709
710\item Conexión a través de una interfaz propia con el hardware donde se resguardan
711las claves privadas (HSM).
712
713\end{itemize}
714
715También en esta etapa se seleccionan e integran las tecnologías a utilizar para
716la codificación y creación de la aplicación de gestión del componente AC Raíz. 
717Los tipos de tecnologías que deben seleccionarse son: bibliotecas para construir
718la interfaz hombre-máquina (HMI por sus siglas en inglés), motor criptográfico,  conexiones con hardware,
719interfaces con repositorio de datos y algoritmos de cálculo
720criptográfico más utilizados.
721
722
723Como criptosistema se utiliza OpenSSL version 0.9.8 \cite{VIEG:2002}, que provee
724un conjunto de funciones criptográficas apegadas al estándar X.509. Para la
725construcción de interfaces hombre-máquina y uso de algoritmos generales se
726selecciona la biblioteca Qt. Como interfaz para el uso de tarjetas
727inteligentes se utilizo el estándar PKCS\#11, también conocido como Cryptoki, que
728especifica una forma para interactuar con este hardware criptográfico\cite{NIC:03}.
729
730
731
732\subsection{Pruebas}
733
734Esta etapa tiene dos objetivos.  El  primero consiste en asegurar que la
735aplicación funcione correctamente, es decir, que se generen la menor cantidad
736de salidas inesperadas o fallas a entradas dadas. En relación al logro de  este
737objetivo  se utilizan un conjunto de técnicas aplicadas  a lo largo del proceso
738de desarrollo, entre las cuáles se pueden citar la revisión en parejas \cite{PRESS:05},
739que consiste en la programación se realice en equipo de dos programadores por
740computador, uno de ellos se encarga de escribir los algoritmos en un lenguaje
741de programación, y el segundo de ellos de revisarlo inmediatamente; después de
742periodo de unas horas establecido previamente, se intercambian
743los roles. Otra de las técnicas utilizadas que es importante nombrar son las
744pruebas unitarias \cite{PRESS:05}, las cuáles consisten en aplicar un número
745de casos de pruebas a métodos o módulos pequeños de la aplicación (unidades),
746de tal manera que se asegura que funcionan correctamente de forma independiente.
747Seguidamente, se realizan pruebas de integración, que consisten en probar módulos
748más complejos formados por las unidades revisadas en las pruebas unitarias.
749Las pruebas unitarias y de integración  presentan las ventajas que son
750automatizables,
751y por lo tanto, se cuenta con herramientas de software para llevarlas a cabo.
752
753
754El segundo objetivo, es que se satisfagan los requisitos  plasmados en la etapa
755de diseño, y que se extraen  de los diagramas UML , es decir, la aplicación
756debe cumplir con las características necesarias para resolver el problema de
757gestión de una AC Raíz. En este sentido, se toma una estrategia basada en
758prototipos con liberaciones periódicas, que permite a los usuarios y desarrolladores
759de la comunidad  chequear el progreso en el proyecto. Los prototipos son
760chequeados por los usuarios y  la modificación de requisitos y notificación de
761errores son notificados en un sistema web de chequeo y seguimiento \cite{TRAC:07}.
762
763También se habilita un sistema de control de versiones de licencia libre
764llamado subversion \cite{PILA:04}, que permite a los programadores involucrados
765en el proyecto obtener en todo momento y de forma local o remota la última
766versión de los programas fuentes.
767
768Debido a que la aplicación de gestión de AC Raíz debe ser parte de una
769infraestructura, es necesario realizar pruebas en condiciones similares a la
770configuración final de ésta; por ello que se simula la configuración de
771producción que
772conlleva pruebas con el sistema operativo y el lugar donde se instala la
773aplicación,
774conexión con tarjetas inteligentes y el módulo de seguridad en hardware,
775controles de acceso físico  y lógico, y desconexión de red, ya que la autoridad
776debe operar fuera de línea.
777 
778
779\subsection{Despliegue y configuración}
780El despliegue consiste en la instalación en condiciones reales de la
781aplicación de gestión de AC Raíz dentro de la infraestructura. La figura \ref{fig:arquitecturapsc} 
782muestra una propuesta para el despliegue de la infraestructura. La aplicación se
783instala en un computador desconectado de red  que debe estar ubicado dentro de un
784lugar físico seguro,  lo que significa que el acceso a personas deber estar
785restringido por llaves y controles biométricos, y el flujo de información digital
786hacia adentro y afuera de la bóveda debe ser realizado a través de dispositivos
787de memoria secundaria con seguridad incorporada, tal como una memoria usb (pendrive)
788con bloqueo por contraseña, como se muestra en la figura \ref{fig:arquitecturapsc}.
789También es necesario la habilitación de servidores para la validación de los períodos de vigencia de
790los certificados a través del protocolo de estado de certificado en línea (OCSP por sus siglas en inglés),
791y para la generación de solicitudes de firma de certificados,
792donde las entidades finales o usuarios consignan los recaudos.
793
794\begin{figure}[htb]
795\centering
796%\includegraphics[width=8cm]{imagenes/arquitecturapsc.png}
797\includegraphics[scale=1]{imagenes/arquitectura.JPEG}
798\caption{Configuración de los componentes del nodo raíz de una ICP}
799\label{fig:arquitecturapsc}
800\end{figure}
801
802Por otro lado, la configuración  conlleva el establecimiento de parámetros para
803el funcionamiento de la aplicación, tales como métodos de control y restricción
804de
805acceso,  ubicación de archivos y directorios, rutas para importación y
806exportación
807de datos, perfiles de usuario, generación y nombres de claves, inicialización
808de tarjetas inteligentes, inicialización  de HSM, y copias de seguridad.
809
810\section{Conclusiones}
811
812La puesta en marcha de una AC Raíz supone obligatoriamente contar con una
813aplicación  que gestione este componente de la infraestructura. En este sentido,
814este trabajo mostró el proceso de desarrollo de una aplicación que respondiera
815a los requisitos particulares de gestión, determinados por el rol de confianza
816raíz que debe representar la Autoridad de Certificación. En función de ello, la
817aplicación tiene un alto grado de especialización, ya que cuenta con un 
818mercado relativo de pocos usuarios, si se compara con el mercado de los sistemas
819de información o aplicaciones de ofimática, y su operación se realiza en
820condiciones estándares y específicas. A pesar de este hecho, para la
821construcción de la aplicación se integraron varios proyectos disponibles en los
822repositorios de software libre, lo que permitió disponer de un criptosistema
823estándar y suficientemente completo para cumplir con los requisitos descritos
824en la etapa de diseño. La criptografía se utiliza como herramienta para
825otorgar las tres propiedades (confidencialidad, integridad y disponibilidad)
826de la seguridad informática a los datos que gestiona la aplicación, y en virtud
827de ello el hardware criptográfico utilizado como las tarjetas inteligentes y
828el módulo de seguridad en hardware configuran un ``mundo seguro'' que cumple
829con los estándares aceptados a nivel mundial. 
830
831En la etapa de diseño, los diagramas de casos de uso y actividades sirvieron
832para obtener una visión formal de los requisitos y de los procesos con los que
833la aplicación debe cumplir. Estos documentos de diseño  en el lenguaje UML,
834permitieron
835alcanzar de manera más rápida y certera los objetivos que son coincidentes con la
836gestión real de una AC Raíz.
837
838Al seguir el estándar X.509 se asegura que los certificados, solicitudes y claves
839gestionados por la aplicación sean compatibles con el esquema de seguridad basado
840en un tercero de confianza, y aceptado por gran cantidad de aplicaciones y sitios
841de comercio electrónico y transacciones seguras en la Internet.
842
843Para la tarea de eliminación de fallas las técnicas como la colaboración utilizando
844herramientas web, la programación en equipos y las pruebas unitarias y de integración
845sirvieron para los procesos de prevención, notificación, búsqueda y arreglo de
846errores, permitiendo además guardar una bitácora del progreso a la solución de
847problemas. La implementación de características específicas en función de los
848requisitos cada vez más refinados y particulares que surgieron en las iteraciones
849de prototipos probados con usuarios y condiciones reales.
850
851La combinación de diversos elementos como software, hardware y la configuración de
852un espacio físico adecuado, esto es, que cumpla determinadas reglas para el
853control de acceso, conforma la infraestructura necesaria para la operación de
854una AC, incluso que ésta no sea Raíz, y sea parte de otro nodo de la jerarquía.
855Las condiciones de seguridad lógica y física pueden reproducirse exactamente para
856los nodos intermedios y los nodos Proveedores de Servicios de Certificación de la
857ICP, tomando en cuenta el escalamiento.   
858 
859%\appendices
860\section{Glosario}
861\label{ap:glosario}
862
863
864\emph{AC}: Autoridad de Certificación; componente de la PKI encargada de guardar,
865de firmar, renovar, revocar las claves de los usuarios o entidades finales.
866
867\emph{AR}: Autoridad de Registro; componente de la PKI encargada de validar los
868recaudos de un PSC o Entidad Final, es decir, su identidad, y generar la solicitud para una firma de Certificados.
869
870\emph{Entidad Final}: Persona natural o jurídica  a la que un PSC le expide un
871certificado digital.
872
873\emph{PSC}:  Proveedor de Servicios de Certificación Digital; Organización que
874mantiene la infraestructura de  nodo de una ICP, y está autorizada a expedir
875certificados a las personas naturales y jurídicas que soliciten y reunan los
876recaudos necesarios para obtener un certificado digital.
877
878\emph{PUB}: Publicador; componente de la PKI encargada de mantener accesibles
879los certificados digitales emitidos por la PKI en medios como
880portales Web o directorios.
881 
882\emph{PKI}: Public Key Infrastructure, Infraestructura de clave pública; es el
883conjunto formado por software, hardware, y políticas que asegura
884en la internet la
885propiedad de la claves públicas de los usuarios.
886
887\emph{HSM}: Hardware Security Module; módulo de seguridad en hardware, equipo físico
888computacional que contiene funciones criptográficas, en específico funciona para
889almacenar con un alto nivel de seguridad claves privadas.
890
891%\bibliography{referenciasCapitulo5}
892%\bibliographystyle{plain}
893
894
895% bibliografia
896% \begin{thebibliography}{}
897%
898% \bibitem{NIC:03}
899% R. Nichols and P. C. Lekkas, "Seguridad para comunicaciones inal{\'a}mbricas". McGraw-Hill, Mexico, 2003.
900%
901% \bibitem{STAL:03}
902% William Stallings, "Fundamentos de Seguridad de Redes. Aplicaciones y Est{\'a}ndares", Prentice Hall, España, 2003.
903%
904% \bibitem{NASH:02}
905% Nash Duane and Joseph Brink, "PKI: Infraestructura de clave p{\'u}blica", McGraw-Hill,. Mexico, 2002.
906%
907% \bibitem{ACE:03}
908% Vicente Aceituno Canal, "Seguridad de la información", Noriega Editores, Mexico, 2003.
909%
910% \bibitem{SCHM:03}
911% Joseph Schmuller, "Aprendiendo UML en 24 horas", Prentice Hall, Mexico, 2003.
912%
913% \bibitem{BOOC:99}
914% G., Booch, "UML Lenguaje Unificado de Modelado", Addison Wesley, 1999.
915%
916%
917% \bibitem{MULL:97}
918% Alain Pierre-Muller, "Modelado de objetos con UML", Eyrolles, Barcelona, España, 1997.
919%
920%
921% \bibitem{FSF:07}
922% Free Software Definition, http://www.fsf.org/licensing/essays/free-sw.html, 2007.
923%
924%
925% \bibitem{SARW:03}
926% Sarwar, Koretsky, "El libro de Linux", Pearson, Prentice Hall, Madrid, España, 2003.
927%
928% \bibitem{KURT:01}
929% Kurt Wall et al, "Programación en Linux", Prentice Hall, Madrid, España, 2001.
930%
931%
932% \bibitem{XCA:03}
933% Christian Hohnst\"{a}dt, XCA, una interfaz gr\'afica para OpenSSL, Clave p\'ublicas y privadas,
934% certificados, solicitudes y listas de revocación. http://sourceforge.net/projects/xca/.
935%
936% \bibitem{STRO:02}
937% Bjarne Stroustrup, "El lenguaje de programación C++", Addison Wesley, Madrid, España, 2002.
938%
939% \bibitem{BLAN:06}
940% James Blanchette and Mark Summerfield, "C++ GUI Programming with Qt 4", Prentice Hall, Massachusetts, USA, 2006.
941%
942% \bibitem{VIEG:2002}
943% John Viega and Matt Messier and Pravir Chandra, "Network Security with OpenSSL", O'Really, 2002.
944%
945% \bibitem{PRESS:05}
946% Roger S. Pressman, "Ingenier'ia del software. Un enfoque práctico", Mc Graw-Hill, Mexico 2005.
947%
948% \bibitem{TRAC:07}
949% TRAC web-based software project management, http://trac.edgewall.org/, 2007.
950%
951% \bibitem{PILA:04}
952% C. Michael Pilato and Ben Collins-Sussman and Brian W. Fitzpatrick, "Version Control with Subversion ", O'Really, 2004.
953%
954%
955% \end{thebibliography}
956
957
958% el siguiente comando establece la ubicación de las referencias
959\putbib[bibliografia]
960
961% el siguiente comando cierra el ambiente bibunit para la cual se generan las
962% referencias.
963\end{bibunit}
964
965
966
967% *****************************************************************************
968% *****************************************************************************
969% a partir de aquí se encuentra el contenido original del artículo de ROOTVE
970
971% A continuación el contenido del artículo de ROOTVE
972%
973%
974% %\begin{abstract}
975% Una Autoridad de Certificación Raíz (AC Raíz) es un componente que tiene el rol de ser el
976% punto más alto de confianza en  una estructura  jerárquica denominada Infraestructura de Clave
977% Pública (ICP). Una ICP  provee de certificados digitales bajo estándar X.509 a personas,
978% direcciones IP y direcciones en la Web;  proporcionando seguridad lógica, y vinculación
979% legal a las transacciones  que realiza el propietario  del certificado  en
980% la Internet. La confianza reside en la protección a través de esquemas fuertes de
981% seguridad física y lógica de la clave privada que permite la emisión de estos certificados.
982% Este trabajo muestra el proceso de desarrollo de una aplicación para gestionar el
983% componente mencionado utilizando  bibliotecas, herramientas, compiladores,
984% sistemas operativos y licencias compatibles con los principios del  software libre.
985% En primer lugar, se determinan los requisitos a ser satisfechos en función de una
986% descripción general de las funciones y características de una Autoridad de
987% Certificación;  posteriormente, se dise~nan  funcionalidades y  se especifican
988% requisitos, con el objetivo de producir  una visión formal de los procesos a
989% automatizar. Se dedica una sección a la implementación que  consiste, en la
990% codificación en un lenguaje de programación,   de los procesos previstos  en las
991% etapas anteriores, como también, de la incorporación de mecanismos fuertes de
992% validación de identidad de usuarios, registro de eventos, firma de acciones por parte
993% de los administradores de la aplicación, y especificación de conexiones con hardware
994% especializado, como tarjetas inteligentes.  Finalmente, se muestra el despliegue y
995% configuración de la aplicación, que involucra la instalación en un ambiente seguro
996% (bóveda o centro de datos) y el enlace de la AC Raíz con los demás componentes de la infraestructura. 
997%
998%
999% %\end{abstract}
1000%
1001% %\begin{abstract}
1002% A Certification Authority Root (CA Root) is a component which role is to represent the
1003% highest confidence point in a hierarchical structure denominated Public Key Infrastructure (PKI).
1004% A PKI provides people, IP addresses and Web domains with digital certificates under X.509
1005% standard, offering logic security and legal entailment to transactions performed on the
1006% internet by the certificate’s owner. Confidence resides in private key protection through
1007% strong physical and logical security schemes, so these schemes allow the certificate emission.
1008% This work shows the development process of a CA root management application. For this development
1009% it's used libraries, tools, compilers, operating systems and licenses compatible with the
1010% principles of free software. In first place, the requirements to satisfy are determined based
1011% on a general description of a CA's functions and characteristics; subsequently, functionalities
1012% are designed and requirements are specified in order to produce a formal vision of the
1013%processes
1014% to automate. A section is dedicated to the implementation, this consists on codification in a
1015% programming language of the processes forseen in the previous stages, like also,
1016% of the incorporation of strong mechanisms of validation of identity of users,
1017% registry of events, actions signature by application's administrators, and
1018% connections specification with specialized hardware, like smart cards.
1019% Finally, application display and configuration are shown, it involves its
1020% installation in a safe environment (vault or data center) and CA Root connection
1021% with other components of the infrastructure.
1022% %\end{abstract}
1023%
1024% %\begin{keywords} Infraestructura de Clave Pública, Estándar X.509, Certificado Digital, Firma Electrónica, Autoridad de Certificación Raíz.
1025% %\end{keywords}
1026%
1027%
1028% \section{Introducción}
1029%
1030% \label{sec:intro}La disponibilidad de Internet como medio digital seguro permite
1031% que cualquier persona, empresa, institución, o administración realice transacciones
1032% gubernamentales, comerciales o personales en la mayoría de los casos, tal cual,
1033% como se realizarían en una oficina o espacio físico de forma presencial. Dado este
1034% hecho, al utilizar Internet para establecer relaciones humanas, se está de acuerdo
1035% que es necesario trasladar el concepto de ``identidad'' al medio digital\cite{NIC:03}.
1036% La criptografía provee algoritmos y mecanismos para construir este concepto
1037% en la red, ya que es  posible utilizar herramientas  que aporten elementos para
1038% definir la identidad de un usuario, entidad  o institución, de la misma forma de
1039% la que se está familiarizado en el mundo real.
1040%
1041% En muchas ocasiones para realizar actividades cotidianas personales o de trabajo,
1042% se debe establecer contacto con un individuo u organización que no se conoce o del
1043% cuál no se tiene ninguna referencia. Mediante un contacto personal o directo, los
1044% sentidos humanos permiten percibir un gran número de detalles que le caracterizan, y
1045% cuya combinación muy probablemente le hace irrepetible. Esta combinación  permite
1046% identificar al individuo  de forma única y certera.  Dicho esto, la identidad se
1047% define como el reconocimiento que se hace de las credenciales físicas o informativas,
1048% que ese individuo  ofrece para que se le acepte como poseedor de una determinada
1049% individualidad \cite{STAL:03}. Las credenciales físicas pueden ser documentos como
1050% la Cédula de Identidad, el Pasaporte, la Licencia de Conducir, entre otros. Todos los
1051% documentos citados  generalmente incluyen una fotografía que permite la comparación
1052% con la apariencia del interlocutor; también usualmente se agrega otra característica
1053% informativa que puede ser un nombre, una  firma manuscrita y posiblemente un número
1054% de referencia.
1055%
1056% Cuando se traslada el concepto de identidad al medio informático, se habla de
1057% identidad digital, y se hace necesario contar credenciales traducibles a
1058% información binaria. Por otro lado, la criptografía, por sí misma no proporciona este
1059% concepto: es el uso de una infraestructura computacional que utiliza algoritmos
1060% criptográficos  para representar credenciales digitales,  como por ejemplo el certificado
1061% digital,  y que son otorgados por terceros de confianza, denominados Autoridades
1062% de Certificación (AC), y que se describen como Raíz cuando son el punto inicial de una
1063% jerarquía, las que proveen a usuarios y organizaciones de identidad digital, y que
1064% cuenta con las mismas connotaciones que tiene este concepto en el ámbito personal
1065% y jurídico.
1066% \\
1067% Uno de los problemas que aparece en este punto, en la disponibilidad de la
1068% infraestructura mencionada anteriormente, la cuál debe contar como un elemento
1069% obligatorio una aplicación que gestione, bajo un estándar aceptado, como lo es el
1070% estándar X.509\cite{NASH:02}, los certificados digitales que emite la AC.
1071% La discusión de importantes aspectos que surgen en las diferentes etapas del
1072% proceso desarrollo de la aplicación de gestión, y que están vinculados con los
1073% principios del software libre y los requisitos muy particulares del ambiente
1074% de despliegue, subrayan los objetivos de este trabajo.
1075%
1076% \section{Marco Teórico}
1077%
1078% Con el objetivo de contextualizar los términos   ``identidad'', ``confianza'', o
1079% ``transacción segura'' y``AC Raíz'' en el medio digital, y específicamente en
1080% relación con internet; es imprescindible en una primera aproximación,  discutir sobre
1081% determinados temas y conceptos vinculados con la seguridad informática. En los párrafos
1082% siguientes se abordan brevemente algunos de los puntos más importantes relacionados con el tema.
1083
1084% \subsection{Seguridad Informática}
1085%
1086% Se ha llegado a un consenso sobre lo que significa seguridad informática\cite{STAL:03}.
1087% En general, se dice que un activo de información, (información digital con un valor
1088% real para una empresa o persona) está asegurado si cumple con niveles  aceptables
1089% relativos a su valor potencial en los siguientes aspectos:
1090% \\ \\
1091% \textbf{Disponibilidad:} es el grado en que un dato está en el lugar, momento y
1092% forma en que es requerido por uno o un conjunto de usuarios autorizados. Como
1093% premisa, un sistema seguro debe mantener la información disponible para los
1094% usuarios autorizados. Disponibilidad también significa que el sistema, debe
1095% mantenerse funcionando eficientemente y es capaz de recuperarse rápidamente
1096% en caso de fallo.
1097% \\ \\
1098% \textbf{Confidencialidad:} es el aspecto de la seguridad que permite mantener en
1099% secreto la información y solo los usuarios autorizados pueden manipularla.
1100% Igual que para la disponiblidad, los usuarios pueden ser personas, procesos o
1101% programas. Para evitar que nadie no autorizado pueda tener acceso a la información
1102% transferida y que recorre la Red se utilizan técnicas de cifrado o codificación de
1103% datos. Hay que mantener una cierta coherencia para determinar cuál es el grado de
1104% confidencialidad de la información que se está manejando, para así evitar un esfuerzo
1105% suplementario a la hora de decodificar una información previamente codificada.
1106% \\ \\
1107% \textbf{Integridad:} corresponde a garantizar que la información transmitida entre dos
1108% entidades autorizadas no sea modificada por un tercero no autorizado. Un mecanismo
1109% para lograrlo es la utilización de firmas digitales.
1110% Mediante una firma digital se codifican los mensajes a transferir, de forma que una
1111% función, denominada hash \cite{ACE:03}, calcula un resumen de dicho mensaje y se
1112% le a~nade. La validación de la integridad del mensaje se realiza aplicándole al original la
1113% misma función y comparando el resultado con el resumen que se a~nadió al final cuando
1114% se calculo por primera vez antes de enviarlo.
1115% Mantener la integridad es importante para verificar que en el tiempo de viaje por
1116% la Red de la información entre el sitio emisor y receptor ningún agente externo o
1117% extra\~no ha modificado el mensaje.
1118%
1119% \subsection{Criptografía}
1120% La criptografía  es la ciencia o arte  información utilizando técnicas matemáticas
1121% que hagan posible el intercambio de mensajes de manera que sólo puedan ser leídos
1122% por las personas o usuarios autorizados \cite{STAL:03}. La criptografía ha tomado
1123% gran importancia en los últimos a~nos, ya que es posible transformar las
1124% ``técnicas matemáticas'' en algoritmos que pueden ser comprendidos por una computadora. 
1125% Se puede clasificar la criptografía en dos tipos, según el tipo de clave que se utilice:
1126%
1127% \textbf{Criptografía Simétrica:} los sistemas de criptografía simétrica son aquellos
1128% que utilizan una única clave para cifrar y descifrar un texto claro. Este tipo de
1129% sistema conlleva una desventaja, que consiste en el conocimiento de las partes
1130% (emisor y receptor) de la  clave única que les permite intercambiar información
1131% por un canal seguro. Como respuesta a ello, se hace necesario formalizar un procedimiento
1132% que muestre a las partes autorizadas la información sobre la clave, sin que sea
1133% develada a un tercero no autorizado.
1134%
1135% \textbf{Criptografía Asimétrica:} también se conoce como  Sistema de Cifrado
1136% de Clave Pública\cite{STAL:03}. Usa dos claves diferentes, una de ellas es la
1137% Clave Pública que puede ser enviada a cualquier persona y otra, que se
1138% denomina Clave Privada que es secreta, y no debe ser revelada. A diferencia del
1139% sistema de cifrado simétrico donde las partes deben concertar un procedimiento
1140% para conocer la clave única, en este tipo de sistema el remitente usa la clave
1141% pública del dest inatario para cifrar el documento. Una vez que el documento o
1142% mensaje ha sido cifrado, solamente con la clave privada del destinatario el
1143% mensaje puede ser descifrado.
1144%
1145% \subsection{Certificados digitales}
1146%
1147% Un certificado digital es un documento de acreditación que permite a las partes
1148% tener confianza en las transacciones que realicen en internet. Por tanto,
1149% garantiza la identidad de su poseedor mediante un sistema de claves administrado
1150% por una tercera parte de confianza. Para validar un certificado basta con conocer
1151% la clave pública de la tercera parte conocida como la Autoridad de Confianza (AC).
1152% Para cuidarnos de que piratas informáticos cambien su clave pública por la de la
1153% autoridad de confianza, la AC debe crear un certificado con su propia información de
1154% identidad y a la vez su clave pública y firmar el certificado, este certificado se le
1155% conoce como certificado autofirmado.
1156% Dado que los certificados son información pública y lo que se desea es que todos
1157% tengan acceso a ellos, pueden hacerse copias del certificado de acuerdo sea necesario.
1158% Los certificados digitales permiten varias cosas, entre ellas se pueden citar que los
1159% usuarios pueden a~nadir firmas electrónicas a los formularios en línea; que los
1160% destinatarios pueden comprobar la autenticidad del correo electrónico confidencial;
1161% que los compradores pueden estar seguros de que un website es legítimo; y por último,
1162% controla el acceso a bancos y comercios online, así como los intranets y extranets.
1163%
1164% \subsection{Estándar X.509}
1165%
1166%
1167% X.509 y X.500 fueron originalmente dise\~nados a mediados de los a\~nos 80, antes
1168% del enorme crecimiento de usuarios en Internet. Es por esto por lo que se
1169% dise\~naron para operar en un ambiente donde sólo los computadores se interconectaban
1170% intermitentemente entre ellos. En las versiones  1 y 2 de X.509 se utiliza una
1171% lista estandarizada denominada ``CRL'' (Certificate Revocation List) que contiene la
1172% información referente a  clientes o certificados que han sido revocados.
1173%
1174% La versión 3 introduce cambios significativos en el estándar. El cambio fundamental
1175% es el hacer el formato de los certificados y los CRLs extensible. Ahora los que
1176% implementen X.509 pueden definir el contenido de los certificados como crean
1177% conveniente. Además se han definido extensiones estándares para proveer una
1178% funcionalidad mejorada.
1179%
1180%
1181% Con la utilización de la tecnología de certificados digitales se provee a los
1182% clientes (personas o programas) de un nivel más alto en los procesos de
1183% autenticación y autorización, ya que se le otorga al cliente algo que puede poseer,
1184% incluso incluir dentro de elemento físico, como una tarjeta inteligente.
1185% Los certificados en el formato X.509 v3 contienen datos del sujeto,
1186% como su nombre, dirección, correo electrónico, etc. (Ver Fig. \ref{fig:estandarx509})
1187%
1188% En la versión 3 de X.509, no hace falta aplicar restricciones sobre la estructura
1189% del certificado, gracias a la definición de las extensiones de certificados.
1190% Se permite que una organización pueda definir sus propias extensiones para
1191% contener información específica dentro de su entorno de operación.
1192% Este tipo de certificados es el que usa el protocolo de comercio electrónico
1193% SET (del inglés Secure Electronic Transaction, Transacción Electrónica Segura) \cite{IBM:98}.
1194%
1195% \begin{figure}[htb]
1196% \centering
1197% \includegraphics[width=8cm]{imagenes/estandarX509.png}
1198% \caption{Especificación del estandar X.509}
1199% \label{fig:estandarx509}
1200% \end{figure}
1201%
1202%
1203% Los certificados digitales tienen multitud de usos, entre los tipos de certificados
1204% más utilizados están:
1205%
1206% \begin{itemize}
1207%  \item \textbf{Certificado de Servidor SSL (del inglés Socket Secure Layer, Nivel de Conexión Segura):}
1208%  Permite incorporar el protocolo SSL a un servidor web con el objetivo que
1209%  toda la comunicación entre el cliente y el servidor permanezca segura,
1210%  cifrando la información que envía cada parte. El certificado del servidor posibilita
1211%  la autenticación fuerte, es decir, que el servidor puede exigir certificados
1212%  personales de navegación a los usuarios para acceder a determinadas carpetas,
1213%  lo que repercute en la seguridad y en la comodidad por la ausencia de cuentas
1214%  y contrase\~nas para la identificación de los usuarios.
1215%
1216%  \item \textbf{Certificados personales (Correo y navegación):} Un certificado digital
1217%  personal es la herramienta necesaria para navegar, comprar y enviar/recibir correo
1218%  a través de Internet, de una manera segura. Con el uso de este certificado se puede
1219%  firmar o cifrar los mensajes  de correo para tener la seguridad que el receptor será
1220%  el único lector de nuestro mensaje. Se puede aumentar la seguridad y confianza entre el
1221%  cliente y el servidor web, al autenticarse también al usuario, esto también va a permitir
1222%  a las empresas la posibilidad de personalizar los contenidos a un usuario concreto,
1223%  con la certeza que otros usuarios no podrán ver dicho contenido, tales como información
1224%  confidencial, ofertas especiales, entre otros.
1225%
1226%  \item \textbf{Certificado para firma de código:} El certificado para la firma de
1227%  código permite a un administrador, desarrollador o empresa de software firmar su
1228%  software y macros, y distribuirlo de una forma segura. Esta solución de Seguridad es el
1229%  requisito mínimo que necesitan nuestros clientes o lista de correo, para confiar y
1230%  tener la seguridad de que el fichero que reciben o se descargan, proviene exclusivamente
1231%  de una empresa determinada. Con ello se evitan los problemas causados por la
1232%  suplantación de personalidad y la distribución de objetos da\~ninos o perjudiciales
1233%  bajo esta supuesta identidad. Cualquier modificación (por ejemplo: inclusión de un
1234%  troyano o infección de un virus) sobre el software original lo invalidará, con lo que el
1235%  usuario tendrá la confirmación para rechazarlo al comprobar que la firma electrónica
1236%  no corresponde con la del software modificado.   
1237% \end{itemize}
1238% \subsection{Lenguaje Unificado de Modelado}
1239%
1240%  UML ( del inglés Unified Modeling Language,  Lenguaje de Modelado Unificado) es un lenguaje
1241%  que permite diseñar sistemas a través de  modelos, que se componen de un conjunto
1242%  de símbolos y diagramas en donde se plasma las ideas de funcionalidad.
1243%  El UML fue creado por Grady Booch, James Rumbaugh e Ivar Jacobson en el a~no
1244%  1997\cite{SCHM:03},\cite{BOOC:99} y \cite{MULL:97}. Cada diagrama tiene fines distintos
1245%  dentro del proceso de desarrollo, su finalidad es presentar diversas perspectivas
1246%  de un sistema. La clave está en organizar el proceso de dise~no de tal forma que los analistas,
1247%  clientes, desarrolladores y otras personas involucradas en el desarrollo del modelo
1248%  lo comprendan y convengan con él. Los diagramas que componen el lenguaje son:
1249%
1250% \begin{itemize}
1251%  \item Diagramas de casos de uso
1252% \item Diagramas de estados
1253% \item Diagramas de secuencias
1254% \item Diagramas de colaboraciones
1255% \item Diagramas de distribución
1256% \item Diagramas de actividades
1257% \item Diagramas de componentes
1258% \item Diagrama de despliegue
1259% \end{itemize}
1260%
1261% En este trabajo se utilizaron esencialmente los diagramas de clases, los diagramas de
1262% casos de uso y los diagramas de actividades, que se describen brevemente a continuación:
1263%
1264% \textbf{Diagramas de clases:} son representaciones gráficas de las categorías en que
1265% pueden clasificarse los objetos del mundo real. En general, se hace una descripción
1266% de las categorías que se utilizan en la aplicación a desarrollar. Los clases se
1267% dise~nan  en funcion de sus atributos y relaciones con otras clases.
1268%
1269% \textbf{Diagramas de casos de uso:}   son descripciones de las acciones que debe
1270% realizar el usuario en el sistema \cite{SCHM:03}. Por ejemplo: Usuario que tiene la
1271% necesidad de expedir un certificado digital a una AC de confianza.
1272%
1273%
1274% \textbf{Diagramas de actividades:}  muestran el flujo de actividades que ocurren
1275% dentro de un caso de uso o dentro de un comportamiento de un objeto\cite{SCHM:03}.
1276% Por ejemplo, las actividades que se realizan para expedir un certificado digital.
1277%
1278% \subsection{Software Libre}
1279%
1280% \label{sec:softlibre}El software libre \cite{FSF:07} es un asunto de libertad,
1281% no de precio. Para que un programa, aplicación o conjunto concreto se
1282% considere ``software libre'' debe cumplir con las siguientes libertades:
1283% 1) Libertad de ejecutar el programa en cualquier sitio, cualquier propósito,
1284% por siempre; 2) Libertad de estudiarlo y adaptarlo a nuestras necesidades;
1285% 3) Libertad de redistribuirlo a cualquiera, logrando ayudar a un amigo o vecino;
1286% y por último 4)la  Libertad de mejorar el programa y publicar las mejoras.
1287%
1288% Las libertades antes expuestas, proveen  muchos beneficios  a los usuarios finales.
1289% En particular, en el área de seguridad informática. Se pueden nombrar  entre los
1290% beneficios más importantes: la no dependencia  de un único fabricante, y la posibilidad
1291% de realizar auditorías y pruebas exhaustivas por parte de terceros, que pueden
1292% ser personas, empresas o instituciones diferentes responsables del proyecto
1293% de software. Los procesos de adaptación, mantenimiento, integración y auditorías
1294% son más transparentes y colaborativos.
1295%
1296%
1297% \section{Infraestructura de Clave Pública}
1298%
1299% Uno de los problemas del despliegue de la tecnologías basada en certificados y
1300% firmas digitales, es contar con un elemento que proporcione una relación
1301% fuerte de confianza entre dos o más sujetos que desean realizar una operación o
1302% transacción utilizando como medio Internet. Es por ello,  que se recurre a
1303% establecer un tercero de confianza, que se define, como un actor encargado de
1304% brindar confianza basada en la disponibilidad de una infraestructura robusta que
1305% incluya el uso tecnologías basadas en algoritmos criptográficos estandarizados,
1306% y la aplicación estricta de políticas para los procesos de registro, publicación,
1307% firma, renovación y revocación de certificados.
1308% El tercero de confianza se denomina Infraestructura de Clave Pública (ICP)\cite{NASH:02},
1309% y consiste en la combinación de hardware y software, políticas y procedimientos
1310% que permiten asegurar la identidad de los participantes en un intercambio de datos
1311% usando criptografía pública. Una ICP debe proporcionar los tres conceptos de
1312% seguridad mencionados anteriormente.
1313%
1314% \subsection{Componentes de la Infraestructura de Claves Pública (ICP)}
1315% Los componentes habituales que conforman la infraestructura  son los siguientes
1316% (Ver Fig. \ref{fig:arquitecturapsc}):
1317% \begin{itemize}
1318% \item Autoridad de Registro (AR): es el nodo o conjunto de nodos responsables
1319% del registro y la autenticación inicial de los usuarios a quiénes
1320% se les expide un certificado, después de  aprobada una solicitud de registro.
1321% \item  Autoridad de Certificación (AC): es el nodo central de la infraestructura,
1322% se encarga de los procedimientos  de firma, renovación  y revocación de
1323% certificados digitales. El procedimiento de firma  de certificados utiliza
1324% la clave privada de la AC.
1325% \item Interfaz con los clientes (PUB): es el nodo  que brinda toda la información
1326% a las entidades finales (usuarios) sobre el estado de su certificado, además de
1327% ofrecer una información general al público en general sobre los aspectos y servicios
1328% relevantes de la ICP.
1329% \end{itemize}
1330%
1331%
1332% Los nodos de una ICP pueden ordenarse según diversos modelos.  El más utilizado es
1333% el modelo jerárquico, que presenta una raíz y nodos hijos que distribuyen los
1334% certificados a los clientes o entidades finales (Ver Fig. \ref{fig:jerarquia}).
1335% Se muestra un ejemplo de modelo de jerarquía de una ICP de cuatro niveles,
1336% que se encuentra en el tercer nivel del modelo, que certifica a los usuarios.
1337%
1338% \begin{figure}[htb]
1339% \centering
1340% \includegraphics[width=8cm]{imagenes/jerarquia.png}
1341% \caption{Modelo jerárquico de una ICP}
1342% \label{fig:jerarquia}
1343% \end{figure}
1344%
1345% Este modelo de establecimiento de relaciones de confianza, es necesaria entre
1346% múltiples autoridades de certificación para garantizar que los usuarios
1347% (entidades finales) no tengan que depender y confiar en una sola AC, algo que haría
1348% imposible el manejo de estabilidad, administración y protección. El objetivo
1349% es que las entidades finales que utilizan identidades creadas por una AC puedan
1350% confiar en ellas, aunque dichas partes tenga una autoridad expedidora diferente.   
1351%
1352%
1353%
1354% \section{Desarrollo de la aplicación}
1355%
1356% En los párrafos siguientes se discute  los aspectos, procesos y  técnicas
1357% principales, que se siguen a lo largo del desarrollo de la aplicación (software)
1358% de gestión del componente Autoridad Certificadora Raíz.
1359%
1360%
1361% \subsection{Conceptualización}
1362%
1363%
1364% Uno de los objetivos de esta etapa es determinar el rol  del componente AC Raíz
1365% en la ICP, con la finalidad de obtener los requisitos, procesos y funciones que
1366% deben ser implementados por el software. Este rol tiene que ver con la definición
1367% de la AC Raíz como elemento central y de máximo resguardo de la infraestructura,
1368% ya que este nodo inicial o ``Raíz'' contiene la clave privada que valida todos los
1369% certificados de los otros nodos de la jerarquía.
1370%
1371% Se considera como punto importante en esta etapa, distinguir las diferencias entre
1372% una AC Raíz y una AC de un Proveedor de Servicios de Certificación (PSC). La diferencia
1373% principal entre estos dos tipos de AC, es la cantidad de certificados que deben gestionar
1374% (firmar, renovar, revocar, etc) , en un determinado periodo cada uno de ellos. Esto es, una
1375% AC Raíz solo gestiona un número mínimo de certificados,  los cuáles sirven para dar inicio a
1376% la jerarquía (certificados otorgados a los PSC), por el contrario, una AC de un PSC debe
1377% gestionar un número mucho mayor de certificados, ya que la función de este  nodo es
1378% entregar certificados  periódicamente a usuarios, también llamados entidades finales.
1379%
1380% La diferencia de  escala de los dos tipos de AC conlleva a que la AC Raíz tenga
1381% características particulares, que tienen que ver los niveles y elementos de seguridad
1382% tanto físicos como lógicos que deben considerarse en la gestión del componente.
1383% Por ejemplo, la desconexión de red del equipo  donde se ejecuta la aplicación de
1384% gestión hace que la recepción y entrega de certificados se realice a través de
1385% unidades de memoria externas y portátiles, debidamente validadas, con las cuáles
1386% el software debe mantener una comunicación segura.
1387%
1388% La conexión  de la aplicación con  hardware especializado, como el almacenador
1389% y generador de claves públicas/privadas (Hardware Security Module: HSM) o las
1390% tarjetas inteligentes, es un factor que debe considerarse en el momento de enumerar
1391% las funciones iniciales del software de gestión.   
1392%
1393% La selección del sistema operativo Linux\cite{SARW:03}  para desplegar la aplicación,
1394% ya que cumple con los principios del software libre, y cuenta con gran número de
1395% herramientas en el área de programación \cite{KURT:01}, es un requisito no funcional
1396% que se establece en esta etapa.
1397%
1398% Considerando los aspectos nombrados anteriormente, en este punto se elabora una lista
1399% inicial de requisitos, con la cual debe cumplir la aplicación.  Como técnicas utilizadas
1400% en ésta etapa  están la realización de entrevistas a clientes, a posibles administradores
1401% y operadores; la elaboración de tablas comparativas entre diferentes aplicaciones que
1402% existen en las bibliotecas o portales de software libre, con la finalidad de evaluar las
1403% herramientas a utilizar en la elaboración de la aplicación.
1404%
1405%
1406% \subsection{Dise\~no}
1407%
1408% La etapa de dise\~no consiste en elaborar diagramas formales que permitan en la etapa
1409% de implementación representar requisitos y procesos de la gestión del componente AC Raíz
1410% en un lenguaje de programación.  Para el dise\~no de requisitos se utilizan los diagramas
1411% de casos de uso del lenguaje UML, que muestran una primera aproximación las operaciones
1412% que se deben realizar en relación con las entradas dadas por los usuarios. Los actores
1413% (usuarios) del caso de uso principal que se muestra en la Fig. \ref{fig:casodeusoprincipal}
1414% son: el Administrador del componente AC, el Administrador del Componente AR, el Administrador
1415% del componente PUB, y el actor PSC, quiénes son los que interactúan con la aplicación.
1416%
1417% \begin{figure}[htb]
1418% \centering
1419% \includegraphics[width=8cm]{imagenes/casodeusogeneral.png}
1420% \caption{Caso de uso principal}
1421% \label{fig:casodeusoprincipal}
1422% \end{figure}
1423%
1424% Para el resto de la especificación de requisitos se elaboran casos de uso que modelan
1425% las funcionalidades con que debe contar la aplicación. Para cada actor, se especifican
1426% el correspondiente diagrama de caso de uso. En la Fig. \ref{fig:casodeusoac} se
1427% muestra el caso de uso para el actor del componente AC. Las acciones que realiza
1428% este actor son emisión, renovación y revocación de certificados, que conlleva procesos
1429% de firma con la clave privada, modificación de los periodos de vigencia del certificado
1430% y elaboración de listas de certificados revocados respectivamente para casa caso de uso.
1431%
1432% \begin{figure}[htb]
1433% \centering
1434% \includegraphics[width=8cm]{imagenes/casodeusoac.png}
1435% \caption{Caso de uso para el actor Administrador Autoridad de Certificación}
1436% \label{fig:casodeusoac}
1437% \end{figure}
1438%
1439%
1440% También en esta etapa se construye  el modelo de datos de la aplicación.
1441% La Fig. \ref{fig:diagramadeclases} muestra de forma parcial, ya que no se incluyen
1442% los atributos,  el diagrama de clases que explica el modelo de datos. Se consideran
1443% como objetos persistentes del sistema a elementos como usuarios, clientes,
1444% certificados, autoridades o proveedores de certificación, solicitudes de autoridad de
1445% certificación, solicitudes de entidad finales, y sus respectivas relaciones.
1446%
1447% \begin{figure}[htb]
1448% \centering
1449% \includegraphics[width=8cm]{imagenes/diagramadeclases.png}
1450% \caption{Diagrama de clases}
1451% \label{fig:diagramadeclases}
1452% \end{figure}
1453%
1454%
1455% Para modelar la secuencia de acciones que se realizan para cada caso de uso se
1456% utilizan los diagramas de actividades. La Fig. \ref{fig:diagramaactividades}
1457% muestra el diagrama de actividades general para el caso de uso  ``Emisión de
1458% certificados''' del actor Administrador del componente AC. Para este conjunto de
1459% actividades participan cuatro (4) actores: Administrador del PSC, quién entrega los
1460% recaudos necesarios para que se le firme su solicitud, el Administrador de la AR,
1461% quién es el encargado de chequear los recaudos entregados por el PSC, el Administrador
1462% de la AC Raíz  y el Administrador PUB, este último encargado de de publicar en los
1463% diferentes repositorios los certificados (claves públicas) para que sean visibles por
1464% el mayor número de usuarios interesados. 
1465%
1466%
1467% \begin{figure}[htb]
1468% \centering
1469% \includegraphics[width=8cm]{imagenes/diagramaactividades.png}
1470% \caption{Diagrama de actividades}
1471% \label{fig:diagramaactividades}
1472% \end{figure}
1473
1474%
1475% \subsection{Implementación}
1476%
1477%
1478% En esta etapa se utiliza como insumo  los diagramas de casos de uso, diagrama
1479% de clases y actividades,  generados en la etapa de  dise~no. Se traduce  el
1480% diagrama de clases al que se hace referencia en la Fig. \ref{fig:diagramaactividades}
1481% en un modelo de datos relacional, y se genera un script SQL que genera el mapa de
1482% tablas relacional, donde las tablas representan relaciones tales como usuarios,
1483% clientes, certificados, y las demás entidades que conforman el modelo de datos.
1484%
1485% Se  utilizan y validan los diagramas de casos de uso mediante la elaboración de
1486% interfaces gráficas de usuarios y funcionalidades de interacción con el usuario.
1487% Los diagramas de actividades ayudan en el planteamiento de  algoritmos que proveen
1488% funcionalidades o características con las cuáles debe contar la aplicación y
1489% que deben estar en coordinación con los respuestas y valores esperados.
1490%
1491%
1492% Haciendo uso de las ventajas que trae el uso de software libre (Sección \ref{sec:softlibre}),
1493% se implementa la aplicación utilizando la mayor cantidad de líneas de códigos
1494% disponibles en los repositorios y proyectos de la comunidad, de tal manera que
1495% satisfagan los requisitos y funcionalidades planteadas en la etapa de dise~no.
1496% En este sentido, se utiliza el código fuente del  proyecto XCA \cite{XCA:03},
1497% desarrollado por Christian Hohnst\"{a}dt,  que tiene como objetivo proveer  una
1498% aplicación escrita  en el lenguaje de programación C++\cite{STRO:02} y la
1499% biblioteca Trolltech Qt\cite{BLAN:06}, que cumpla con el estándar X.509. La aplicación
1500% satisface los requisitos básicos para la gestión del componente de gestión de AC Raíz,
1501% esto es, los diagramas UML de la etapa de dise~no calzan con un gran conjunto de requisitos
1502% satisfechos en el proyecto XCA, esto ocurre debido a que este trabajo comparte
1503% objetivos con dicho proyecto; por ejemplo, para el caso de uso de la Fig. \ref{fig:casodeusoac},
1504% donde el actor debe ejecutar tres acciones: emitir, renovar y revocar certificados,
1505% la aplicación XCA incorpora estas tres actividades, pero se hace necesario adaptar
1506% la interfaz de usuario y agregar características en función de los requisitos capturados.
1507%
1508% Es importante recalcar, que XCA no sastiface todos los requisitos documentados en la
1509% etapa de dise~no. En respuesta a este hecho, se realiza un proceso de completación de
1510% funcionalidades. En este sentido, se incorporan características a la aplicación acorde
1511% con la especificaciones de dise~no,  entre las cuáles se enumeran:
1512% \begin{itemize}
1513%  \item La incorporación de un sub-sistema de seguridad para acceso a los activos de
1514%  información que gestiona la aplicación,  que incluya aspectos de autenticación y
1515%  autorización de usuarios,  como lo es  la validación de credenciales a través del
1516%  uso de tarjetas inteligentes, el registro y firma digital  de las acciones realizadas
1517%  por los usuarios dentro de la aplicación.
1518% En La fig \ref{fig:registro} se muestra la característica de registro de acciones.
1519% La ventana a la derecha muestra los detalles de la acción seleccionada en la lista,
1520% se incluyen datos importantes como nombre de la cuenta de usuario, fecha, hora, y
1521% otros datos particulares relacionadas con la acción realizada por el correspondiente
1522% usuario.
1523%
1524% \begin{figure}[htb]
1525% \centering
1526% \includegraphics[width=8cm]{imagenes/registro.png}
1527% \caption{Sistema de registro de acciones}
1528% \label{fig:registro}
1529% \end{figure}
1530%
1531% \item  Estandarización del sistema de gestión de documentos  como solicitudes,
1532% plantillas de certificados y certificados.
1533%
1534% \item Conexión a través de una interfaz propia con el hardware donde se resguardan
1535% las claves privadas (HSM).
1536%
1537% \end{itemize}
1538%
1539% También en esta etapa se seleccionan e integran las tecnologías a utilizar para
1540% la codificación y creación de la aplicación de gestión del componente AC Raíz. 
1541% Los tipos de tecnologías que deben seleccionarse son: bibliotecas para construir
1542% la interfaz hombre-máquina (HMI), motor criptográfico,  conexiones con hardware,
1543% interfaces con repositorio de datos y algoritmos de cálculo criptográfico más utilizados.
1544%
1545%
1546% Como criptosistema se utiliza OpenSSL version 0.9.8 \cite{VIEG:2002}, que provee
1547% de un conjunto de  funciones criptográficas apegadas al estándar X.509. . Para la
1548% construcción de interfaces hombre-máquina y  uso de algoritmos generales se
1549% selecciona la biblioteca Trolltech Qt. Como  interfaz para el uso de tarjetas
1550% inteligentes se utilizo el estándar PKCS11, también conocido como Cryptoki, que
1551% especifica una forma para interactuar con este hardware criptográfico\cite{NIC:03}.
1552%
1553%
1554%
1555% \subsection{Pruebas}
1556%
1557% Esta etapa tiene dos objetivos.  El  primero de consiste en asegurar que la
1558% aplicación funcione correctamente, es decir, que se generen la menor cantidad
1559% de salidas inesperadas o fallas a entradas dadas. En relación al logro de  este
1560% objetivo  se utilizan un conjunto de técnicas aplicadas  a lo largo del proceso
1561% de desarrollo, entre las cuáles se pueden citar la revisión en parejas\cite{PRESS:05},
1562% que consiste que la programación se realice en equipo de dos programadores por
1563% computador, uno de ellos se encarga de escribir los algoritmos en un lenguaje
1564% de programación, y el segundo de ellos de revisarlo inmediatamente, después de
1565% periodo de unas horas, que debe ser definido con anticipación, se intercambian
1566% los roles. Otra de las técnicas utilizadas que es importante nombrar son las
1567% pruebas unitarias\cite{PRESS:05}, las cuáles consisten en aplicar un número
1568% casos de pruebas a métodos o módulos peque~nos   de la aplicación (unidades),
1569% de tal manera que se asegura que funcionan correctamente de forma independiente.
1570% Seguidamente, se realizan pruebas de integración, que consisten en probar módulos
1571% más complejos formados por las unidades revisadas en las pruebas unitarias.
1572% Las pruebas unitarias y de integración  presentan la ventajas que son automatizables,
1573% y por lo tanto, se cuenta como herramientas de software para llevarlas a cabo.
1574%
1575%
1576% El segundo objetivo, es que se satisfagan los requisitos  plasmados en la etapa
1577% de dise~no, y que se extraen  de los diagramas UML , es decir, la aplicación
1578% debe cumplir con las características necesarias para resolver el problema de
1579% gestión de una AC Raíz. En este sentido, se toma una estrategia basada en
1580% prototipos con liberaciones periódicas, que permite a los usuarios y desarrolladores
1581% de la comunidad  chequear el progreso en el proyecto. Los prototipos son
1582% chequeados por los usuarios y  la modificación de requisitos y notificación de
1583% errores son notificados en un sistema web de chequeo y seguimiento \cite{TRAC:07}.
1584%
1585% También se habilita un sistema de control de versiones de licencia libre
1586% llamado subversion \cite{PILA:04}, que permite a los programadores involucrados
1587% en el proyecto obtener en todo momento y de forma local o remota la última
1588% versión de los programas fuentes.
1589%
1590% Debido a que la aplicación de gestión de AC Raiz debe ser parte de una
1591% infraestructura, es necesario realizar pruebas en condiciones similares a la
1592% configuración final de ésta; por ello se simula la configuración de producción que
1593% conlleva pruebas con el sistema operativo y el donde se instala la aplicación,
1594% conexión con tarjetas inteligentes y el módulo de seguridad en hardware,
1595% controles de acceso físico  y lógico, y desconexión de red, ya que la autoridad
1596% debe operar fuera de línea.
1597
1598%
1599% \subsection{Despliegue y configuración}
1600% El despliegue consiste en la instalación en condiciones reales de la
1601% aplicación de gestión de AC Raíz dentro de la infraestructura. La figura \ref{fig:arquitecturapsc}
1602% muestra una propuesta para el despliegue de la infraestructura. La aplicación se
1603% instala en un computador desconectado de red  que debe estar ubicado dentro de un
1604% lugar físico seguro,  lo que significa que el acceso a personas deber estar
1605% restringido por llaves y controles biométricos, y el flujo de información digital
1606% hacia adentro y afuera de la bóveda debe ser realizado a través de dispositivos
1607% de memoria secundaria con seguridad incorporada, tal como un lapiz usb (pendrive)
1608% con bloqueo por contrase~na, como se muestra en la figura.  También es necesario
1609% la habilitación de servidores para la validación de los periodos de vigencia de
1610% los certificados (OSCP), y para la generación de solicitudes de firma de certificados,
1611% donde las entidades finales o usuarios consignan los recaudos.
1612%
1613% \begin{figure}[htb]
1614% \centering
1615% \includegraphics[width=8cm]{imagenes/arquitecturapsc.png}
1616% \caption{Configuración de los componentes del nodo raíz de una ICP}
1617% \label{fig:arquitecturapsc}
1618% \end{figure}
1619%
1620% Por otro lado, la configuración  conlleva el establecimiento de parámetros para
1621% el funcionamiento la aplicación, tales como métodos de control y restricción de
1622% acceso,  ubicación de archivos y directorios, rutas para importación e exportación
1623% de datos, perfiles de usuario, generación y nombres de claves, inicialización
1624% de tarjetas inteligentes, inicialización  de HSM, y copias de seguridad.
1625%
1626% \section{Conclusiones}
1627%
1628% La puesta en marcha de una AC Raíz supone obligatoriamente contar con una
1629% aplicación  que gestione este componente de la infraestructura. En este sentido,
1630% éste trabajo mostró el proceso de desarrollo de una aplicación que respondiera
1631% a los requisitos particulares de gestión, determinados por el rol de  confianza
1632% raíz y última que debe representar la Autoridad.  En función de ello, la
1633% aplicación tiene  un alto grado de especialización, ya que   cuenta con un 
1634% mercado relativo de pocos usuarios, si se compara con el mercado de los sistemas
1635% de información o aplicaciones de ofimática, y su operación se realiza en
1636% condiciones estandándares y específicas.  A pesar de este hecho, para la
1637% construcción de la aplicación se integraron varios proyectos disponibles en los
1638% repositorios de software libre, que permitió disponer de un criptosistema
1639% estándar y suficientemente completo para cumplir con los requisitos descritos
1640% en la etapa de dise~no.  La criptografía se utiliza como herramienta para
1641% otorgar las tres propiedades (Confidencialidad, Integridad y Disponibilidad)
1642% de la seguridad informática a los datos que gestiona la aplicación, y en virtud
1643% de ello el hardware criptográfico utilizado como las  tarjetas inteligentes y
1644% el módulo de seguridad en hardware configuran un ``mundo seguro'' que cumple
1645% con los estándares aceptados a nivel mundial. 
1646%
1647% En la etapa de dise~no, los diagramas de casos de uso y actividades sirvieron
1648% para obtener una visión formal de los requisitos y de los procesos con los que
1649% cumplir la aplicación. Estos documentos de dise~no  en el lenguaje UML, permitieron
1650% alcanzar de manera más rápida y certera los objetivos que son coincidentes con la
1651% gestión real de una AC Raíz.
1652%
1653% Al seguir el estándar X.509 se asegura que los certificados, solicitudes y claves
1654% gestionados por la aplicación sean compatibles con el esquema de seguridad basado
1655% en un tercero de confianza, y aceptado por gran cantidad de aplicaciones y sitios
1656% de comercio y transacciones seguras en internet.
1657%
1658% Para la tarea de  eliminación de fallas las técnicas como la colaboración utilizando
1659% herramientas web, la programación en equipos y  las pruebas unitarias y de integración
1660% sirvieron  para los procesos de prevención, notificación, búsqueda y arreglo de
1661% errores, permitiendo además guardar una bitácora del progreso a la solución a
1662% problemas. La implementación de características específicas en función de los
1663% requisitos cada vez más refinados y particulares que surgieron  en las iteraciones
1664% de prototipos probados con usuarios y condiciones reales.
1665%
1666% La combinación de diversos elementos como software, hardware y la configuración de
1667% un espacio físico adecuado, esto es, que cumpla determinadas reglas para el
1668% control de acceso, conforma la infraestructura necesaria para la operación de
1669% una AC, incluso que ésta no sea Raíz,  y sea parte de otro nodo de la jerarquía.
1670% Las condiciones de seguridad lógica y física pueden reproducirse exactamente para
1671% los nodos intermedios y los nodos Proveedores de Servicios de Certificación de la
1672% ICP, tomando en cuenta el escalamiento.   
1673
1674% %\appendices
1675% \section{Glosario}
1676% \label{ap:glosario}
1677%
1678%
1679% \emph{AC}: Autoridad de Certificación; componente de la PKI encargada de guardar
1680% de firmar, renovar, revocar las claves de los usuarios o entidades finales.
1681%
1682% \emph{AR}: Autoridad de Registro; componente de la PKI encargada de validar los
1683% recaudos de un PSC o Entidad Final, es decir, su identidad, y generar la solicitud para una firma de Certificados.
1684%
1685% \emph{Entidad Final}: Persona natural o jurídica  a la que un PSC le expide un
1686% certificado digital.
1687%
1688% \emph{PSC}:  Proveedor de Servicios de Certificación Digital; Organización que
1689% mantiene la infraestructura de  nodo de una ICP, y está autorizada a expedir
1690% certificados a las personas naturales y jurídicas que soliciten y reunan los
1691% recaudos necesarios para obtener un certificado digital.
1692%
1693% \emph{PUB}: Publicador; componente de la PKI encargada de mantener accesibles
1694% los certificados digitales emitidos por la PKI en medios como portales Web o directorios.
1695
1696% \emph{PKI}: Public Key Infrastructure, Infraestructura de clave pública; es el
1697% conjunto formado por software, hardware, y políticas que asegura en la internet la
1698% propiedad de la claves públicas de los usuarios.
1699%
1700% \emph{HSM}: Hardware Security Module; módulo de seguridad en hardware, equipo físico
1701% computacional que contiene funciones criptográficas, en específico funciona para
1702% almacenar con un alto nivel de seguridad claves privadas.
1703%
1704% %\bibliography{BibACRaizArticulo}
1705% %\bibliographystyle{plain}
1706%
Note: See TracBrowser for help on using the repository browser.