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 a
                                         Servicio b




                         Codificado en
                         Crypto-CCS
Solución: adaptación
● 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,
                              adaptador           Frob,
                 cliente                         Token...
Ejemplo: adaptador

                     Adaptador
Servicio a
                                 Servico b
Ejemplo: adaptador

                     Adaptador
Servicio a
                                 Servicio b
Solución: contratos de adaptación

● 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




                 cliente    adaptador
                       proceso de síntesis
                                             contrato
Overview
Overview
Ejemplo: servicios incompatibles

            Servicio a
                                   Servicio b
Overview
Ejemplo: servicios incompatibles

            Servicio a
                                   Servicio b
Ejemplo: servicios incompatibles

            Servicio a
                                       Servicio b
                             Cómo:
                     send! encajaría
                        tanto con
                   anonymous?, des?,
                       pub_rsa? o
                        priv_rsa?
Ejemplo: servicios incompatibles

            Servicio a
                                       Servicio b
                             Cómo:
                     send! encajaría
                        tanto con
                   anonymous?, des?,
                       pub_rsa? o
                        priv_rsa?
                   Tengo el usuario
                   U y la clave K
Ejemplo: servicios incompatibles

            Servicio a
                                         Servicio b
                             Cómo:
                     send! encajaría
                        tanto con
                   anonymous?, des?,
                       pub_rsa? o
                        priv_rsa?       Objetivo:
                                       pasar M de
                   Tengo el usuario       baa
                   U y la clave K
Ejemplo: servicios incompatibles

            Servicio a
                                            Servicio b
                             Cómo:
                     send! encajaría
                        tanto con
                   anonymous?, des?,
                       pub_rsa? o
                        priv_rsa?       Objetivo:
                                       pasar M de
                   Tengo el usuario       baa
                   U y la clave K
                         Confidencialidad
                         : M debe ser
                           confidencial
Contrato de adaptación

           Servicio a
                                         Servicio b

                Contrato de adaptación

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

                E0             VLTS
Contrato de adaptación

           Servicio a
                                         Servicio b

                Contrato de adaptación

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

                E0             VLTS
Contrato de adaptación, E0

            Servicio a
                                            Servicio b

                 Contrato de adaptación
                 anonymous!M^ < send?M
                       public_key! <
                    login!U^,E(K^,U^) <
                 des!E(K^, M^) < send?M
                             ...
                 E0 = [k/K, u/U,...] VLTS
Contrato de adaptación, VLTS

           Servicio a
                                         Servicio b

                Contrato de adaptación
               1. anonymous!M^ < send?M
                       2. public_key! <
                   3. login!U^,E(K^,U^) <
               4. des!E(K^, M^) < send?M
                              ...
               E0 = [k/K, u/U,...] VLTS

                                                      }
Overview
Trazas que cumplen el contrato

Servicio a
                                      Servicio b
                       Adaptador




                        Contrato de adaptación
                       1. anonymous!M^ < send?M
                               2. public_key! <
                           3. login!U^,E(K^,U^) <
Síntesis sin bloqueos

                        Adaptador
Servicio a
                                    Servicio b




                                         SAC
Síntesis sin bloqueos

                        Adaptador
Servicio a
                                    Servicio b




                                         SAC
Síntesis sin bloqueos

                        Adaptador
Servicio a
                                    Servicio b




                                         SAC
Overview
Confidencialidad

Servicio a
                                         Servicio b




               ● ¿Qué quieres proteger?
               ● ¿Qué es suceptible de ataque?
                  ○ Dolev-Yao restringido
               ● ¿Qué información es pública?
Confidencialidad

Servicio a
                                             Servicio b




               Le - Acciones "escuchables"
               La - Acciones protegidas
               p - Propiedad de confidencialidad
Confidencialidad

Servicio a
                                                   Servicio b




             En nuestro ejemplo:
                La, Le: el atacante sólo           adaptador
                puede escuchar los
                mensajes a/del servicio a
                p: El atacante no debe obtener M
             En otras palabras, el adaptador "envuelve" a b
Model checking parcial

Servicio a
                                            Servicio b




                     (mediante model-checking parcial)
Verificación de seguridad

                   Adaptador
Servicio a
                                        Servicio b




                               Ataque
Refinación

             Adaptador
Servicio a
                         Servicio b
Adaptadores de seguridad seguros

                   Adaptador
Servicio a
                               Servicio b




                                     SAC
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>                                                    ● T, I, S, V, K, L and B
       <wsu:Timestamp wsu:Id="T0">...</wsu:Timestamp>
       <wsse:BinarySecurityToken ValueType="...#X509v3"                 are placeholders used
                     wsu:Id="X509Token">...
       </wsse:BinarySecurityToken>
       <xenc:EncryptedKey>...
                                                                        for matching data in the
            <xenc:ReferenceList>
                <xenc:DataReference URI="#enc1"/>
                                                                        messages received
            </xenc:ReferenceList>
       </xenc:EncryptedKey>                                             and sent from the
       <ds:Signature><ds:SignedInfo>...
              <ds:Reference URI="#T0">...                        T,     adaptor
                 <ds:DigestValue>LyLsF094Pi4wP...</ds:
DigestValue>
              </ds:Reference>                                     I,
              <ds:Reference URI="#body">...
                 <ds:DigestValue>LyLsF094i4wPU...</ds:            Pk(S),
DigestValue>
              </ds:Reference>
          </ds:SignedInfo>
                                                                  penc(V,
          <ds:SignatureValue>Hp1ZkmFZ/2kQ...</ds:
SignatureValue>
                                                                     Hash(cat(I,Pk(S)))),
          <ds:KeyInfo>
               <wsse:SecurityTokenReference>                     enc(K,L),
                    <wsse:Reference URI="#X509Token"/>
               </wsse:SecurityTokenReference>                     Hash(T),
          </ds:KeyInfo>
       </ds:Signature>
   </wsse:Security>
                                                                  Hash(B),
</S11:Header>
<S11:Body wsu:Id="body">
                                                                 penc(S,cat(Hash(T),Hash(B)),
 <xenc:EncryptedData wsu:Id="enc1">...</xenc:EncryptedData>...
</S11:Body></S11:Envelope>                                       enc(L,B)
WS-Security
<?xml version="1.0" encoding="utf-8"?>
<S11:Envelope><S11:Header>
   <wsse:Security>                                                    ● T, I, S, V, K, L and B
       <wsu:Timestamp wsu:Id="T0">...</wsu:Timestamp>
       <wsse:BinarySecurityToken ValueType="...#X509v3"                 are placeholders used
                     wsu:Id="X509Token">...
       </wsse:BinarySecurityToken>
       <xenc:EncryptedKey>...
                                                                        for matching data in the
            <xenc:ReferenceList>
                <xenc:DataReference URI="#enc1"/>
                                                                        messages received
            </xenc:ReferenceList>
       </xenc:EncryptedKey>                                             and sent from the
       <ds:Signature><ds:SignedInfo>...
              <ds:Reference URI="#T0">...                        T,     adaptor
                 <ds:DigestValue>LyLsF094Pi4wP...</ds:
DigestValue>
              </ds:Reference>                                     I,
              <ds:Reference URI="#body">...
                 <ds:DigestValue>LyLsF094i4wPU...</ds:            Pk(S),
DigestValue>
              </ds:Reference>
          </ds:SignedInfo>
                                                                  penc(V,
          <ds:SignatureValue>Hp1ZkmFZ/2kQ...</ds:
SignatureValue>
                                                                     Hash(cat(I,Pk(S)))),
          <ds:KeyInfo>
               <wsse:SecurityTokenReference>                     enc(K,L),
                    <wsse:Reference URI="#X509Token"/>
               </wsse:SecurityTokenReference>                     Hash(T),
          </ds:KeyInfo>
       </ds:Signature>
   </wsse:Security>
                                                                  Hash(B),
</S11:Header>
<S11:Body wsu:Id="body">
                                                                 penc(S,cat(Hash(T),Hash(B)),
 <xenc:EncryptedData wsu:Id="enc1">...</xenc:EncryptedData>...
</S11:Body></S11:Envelope>                                       enc(L,B)
Applications

Synthesis of secure adaptors

  • 1.
    Synthesis of secureadaptors (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
  • 2.
    Motivación ● Tratamos conservicios 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
  • 3.
    Ejemplo: Servicios conestado Servicio a Servicio b Codificado en Crypto-CCS
  • 4.
    Solución: adaptación ● Desplegarun 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, adaptador Frob, cliente Token...
  • 5.
    Ejemplo: adaptador Adaptador Servicio a Servico b
  • 6.
    Ejemplo: adaptador Adaptador Servicio a Servicio b
  • 7.
    Solución: contratos deadaptación ● 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 cliente adaptador proceso de síntesis contrato
  • 8.
  • 9.
  • 10.
    Ejemplo: servicios incompatibles Servicio a Servicio b
  • 11.
  • 12.
    Ejemplo: servicios incompatibles Servicio a Servicio b
  • 13.
    Ejemplo: servicios incompatibles Servicio a Servicio b Cómo: send! encajaría tanto con anonymous?, des?, pub_rsa? o priv_rsa?
  • 14.
    Ejemplo: servicios incompatibles Servicio a Servicio b Cómo: send! encajaría tanto con anonymous?, des?, pub_rsa? o priv_rsa? Tengo el usuario U y la clave K
  • 15.
    Ejemplo: servicios incompatibles Servicio a Servicio b Cómo: send! encajaría tanto con anonymous?, des?, pub_rsa? o priv_rsa? Objetivo: pasar M de Tengo el usuario baa U y la clave K
  • 16.
    Ejemplo: servicios incompatibles Servicio a Servicio b Cómo: send! encajaría tanto con anonymous?, des?, pub_rsa? o priv_rsa? Objetivo: pasar M de Tengo el usuario baa U y la clave K Confidencialidad : M debe ser confidencial
  • 17.
    Contrato de adaptación Servicio a Servicio b Contrato de adaptación anonymous!M^ < send?M public_key! < ... E0 VLTS
  • 18.
    Contrato de adaptación Servicio a Servicio b Contrato de adaptación anonymous!M^ < send?M public_key! < ... E0 VLTS
  • 19.
    Contrato de adaptación,E0 Servicio a Servicio b Contrato de adaptación anonymous!M^ < send?M public_key! < login!U^,E(K^,U^) < des!E(K^, M^) < send?M ... E0 = [k/K, u/U,...] VLTS
  • 20.
    Contrato de adaptación,VLTS Servicio a Servicio b Contrato de adaptación 1. anonymous!M^ < send?M 2. public_key! < 3. login!U^,E(K^,U^) < 4. des!E(K^, M^) < send?M ... E0 = [k/K, u/U,...] VLTS }
  • 21.
  • 22.
    Trazas que cumplenel contrato Servicio a Servicio b Adaptador Contrato de adaptación 1. anonymous!M^ < send?M 2. public_key! < 3. login!U^,E(K^,U^) <
  • 23.
    Síntesis sin bloqueos Adaptador Servicio a Servicio b SAC
  • 24.
    Síntesis sin bloqueos Adaptador Servicio a Servicio b SAC
  • 25.
    Síntesis sin bloqueos Adaptador Servicio a Servicio b SAC
  • 26.
  • 27.
    Confidencialidad Servicio a Servicio b ● ¿Qué quieres proteger? ● ¿Qué es suceptible de ataque? ○ Dolev-Yao restringido ● ¿Qué información es pública?
  • 28.
    Confidencialidad Servicio a Servicio b Le - Acciones "escuchables" La - Acciones protegidas p - Propiedad de confidencialidad
  • 29.
    Confidencialidad Servicio a Servicio b En nuestro ejemplo: La, Le: el atacante sólo adaptador puede escuchar los mensajes a/del servicio a p: El atacante no debe obtener M En otras palabras, el adaptador "envuelve" a b
  • 30.
    Model checking parcial Servicioa Servicio b (mediante model-checking parcial)
  • 31.
    Verificación de seguridad Adaptador Servicio a Servicio b Ataque
  • 32.
    Refinación Adaptador Servicio a Servicio b
  • 33.
    Adaptadores de seguridadseguros Adaptador Servicio a Servicio b SAC
  • 34.
    Contribution ● Adaptación deservicios 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
  • 35.
    Publicación ● Journal ofLogic 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
  • 36.
    ¡Muchas gracias! Artículo completo:http://bit.ly/JLAP12 -- Tesis: http://bit.ly/jamartin-thesis
  • 37.
    WS-Security <?xml version="1.0" encoding="utf-8"?> <S11:Envelope><S11:Header> <wsse:Security> ● T, I, S, V, K, L and B <wsu:Timestamp wsu:Id="T0">...</wsu:Timestamp> <wsse:BinarySecurityToken ValueType="...#X509v3" are placeholders used wsu:Id="X509Token">... </wsse:BinarySecurityToken> <xenc:EncryptedKey>... for matching data in the <xenc:ReferenceList> <xenc:DataReference URI="#enc1"/> messages received </xenc:ReferenceList> </xenc:EncryptedKey> and sent from the <ds:Signature><ds:SignedInfo>... <ds:Reference URI="#T0">... T, adaptor <ds:DigestValue>LyLsF094Pi4wP...</ds: DigestValue> </ds:Reference> I, <ds:Reference URI="#body">... <ds:DigestValue>LyLsF094i4wPU...</ds: Pk(S), DigestValue> </ds:Reference> </ds:SignedInfo> penc(V, <ds:SignatureValue>Hp1ZkmFZ/2kQ...</ds: SignatureValue> Hash(cat(I,Pk(S)))), <ds:KeyInfo> <wsse:SecurityTokenReference> enc(K,L), <wsse:Reference URI="#X509Token"/> </wsse:SecurityTokenReference> Hash(T), </ds:KeyInfo> </ds:Signature> </wsse:Security> Hash(B), </S11:Header> <S11:Body wsu:Id="body"> penc(S,cat(Hash(T),Hash(B)), <xenc:EncryptedData wsu:Id="enc1">...</xenc:EncryptedData>... </S11:Body></S11:Envelope> enc(L,B)
  • 38.
    WS-Security <?xml version="1.0" encoding="utf-8"?> <S11:Envelope><S11:Header> <wsse:Security> ● T, I, S, V, K, L and B <wsu:Timestamp wsu:Id="T0">...</wsu:Timestamp> <wsse:BinarySecurityToken ValueType="...#X509v3" are placeholders used wsu:Id="X509Token">... </wsse:BinarySecurityToken> <xenc:EncryptedKey>... for matching data in the <xenc:ReferenceList> <xenc:DataReference URI="#enc1"/> messages received </xenc:ReferenceList> </xenc:EncryptedKey> and sent from the <ds:Signature><ds:SignedInfo>... <ds:Reference URI="#T0">... T, adaptor <ds:DigestValue>LyLsF094Pi4wP...</ds: DigestValue> </ds:Reference> I, <ds:Reference URI="#body">... <ds:DigestValue>LyLsF094i4wPU...</ds: Pk(S), DigestValue> </ds:Reference> </ds:SignedInfo> penc(V, <ds:SignatureValue>Hp1ZkmFZ/2kQ...</ds: SignatureValue> Hash(cat(I,Pk(S)))), <ds:KeyInfo> <wsse:SecurityTokenReference> enc(K,L), <wsse:Reference URI="#X509Token"/> </wsse:SecurityTokenReference> Hash(T), </ds:KeyInfo> </ds:Signature> </wsse:Security> Hash(B), </S11:Header> <S11:Body wsu:Id="body"> penc(S,cat(Hash(T),Hash(B)), <xenc:EncryptedData wsu:Id="enc1">...</xenc:EncryptedData>... </S11:Body></S11:Envelope> enc(L,B)
  • 39.