source: libros/maquetacion/capitulo5/capitulo5.tex

revisionfinal
Last change on this file was 969cb45, checked in by aaraujo <aaraujo@…>, 10 years ago

Estandarización de formato.

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

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