Taller Firma

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 21

hackfest de seguridad y firma digital

21 y 22 nov 2012

creando una aplicacin desde cero


con firma electrnica mvil
con DNIe

algunas notas sobre


nosotros

Ttulo de la presentacin

Historia

Sufridores del applet de @firma pesado (@firma3,4,5)


OpenOces viafirma GPL
Clientes pequeos en nuestros inicios
Funciona

- Neutralidad en la integracin versiones


- NSS, Keychain nativo, CryptoAPI, GNOME Keyring
- Applet realmente multiplataforma, Donde est el truco?
- iOS, Android, Blackberry, Windows Phone 7/8, Windows 8 ARM y PRO.
Nuestro lenguajes

- Java
- Javascript
- Objetive-c
Ttulo de la presentacin

- Objetive-c
- C# / mono
- c++
4

Nuestros enemigos como desarrolladores

Eterogeniedad de sistemas

Dispositivos, navegadores, sistemas operativos, permisos, plugins, Javascript?,


cookies?, cache
Usuarios

Conocimientos, experiencia, ayer me funcionaba, antivirus, ...


Conexin

Fiabilidad de la conexin, ancho de banda, visibilidad, proxies, tarifa de


datos, operadora de red, los malos,....

Ttulo de la presentacin

Nuestro Objetivo
Integradores: Simplificar y desmitificar la firma digital

- Simplificar los conceptos involucrados: RSA, SHA1, PAdES, XAdES


- Simplificar la integracin (dispositivos?, integracin?, formatos?....)
- Adaptacin y evolucin continua
- Tiene que ser sencillo de utilizar. Nos dan una sola oportunidad.
Usuario: Funcionalidades desde cualquier dispositivo o situacin

- Nuestros clientes NO son expertos


- Nuestros clientes NO pueden dedicar muchos esfuerzos a EL PROBLEMA
- En entornos clsicos de escritorio. Windows, Linux, MacOS.
- Cualquier navegador cualquier, mquina virtual,....
- En entornos mviles (iOS,Android,Blackberry, Windows phone, ...)
- Operaciones de firma desatendidas, HSM, .......
Ttulo de la presentacin

principios bsicos
de funcionamiento

Ttulo de la presentacin

javascript

Applet

Libreras
Extras

Servidor
/ WSDL

Tradicional

Centralizada

viafirma
Ttulo de la presentacin

haciendo la vida fcil


a los integradores

Ttulo de la presentacin

portal para desarrolladores

http://developers.viafirma.com
kit de integracin

JavaEE (jdk 1.4+)


Jbos 4,5,6
WebSphere 5,6
WebLogic 7,8,9
Aspx/.Net
PHP

API standard

Ttulo de la presentacin

c++
Objective-C
PhoneGap
Java (Escritorio)
c#/Mono(Escritorio)
Java (Android)
Phyton
Jax-ws
Jax-rs
openId

Drupal
Joomla
Django

10

manos a la obra!

Ttulo de la presentacin

11

Manos a la obra! (I)

Descargar el SDK
Montar el entorno
Qu ofrece el SDK?

Ttulo de la presentacin

12

Manos a la obra! Autenticacin (II)

Inicializar el cliente
Ejemplo de autenticacin simple
Qu est pasando?

Ttulo de la presentacin

13

Manos a la obra! Autenticacin (III)


Inicializar el cliente

// Inicializamos el componente de firma


// url del servicio, appkey, appPass
String url=http://services.viafirma.com/viafirma
String login="xnoccio";
String pass="12345";
ViafirmaClientFactory.init(url, url, login, pass);
Solicitar autenticacin

ViafirmaClient client=ViafirmaClientFactory.getInstance();
client.solicitarAutenticacion(request, response,"/test");
Ttulo de la presentacin

14

Manos a la obra! Autenticacin (IV)


Procesar respuesta autenticacin

public class Test

extends ViafirmaClientServlet

public void authenticateOK(UsuarioGenericoViafirma


usuario,
HttpServletRequest request, HttpServletResponse
response) {
// Obtenemos los datos del usuario
// TODO procesar la respuesta
String nif=usuario.getNumberUserId();
// TODO siguiente paso?
}
Ttulo de la presentacin

15

Manos a la obra! Firma (V)

Inicializar el cliente
Ejemplo de firma simple
Qu est pasando?

Ttulo de la presentacin

16

Manos a la obra! Firma (V)


Qu quiero firmar?
// 1.- Recuperamos la instancia de ViafirmaCliet
ViafirmaClient client=ViafirmaClientFactory.getInstance();
// 2.- Que quiero firmar?
Documento documento=new Documento();
byte [] bytes=...;
documento.setDatos(bytes);
documento.setTipo(TypeFile.PDF);
documento.setNombre("Documento ejemplo.pdf");

Com lo quiero firmar?


// 3.- Como quiero firmar
Policy policy=new Policy();
policy.setTypeFormatSign(TypeFormatSign.PAdES_BES);
policy.setTypeSign(TypeSign.ATTACHED);
Ttulo de la presentacin

17

Manos a la obra! Firma (V)


Preparamos el documento para su firma
// 4.- Iniciamos la firma
String temporalId=client.prepareSignWithPolicy(policy, documento);

Solicitamos la firma
// 5.- Solicitamos la firma
client.solicitarFirma(temporalId,request, response,"/test");

Procesamos la respuesta
public void signOK(FirmaInfoViafirma signInfo, HttpServletRequest req,
HttpServletResponse res) {
// Obtenemos el identificador de firma
String idSign=signInfo.getSignId();
// Recuperamos cualquier otro parametro ...
// Recuperamos el documento o cualquier otra informacin.
byte [] datos=viafirmaClient.getDocumentoCustodiado(idSign);
}

Ttulo de la presentacin

18

App to App Movil

Nativo - Nativo con salto (iOS, Android)


Librera interna (iOS, Android)
PhoneGap
Appcelerator

Ttulo de la presentacin

19

en accin ...

Ttulo de la presentacin

20

GRACIAS

Flix Garca

[email protected]
twitter @felixgborrego

También podría gustarte