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

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

Revisión inicial del contenido del capítulo 5

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