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

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

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

  • Property mode set to 100644
File size: 36.3 KB
Line 
1%\chapter{Firmas Electr\'onicas}
2\chapter{Propuesta de acoplamiento de firma electr\'onica avanzada en procesos de negocios}
3
4\chapterauthors{V. Bravo y A. Araujo
5\chapteraffil{Fundación Centro Nacional de Desarrollo e Investigación en Tecnologías Libres}
6}
7
8
9A continuación el contenido del artículo de componente de firmas electrónicas
10
11
12
13
14
15%\begin{abstract}
16Automation is use the information technologies as a direct method for improvement. However, there are elements such as handwritten signature that
17have been taken of all the digital area, but which, when recurrent events in organizational processes
18stand as a critical factor in the flow of operations.
19In response to this situation have developed numerous standards and technologies grouped by
20Electronic Signature concepts and PKI, but that in turn have discovered new questions in this field, among them,
21those that have to do with the integration processes.
22In this paper we propose a software component and a method for connecting
23computer systems as essential technology using the Advanced Electronic Signature. In this sense
24addresses the document formats, validation infrastructure,
25and safety conditions that ensure legal support. The work has
26center, the details and problems of integration, and that have been grouped under ``coupling joint`` concept.
27%\end{abstract}
28%\begin{keywords} Advanced Electronic Signatures, Component, XAdES, PKI, workflow.
29%\end{keywords}
30
31
32
33
34\section{Introducción}
35\label{sec:intro}
36  La adopción de la tecnología de firma electrónica  aún no está suficientemente extendida. Esta
37se utiliza en distintas áreas y en muchas  instituciones o empresas alrededor del mundo pero no ha llegado a ser
38equivalente a la firma autógrafa en un sentido amplio. Vinculado a este hecho, surge la pregunta ¿Pueden converger
39estas dos tecnologías en un futuro próximo?. Con la finalidad de responder esta interrogante,
40se puede decir que la herramienta electrónica  debe tener  por lo menos tres  características comunes
41a la autógrafa: identificar a la persona que la realiza; declarar la asunción u obligatoriedad de cumplimiento (contrato)
42del contenido de lo que se firma y por último, servir  como prueba de autenticidad o no repudio del firmante.
43El modelo de firma electrónica basado en una infraestructura PKI (siglas en inglés de
44Infraestructura de Clave Pública), ha sido jurídicamente aceptado en muchos países,
45lo que equivale a decir que en estos casos se cumple con las características antes mencionadas.
46
47
48La firma manuscrita se percibe como un elemento tecnológico desacoplado, esto es, no dependiente de otra tecnología o factor (solo
49se necesita papel y lápiz)  que
50puede usarse casi en cualquier lugar y con aceptación universal. En cambio la firma electrónica requiere de elementos de software
51(manejadores de dispositivos, clientes de firma, etc) y hardware (lector de tarjetas, tarjeta inteligente, computador, tableta o móvil),
52adicionalmente  y por lo general se debe contar con una conexión a internet para la validación. Otra ventaja importante
53de la firma manuscrita es la permanencia de factores biométricos que son fundamentales en la realización
54de auditorías confiables. A pesar de todas  estas ventajas, en los últimos años ha crecido el uso de la firma electrónica,
55Gobiernos nacionales y locales de España\cite{IEEEhowto:espana}. Alemania\cite{IEEEhowto:eID} y Estonia\cite{IEEEhowto:estonia} tienen disponibles plataformas para sus ciudadanos, y la popularización de la tarjeta
56inteligente (smartcard) como elemento de identificación personal ha apoyado este crecimiento.
57
58En este punto se plantean nuevos  problemas vinculados al hecho de introducir o  sustituir el elemento físico o autógrafo
59por el elemento electrónico,
60entre estos podemos señalar:  elección del formato
61o formatos de archivo de los documentos firmados; ubicuidad y ergonomía de la acción de firma; verificación de los documentos
62firmados; histórico o archivo de documentos firmados y finalmente la  integración de la firma con sistemas de base de datos relacionales, mapeos
63objetos-relacionales, servicios web, entre otros elementos utilizados en sistemas informáticos actuales.
64
65En este sentido, este trabajo  plantea un método para integrar un componente\cite{IEEEhowto:software}  de Firma Electrónica Avanzada   denominado
66ComponenteFEA a procesos de negocio, teniendo presente parámetros de seguridad, rapidez y auditabilidad.
67
68
69
70\section{El modelo actual de Firma Electrónica}
71\label{sec:modelo}
72
73Una de las acciones  para dar soporte jurídico a la firma electrónica y lograr su equivalencia con la firma manuscrita es
74fijar unas condiciones iniciales que garanticen integridad y auditabilidad de los documentos firmados, y que
75puedan ser validadados a través de un estándar. Bajo este enfoque, se ha creado el concepto de Firma Electrónica Avanzada,
76que por definición debe contar con las siguientes propiedades  a) estar vinculada al firmante de  manera única; b) permitir la identificación del firmante;
77c) haber sido creada
78utilizando medios que el firmante puede mantener bajo su exclusivo control y d) estar vinculada a los datos a que se refiere
79de modo que cualquier cambio ulterior de los mismos sea detectable.  La formalización de esta idea  ha sido llevado a cabo principalmente
80por el Parlamento Europeo,
81y se describe en la directiva  1999/93/EC \cite{IEEEhowto:directiva}. .
82
83Existen dos grandes dominios tecnológicos para el uso de la Firma Electrónica Avanzada:  uno es el que tiene que ver con los procesos de
84identificación, registro, emisión  y validación de certificados electrónicos. De este dominio se ocupan 
85las organizaciones que están bajo el esquema PKI, que funcionan como terceros de confianza. Cada certificado brinda identidad
86a una persona o empresa en la internet, y se le otorga al ente bajo la aceptación de un contrato que especifica condiciones de uso. El certificado
87es un documento -un archivo-
88que autentifica la clave vinculada al ente. La clave secreta/privada se distribuye en una tarjeta inteligente
89o token criptográfico que funciona como un elemento de control de
90acceso de nivel 2. Los certificados electrónicos contienen información especificada  bajo el formato X.509v3 \cite{IEEEhowto:x509}, el cual
91incluye campos como  fecha de expedición y vencimiento del certificado, Nombre único del propietario (conocido como Nombre Común),
92datos del Proveedor del certificado, datos criptográficos del certificado y datos del servidor de validación, conocido como OCSP
93(Online Certificate Status Protocol, por sus siglas en inglés).
94
95
96El segundo dominio corresponde a las  aplicaciones que usa el propietario del certificado para aplicar
97la firma electrónica, y que generan valor agregado. Las aplicaciones de este tipo más utilizadas  cuentan con
98una interfaz basada en bibliotecas dinámicas (.dll o .so) para este fin, así como también tienen un archivo de certificados
99de autoridades de certificación para validar la vigencia y correctitud del certificado del firmante. Esta interfaz
100es básica, solo permite generar un archivo de firma en formato PKCS\#7\cite{IEEEhowto:pkcs7} separado del documento firmado, lo que conlleva
101a que las tareas de almacenamiento, validación y auditoría  deben ser provistas  adicionalmente a través de un programa
102o complemento de software. Las aplicaciones de este tipo más utilizadas son navegadores web y clientes de correo electrónico.
103
104Por otro lado, se han especificados diferentes formatos estándares de archivo con firma autocontenida. Por ejemplo el formato PDF
105dada sus características de solo lectura y visualización en pantalla como documento impreso es uno de los más utilizados
106para este fin. El estándar PADES\cite{IEEEhowto:pades} basado en PDF es un ejemplo de ello, también existe el formato PDF nativo, y que es
107verificable por los visores más populares como el de \textit{Adobe Reader}\copyright.
108
109También existen estándares para archivos con firma electrónica basados en XML. La ventaja de estos
110formatos es que pueden integrar  metadatos como la fecha y lugar de la(s) firma(s), y permiten
111incluir diferentes tipos de archivos  como fotos, videos, documentos de texto u ofimáticos. Entre los estándares XML más conocidos está el
112XMLDsig \cite{IEEEhowto:xmldsig}.
113Esta estándar cuenta con diferentes implementaciones y extensiones, entre ellas el formato creado por las repúblicas bálticas
114llamado BDOC\cite{IEEEhowto:bdoc}, que sigue a su vez el popular estándar OpenDocument, utilizado por el paquete ofimático OpenOffice como formato
115principal para sus archivos.
116
117
118
119
120
121\section{Antecedentes}
122
123La inclusión de la firma electrónica en un proceso de negocio tiene varios aspectos asociados. Se
124pueden señalar como los más relevantes la ergonomía
125de la firma (facilidad de uso), los formatos y visualización de documentos, la integración con plataformas de software y la arquitectura de la solución.
126
127
128En relación con el  tema de la ergonomía   Xyzmo SIGNificant\footnote{Para ver información completa
129sobre Xyzmo Significant visitar la dirección web: http://www.xyzmo.com} es una novedosa propuesta. Xyzmo es una una aplicación comercial
130de código fuente propietario, que introduce elementos innovadores en el área de ergonomía y adaptación al cambio:
131no obliga a aprender una nueva técnica de firma sino que ofrece a los usuarios de esta tecnología el uso la firma
132manuscrita a través de una tableta electrónica o teléfono con interfaz multitoque (multitouch) bajo sistemas operativos
133Android\copyright \hspace{0.2cm}y iOS\copyright, esto sin desvincularse del esquema PKI. Este modelo proporciona al usuario la metáfora de
134la firma manuscrita mostrando el documento tal cual como si fuese impreso, habilitando la firma electrónica avanzada  a través del
135uso  de los  dedos o de un lápiz para pantalla táctiles. Para el proceso de validación se utilizan parámetros biométricos tales
136como ritmo, velocidad o características del trazo, y  también técnicas criptográficas estandarizas vinculadas
137al esquema PKI.
138
139Existen diferentes implementaciones  de software para las  gestión y visualización de los
140dos tipos de formatos  principales: PDF y XML. Para el caso del formato  PDF la visualización está automáticamente disponible ya que existen numerosos lectores
141para este tipo de archivo, por ejemplo, el Adobe Reader\copyright \hspace{0.2cm} visualiza la firma electrónica o digital como un sello (imagen) dentro del documento,
142 y muestra también su contenido con características de  forma (encabezado, líneas, tablas, logos, etc.) que pueden ser parte o no del documento firmado,
143pero que en muchos casos son necesarias para la elaboración de documentos formales o legales.
144En el caso de los formatos XML la visualización no es automática, por lo tanto si se requiere visualizar
145el contenido con elementos de forma se debe disponer de un software visualizador que formatee el contenido. En \cite{IEEEhowto:neubauer} se muestra una propuesta
146para documentos XML que necesitan por disposiciones legales o formales de gobierno aplicar forma a documentos
147firmados electrónicamente.
148
149Una de las potencialidades de la firma electrónica es su integración con sistemas informáticos para la
150mejora de procesos mediante la eliminación de puntos lentos. Es por ello que los temas
151de integración y arquitectura juegan un papel preponderante. En esta tendencia se inscribe el proyecto \textit{@firma}:
152una solución desarrollada por el Ministerio de Hacienda y Administraciones Públicas de España,
153 que se plantea como una plataforma de firma electrónica orientada a brindar servicios de gobierno electrónico, y que está integrada
154con el sistema de identificación Español. Cuenta con
155una aplicación de escritorio que puede usarse en diversos sistemas operativos, y un \textit{applet}\cite{IEEEhowto:java}  para usar la firma
156a través de la web. Estas características habilitan a \textit{@firma} para el desarrollo de aplicaciones de gobierno
157electrónico, así como también para la integración con sistemas empresariales.
158
159
160
161\section{Acoplamiento de la Firma Electrónica Avanzada}
162
163
164
165La conexión entre un  componente (software) y el sistema informático se denomina acoplamiento. Este procedimiento debe cumplir con un
166conjunto de requisitos que tienen que ver con  características
167tales como reutilización, cohesión y la exportación de una interfaz definida.
168A continuación se describen los elementos desarrollados en este trabajo.
169
170
171\subsection{Componente de Firma Electrónica Avanzada}
172
173Se desarrolló un componente que permite realizar diferentes operaciones
174asociadas con la firma electrónica: subir un documento desde el computador cliente;
175realizar la firma utilizando una tarjeta inteligente con PIN (contraseña) desde el computador cliente y
176entregar un archivo firmado en formato XAdES\cite{IEEEhowto:xades}  al programa servidor. El componente se ha denominado
177de Firma Electrónica Avanzada (ComponenteFEA), ya que cumple con las condiciones citadas  en la sección \ref{sec:modelo}  sobre este tipo
178de firma.
179
180
181Las funcionalidades que implementa el ComponenteFEA son las siguientes:
182\begin{enumerate}
183 \item Firmar electrónicamente (para este caso se asume que lo electrónico está asociado un dispositivo en hardware como una tarjeta inteligente. y
184 en relación a ello debe connotar vinculación jurídica, lo digital solo a una clave en software) un documento de tipo de archivo definido por especificación MIME\cite{IEEEhowto:mime}.
185\item Firmar digitalmente 
186(usando un archivo PKCS\#12\cite{IEEEhowto:pkcs12}) un documento de tipo de archivo definido por especificación MIME .
187\item Verificar un archivo firmado electrónicamente  usando o no validación OCSP.
188\item  Verificar un archivo firmado digitalmente  usando o no validación OCSP.
189\item Mostrar propiedades como algoritmos utilizados, fecha y lugar de la firma de un archivo firmado
190 \item Firmar electrónicamente utilizando un componente para el navegador  un documento de tipo de archivo definido por
191especificación MIME.
192\end{enumerate}
193 
194
195\begin{verbatim}
196
197class BDocDocument : QObject {
198// *** Métodos para firma electrónica
199    BDocDocument();
200    void init();
201    void create( const QString file );
202    bool openBDocContainer(const QString path);
203    void saveBDocContainer(const QString path);     
204    bool signWithP12(const QString  profile,...);
205    void addDocument(const QString path);
206
207// ** Mètodos de firma por navegador web
208    bool presignWeb(const QString  profile, ...);
209    bool postsignWeb(const QString  profile, ...);
210
211
212// ** Métodos para validación
213    QString signatureAlgorithm(int index );
214    bool validateOffline() const ;
215
216// ** Métodos para Gestión de archivos
217    QString signatureFormat(int index );
218    QString signatureDateTime(int index );
219    QStringList signatureLocation(int index );
220    QString signatureRol(int index );
221    QString signatureDigestMethod(index )
222    QString subjectCertificateCommonName(int i);
223    QString documentName(int docId);
224    int documentCount();
225    int signatureCount();
226    void saveDocument(int docId...);
227
228
229}
230\end{verbatim}
231\begin{center} \textbf{Listado 1.} API del ComponenteFEA en C++ accesible desde \textit{python}
232\end{center}
233
234Bajo esta perspectiva  se propone tratar las funcionalidades
235 asociadas a la Firma Electrónica Avanzada, es decir, empaquetar las funcionalidades  exportando una API (por su siglas en inglés Interfaz
236de Programación de Aplicaciones) que puede ser utilizada de forma  encapsulada y separada por una aplicación anfitrión,
237escrita teóricamente en cualquier lenguaje de programación.
238Uno de las aplicaciones que trabaja bajo este esquema de complementos o componentes es el navegador web, este  diseño ha permitido
239contar con grandes repositorios que extienden las funcionalidades del navegador casi para cualquier uso.
240
241\begin{figure}[htb]
242\centering
243\includegraphics[width=8cm]{imagenes/uml.png}
244\caption{Diagrama UML de acoplamiento}
245\label{fig:uml}
246\end{figure}
247
248La figura \ref{fig:uml} muestra un diagrama en lenguaje UML del componente y su conexión con un sistema
249informático. Existen tres tipos de funcionalidades que exporta el ComponenteFEA: ''Firmar'', interfaces para firma electrónica y digital,
250''Validar``, interfaces para validación fuera de línea y en línea de certificados electrónicos, y ''Gestionar``, interfaces para la almacenamiento
251y búsqueda de archivos firmados.
252
253
254A nivel de lenguaje de programación se provee un paquete o \textit{package} para \textit{python} que está construido envolviendo
255 una librería de firma electrónica avanzada escrita en lenguaje \textit{C/C++}.
256El listado \textbf{1}  muestra los métodos que son accesibles desde \textit{python}.
257
258
259
260\subsection{Método de conexíón}
261
262
263El diagrama de flujo de la figura \ref{fig:acoplamiento} muestra los pasos a seguir para incorporar el ComponenteFEA
264 dentro de un proceso de una organización.  Los primeros dos pasos de este diagrama  corresponden a la 
265identificación de  los puntos de firma y validación dentro del proceso de negocio,
266para luego conectar los métodos (mensajes)  correspondientes del ComponenteFEA  en dichos puntos.
267
268
269
270\begin{figure}[htb]
271\centering
272\includegraphics[width=8cm]{imagenes/flujoComponenteFE.jpg}
273\caption{Diagrama de flujo para el acoplamiento del ComponenteFEA}
274\label{fig:acoplamiento}
275\end{figure}
276
277
278En un siguiente paso y dependiendo del tipo de proceso a automatizar se adoptará un esquema de conexión para el
279servidor.  En esta fase se establecen algunos aspectos importantes relativos al sistema
280informático a colocar en funcionamiento, entre estos están la existencia de un sistema automatizado,
281el tipo de lenguaje de programación y sistemas operativos a utilizar, el soporte de la PKI, la asignación de las tarjetas inteligentes, entre otros.
282
283
284En este punto el desarrollador tiene la libertad
285de utilizar el componente de firma
286según su criterio, sin embargo, puede seguir algunas pautas  relacionadas con el  proceso a automatizar.  Si el proceso no se encuentra automatizado se recomienda
287seleccionar para el desarrollo de software el lenguaje
288\textit{python}.  Para el caso anterior o si el sistema se implementó utilizando este lenguaje se sigue el paso 7.1 de la figura \ref{fig:acoplamiento} que
289corresponde
290con la instalación del componente ''servidor`` para la Firma Electrónica Avanzada.
291
292
293En el caso de que los procesos de negocio se encuentren automatizados bajo un lenguaje
294diferente a \textit{python}, se utilizan la interfaz de  servicios web\footnote{La interfaz de servicios web
295está disponible en: http://bazaar.launchpad.net/\~esignature/esignature/bdoc/files/head:/server/} que provee del ComponenteFEA (Paso 8.1 de la figura \ref{fig:acoplamiento}).
296
297
298
299Un tema a tomar en cuenta es el relativo al tipo de repositorio donde se almacenan los archivos firmados. El ComponenteFEA genera archivos tipo XAdES con extensión
300\textit{.bdoc}. Para este fin puede utilizarse un directorio en el sistema de archivos o un gestor de  base de datos relacional. En este
301punto también hay que trabajar sobre el nombramiento, es decir la forma como se  identifican unívocamente los archivos para que puedan ser encontrados. Para ello  se puede utilizar la vinculación de
302metadatos en los registros de las tablas de la base de datos relacional, o simplemente
303asignar un nombre como clave única a los archivos firmados.
304
305
306
307
308Como último paso se debe habilitar un módulo para gestionar los archivos firmados (paso 9 de la figura \ref{fig:acoplamiento}), es decir,
309proveer una interfaz de usuario para las acciones
310 de visualización de propiedades de  archivos, validación
311de firmas electrónica, búsqueda, entre otras. Estas funcionalidades las provee el ComponenteFEA
312mediante los métodos que se nombran en la sección
313''Métodos para Gestión de archivos`` del Listado \textbf{1},
314y pueden ser extendidas utilizando algunas de las funcionalidades del gestor de datos que se utilice.
315
316
317\section{Casos de estudio}
318
319A continuación se muestran tres casos de integración utilizando un mismo proceso con diversos sistemas informáticos.
320El proceso tratado es el conocido como ''Orden de compra``, el cuál está presente en muchas organizaciones.
321Consiste en realizar un proceso de negocio con la finalidad de  obtener un conjunto de productos o servicios necesarios para la organización a través de una búsqueda y evaluación de
322un cierto número de cotizaciones y que siguen una serie de criterios, como por ejemplo, las características de calidad y precio. El proceso en pasos
323se puede describir así:
324\begin{enumerate}
325 \item Generar una requisición o documento de solicitud para el conjunto de productos o servicios
326\begin{itemize}
327 \item Firma del solicitante
328\end{itemize}
329 \item Obtener por los menos n  $(n\geq2)$  cotizaciones para el conjunto de productos o servicios
330\item Seleccionar una cotización y generar un acta
331\begin{itemize}
332 \item Firma del analista de compras
333\end{itemize}
334\item Generar una orden de compra
335\begin{itemize}
336 \item Firma del gerente del departamento
337\end{itemize}
338\end{enumerate}
339
340Generalmente este proceso se lleva a cabo utilizando firmas manuscritas en coordinación con un sistema informático:
341se imprime desde el sistema el documento (requisición, acta u  orden de compra), se firma, y luego se actualiza la información en el sistema informático.
342
343Para el caso de estudio planteado se  puede sustituir  la primera, la segunda  o las tres  firmas manuscritas por sus respectivas firmas electrónicas.
344También es posible agregar firmas electrónicas en puntos donde no existen firmas manuscritas.
345
346La segunda funcionalidad a conectar del ComponenteFEA es la validación de los documentos firmados electrónicamente.
347 Para ello se identifican los puntos donde se actualiza la información
348sobre la firma manuscrita. Una tercera funcionalidad es la que tiene que ver con la visualización de  los atributos  de los documentos firmados electrónicamente.
349
350Después del proceso de identificación, para  cada punto que se determinó en la fase anterior,  se incorporan  los métodos
351del ComponenteFEA con llamadas locales o remotas  según sea el caso. A continuación se presenta tres  implementaciones del proceso
352''Orden de compra`` para tres sistemas informáticos diferentes.
353
354
355\subsection{Caso OpenERP }
356
357OpenERP\footnote{Ver la dirección web: http://www.openerp.com} es un software de Planificación de Recursos Empresariales (ERP, por sus siglas en inglés), software libre,
358que tiene un gran número de instalaciones. En su base incluye el proceso de  ''Orden de compra``. Para realizar el acoplamiento se creó
359un nuevo módulo
360de OpenERP. Se identificaron los puntos de firma y validación y se sustituyeron por las llamadas
361respectivas al ComponenteFEA. Como elemento agregado, se creó un nuevo módulo basado en bandejas de documentos -archivos generados por OpenERP-
362(similar a las usadas en los clientes de correo electrónico)
363asociadas a los documentos a ser firmados electrónicamente.
364
365
366La figura \ref{fig:openerp} muestra la interfaz de usuario para gestionar los archivos firmados electrónicamente. Los usuarios autorizados pueden utilizar una
367tarjeta inteligente para firmar los documentos correspondientes al proceso de ''Orden de compra``, teniendo la misma validez legal (especificado por
368las políticas de la PKI y la legislación del país) que la firma manuscrita.
369 Primero el solicitante firma  la requisición, y este documento se envía a  la bandeja del analista de compra, quién busca las cotizaciones correspondientes y
370  selecciona el conjunto de productos a comprar. Se generan los documentos ''Acta'' y ``Orden de compra'', este último es enviado a la bandeja del gerente quién
371lo firma  para aprobar la compra del conjunto de productos o servicios seleccionados.
372
373
374OpenERP provee al desarrollador patrones Modelo-Vista-Controlador (MVC) y un motor de flujo de trabajos o \textit{Workflow} para implementar nuevas funcionalidades.
375Usando estas herramientas los documentos firmados se vinculan al modelo de datos y las validaciones de firma electrónica se realizan
376extendiendo el flujo de trabajo relacionado con el proceso ``Orden de compra'' base de OpenERP.
377
378
379\begin{figure}[htb]
380\centering
381\includegraphics[width=8cm]{imagenes/openerp.png}
382\caption{Interfaz de usuario OpenERP para el ComponenteFEA}
383\label{fig:openerp}
384\end{figure}
385
386
387La última captura de pantalla de la figura \ref{fig:openerp} muestra un cuadro  de diálogo que pide un PIN o contraseña  al usuario. Esta interfaz forma
388parte del complemento Web que debe ser instalado en el cliente (navegador) y que tiene interacción con el certificado firmante contenido en una
389tarjeta inteligente.
390
391
392
393\subsection{Caso SAID}
394
395
396SAID\footnote{Ver la dirección web: http://said.cenditel.gob.ve/wiki } es un sistema administrativo que incluye procesos contables
397y administrativos para instituciones que operen en el sector público venezolano.
398Entre los procesos que implementa SAID está el de `Orden de compra``, que incluye entre sus capacidades la posibilidad de utilizar firmas digitales basadas en el formato  PKCS\#7.
399
400El sistema fue escrito en PHP Versión 4.X, y
401es de código libre. Los puntos de firma y validación están claramente identificados, ya que son los indicados por las firmas digitales,
402en este caso solo se sustituyen las llamadas a la API del motor criptográfico local, por llamados a los servicios web del ComponenteFEA. El listado
403 \textbf{2} muestra
404las llamadas que se insertaron en el código fuente para extender el sistema de tal manera que funcione con firmas electrónicas avanzadas.
405 El repositorio de archivos firmados a utilizar es
406PostgreSql Version 8.4 (El mismo que utiliza SAID). El listado \textbf{2} muestra el código en PHP para validar una firma electrónica y mostrar los firmantes de un
407documento del proceso de Orden de compra: requisición, acta u orden.  Después de realizar la conexión al servidor \textit{localhost} por el puerto 4242, se procede
408a abrir un archivo firmado el método ''openBDocContainer`` a través de una llamada remota, luego se utiliza el método ''validateSignature`` para validar
409la firma, y finalmente se listan todos los firmantes  utilizando el método  ''subjectCertificateCommonName``.
410
411\begin{verbatim}
412 <?php
413
414include('xmlrpc.php');
415
416$connec = new XMLRPCClient('localhost:4242');
417$identificador = 'prueba1';
418$connec->__call('init', array($identificador));
419$connec->__call('openBDocContainer',
420array($identificador,
421'detalle_curso.odt.bdoc'));
422$resp = $connec->__call('signatureCount',
423array($identificador));
424$firmantes = Array();
425for($pos=0; $pos<$resp; $pos++)
426{       
427        $datos = Array();
428        $valida = 'No válido';
429        if($connec->__call('validateSignature',
430array($identificador,$pos)))
431        {
432           $valida = 'Válido';
433           $nombre = 
434 $connec->
435   __call('subjectCertificateCommonName',
436array($identificador,$pos));
437           $firmantes[] = array('nombre'=> $nombre,
438'valida'=>$valida);
439        }
440}
441
442for($i=0;$i<count($firmantes);$i++)
443{
444        echo "{$firmantes[$i]['nombre']}
445{$firmantes[$i]['valida']}\n";
446}
447?>
448\end{verbatim} \begin{center} \textbf{Listado 2.} Conexión mediante servicios web-rpc desde SAID al ComponenteFEA
449\end{center}
450
451
452De forma similar al caso OpenERP, se provee un complemento para el navegador de tal manera que los usuarios puedan
453realizar la firma de forma remota, utilizando una tarjeta inteligente desde su estación de trabajo. Luego el documento
454se procesa por el sistema SAID, y se almacena en la base de datos del servidor.
455
456\subsection{Caso Flujos de Trabajo}
457
458El proceso especificado en esta sección puede modelarse  usando un motor de flujo de trabajo. Los flujos de trabajo son ampliamente utilizados para modelar procesos
459a través de un lenguaje descriptivo como BPM o BPEL\cite{IEEEhowto:bpel}.  Para implementar el proceso de ''Orden de compra`` se utilizó el motor
460SAFET\cite{IEEEhowto:safet}, ya que incorpora
461el ComponenteFEA nativamente, solo se necesitan especificar los puntos en el proceso donde se requiere la firma electrónica. La validación la realiza el motor de forma
462automática. Para este caso los pasos 1 y 2 del Diagrama de flujo para el acoplamiento del ComponenteFEA, se realizan sin  la necesidad de agregar o modificar
463código fuente, solo se especifica en el archivo de definición de flujo.
464
465\begin{verbatim}
466<task id="Requisicion"
467 title="Acción de solicitud de bien o servicio" >
468<port side="forward" type="split" >
469<connection source="Cotización"
470query="vRequisicion SIGN NombreComunUsuario"
471options="" >
472</connection>
473</port>
474<variable id="vRequisicion" scope="task"
475tokenlink=""
476documentsource="select  id,
477nombre,descripcion,
478fechageneracion
479from requisiciones" >
480</variable>
481</task>
482\end{verbatim}  \begin{center} \textbf{Listado 3.} Tarea de firma de requisición usando SAFET (XML)
483\end{center}
484
485El listado \textbf{3} muestra la definición de la acción de firma electrónica  en un flujo de trabajo (SAFET).  El usuario definido por
486el \textit{NombreComunUsuario} debe firmar electrónicamente el documento de requisición para pasar a la siguiente actividad
487que en este caso se denominada \textit{Cotización}.
488La sentencia \textit{vRequisicion \textbf{SIGN} NombreComunUsuario} indica al motor de flujo de trabajo lo descrito anteriormente.
489
490
491\section{Conclusiones}
492
493En un mediano plazo la Firma Electrónica Avanzada  puede consolidarse como una tecnología fundamental en los procesos
494de negocio ya que propone la digitalización de un elemento  imprescindible en este contexto como lo es la firma manuscrita.
495Los retos de la digitalización son diversos y complejos, y tienen que ver con aspectos disímiles como lo son por ejemplo los formatos
496de archivo de firma electrónica y la ergonomía para el uso de esta tecnología.
497
498En este trabajo se detalla un método para la integración de un componente de software con sistemas informáticos
499que automatizan procesos de negocio. En la fase de  acoplamiento se define la identificación
500de puntos de firma electrónica, se especifica la  validación de los certificados firmantes por una PKI,
501se muestra la habilitación del navegador web para la firma electrónica (basada en tarjetas inteligentes) 
502a través de un complemento y se discute sobre los parámetros de seguridad de los formatos de firma electrónica.
503Las tareas como la construcción de un gestor de archivos firmados se proponen como una actividad  complementaria.
504
505
506Con la finalidad de mostrar la aplicación del método  propuesto en sistemas en situaciones reales se mostraron tres casos de estudio,
507cada uno con sus particularidades.
508 El acoplamiento del ComponenteFEA con los sistemas
509informáticos OpenERP, SAID y SAFET siguen el método descrito en el trabajo, evaluando para todos los casos especialmente el tipo de conexión
510a utilizar  (local o remota), el tipo de almacenamiento y el procedimiento para la conexión en los puntos de firma electrónica y validación.
511
512
513El análisis de vulnerabilidades  es un tema omnipresente en el área
514de seguridad informática, y está relacionado con este trabajo a través del análisis de los formatos, protocolos y
515tecnologías utilizados en el proceso de integración.
516
517Existen otros aspectos que no se discuten en este trabajo pero que se consideran importantes para la  aprehensión de la
518tecnología de firma electrónica. Entre ellos se pueden señalar la mejora de  la experiencia del usuario 
519y la visualización de  los archivos de formato XML firmados electrónicamente.
520
521En el tema específico de integración, en \cite{IEEEhowto:eID} se discute sobre la necesidad de
522abrir el compás de aplicaciones
523compatibles con la tecnología de Firma Electrónica Avanzada, y en general, sobre la asunción de un nuevo paradigma en el despliegue
524de procesos de negocio.
525
526
527
528
529
530
531 
532
533
534\begin{thebibliography}{1}
535
536
537\bibitem{IEEEhowto:neubauer}
538Neubauer, T.; Weippl, E.; Biffl, S., "Digital signatures with familiar appearance for e-government documents: authentic PDF," Availability,
539Reliability and Security, 2006. ARES 2006. The First International Conference on , vol., no., pp.8 pp.,, 20-22 April 2006
540
541\bibitem{IEEEhowto:software}
542Campderrich Falgueras, Benet. Ingeniería del Software. Editorial UOC. Barcelona, España. 2003.
543
544
545\bibitem{IEEEhowto:directiva}
546DIRECTIVA 1999/93/CE DEL PARLAMENTO EUROPEO Y DEL CONSEJO. Diciembre 1999. Disponible en: http://www.cert.fnmt.es/legsoporte/D\_1999\_93\_CE.pdf
547
548\bibitem{IEEEhowto:x509}
549Cooper D.,  Santesson S., y otros. Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile. Request for Comments (RFC) 5280. May 2008.
550Disponible en: http://www.ietf.org/rfc/rfc5280.txt. Febrero 2013.
551
552\bibitem{IEEEhowto:xades}
553Cruellas, J. Karlinger G., y otros. XML Advanced Electronic Signatures (XAdES). W3C Note 20 February 2003.
554
555\bibitem{IEEEhowto:xmldsig}
556Bartel M., Boyer J., y otros. XML Signature Syntax and Processing (Second Edition). W3C Recommendation 10 June 2008.
557Disponible en: http://www.w3.org/TR/xmldsig-core/. Febrero 2013.
558
559
560\bibitem{IEEEhowto:pki}
561Duane. N. Brink, J. PKI: Infraestructura de Clave Pública. McGrawHill 2002.
562
563\bibitem{IEEEhowto:bpel}
564Matjaz Juric, Mathew Benny. Business Process Execution for Web Services BPEL and BPEL4WS. 2 Ed. Packt Publishing. 2006.
565
566
567\bibitem{IEEEhowto:safet}
568Bravo, V. Araujo A., SAFET: Sistema para la generación de aplicaciones de firma electrónica. Revista Puente. Vol 6. Número 1. Bucaramanga, Colombia. 2011.
569
570\bibitem{IEEEhowto:pkcs7}
571PKCS\#7.Cryptographic Message Syntax. Disponible en: https://tools.ietf.org/html/rfc2315. Febrero 2013.
572
573\bibitem{IEEEhowto:mime}
574Security Multiparts for MIME. Multipart/Signed and Multipart/Encrypted. Disponible en: http://tools.ietf.org/html/rfc1847. Febrero 2013.
575
576\bibitem{IEEEhowto:pkcs12}
577PKCS\#12.Personal Information Exchange Syntax Standard. RSA Laboratories. Disponible en: https://www.rsa.com/rsalabs/node.asp?id=2138. Febrero 2013.
578
579
580\bibitem{IEEEhowto:pades}
581PAdES. PDF Advance Electronic Signatures. Disponible en: http://www.etsi.org/deliver/etsi\_ts/
582102700\_102799/10277801/01.01.01\_60/ts\_10277801v010101p.pdf. Febrero 2013.
583
584\bibitem{IEEEhowto:java}
585Richardson Clay, Avondolio Donald, others. Professional Java, JDK. 5th Edition. Wrox. February. 2005.
586
587
588\bibitem{IEEEhowto:bdoc}
589Formato para firmas electrónicas. Disponible en: http://www.signature.it/-TOOLS/Bdoc-1.0.pdf. Febrero 2013.
590
591
592\bibitem{IEEEhowto:eID}
593Andreas Poller, Ulrich Waldmann, Sven Vowe, Sven Turpe, Electronic Identity Cards for User Authentication
594Promise and Practice, IEEE Security \& Privacy, vol. 10, no. 1, pp. 46-54, January/February, 2012
595
596\bibitem{IEEEhowto:espana}
597Portal del DNI Electrónico Español. Disponible en: http://www.dnielectronico.es/. Febrero 2013.
598
599\bibitem{IEEEhowto:estonia}
600Oficial Gateway to Estonia. Disponible en: http://estonia.eu/about-estonia/economy-a-it/e-estonia.html. Febrero 2013.
601
602\end{thebibliography}
603
604%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{victor.png}}]{Víctor Bravo}
605Víctor Bravo nació en Maracaibo, Venezuela. Es Ingeniero de Sistemas y tiene una maestría en Computación de la Universidad de los Andes (ULA),Venezuela.
606Ha trabajado como director en importantes
607proyectos vinculados a procesos de Certificación Electrónica masiva tal como ''Software de Gestión Autoridad Raíz de la
608PKI Pública Nacional``. Ha dictado conferencias sobre temas de certificación electrónica en varios países. Actualmente está
609adscrito como Investigador a la Fundación CENDITEL, y ha sido profesor desde el año 2005 de la cátedra de Matemáticas Discretas del
610Departamento de Computación de la ULA.
611%\end{IEEEbiography}
612
613
614%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{antonioaraujo.jpg}}]{Antonio Gregorio Araujo Brett}
615Antonio Araujo es Ingeniero de Sistemas, egresado de la Universidad de Los Andes, en
616Mérida, Venezuela. Actualmente
617cursa estudios de Maestría en Computación de la Facultad de Ingeniería
618de la Universidad de Los
619Andes. Ha asesorado
620proyectos de certificación
621electrónica y participado como ponente en varias jornadas y congresos de
622certificación electrónica y
623firmas electrónicas en el país.
624Se desempeña desde el año 2007 como Analista de la gestión de
625desarrollado en Tecnologías Libres de
626la Fundación Centro Nacional de Desarrollo e Investigación en
627Tecnologías Libres – CENDITEL Nodo
628Mérida.
629%\end{IEEEbiography}
630
631%\begin{IEEEbiography}[{\includegraphics[width=1in,height=1.25in,clip,keepaspectratio]{jogerquintero.jpg}}]{Joger André Quintero Escalante}
632
633Joger Quintero es Técnico Superior en Informática, egresado del Instituto Universitario Tecnológico de Ejido, en
634Ejido, Venezuela.  Se desempeña como Analista Desarrollador en CENDITEL(Nodo Mérida) desde el año 2011.
635%\end{IEEEbiography}
636
Note: See TracBrowser for help on using the repository browser.