Synthesis of secure adaptors

39
Synthesis of secure adaptors (for stateful services) J. Antonio Martín (1) , Fabio Martinelli (2) y Ernesto Pimentel (1) Universidad de Málaga (1) -- C.N.R. (2) JCIS'12, Almería, 19 Sept, 2012 Artículo publicado: http://bit.ly/JLAP12

Transcript of Synthesis of secure adaptors

Synthesis of secure adaptors(for stateful services)

J. Antonio Martín(1), Fabio Martinelli(2) y Ernesto Pimentel(1)

Universidad de Málaga(1) -- C.N.R.(2)

JCIS'12, Almería, 19 Sept, 2012

Artículo publicado: http://bit.ly/JLAP12

Motivación

● Tratamos con servicios con comportamiento● Los servicios Web tienen políticas de seguridad

○ WS-Security, WS-SecureConversation, WS-Policy, ...● Servicios incompatibles envían y reciben mensajes

criptográficos incompatibles● Nuestro objetivo es corregir las incompatibilidades en las

políticas de seguridad (con riesgo de revelar información) y en el comportamiento (con riesgo de bloqueos)

cliente

Ejemplo: Servicios con estado

Servicio aServicio b

Codificado en Crypto-CCS

Solución: adaptación

cliente adaptador

● Desplegar un adaptador como orquestrador que solventa las incompatibilidades en interfáz, comportamiento y seguridad

● La adaptación de comportamiento se basa en recibir, reescribir y reenviar los mensajes en su momento adecuado

● La adaptación de seguridad extiende la adaptación del comportamiento con criptografía simétrica, asimétrica, y hashing

Flickr API key,Frob,

Token...

Ejemplo: adaptador

Servico bServicio a

Adaptador

Ejemplo: adaptador

Servicio bServicio a

Adaptador

Solución: contratos de adaptación

cliente

● Los adaptadores se describen de manera abstracta mediante contratos de adaptación de seguridad (SAC)

● El proceso de síntesis obtiene un adaptador sin bloqueos● Se verifica la confidencialidad del sistema y, si es

necesario, se refina el adaptador para cumplirla

contrato

adaptador

proceso de síntesis

Overview

Overview

Ejemplo: servicios incompatibles

Servicio aServicio b

Overview

Ejemplo: servicios incompatibles

Servicio bServicio a

Ejemplo: servicios incompatibles

Servicio bServicio a

send! encajaría tanto con

anonymous?, des?, pub_rsa? o priv_rsa?

Cómo:

Tengo el usuario U y la clave K

Ejemplo: servicios incompatibles

Servicio bServicio a

send! encajaría tanto con

anonymous?, des?, pub_rsa? o priv_rsa?

Cómo:

Objetivo:pasar M de

b a aTengo el usuario U y la clave K

Ejemplo: servicios incompatibles

Servicio bServicio a

send! encajaría tanto con

anonymous?, des?, pub_rsa? o priv_rsa?

Cómo:

Confidencialidad: M debe ser

confidencial

Objetivo:pasar M de

b a aTengo el usuario U y la clave K

Ejemplo: servicios incompatibles

Servicio bServicio a

send! encajaría tanto con

anonymous?, des?, pub_rsa? o priv_rsa?

Cómo:

Contrato de adaptación

Servicio bServicio a

anonymous!M^ < send?Mpublic_key! <

...

Contrato de adaptación

VLTSE0

Contrato de adaptación

Servicio bServicio a

anonymous!M^ < send?Mpublic_key! <

...

Contrato de adaptación

VLTSE0

Contrato de adaptación, E0

Servicio bServicio a

anonymous!M^ < send?Mpublic_key! <

login!U^,E(K^,U^) < des!E(K^, M^) < send?M

...

Contrato de adaptación

VLTSE0 = [k/K, u/U,...]

Contrato de adaptación, VLTS

Servicio bServicio a

1. anonymous!M^ < send?M2. public_key! <

3. login!U^,E(K^,U^) < 4. des!E(K^, M^) < send?M

...

Contrato de adaptación

VLTSE0 = [k/K, u/U,...]

}

Overview

Trazas que cumplen el contrato

Servicio bServicio a

Adaptador

1. anonymous!M^ < send?M2. public_key! <

3. login!U^,E(K^,U^) < 4. des!E(K^, M^) < send?M

...

Contrato de adaptación

Síntesis sin bloqueos

Servicio bServicio a

SAC

Adaptador

Síntesis sin bloqueos

Servicio bServicio a

SAC

Adaptador

Síntesis sin bloqueos

Servicio bServicio a

SAC

Adaptador

Overview

Confidencialidad

Servicio bServicio a

● ¿Qué quieres proteger?● ¿Qué es suceptible de ataque?

○ Dolev-Yao restringido● ¿Qué información es pública?

Confidencialidad

Servicio bServicio a

Le - Acciones "escuchables"La - Acciones protegidasp - Propiedad de confidencialidad

Confidencialidad

Servicio bServicio a

En nuestro ejemplo: La, Le: el atacante sólopuede escuchar losmensajes a/del servicio ap: El atacante no debe obtener M

En otras palabras, el adaptador "envuelve" a b

adaptador

Model checking parcial

Servicio bServicio a

(mediante model-checking parcial)

Verificación de seguridad

Servicio bServicio a Adaptador

Ataque

Refinación

Servicio bServicio a

Adaptador

Adaptadores de seguridad seguros

Servicio bServicio a

SAC

Adaptador

Contribution

● Adaptación de servicios con comportamiento y políticas de seguridad

○ Evitamos bloqueos○ El adaptador es capáz de recomponer los mensajes tal y como

los espera el servicio receptor○ Probado formalmente que el es robusto ante los ataques de

seguridad● El adaptador es descrito mediante un contrato de adaptación

de seguridad que especifica:○ La información inicial necesaria para la adaptación○ Las transformaciones requeridas para conseguir una

comunicación satisfactoria○ Las comprobaciones de seguridad a ejecutar durante la

adaptación

Publicación

● Journal of Logic and Algebraic Programming● Número especial de FLACOS (Formal Languages and

Analysis of Contract-Oriented Software)

Primer envío: 10/01/2011

Primera revisión: 02/05/2011

Segunda revisión: 01/08/2011

Aceptación: 29/08/2011

Publicación (online): 21/09/2011

Publicación (física): 02/2012

¡Muchas gracias!Artículo completo: http://bit.ly/JLAP12 -- Tesis: http://bit.ly/jamartin-thesis

WS-Security<?xml version="1.0" encoding="utf-8"?><S11:Envelope><S11:Header> <wsse:Security> <wsu:Timestamp wsu:Id="T0">...</wsu:Timestamp> <wsse:BinarySecurityToken ValueType="...#X509v3" wsu:Id="X509Token">... </wsse:BinarySecurityToken> <xenc:EncryptedKey>... <xenc:ReferenceList> <xenc:DataReference URI="#enc1"/> </xenc:ReferenceList> </xenc:EncryptedKey> <ds:Signature><ds:SignedInfo>... <ds:Reference URI="#T0">... <ds:DigestValue>LyLsF094Pi4wP...</ds:DigestValue> </ds:Reference> <ds:Reference URI="#body">... <ds:DigestValue>LyLsF094i4wPU...</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>Hp1ZkmFZ/2kQ...</ds:SignatureValue> <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI="#X509Token"/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security></S11:Header><S11:Body wsu:Id="body"> <xenc:EncryptedData wsu:Id="enc1">...</xenc:EncryptedData>...</S11:Body></S11:Envelope>

T, I, Pk(S), penc(V, Hash(cat(I,Pk(S)))),enc(K,L), Hash(T), Hash(B),penc(S,cat(Hash(T),Hash(B)),enc(L,B)

● T, I, S, V, K, L and B are placeholders used for matching data in the messages received and sent from the adaptor

WS-Security<?xml version="1.0" encoding="utf-8"?><S11:Envelope><S11:Header> <wsse:Security> <wsu:Timestamp wsu:Id="T0">...</wsu:Timestamp> <wsse:BinarySecurityToken ValueType="...#X509v3" wsu:Id="X509Token">... </wsse:BinarySecurityToken> <xenc:EncryptedKey>... <xenc:ReferenceList> <xenc:DataReference URI="#enc1"/> </xenc:ReferenceList> </xenc:EncryptedKey> <ds:Signature><ds:SignedInfo>... <ds:Reference URI="#T0">... <ds:DigestValue>LyLsF094Pi4wP...</ds:DigestValue> </ds:Reference> <ds:Reference URI="#body">... <ds:DigestValue>LyLsF094i4wPU...</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>Hp1ZkmFZ/2kQ...</ds:SignatureValue> <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI="#X509Token"/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security></S11:Header><S11:Body wsu:Id="body"> <xenc:EncryptedData wsu:Id="enc1">...</xenc:EncryptedData>...</S11:Body></S11:Envelope>

● T, I, S, V, K, L and B are placeholders used for matching data in the messages received and sent from the adaptorT,

I, Pk(S), penc(V, Hash(cat(I,Pk(S)))),enc(K,L), Hash(T), Hash(B),penc(S,cat(Hash(T),Hash(B)), enc(L,B)

Applications