source: libros/maquetacion/capitulo5/capitulo5.tex @ 65b942d

revisionfinal
Last change on this file since 65b942d was 65b942d, checked in by antonio <antonio@…>, 10 years ago

Correcciones de la revisión de estilo de los capítulos 3, 5, 6, 7 y 8.

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