source: libros/maquetacion/capitulo5/capitulo5.tex @ 9c88d1e

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

Se incorpora el uso del paquete bibunits de LaTeX para gestionar referencias bibliográficas para cada uno de los capítulos. Se crea el capítulo 8 para separar los dos artículos de anonimato.

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