source: libros/maquetacion/capitulo5/capitulo5.tex @ d61ff5c

revisionfinal
Last change on this file since d61ff5c was d61ff5c, checked in by Antonio Araujo Brett <aaraujo@…>, 10 years ago

Corrección de referencias bibliográficas capítulo 5. Cambio de nombre de secciones en capítulo 1.

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