Sunteți pe pagina 1din 21

eSurvey Proyectodeencuestaselectrnicas

Manualdelimplementador
ndice de contenido
Introduccin..........................................................................................................................................2 Requisitos.............................................................................................................................................3 Requisitosdesoftware.....................................................................................................................3 Requisitosdepuestaenmarcha.......................................................................................................3 Requisitosdefuncionamiento..........................................................................................................4 Instalacindelsistema..........................................................................................................................5 Instalacindelapplet.......................................................................................................................5 Elappletenlapartedelcliente...................................................................................................8 Instalacindelaaplicacindefirma.............................................................................................10 Serviciodeautenticacin..........................................................................................................11 Instalacindelaurna.....................................................................................................................12 Procedimientodelaurna...........................................................................................................13 Puntosatenerencuentaparalaimplementacindelaurna....................................................15 Formatos.............................................................................................................................................15 Formatodelaspreguntas...............................................................................................................15 Formatodelalistadeservidores...................................................................................................16 Formatodelticket..........................................................................................................................17 Formatodelticketafirmaryavalidar......................................................................................18 Formatodelaencuesta..................................................................................................................19 Formatodelpaquetealllegaralaurna..........................................................................................21

eSurvey:EncuestasElectrnicas1

1.Introduccin
El proyecto eSurvey est pensado para que las encuestas electrnicas sean totalmente annimas,loqueenotrosistemasnosepuedeasegurar,yaquesiunusuarioest registradoose conocesuIP,esmuysencilloaveriguarquinharellenadocadaencuesta. El sistema presentado permite realizar encuestas estando autenticado, sin dejar de ser annimo.Estoseconsigueporvariasrazones:elsistemadeencuestasnosabequinestrealizando laencuesta,nicamentesabesitieneonopermisoutilizandoparaelloelsistemadeautenticacin, totalmenteindependientedeldelasencuestas.Adems,laaplicacindeclienteesunappletque realiza la mayor parte del trabajo. Por ltimo, y la parte ms importante para conseguir el anonimato,cuandoseenvaunaencuesta,estanollegadirectamentealaurnadondesedepositan todas, sino que permanece durante un tiempo definido en una red de tolerancia en la que los paquetesestncifradosporcapas,portanto,elpaquetenosedescifradeltodohastaquenose depositaenlaurna,queeslaltimacapa. Amododeresumen,laaplicacinimplementadarealizalossiguiente:unavezelusuarioha rellenadolaencuestaypulsaelbotn,elappletqueyahacalculadolasrutaspordondesedebern enviarlospaquetesquecontienenlosresultadosdelaencuesta,genera10ticketsopcadosiguales salvoporelidentificadoralservidordefirma,y ste,unavezdesopaca9ycompruebaqueson iguales,firmaelquelequedaopacadoyselodevuelvealapplet.Esteticketfirmadoservir para verificarqueelusuariotenapermisoparaentregarlaencuesta.Acontinuacinelappletdesopacar elticketygenerar,juntoconlosresultadosdelaencuesta,lospaquetesqueenviaracadaunade lasrutascalculadasatravsdelservidordefirmaquehardeproxy.Cadaunodelosservidorespor losquepaseelpaquetedescifrar sucapayenviar elpaquetealsiguienteservidor.Unavezel paquetelleguealaurna, stalodescifrar ycomprobar queelticketseavlido,encuyocaso almacenarlosresultadosdelaencuesta. Acontinuacinseespecificanlosrequisitosnecesariosparaponerenfuncionamientola aplicacin,ycmosedeberealizarsupuestaenmarcha.

eSurvey:EncuestasElectrnicas2

2.Requisitos
2.1.Requisitosdesoftware
Paraponerenfuncionamientolaaplicacin,enprimerlugar,esnecesariodisponerde:

UnservidorTomcatparainstalarlapartedelaaplicacindestinadaalservidor. Parainstalarelapplet,stepuedeintegrarseenelservidorTomcat,oenelservidorwebdelque sedispongaparaelrestodelasaplicaciones.Enestemanualsevaaexplicarparaelcasodel servidorApache. Una lista de servidores para la red de tolerancia, con un mnimo de cuatro servidores en funcionamiento. Unserviciodelapartedelsistemadeautenticacin,quedeterminesielusuarioquerellenala encuestatienepermisoparahacerlo.

Enelsistemasehadesarrolladocomoejemplolapartedelaurna,quepuedeseradoptado paraelsistemaaponerenmarcha,obienpuedeimplementarseyadaptarsealasnecesidadesde cadauno.EndichoejemplosehaimplementadoenJava,aunquepodrahacerseperfectamentecon otroslenguajes,comoporejemploenphp,porloqueesnecesario:

UnservidorTomcat,enelejemploeselmismoenelquealojalaprimerapartedelsistema, aunquenotendraporquserelmismo. UnabasededatosMySQLdondesealmacenarnlosresultadosdelaencuesta.

2.2.Requisitosdepuestaenmarcha
Unavezcubiertoslosrequisitosdesoftware,parapoderponerenfuncionamientola aplicacin,senecesita:

Unaarchivoenformatoxmlquecontengalalistadetodoslosservidoresdelareddetolerania, elcualdebeestarfirmado. Disponerdeuncertificadoparalaaplicacindelservidor,queser conelquesefirmar el ticketnecesarioparaentregarlaencuesta.Conestecertificado,adems,seopacarelticketpara realizarunafirmaciega,ytambinserconelquesefirmelalistadeservidores. Uncertificadoparalaurna,conelquesecifrar la ltimacapadelpaquetequecontienelos resultadosdelaencuesta. Deformaopcional,sepuededisponerdeuncertificadoparacifrarlosresultadosdelaencuesta, deformaqueseguardenasenlaurnaynopuedanserdescifradoshastaelmomentodeabrirla. Uncertificadoparaelservidordonderesidelaaplicacindefirmadeticket,opcional,paraque eSurvey:EncuestasElectrnicas3

lasconexionesrealizadasconesteservidorutilicenelprotocolossl.

2.2.Requisitosdefuncionamiento
Una vez instalado el sistema correctamente, para que pueda funcionar de acuerdo a lo esperado,sedebencumplirlossiguientespuntos:

La fecha de todos los ordenadores conectados al sistema deber estar perfectamente sincronizada,paraquelasencuestaspuedanentregarseenlostiemposcalculados. Parapoderentregarlasencuestas,sedeterminar unafechafinaldeenvo,esdecir,lafecha hastalacualunusuariopodr entregarunaencuesta,ylafechafinaltotaldeenvo,queesla fechahastalaurnaaceptar laurna.Estevalordeber serlosuficientegrandecomoparaque unaencuestaentregadaenel ltimomomentopuedallegaralaurna,ydepender asuvezdel tiempoderecargadelosservidores. Parapoderenviarlaencuesta,esnecesarioquealmenoscuatrodelosservidoresqueformanla reddetoleranciafuncionen,paratenerunmnimodetrescaminoscontresservidorescadauno. Unnmeromenordeservidoresnoseraviable,puesnoparecerazonabletenercaminosdedos servidores,yaqueseramuysencilloaveriguardondeestelpaqueteencadamomento. Elformato*delalistadeservidoresdebedesereladecuado,yestarfirmadocorrectamente,en casocontrariolaencuestanopodrserenviada. Cadaunodeloscamposhtmldelaspreguntasqueaparezcanenlaencuestaarellenarporel usuariodeber tenerasignadounnombrecuyoformato*siguelasiguienteexpresinregular: preg([09]+)(\.[09]+)*.Encasocontrariolaaplicacinnodetectarlaspreguntas.

*Losdistintosformatosqueelimplementadoroinstaladordelsistemanecesitaconocersedescribenenelapartado deformatos.

eSurvey:EncuestasElectrnicas4

3.Instalacindelsistema
3.1.Instalacindelapplet
Paracomenzarconelapartado,sedetallaunalistacontodoslosarchivosnecesariosparael funcionamientodelapplet:

applet.jar>contienetodaslasclasesimplementadasparalaaplicacincliente bcprovjdk15137.jar > librera Bouncy Castle necesaria para todas las operaciones criptogrficas jaxbapi.jar, jaxbimpl.jar, activation.jar, jsr_173_api.jar > libreras necesarias para el parseodexml xmldsig.jar,xmlsec.jar>librerasnecesariasparaverificarlafirmadeunarchivoxml i18n.jar>librerautilizadaparalainternacionalizacindelaaplicacin. imagenes.jar>estepaquetenoesnecesariopuestoquelapartedeguardarlasencuestaspara unposteriorenvomedianteunaaplicacindeescritorionoestimplementada. lib.js>archivojavascriptnecesarioparaelparsearlaspreguntasdelaencuestaypasrselasal appletenelformatoesperado. environment.js>archivojavascriptqueseencargadelentornodeusuario. Paralacorrectainstalacindelapplet,sedebenseguirlossiguientespasos: 1. Todoslosficherosjarnecesariosparaelfuncionamientodelappletestnfirmadosporsus desarrolladores,salvoelquecontieneelapplet(applet.jar),eldelalibreraBouncyCastle (bcprovjdk15137.jar) y el de la librera de internacionalizacin (i18n.jar). Estos dos archivossehanfirmadoconuncertificadodepruebas,ydeberanserdescomprimidosy volverseafirmarconelcertificadodelaempresauorganizacinqueinstaleelsistema,al igualqueelrestodearchivos. 2. Todos los archivos jar debern situarse en una carpeta desde donde el acceso web sea accesible.Serecomiendaquetodoslosarchivosestnenlamismacarpeta,yseadistintaal directoriodondeseencuentrenlaspginaswebdelasencuestas. 3. Se recomienda que los archivos javascript necesarios para el funcionamientodel applet tambinsesitenenlamismacarpetaqueelrestodearchivos,oporlomenosenunoque tengaaccesoweb. 4. Parapoderinstanciarelappletdentrodelapginaweb, stedebeestarintegradomediante laetiquetahtml<applet>,conlossiguientesatributos: id>identificadordelelemento,quedebecontenerelvalorapplet code>claseprincipaldelapplet,alaquesetienequellamaraliniciarlo.Suvalor debeseres.uji.eSurvey.clientApplet.Main.class archive>todoslosarchivosnecesariosparacargarelapplet.Suvalordeberserlas eSurvey:EncuestasElectrnicas5

direccionesrelativas(oabsolutas,dependiendodelainstalacin)detodoslosarchivos mencionados al comienzo del apartado, separadas por comas (el deimgenes no es necesario) mayscript >necesarioparaqueelappletpuedacomunicarseconeljavascript,su valordebersertrue widthyheight>indicanlaanchurayalturadelappletdentrodelapgina.Yaqueel appletnotieneentornodeusuario,elvalordeambosatributosdeberser0 5. Paraqueelappletfuncione,seledebenpasarunaseriedeparmetrosmediantelaetiqueta html<param>,conlosatributos name y value.Cadaunadelasetiquetassedescribena continuacin(formatonombreparmetro>descripcin): idSurvey>identificadordelaencuesta,suvalorserunacadena endingTime >fechadefindeenvodelaencuesta,cuyovalordeber estar en segundosenformatoUnix. totalEndingTime>fechadelcierredeaurna,cuyovalordeberestarensegundos enformatoUnix. longPath>longitudynmeroderutasporlosqueseenviarelpaquete.Suvalores unnmeroyesopcional. authToken >identificadordesesindelusuarioactual,conelquesecomprobar queelusuariotienepermisopararealizarlaencuesta.Suvalorserunacadena signatureURL>direccinURLdelaaplicacinquefirmarelticketdelaencuesta, yqueademshar deproxydelenvo,yconelqueseobtendr lafechaactualdel sistema destURL>direccinURLdelaurnadondesedepositarlaencuesta signatureCert>certificadoconelquesefirmarelticketdelaencuesta destCert>certificadodelaurna destIntCert>certificadoopcional,paracifrarlosresultados servers>listadeURLsparadescargarelarchivoquecontienelalistadeservidores, separadasporcomas. lang>parmetroopcionalparaespecificarelidiomadelaaplicacin.Susvalores puedeser:esparaespaol,caparacatalnyenparaingls.Sinoseincluyeel parmetro, el idioma por defecto ser el espaol. Adems, este parmetro deber contenertambinelatributo id conelvalorjsLang,paraindicarlealjavascriptel idioma.Sinoloencuentra,elidiomapordefectotambinserelespaol. 6. Paraquelosresultadosdelaencuestapuedanserrecogidosporelapplet,ylosresutadosde la ejecucin mostrados, se deben incluir en la pgina web de la encuesta las libreras javascriptconlaetiquetahtml<script>.

Encuantoalentornodeusuario,elarchivoenvironment.jsproporcionaalgunasfunciones alappletparamostrareldesarrollodelaejecucin,porloquelapginawebdelaencuestadeber eSurvey:EncuestasElectrnicas6

tener algunas zonas destinadas a ello, sin olvidar que esto es opcional, pero obviamente muy recomendable.Laszonasqueesperaeljavascript,concuyoatributo id seespecifican,son las siguientes:

eSurveyPgbar>barradeprogresoquedeterminaporqupasodelaejecucinvaelprograma. Enelejemploimplementadoseharepresentadoconunafiladeunatabla: <tablecellpadding="0"cellspacing="0"height="30"width="80%"bgcolor="silver"> <tr> <tdid="eSurveyPgbar"style="height:50%;width:0%;backgroundimage:url(barra.jpg); color:white;textalign:right">0%</td> <tdstyle="width:100%"></td> </tr> </table> eSurveyLog >zonaendondesemuestrancadaunodelospasosquerealizaelappletenla ejecucin,elcualsehaimplementadoenelejemplomedianteunafiladeunatablaconscroll,y quemediantelafuncinshowLogs()sepuedenmostraryocultarloslogs: <tableborder="0"cellpadding="0"cellspacing="0"width="80%"> <tr> <tdwidth=1valign=top><ahref="javascript:showLogs()">Logs</a></td> <td><divid=eSurveyLogstyle="height:6em;backgroundimage:url(eVoting.gif); overflow:auto;visibility:hidden; backgroundcolor:#b7ceec;backgroundposition:topright;backgroundrepeat:no repeat"></div></td> </tr> </table> eSurveyProcessMessage >zonadondesemuestranlosmensajesdeprocesodelaejecucin delapplet.Sehaimplementadoenelejemplomedianteundiv: <divstyle="border:0.1exsolid;width:80%;height:14ex;textalign:center"> <divid="eSurveyProcessMessage"></div> </div>

Comoyasehamencionado,todasestaszonassonopcionales,peroserecomiendatenerlas enlapginadelaencuesta,aunquenolastresjuntas,sinoquemsbienlabarradeprogresoconlos mensajesdelogs,oslolosmensajesdeproceso.Porsilosmensajesdelognoaparecen, stos aparecernsiempreenlaconsoladeJavadelaquedispongaelnavegadorparapoderseguirla ejecucindelprograma. Parafinalizarconelapplet,seespecificanlasfuncionesqueaportaelficherojavascriptde eSurvey:EncuestasElectrnicas7

entorno de usuario desarrollado para el ejemplo. Cabe decir que todas las funciones de comunicacinconelappletsonopcionales,yqueestearchivopuedesermodificadosegnlas necesidadesdecadauno.Lasfuncionesson:

eSurveyAlert>enestafuncinelappletpasar comoparmetroaljavascriptunmensajede erroroalerta,enunprincipioparaquestelomuestrecomotal,paraavisaralusuariodequela encuestanohapodidoserenviadaporelmotivoqueindiqueelmensaje. eSurveyProcessMessage>alinvocarestafuncin,elappletenviar aljavascriptunmensaje indicandolapartedelprocesoporlaqueseencuentra,yunvalorbooleanoindicandosidicho mensajedeberaonoparpadearalapantalla. eSurveyNumSteps>cuandoelappletsabecuantospasosvaatenerlaejecucin,invocaesta funcinparacomunicrseloaljavascript,paraque stesepacmodividirlosporcentajesdela barradeprogreso. eSurveyStep > esta funcin ser invocada con los valores 1,2,3, ... cuando finalicen las distintasfasesdelapplet,hastanqueserlaltima.Enelejemploseutilizaparairaumentando labarradeprogreso. eSurveyLog>enestafuncinelappletleenviaralafuncinjavascriptunmensajeindicando la operacinqueest realizandoenesemomento,conelobjetivodequedichafuncin se muestreenlazonadelogsdelapgina. eSurveyEnd > estafuncinser invocadacuandoelappletfinalicelaejecucin,tantosila encuestasehaenviadocorrectamentecomosino.Selepasar unmensajedeaviso,quese deberapasaralasfuncioneseSurveyLogyeSurveyProcessMessage,yunavariablebooleana queestar atrueencasodequelaencuestasehayaenviadocorrectamente,yafalseencaso contrario. eSurveyEnableButton > estafuncinser invocadaporelappletcuandohayafinalizadoel clculodelasrutasenlareddetolerancia,queser cuandoselepermitaalusuarioenviarla encuesta.

Otras funciones implementadas para el ejemplo, y que no son de comunicacin con el applet,son: blinkProcessMessage paraquelosmensajesdeprocesoparpadeen, showLogs para mostraryocultarlosmensajesdelog,checkLogsparacomprobarsilosmensajesdelogsedeben mostrar,yexplorerparaquelaimagendeloslogssequedefijaenelInternetExplorer6.

3.1.1.Elappletenlapartedelcliente
Cuandoelusuariosedisponearellenarlaencuestayelappletseiniciaenlapartedel cliente,loprimeroquehaceesvalidarloscertificadosquevaautilizarcontraloscertificadosqueel usuariodeberatenerinstaladosensuordenador.Sepuedenproducirvariasalternativas:

eSurvey:EncuestasElectrnicas8

Que el usuario tenga las CAs de los certificados instaladas y stos validen, por lo que la ejecucindelaaplicacincontinua. QueelusuariotengalasCAsdeloscertificadosinstaladasy stosnovaliden,porloquela ejecucindelaaplicacinsedetieneynosepermiteenviarlaencuesta. QueelusuarionotengalasCAsinstaladas,porloque,enestecaso,elappletpideconfirmacin alusuarioparacontinuarconlaejecucin,yslolohaceencasoafirmativo.

EldirectorioquecontendrlasCAsdeloscertificadostendrelnombrede.eSurveyCerts, ysesituarendiferentesdirectoriossegnelsistemaoperativodelusuario:

EnsistemasUNIX,lacarpetadebersituarseenelhomedelusuario EnsistemasWindows,lacarpetadebersituarseeneldirectoriotemporaldelusuario

El directorio .eSurveyCerts contendr una serie de archivos que se describen a continuacin:

trustedCAs.pem > este archivo contiene los certificados de las autoridades certificadoras racesqueexpidieronloscertificadosutilizadosenlaaplicacin trustedChains1.pem,trustedChains2.pem...>cadaunodeestosarchivoscontienelacadena decertificadosintermedios,siendoelprimerodelalistaelutilizadoparaexpedirunodelos certificadosutilizadosenlaaplicacin.Debenestarenorden,desdeelqueexpidielcertificado utilizadohastaelquefueexpedidoporlaautoridadcertificadora.Adems,losnmerosdel nombredelosarchivosdebensercorrelativos,ysislohayuno,debecontenerel1. .keystore >estearchivocontieneloscertificadosnecesariospararealizarlasconexionesssl conlaaplicacindefirma,ydeesemodopodervalidarloscertificadosdeesteservidor,para asegurarsedequelasconexionessegurasserealizanalamquinaenqueseconfa.

Paralainstalacindeloscertificados,sehacreadounscriptdeinstalacindeejemplopara lossistemasUNIX, quepuedeserutilizadoparalaaplicacinocrearunonuevo.Parasistemas Windowsdeber implementarse.Serecomiendaqueestosscriptspuedandescargarseenlapgina dondesemuestrentodaslasencuestasalasqueelusuariotieneacceso,paraquepuedainstalarlos certificadosantesderellenarningunaencuesta.

eSurvey:EncuestasElectrnicas9

3.2.Instalacindelaaplicacindefirma
Paracomenzarconelapartado,sedetallaunalistacontodoslosarchivosnecesariosparael funcionamientodelaaplicacindefirma:

Archivosclassdelaaplicacin>todoslosarchivosjavacompiladosdelaaplicacin,apartir deldirectoriorazes. bcprovjdk15137.jar > librera Bouncy Castle necesaria para todas las operaciones criptogrficas.Eslamismaqueenelapartadodelapplet. Certificadodefirma>elcertificadoconelquesefirmarnlosticketsdelosusuarios.Debe estarenformatoPKCS12paraquefuncionelaaplicacin .keystore>almacndecertificadosquecontendrelcertificadoqueseutilizarenelcasoen quelacomunicacinconelserviciodeautenticacinseassl,esdecir,elcertificadodelservidor dedichoservicio.Estearchivoesopcional,slodebeponersesisevanapermitirconexiones seguras. envio_encuestas.war >archivoquecontienetodalaaplicacinparainstalarlaenelservidor Tomcatvawebatravsdelmanager.

Enprimerlugarvamosacomentarcomoinstalaryconfigurarlaaplicacinsinelarchivo warcomentadoenlaslneasanteriores.Paraellosedebenseguirlossiguientespasos: 1. Crear en el servidor Tomcat un nuevo directorio en webapps, en el ejemplo se ha denominadoenvio_encuestas,quedebecontenerlossiguientesdirectorios: misc WEBINF>lib >classes 2. Copiarlacarpetaes,laquecontienetodoslosarchivosclassestructuradosdebidamente,en eldirectorioenvio_encuestas/WEBINF/classes 3. Copiarelarchivobcprovjdk15137.jareneldirectorioenvio_encuestas/WEBINF/lib 4. Copiar el certificado que se vaya a utilizar para firmar los tickets en el directorio envio_encuestas/misc,enelejemploelarchivosedenominatest.p12 5. Enelcasoenquesedecidarealizarlasconexionessegurasconelserviciodeautenticacin, secopiarelarchivo.keystorequesehayageneradoenlacarpetaenvio_encuestas/misc 6. Sedebecreareneldirectorioenvio_encuestas/WEBINFelarchivoweb.xml,definiendo lossiguientesparmetrosiniciales: authURL>eslaURLdelserviciodeautenticacindelusuario cert>nombredelarchivoquecontieneelcertificadodefirma passCert>contraseadelcertificadodefirma

eSurvey:EncuestasElectrnicas10

keystore>nombredelarchivoquecontieneelalmacndecertificadosutilizadoparalas conexionesssl passKey>contraseadelalmacndecertificados

Enelcasoenquelaaplicacinseinstalemedianteelarchivo envio_encuestas.waratravs delmanagerdelTomcat,paraquelaaplicacinfuncionecorrectamenteenelsistema,sedeber modificar el certificadode firma yelalmacn decertificados, si se vaa utilizar, porlos que requieralainstalacin,ytambinsedeber modificarelarchivodeconfiguracincambiandoel valordelosparmetrosparaqueseadaptenalasnecesidadesdelsistema.

3.2.1.Serviciodeautenticacin
Para que la aplicacin de firma pueda comprobar que el usuario que quiere enviar la encuestatienepermisoparaello,ser necesariodisponerdeunserviciodeautenticacinquele facilitedichainformacin. EsteserviciosecomunicarconlaaplicacinmedianteelprotocoloHTTP.Laaplicacinle harunPOSTalservicioconlossiguientesparmetros:

token>identificadordesesindelusuarioquequiereenviarlaencuesta idSurvey>identificadordelaencuestaqueelusuarioquiereenviar

Elserviciorecogerlosparmetrosycomprobarsielusuariotienepermisosparaenviarla encuesta.Sepuedendevolverlossiguientesresultados: OK>elusuariotienepermisopararellenarlaencuesta Error_auth>nosehapodidoautenticaralusuario Error_perm>elusuarionotienepermisospararellenarlaencuesta Enelcasoenqueelusuariotuvierapermisos,elserviciodeber apuntarsequedicho usuarioyaharellenadolaencuestaseleccionada,paranopermitirquelaentregueenmsdeuna ocasin.

eSurvey:EncuestasElectrnicas11

3.3.Instalacindelaurna
Enprimerlugar,comentarquelaurnaimplementadadeberaservirnicamentedeejemplo, ya que en cada instalacin se debera crear una nueva adaptada a las necesidades del funcionamientodelsistema. Para la correcta instalacin y funcionamiento de la urna de ejemplo, se requieren los siguientesarchivos:

Archivosclassdelaaplicacin>todoslosarchivosjavacompiladosdelaaplicacin,apartir deldirectoriorazes. bcprovjdk15137.jar > librera Bouncy Castle necesaria para todas las operaciones criptogrficas.Eslamismaqueenelapartadodelappletydelaaplicacindefirma. jaxbapi.jar,jaxbimpl.jar>librerasnecesariasparaelparseodexml. mysqlconnectorjava3.1.14bin.jar > librera necesaria para la comunicacin con el servidordeMySQL. Certificadodelaurna>elcertificadoconelquelaurnadescifrar elpaquetequecontiene losresultadosdelaencuesta.DebeestarenformatoPKCS12paraquefuncionelaaplicacin Certificadodefirma >elcertificadoconelquesefirmanlosticketsdelosusuarios,para validarlafirma. recibo_encuestas.war>archivoquecontienetodalaaplicacinparainstalarlaenelservidor Tomcatvawebatravsdelmanager.

Parainstalaryconfigurarlaurnadeejemplosinutilizarelarchivowar,sedebenseguirlos siguientespasos: 1. Crear en el servidor Tomcat un nuevo directorio en webapps, en el ejemplo se ha denominadorecibo_encuestas,quedebecontenerlossiguientesdirectorios: misc WEBINF>lib >classes 2. Copiarlacarpetaes,laquecontienetodoslosarchivosclassestructuradosdebidamente,en eldirectoriorecibo_encuestas/WEBINF/classes 3. Copiar los archivos bcprovjdk15137.jar, jaxbapi.jar, jaxbimpl.jar y mysql connectorjava3.1.14bin.jareneldirectoriorecibo_encuestas/WEBINF/lib 4. Copiarelcertificadodelaurnaeneldirectorio recibo_encuestas/misc,enelejemploel archivosedenominacert_serv.p12 5. Copiarelcertificadoutilizadoparafirmarlosticketseneldirectorio envio_encuestas/misc,

eSurvey:EncuestasElectrnicas12

enelejemploelarchivosedenominacert.pem 6. Sedebecreareneldirectoriorecibo_encuestas/WEBINFelarchivoweb.xml,definiendo lossiguientesparmetrosiniciales: serverCert>nombredelarchivoquecontieneelcertificadodelservidor passCert>contraseadelcertificadodelservidor verifyCert>nombredelarchivoquecontieneelcertificadodefirma user>nombredelusuariodelabasededatosenlaquesealmacenanlasencuestas password>contraseadelusuariodelabasededatos bbdd>nombredelabasededatosdondesealmacenanlasencuestas.Deberempezar por jdbc:mysql:// seguido de la URI donde se encuentra dicha BBDD. Por ejemplo, jdbc:mysql://localhost/encuestas,siendoencuestaslabasededatos ticketsTable > nombre de la tabla de la base de datos donde se almacenan los identificadores de los tickets que han sido entregados, junto con el identificador de la encuestaalaquecorresponden.Amboscampossondetipocadena. resultsTable>nombredelatabladelabasededatosdondesealmacenanlosresultados delasencuestasentregadasjuntoconelidentificadordeencuestaylallavedecifradoenel casoenquelosresultadoshayansidocifrados.Lostrescampossondetipocadena. En el caso en que la aplicacin de ejemplo se instale mediante el archivo recibo_encuestas.war a travs del manager del Tomcat, para que la aplicacin funcione correctamenteenelsistema,sedebermodificarloscertificadosdelservidorydefirmaporlosque requieralainstalacin,ytambinsedeber modificarelarchivodeconfiguracincambiandoel valordelosparmetrosparaqueseadaptenalasnecesidadesdelsistema.

3.3.1.Procedimientodelaurna
Comoyasehamencionadoenelapartadoanterior,laurnaimplementadaslodeberaservir de ejemplo para realizar una nueva. Para ello, a continuacin se describe brevemente el procedimientoquesiguelaurnadeejemploalrecibirunpaquetedelareddetolerancia: 1. Laurnarecibemedianteunpostlosparmetros cryp,elcontenidodelpaquetecifrado,y evky,laclaveparadescifrarelpaquete,queest cifradaasuvezporelcertificadodela urna. 2. Seprocedeadescifrarelpaquetedelasiguienteforma: Sedescifra,enprimerlugar,lallavedecifradodelpaqueteutilizandoparaellolaclave privadadelcertificadodelaurna,medianteelalgoritmoRSA,quefueelutilizadopara cifrardichaclave. eSurvey:EncuestasElectrnicas13

Una vez descifrada la llave, sta se utiliza para descifrar el paquete, mediante el algoritmoRC4,quefueelutilizadoparacifrarelpaquete. 3. Unavezdescifradoelpaquete,seobtieneelcampochal*,queseutilizaparaautenticaral servidor,ysedevuelvealservidorqueenvielpaquete,paraquestesepaquehallegadoal servidorcorrecto. 4. Seobtieneelticket*contenidoenelpaquete,ysecompruebasuautenticidaddelasiguiente forma: Secompruebaquelafechaactualdelsistemaseamenoroigualquelafechadecierrede urnaqueindicaelticket. Acontinuacinsecompruebamedianteelidentificadordelticketsidichaencuestayaha sidoentregada,puestoquealenviarunaencuesta,seenvanvariospaquetesconelmismo contenidoyotropodrahaberllegadoantes. Enelcasoenquelaencuestanohayasidoalmacenadaenlaurna,severificalafirma, obteniendo, en primer lugar, el hashde laparte del ticket que se firm*, utilizando el algoritmoSHA1,yacontinuacinseverificalafirmadelticketcomparandoconelhash obtenido,utilizandoparaelloelcertificadodefirmamedianteelalgoritmoRSA. 5. Silafirmadelticketescorrecta,seprocedeaalmacenarlosresultadosdelaencuestaenla basededatos: Sealmacenaelidentificadordelticketjuntoconeldelaencuestaenlatabladetickets entregados Sealmacenaelidentificadordelticket,losresultadosdelaencuesta,ylallavedecifrado enelcasoenquelaencuestahayasidocifrada,enlatabladeresultados.Enestesegundo caso,losresultadossecifranconlallavedecifradomedianteelalgoritmoRC4,ystaasu vezsecifraconelcertificadoutilizadoparacifrarlosresultadosmedianteelalgoritmoRSA.
*Losdistintosformatosqueelimplementadoroinstaladordelsistemanecesitaconocersedescribenenel apartadodeformatos.

Enelpunto3,sehacomentadoquelaurnaobtieneel chal contenidoenelpaqueteylo envaalservidoranterior.Enestecasoelmensajecontieneun1,queindicaquehadescifradoel paquetecorrectamente,seguidodeunespacioyelvalordel chal,porejemplo1123456789.Sin embargo,sepuedenproducirestosdoserrores:

Elpaquetenosepuededescifrar,porloquelaurnaleenvaalservidoranteriorelsiguiente mensaje:2imposibledescipherpackage,indicandoqueesunmensajedeerrormedianteel2. Elpaquetesehadescifradocorrectamente,peronocontieneelchal,porloqueenestecasola urnaledevuelvealservidorelmensaje2baddatainthepackage,conelmismosignificado del2queenelerroranterior.

eSurvey:EncuestasElectrnicas14

3.3.2.Puntosatenerencuentaparalaimplementacindelaurna
En la implementacin de la urna de ejemplo, hay algunos aspectos que no se han consideradoperoquedeberantenerseencuenta,ysonlossiguientes:

Cadavezqueenlaurnaseproduzcaunerrorquenopermitaalmacenarlosresultadosdeuna encuesta, se debera almacenar un mensaje de log en un archivo del sistema, para que el administradorpudierallevarunseguimientodedichoserroresycorregirlosencasonecesario. Lapartedeaperturadelaurnanoestimplementada,porloquedeberaimplementarseyhacer unaaplicacinaparteparaello. En el caso en que los resultados de la encuesta se guarden cifrado, se recomienda que la aperturadelaurnaserealicemediantesecretocompartido,esdecir,quelallaveprivadadel certificadoconelquesecifraronlosresultadosdelasencuestassecompartaentrelasdistintas personesqueformenlamesaelectoral,yquedebahaberunciertonmerodestasconlasque sereconstruyalallavey,deestemodo,poderdescifrarlosresultados. Laurnanodeberaabrirsehastaquenohayasidocerradayportantonoaceptemsencuestas, paraevitarqueseconozcanresultadosintermedios,quepuedanafectarenlaopinindelresto deusuariosquetodavanolahanrellenado. El software de la urna deber ser auditable, para poder comprobar que efectivamente el softwarequeseinstalaeseloriginal.

4.Formatos
4.1.Formatodelaspreguntas
Comoyasehamencionadoenelapartado2.2,elnombredelaspreguntasdelaencuesta quesedebenincluirenloscorrespondientescamposdelformularioaenviar,siguenlasiguiente expresinregular:preg([09]+)(\.[09]+)* Parailustrarelformatodedichaspreguntas,semuestranlossiguientesejemplo,extradosde lapginawebquesirvedeejemploparaenviarlasencuestas: <td><inputtype="radio"name="preg1"value="si"/></td> <td><inputtype="radio"name="preg1"value="no"/> <inputtype="checkbox"name="preg6.1"value="carne"/> eSurvey:EncuestasElectrnicas15

<inputtype="checkbox"name="preg6.1"value="verdura"/> <inputtype="text"name="preg6.2"/> <textareacols="50"rows="10"name="preg4"></textarea> <selectmultiplename="preg5">


<option <option <option <option <option </select>

value="azul">Azul</option> value="rojo">Rojo</option> value="amarillo">Amarillo</option> value="verde">Verde</option> value="rosa">Rosa</option>

4.2.Formatodelalistadeservidores
ElarchivoquecontienelalistadeservidoresyqueelappletsedescargamedianteunaURL, esunarchivoenformatoxmlquesigueelsiguientexmlShema: <?xmlversion="1.0"encoding="ISO88591"?> <xsd:schemaxmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:elementname="servers"> <xsd:complexType> <xsd:sequence> <xsd:elementname="server"maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:elementname="id"type="xsd:string"/> <xsd:elementname="url"type="xsd:string"/> <xsd:elementname="mail"type="xsd:string"/> <xsd:elementname="weight"type="xsd:string"/> <xsd:elementname="cert"type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> Comosepuedeobservarenelesquema,paracadaunodelosservidoresdelalistasedeben especificarlossiguienteselementos:

eSurvey:EncuestasElectrnicas16

id>identificadordelservidor url>URLdelservidor,dondesetienenqueenviarlospaquetes mail>direccindecorreoelectnicodeladministradordelservidor weight >pesodelservidor,quedebeserunnmeroenteroqueindiquelaimportanciadel servidorenelsistema cert>certificadodelservidorconelquesedescifrarnlospaquetesquelelleguendelaredde tolerancia

Sinembargo,elarchivodebeestarfirmado,porloque,despusdel ltimocampo server, aadiendodespusdesteelcampodefirma. Para poder firmar el archivo, se puede utilizar el programa de distribucin gratuita CryptoApplet.TodaladocumentacinydescargasdeestaaplicacinsepuedeencontrarenlaURL http://cryptoapplet.nisu.org/ Enlosarchivosdelejemploseadjuntaelarchivoservers_signed.xml,unalistadeservidores conlafirmadigitalgeneradamedianteelprogramacomentadoenelapartadoanterior.

4.3.Formatodelticket
Elticketqueservir paravalidarlaencuestaantesdeserdepositadaenlaurnasigueel siguientexmlSchema:
<?xml version="1.0" encoding="ISO-8859-1" ?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="ticket"> <xsd:complexType> <xsd:sequence> <xsd:element name="idTicket" type="xsd:string"/> <xsd:element name="idSurvey" type="xsd:string"/> <xsd:element name="time"> <xsd:complexType> <xsd:sequence> <xsd:element name="endingTime" type="xsd:string"/> <xsd:element name="totalEndingTime" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="signature" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>

eSurvey:EncuestasElectrnicas17

Comosepuedeobservarenelesquema,elticketconstadelossiguienteselementos:

idTicket>identificadordelticke idSurvey>identificadordelaencuesta endingTime>fechadefinenvodelaencuesta totalEndingTime>fechadecierredelaurna signature>firmadelticket

Acontinuacinsemuestraunejemplodelticketenformatoxml,talycomolorecibir la urnadentrodelpaquetecorrespondienteunavezdesencriptelosdatos:
<ticket> <idTicket>1343308099669327000294202410423270972111354197063</idTicket> <idSurvey>enc123</idSurvey> <time> <endingTime>1202903328</endingTime> <totalEndingTime>1202903448</totalEndingTime> </time> <signature>66142972639589367386658668178475998311550576017624278518084992694892 9179616214496701250449966028537865153821641813061881426501923091510 65548784573452735275870807991255604891610580386840464965396517134259129857998 620999312223657442937655744474445681116232348416500266168066503408739 670865430743051459541258139 </signature> </ticket>

4.3.1.Formatodelticketafirmaryavalidar
Elformatodelticketfirmadoesalgodistintoalanterior,yaqueobviamentenocontienela etiqueta signature,yademstampococontienelade ticket,porloquerealmentenoesunxml comoelanterior.Adems,loquesefirmaeselhashdedichaestructura,unejemplodelacualla podemosveracontinuacin:
<idTicket>1343308099669327000294202410423270972111354197063</idTicket> <idSurvey>enc123</idSurvey> <time> <endingTime>1202903328</endingTime> <totalEndingTime>1202903448</totalEndingTime> </time>

Cuandolaurnaquieravalidarlafirmadelticket,deberconstruirestaestructurayaplicarle elhash,queserelquedebervalidarcontraelcertificadodelservidordefirma.

eSurvey:EncuestasElectrnicas18

4.4.Formatodelaencuesta
Cuandoelappletrecogelosresultadosdelaencuestaygeneraelticketparaquelaurna pueda almacenar los resultados, genera una estructura xml cuyo formato est definido por el siguienteDTD:
<!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT survey (results, ticket)> results (question* | ciphResults)> question (name, response+)> name (#PCDATA)> response (#PCDATA)> ciphResults (cryp, evky)> cryp (#PCDATA)> evky (#PCDATA)> ticket (idTicket, idSurvey, time, signature)> idTicket (#PCDATA)> idSurvey (#PCDATA)> time (endingTime, totalEndingTime)> endingTime (#PCDATA)> totalEndingTime (#PCDATA)> signature (#PCDATA)>

Como se puede observar, dentro de la encuesta (survey) se encuentra el ticket, ya comentadoenelapartadoanterior.LoselementosnuevosquepodemosverenesteDTDsonlos siguientes:

results>contienelosresultadosdelaencuesta,queasuvezpuedecontenervariaspreguntaso losresultadoscifrados. question>cadaunadelaspreguntasrespondidasenlaencuesta. name>nombredelapreguntaalaqueserefiera. response>respuestadelapreguntaalaqueserefiera. ciphResults>contienelainformacindecifradodelosresultadosdelaencuesta,enelcasoen questoshayansidocifrados. cryp>resultadosdelaencuestacifrados. evky>llaveconlaquesedescifrarnlosresultadosdelaencuesta,quetambinestcifrada

ElticketlohemosdefinidoanteriormenteconunxmlSchemaaparteporquedichoarchivose hautilizadoparacrearunparserqueseutilizaenlapartedelaurnaparaobtenerlosdatosdel ticket. Acontinuacinsemuestraunejemplocuandolosresultadosestncifrados:


<survey> <results> <cryp><![CDATA[7O5GsaPPSHs3DDtiCZbXNAEO07L2u4V439zUoyLudwL5hATXg7KqOG7/LgzTAyZ R2xQyKA5BSrmiGTovqOuYPjKOQA==]]></cryp>

eSurvey:EncuestasElectrnicas19

<evky> <![CDATA[r0jOOdVvHLcD0arKgDikyLZmRb/4rpu57zh2aHXmTNETT1BTNY+rGmZiYNvvYzq5zJTE +l9M8TxCtJUXvzTKt3plUDWZGFuqDASI+DEyoakhwXF4lVType AbVxczYYCXQ3YRhmCx2LKyb1G4L54YlS0vU8QN6i4J9WVr6q5OcII=]]> </evky> </results> <ticket> <idTicket>1381742623488141983363136668088325166116311533434</idTicket> <idSurvey>enc123</idSurvey> <time> <endingTime>1202907434</endingTime> <totalEndingTime>1202907554</totalEndingTime> </time> <signature> 71198236518003898684272913988062071824894448599220205346793080812780314460121 1757318501203326714539834306039220743301101530175501955141 38182217758253654547237094762338681884662133533446895595998201248011244787856 867867066025484997379437431156981205108420238374048336556435392264656 456826515011942625452488078 </signature> </ticket> </survey>

Porltimo,semuestralaencuestacuandolosresultadosnohansidocifrados:
<survey> <results> <question> <name>preg3</name> <response>trabajo</response> </question> </results> <ticket> <idTicket>779920165603298500039520481334982146282853432072</idTicket> <idSurvey>enc123</idSurvey> <time> <endingTime>1202908318</endingTime> <totalEndingTime>1202908438</totalEndingTime> </time> <signature> 75633758803426098174367879785264154718377892185839360665388422694239323398091 03980190501191067855015155469458310513265474920 10184608185384251861377908609350965431857420050376445215148042833224110489954 5606872286426171904421029801578664189862505782099285523700 8511024026277369051800084260783693944782319988504 </signature> </ticket> </survey>

En estecaso,esimportantemencionarque,alguardarlosresultados delaencuesta no cifradosenlabasededatos,seguardaelcontenidodelelemento results,peroestenoaparece.En elejemploseguardara: <question><name>preg3</name><responde>trabajo</response></question> eSurvey:EncuestasElectrnicas20

4.5.Formatodelpaquetealllegaralaurna
Laestructuradecadapaquetequellegaalaurna,unavezhasidodescifrado,secorresponde conelsiguienteDTD:
<!ELEMENT <!ELEMENT <!ELEMENT <!ATTLIST paq_server (data, chal)> data (survey)> chal (#PCDATA)> paq_server version CDATA #IMPLIED>

Elelementosurveynoestextendidonisevaavolveraexplicar,puestoquesecorresponde conelDTDdelapartadoanterior.Comoelementosnuevosenestaestructurapodemosver,aparte delelementoraz,elelementochal,quesirveparaautenticarautenticaralservidorconelanterior, yqueyasehacomentadoanteriormenteenelapartado3.3.1;yelatributoversiondelelementoraz quesecorrespondeconlaversindelpaquete. Acontinuacinsemuestraunejemplodelpaquete,enelquesehancifradolosresultadosde laencuesta:


<?xml version="1.0" encoding="iso-8859-1"?> <paq_server version="1.0"> <data> <survey> <results> <cryp><![CDATA[TvwyC714F7nzMxtjri2t1oteLqV7KziIkeaiwG/+upIEjJfVUxxG+i3EG Rm9iTINYxIGdo85dvaXJgDgsMeV6ayMvw==]]></cryp> <evky> <![CDATA[2pcOF6SjayPRR/vGCSbaiy/Uc0mNOnnqLf8hE4e/zRid7KR3D0YYc/hrhkvnT 0fGSahi0vfh5r9lhBZXUA15CU4SGFgWAEh6yyIPrOkDWORT4Ts dXEWh0hENv7s886dc8ORV/LJhAse7XF1XTxpHOJ536C76LGpbW5mkDVvWLsc=]]> </evky> </results> <ticket> <idTicket>1103710410685891746174337410757016704782967344305</idTicket> <idSurvey>enc123</idSurvey> <time> <endingTime>1203423461</endingTime> <totalEndingTime>1203423581</totalEndingTime> </time> <signature> 8193229243288937872250171775985948561703947661110413807403070183904802 627499040903363864696231073362328633267322287457898890443 1897155909951609136728292708335872355842907814101622016731530435159191 132296036369364536765212164695266279225618269257450026251 300863484006288842685771062345709746802020834116399516 </signature> </ticket> </survey> </data> <chal>1328255809</chal> </paq_server>

eSurvey:EncuestasElectrnicas21

S-ar putea să vă placă și