Post on 16-Jul-2015
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
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...
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
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,...]
}
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
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
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
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)