SlideShare uma empresa Scribd logo
1 de 7
Baixar para ler offline
Especificação formal de protocolos de segurança
                     requisito para a disciplina CE-281 do programa de pós-graduação strictu sensu do
                                   Instituto de Tecnologia da Aeronáutica (ITA), Prof. Yano.
                                  2010, Fabian Martins da Silva, fabian.martins@gmail.com

Introdução

O tema da especificação e verificação formal de protocolos está no escopo dos métodos formais, que é um
conjunto de técnicas suportadas pela lógica matemática cujo propósito é viabilizar a especificação,
desenvolvimento e verificação de software e hardware. De fato, a modelagem matemática vem sendo
aplicada nas diversas áreas da engenharia como uma excelente forma de representação e validação de
modelos de quaisquer tipo. Isto é muito mais eficiente e barato do que se implementar protótipos, apesar do
uso de uma técnica não descartar a outra.

As questões de segurança representaram um importante papel no desenvolvimento dos métodos formais
nas décadas de 70 e 80, tanto que as pesquisas neste tema foram patrocinadas principalmente pela NSA
(National Security Agency, USA). Estes trabalhos resultaram no desenvolvimento de modelos formais de
segurança, ferramentas para suportar o raciocínio sobre este tema e a aplicação destas ferramentas para
provar a segurança de sistemas [Wing,2002].

Neste artigo iremos abordar de forma objetiva a importância dos métodos formais no contexto da
especificação e verificação dos protocolos de segurança e visitaremos algumas das técnicas criadas para
este propósito.

Especificação de protocolos de segurança

Os protocolos de segurança definem regras de comunicação entre sistemas que tem por objetivo garantir a
robustez do processo de comunicação destes sistemas frente a um conjunto de ameças consideradas. Uma
vez que se torna inviável tratar todas as ameaças possíveis, os protocolos são projetados com base em
certas conjecturas feitas com relação a estas possíveis ameaças ([Anderson, 2001], pag.13).

A notação padrão de engenharia para protocolos consiste basicamente na indicação do comunicante
emissor, do receptor e da lista de informações que é transmitida do primeiro para o segundo. Por exemplo,
se queremos especificar um protocolo onde um crachá (C) fornece sua identificação (que também é
representada por C) para um terminal (T), poderemos especificar simplesmente como:

                                                       C T :C
Obviamente o ideal é que o crachá transmita ao terminal sua identificação em claro e uma informação de
conhecimento exclusivo do terminal. Por exemplo, a própria identificação do crachá cifrada por uma chave
de conhecimento único do terminal:
                                                   C T :C , { C } K   T




Neste caso, KT representa a chave de cifragem de conhecimento apenas do terminal e de seus sistemas de
suporte. É fácil perceber que que se um falsário (F) capturar o sinal transmitido pelo crachá C e o transmitir
ao terminal ele facilmente se passará pelo portador do crachá C:


                                                  C  F :C , { C }K    T

                                                  F T :C , {C }K      T




                   Fig 1: Exemplo na notação padrão para a especificação de protocolos.

Percebe-se que, uma vez entendida sua estrutura, o padrão é relativamente simples para descrever
protocolos mais complexos que este, como por exemplo o protocolo de Needham-Schroeder, que descreve
a comunicação entre duas entidades A e B, autenticada por um sistema S ([Anderson, 2001], pag.26):
Mensagem 1         AS : A, B , N A
                         Mensagem 2         S  A : { N A , B , K AB , { K AB , A }K   BS
                                                                                            }K   AS


                         Mensagem 3         A B : { K AB , A } K   BS

                         Mensagem 4         B  A : { N B }K  AB

                         Mensagem 5         A  B : { N B−1 } K    AB

                         Fig 2: Protocolo de Needham-Schroeder em notação padrão.

Fica evidente que o protocolo de Nreedham-Schroeder tem por objetivo reduzir o risco de interceptação da
informação de segurança, utilizando um sistema intermediário como autenticador da comunicação entre as
entidades comunicantes.

No exemplo temos:
   • A é o requisitante da comunicação,
   • B é o alvo da comunicação;
   • S é o sistema autenticador;
   • NA é um “nonce” (“number used once”, um número aleatório produzido por A);
   • KAS é a chave de comunicação entre A e S, de conhecimento exclusivo de S;
   • KAB é a chave de comunicação entre A e B, produzida por S e entregue à entidade A na mensagem
       2;

Apesar desta notação ser relativamente simples, o processo de projeto de protocolos de segurança mais
complexos é particularmente complexo e sujeito a erros, tanto que foram encontradas falhas em um
significante número de protocolos de segurança mesmo anos após a publicação original. Isto indica que os
métodos informais de verificação dos protocolos podem manter escondidas suas falhas e vulnerabilidades.

Especificações formais

Uma especificação pode ser considerada formal se for expressa em uma linguagem composta de três
componentes [Lamsweerde,2000]:

   1. Sintaxe, que determina se as expressões estão bem formadas gramaticalmente;
   2. Semântica, que especifique as regras para a interpretação das expressões, de forma precisa e
      significativa dentro do domínio considerado;
   3. Regras, que consiste em regras para inferência de informações úteis a partir de uma especificação
      determinada;

Escrever uma especificação correta não é algo trivial. A especificação deve descrever apropriadamente o
problema, deve ser internamente consistente (ou seja, ter valor semântico), deve ser inambigua (indicar
apenas uma interpretação possível), dentre outras características importantes.

Dada a complexidade, alguém pode questionar por que utilizar especificações formais. O fato é que este
tipo de especificação permite validar características sistêmicas de possíveis soluções para um problema
sem que a mesma precise ser implementada. Além disso, as especificações formais são importantes para
que possamos suplantar os problemas semânticos da linguagem natural e que, com isso, os conceitos a
serem descritos possam ter interpretação única por qualquer leitor. Por este motivo são utilizadas
largamente nas várias áreas de engenharia, matemática, computação e áreas afins, para documentar,
comunicar, validar e reutilizar soluções [Holloway, 1997].

Do ponto de vista dos protocolos de segurança, as especificações formais fornecem uma abordagem
sistemática para a descoberta de falhas e procuram descrever estes protocolos de modo que as conjecturas
com respeito às possíveis vulnerabilidades possam ser avaliadas e os requisitos de segurança e o
comportamento do protocolo, sob certas condições, possam ser testados e confirmados. Abordagens
comuns para a verification formal de protocolos estão baseadas na lógica modal ou em máquinas de
estados. Estas técnicas viabilizam a automatização do processo de verificação, o que agiliza o processo e
remove diversas fontes pontenciais de erro da verificação manual [Tian, 2006].

Nas próximas seções vamos apresentar algumas delas: CSP, BAN Logic e CAPSL
CSP

CSP ou “Communicating Sequential Processes” é uma linguagem formal para descrever padrões de
interação entre sistemas concorrentes descrito pela primeira vez em 1978 por Hoare [Hoare, 1978] e depois
publicado em seu livro homônimo em 1985. A CSP descreve um sistema (ou protocolo) em termos de
elementos independentes que operam por meio do envio de mensagens, oferecendo um conjunto
sintático/semântico composto por operadores algebráicos que permitem que descrições de interações
complexas entre processos sejam construídas a partir de poucos elementos primitivos. Apesar de eficiente,
a CSP é relativamente complexa. A melhor forma de ilustrar sua aplicação é voltando ao protocolo de
Needham-Schroeder conforme descrito na figura 2 e observando sua especificação em CSP na figura 3.

                               A=□i∈USER trans.A! i ! K i !  K Ai . A
                                             rec.A.i ? K Ai n i . A (a)
                                      trans.A! i ! K i  ni−1 Stop

                                      B=rec.B ? j ? K B  y.j 
                                        trans.B! j ! y n B . y  (b)
                                       rec.B.j.y  n B−1 Stop

                        Fig 3: Protocolo de Needham-Schroeder (parcial) em CSP.
No exemplo da figura 3 temos apenas as mensagens onde A e B trocam as chaves já recebidas pelo
sistema autenticador da comunicação.

Em (a) podemos observar 3 passos, um em cada linha:
   1. A transmite (função trans) a um usuário i, pertencente ao espaço de usuários definidos por USER, a
        mensagem (KAi.A) criptografada com a chave Ki (ou seja, a chave fornecida pelo sistema
        autenticador). Observe que a mensagem (KAi.A) possui dois elementos: A chave de comunicação
        entre A e i e a identificação de A.
   2. Em seguida A recebe (função rec) de i um número ni (nonce de i) e a identificação de A, ambos
        cifrados pela chave de comunicação fornecida previamente pelo sistema. O símbolo ? Indica que há
        um questionamento e espera-se recerber o argumento que o segue.
   3. Finalmente, A transmite à entidade i o valor ni decrementado de uma unidade.
Agora certamente fica mais fácil entender a expressão em (b), onde está representada a contrapartida do
lado de B, onde a entidade A é representada por j.

Adicionalmente, a especificação CSP poderia determinar as regras válidas na execução dos processos:

                              Proc :: =               trans → rec
                                              |       rec → trans
                                              |       trans → Stop
                                              |       rec → Stop
                                              |       Stop

A CSP define um conjunto de construções possíveis em que eventos e processos podem ser combinados,
entre eles temos:

       Pa □ Pb ( escolha deterministica, uma entidade determina se Pa ou Pb será executado)
       Pa ∏ Pb ( escolha não-determinística )
       if x then Pa else Pb

Podemos perceber que CSP é relativamente complexa. No entanto, é bastante consistente e prática para os
processos de verificação de protocolos. Mais detalhes sobre a aplicação de CSP na especificação e
validação de protocolos podem ser encontrados em [Schneider,1996] e [Schneider,1997].
BAN Logic

A então denominada “lógica BAN” obtém seu nome a partir das iniciais de seus criadores, Burrows, Abadi e
Needham, tendo sido publicada em 1989 no artigo “A Logic for Authentication” e algumas vezes é descrita
como a primeira a analisar formalmente os protocolos criptográficos, apesar da CSP remontar a data
anterior.

Conforme especificam os autores, “o objetivo da lógica é descrever a crença das partes envolvidas na
autenticação e a evolução desta crença enquanto os participantes se comunicam” [BAN, 1990].

A BAN não fornece prova de segurança, somente argumenta sobre a autenticação, também não tenta fazer
a distinção entre receber uma mensagem e possuí-la; ambas são tratadas do mesmo modo. Os
desenvolvedores da lógica BAN tinham como meta responder as seguintes perguntas [Santos, 2002]:

   •   Quais são os objetivos do protocolo?
   •   O protocolo precisa de mais suposições do que um outro?
   •   O protocolo leva em consideração passos desnecessários que poderiam ser omitidos sem
       prejudicá-lo?
   •   O protocolo cifra uma mensagem que poderia ser enviada em texto em claro sem prejudicar os
       aspectos de segurança?

A BAN possui grande aplicação na análise de protocolos, o que é feito em três passos. O primeiro deles
consiste em expressar as suposições e os objetivos como afirmações numa notação simbólica para que a
lógica passe de um estado conhecido para um onde possa certificar se as metas serão realmente
alcançadas. O passo seguinte consiste em transformar os passos do protocolo numa notação simbólica.
Finalmente, um conjunto de postulados são aplicados para atingir os objetivos de autenticação [Santos,
2002].

A BAN utiliza um conjunto de expressões lógicas. Apresentamos algumas delas na tabela 1.

         Expressão      Leitura                                     Significado
            A |≡ B      A acredita em B                             A considera B como uma
                                                                    verdade.
            A |~ X      A uma vez disse X                           O participante A enviou uma
                                                                    mensagem contendo o valor X,
                                                                    em algum momento.
            A◃ X        A “vê” X                                    A recebeu a uma mensagem
                                                                    contendo X. A pode ler e repetir
                                                                    X caso deseje.
            A |⇒ X      A tem jurisdição sobre X                    A é uma autoridade sobre X. Isto
                                                                    geralmente significa que X é uma
                                                                    chave de sessão criada por A.
             #(X)       (X) é recente
                        K é uma chave compartilhada na K é uma chave de conhecimento
            A   K
                    B   comunicação entre A e B.       exclusivo de A e B.
                
                V       A e B compartilham um segredo V             V é, por exemplo, uma senha. É
            A⇔B                                                     tão novo quanto seguro.

                K       K é chave pública de B
                    B
            
                                  Tabela 1: Exemplo de notações da lógica BAN.


A lógica BAN fornece também um conjunto de postulados, que são a base da lógica para que se possa
fazer a análise dos protocolos [BAN,1990]. Como o foco deste artigo não é a análise dos protocolos mas
sim sua representação, vamos deixar a aplicação dos postulados para um outro momento.
Mais uma vez vamos utilizar o protocolo de Needham-Schroeder para ilustrar como a BAN Logic pode ser
utilizada para descrever protocolos. Na figura 4 descrevemos os passos do protocolo, com exceção do
primeiro pois a BAN não considera, nos protocolos de segurança, as informações transmitidas em claro.


               Mensagem 2         SA :
                                            {   N A ,  A K B , #  A K B  ,  A K B
                                                           
                                                             AB                   AB


                                                                                      {   AB


                                                                                               }}
                                                                                                K BS K AS


               Mensagem 3         AB :  A
                                            {      K AB

                                                   
                                                          B
                                                              }   K BS


               Mensagem 4         BA :
                                            {   N B , A
                                                           K AB

                                                           
                                                                    B
                                                                         }K AB


               Mensagem 5         AB :
                                            {   N B ' , A
                                                             K AB

                                                             
                                                                     B
                                                                          }K AB


                        Fig 4: Protocolo Needham-Schroeder especificado em BAN logic.

Observamos que a complexidade da representação cresce um pouco e que, do ponto de vista da
especificação, a semântica da lógica BAN é facilmente percebida como correspondente ao equivalente em
CSP, apesar da sintaxe ser significativamente diferente.


CAPSL

CAPSL é o acrônimo para “Common Authentication Protocol Specification Language” e é uma linguagem
formal para expressar protocolos de autenticação e trocas de chaves desenvolvida em 1997 por Millen. É
sabido que apesar de sua expressividade e da posterior ampliação para a descrição de protocolos multicast,
com MuCAPSL, CAPSL tem dificuldade de representar certas expressões possíveis com os métodos
baseados em lógica, como BAN.

Ao contrário dos modelos lógicos, a CAPSL é uma linguagem de alto-nível. Sua intenção é permitir que um
protocolo possa ser especificado de uma forma que possa ser tratada por qualquer ferramenta de análise
automática de protocolos, desde que exista o compilador adequado. A CAPSL possui várias características
importantes:
    • faz a distinição entre dados recentes e de longa data associados à sessão;
    • é modular e extensível;
    • uma especificação CAPSL é composta de até três tipos de módulos: typespec, protocol e
        environment specifications, geralmente nesta ordem. As typespec correspondem a especificações
        de tipos de dados abstratos e permite a definição de novos tipos de dados e definir operadores
        criptográficos e outras funções.
    • As especificações de protocolos em CAPSL possuem três partes principais: declarações,
        mensagens e metas.

Mais uma vez vamos usar o protocolo de Needham-Schroeder para ilustrar a técnica. Na listagem 1 temos a
especificação do protocolo em CAPSL [Tian, 2006].

                PROTOCOL NSPK;

                VARIABLES
                  S : Principal;
                  A, B: PKUser;
                  Na, Nb: Nonce, CRYPTO;
                  KAB : Skey , FRESH , CRYPTO;

                ASSUMPTIONS
                  HOLDS A : S;
                  HOLDS A : B;

                MESSAGES
1.   A -> S : A, B, Na;
                           2.   S -> A : {Na,B,KAB,{KAB,A}pk(B)}pk(A)
                           3.   A -> B : {KAB,A}pk(B)
                           4.   B -> A : {Nb}KAB
                           5.   A -> B : {Nb'}KAB
                GOALS
                  SECRET Na
                  SECRET Nb;
                  SECRET KAB;
                  PRECEDES A: B | Na;
                  PRECEDES B: A | Nb;
                END;

Vamos a algumas explicações:
   • HOLDS X : Y indica que X é o iniciante da comunicação e espera uma resposta de Y;
   • PKUser é uma especialização do tipo Principal que possui um par de chaves pública/privada. Se A é
       um PKUser, pk(A) é sua chave pública e sk(A) é sua chave privada;
   • Skey indica uma chave simétrica;
   • {X}Y indica que X está cifrado pela chave Y;

Vemos que a descrição em CAPSL é relativamente mais simples e próxima das linguagens de programação
conhecidas, principalmente aquelas que permitem o uso de assertions.

Conclusão

As principais críticas às especificações formais, como um todo, estão na sua inerente complexidade e nas
dificuldades de sua integração suave ao processo de engenharia de software [Smith,2008]. No entanto
métodos formais como CAPSL, baseado nos modelos de máquina de estados, provêem pouco ou nenhum
suporte para diversos operadores lógicos fundamentais para os processos de verificação, particularmente
maduros nos modelos lógicos [Tian, 2006].

Percebe-se que o tema vem sendo tratado com crescente interesse desde a década de 70 e surgem
inclusive propostas de modelagem de protocolos utilizando técnicas com a UML 2 [Smith, 2008].

Neste breve passeio pelo tema percebemos um movimento de conjunção das duas linhas. Por um lado
procura-se uma especificação mais clara e natural como a CAPSL, mas sem perder o poder analítico de
uma lógica BAN. Mesmo esta última possui evoluções suportadas pela lógica GNY [Gong, 1990], que busca
suplantar algumas de suas falhas.

O aprofundamento no tema requer a avaliação destas técnicas não só na especificação mas também na
análise dos protocolos de segurança.


Referências

[Anderson, 2001] ANDERSON, R. “Security Engineering: A Guide to Building Dependable Distributed
Systems”. Wiley, 2001.
[BAN, 1990] BURROWS, M., ABADI, M. e NEEDHAM, R. “A logic of authentication”. ACM Transactions on
Computer Systems, vol. 8, pp. 18-36. 1990.
[Gong, 1990] GONG, L., NEEDHAM, R. AND YAHALOM, R., “Reasoning about belief in cryptographic
protocols”, Proceedings of IEEE Computer Society Synopsis on Research in Security and Privacy, 1990,
pp.234–248.
[Hoare, 1978] HOARE, C.A.R. “Communicating Sequential Processes”. Communications of the ACM,
volume 21, number 8, 1978.
[Holloway, 1997] HOLLOWAY, C. M. “Why Engineers Should Consider Formal Methods”. Proceedings of the
16th Digital Avionics Systems Conference, October 1997 .
[Kyntaja,1995] KYNTAJA, T. “A Logic of Authentication by Burrows, Abadi and Needham”. Proceedings of
Helsinki University of Technology Seminar on Network Security, 1995.
[Lamsweerde, 2000] LAMSWEERDE, A.V. “Formal Specification: a Roadmap”. Proceedings of the
Conference on The Future of Software Engineering, Limerick, Ireland , 2000; p.147-159.
[Santos, 2002] SANTOS, M.C.M.D. “Análise formal de protocolos de autenticação para redes celulares”.
Dissertação de Mestrado, Instituto Militar de Engenharia, Rio de Janeiro/RJ, Brasil, 2002.
[Schneider, 1996] SCHNEIDER, S. “Using CSP for protocol analysis:the Needham-Schroeder Public-Key
Protocol”. Royal Holloway Technical Report CSD-TR-96-14, 1996.
[Schneider, 1997] SCHNEIDER, S. “Verifying authentication protocols with CSP”. Proceedings of the 10th
IEEE workshop on Computer Security Foundations, 1997.
[Smith, 2008] SMITH, S., BEAULIEU, A.,PHILLIPS, W.G. “Modeling Security Protocols Using UML 2”.
Modelling Security Workshop at the ACM/IEEE 11th International Conference on Model Driven Engineering
Languages and Systems, Toulouse, France, 2008.
[Tian, 2006] TIAN, L., DOJEN, R. AND COFFEY, T. “Extending Formal Security Protocol Specification
Languages for use with New Verifications Techniques”. WSEAS Transactions on Information Science and
Applications, Vol. 3, No. 2, February 2006, pp.372-378.
[Wing, 2002] WING, J.M. “A Symbiotic Relationship Between Formal Methods and Security”. Computer
Security, Dependability and Assurance: From Needs to Solutions, 1998; Proceedings, p.26-38, 2002.

Mais conteúdo relacionado

Mais procurados

Explorando vulnerabilidades em redes sem fio
Explorando vulnerabilidades em redes sem fioExplorando vulnerabilidades em redes sem fio
Explorando vulnerabilidades em redes sem fioguest6d639fc
 
Artigo Cloud Computing
Artigo Cloud ComputingArtigo Cloud Computing
Artigo Cloud ComputingRicardo Peres
 
Tcc firewalls e a segurança na internet
Tcc    firewalls e a segurança na internetTcc    firewalls e a segurança na internet
Tcc firewalls e a segurança na internetalexandrino1
 
Análise de Tráfego da Rede Utilizando o Wireshark
Análise de Tráfego da Rede Utilizando o WiresharkAnálise de Tráfego da Rede Utilizando o Wireshark
Análise de Tráfego da Rede Utilizando o WiresharkIgor Bruno
 
Segurança em sistemas distribuídos
Segurança em sistemas distribuídosSegurança em sistemas distribuídos
Segurança em sistemas distribuídosGeomar Matias Lima
 
Conceito em segurança de redes de computadores
Conceito em segurança de redes de computadoresConceito em segurança de redes de computadores
Conceito em segurança de redes de computadoresRogerio Pereira
 
Aula src openvpn-configuração com chave publica
Aula src   openvpn-configuração com chave publicaAula src   openvpn-configuração com chave publica
Aula src openvpn-configuração com chave publicaRafael Simões
 
Segurança na Rede
Segurança na RedeSegurança na Rede
Segurança na Redecarbgarcia
 
Segurança em Sistemas Baseados em Redes de Computadores
Segurança em Sistemas Baseados em Redes de ComputadoresSegurança em Sistemas Baseados em Redes de Computadores
Segurança em Sistemas Baseados em Redes de ComputadoresBruno Dos Anjos Silveira
 
Redes -aula_8_-_seguranca_2_
Redes  -aula_8_-_seguranca_2_Redes  -aula_8_-_seguranca_2_
Redes -aula_8_-_seguranca_2_cleitonfcsantos
 
Estudo de caso segurança computação distribuída
Estudo de caso   segurança computação distribuídaEstudo de caso   segurança computação distribuída
Estudo de caso segurança computação distribuídaRicardo Nagel
 

Mais procurados (20)

Explorando vulnerabilidades em redes sem fio
Explorando vulnerabilidades em redes sem fioExplorando vulnerabilidades em redes sem fio
Explorando vulnerabilidades em redes sem fio
 
Segurança em sistemas distribuidos
Segurança em sistemas distribuidosSegurança em sistemas distribuidos
Segurança em sistemas distribuidos
 
Artigo Cloud Computing
Artigo Cloud ComputingArtigo Cloud Computing
Artigo Cloud Computing
 
Tcc firewalls e a segurança na internet
Tcc    firewalls e a segurança na internetTcc    firewalls e a segurança na internet
Tcc firewalls e a segurança na internet
 
Segurança em Sistemas Distribuídos
Segurança em Sistemas DistribuídosSegurança em Sistemas Distribuídos
Segurança em Sistemas Distribuídos
 
Aula 2 semana2
Aula 2 semana2Aula 2 semana2
Aula 2 semana2
 
Análise de Tráfego da Rede Utilizando o Wireshark
Análise de Tráfego da Rede Utilizando o WiresharkAnálise de Tráfego da Rede Utilizando o Wireshark
Análise de Tráfego da Rede Utilizando o Wireshark
 
Segurança em sistemas distribuídos
Segurança em sistemas distribuídosSegurança em sistemas distribuídos
Segurança em sistemas distribuídos
 
Segurança em redes sem fio
Segurança em redes sem fioSegurança em redes sem fio
Segurança em redes sem fio
 
Conceito em segurança de redes de computadores
Conceito em segurança de redes de computadoresConceito em segurança de redes de computadores
Conceito em segurança de redes de computadores
 
Aula 7 semana
Aula 7 semanaAula 7 semana
Aula 7 semana
 
Aula src openvpn-configuração com chave publica
Aula src   openvpn-configuração com chave publicaAula src   openvpn-configuração com chave publica
Aula src openvpn-configuração com chave publica
 
Segurança na Rede
Segurança na RedeSegurança na Rede
Segurança na Rede
 
Redes -aula_1o
Redes  -aula_1oRedes  -aula_1o
Redes -aula_1o
 
Segurança em Sistemas Baseados em Redes de Computadores
Segurança em Sistemas Baseados em Redes de ComputadoresSegurança em Sistemas Baseados em Redes de Computadores
Segurança em Sistemas Baseados em Redes de Computadores
 
Redes -aula_8_-_seguranca_2_
Redes  -aula_8_-_seguranca_2_Redes  -aula_8_-_seguranca_2_
Redes -aula_8_-_seguranca_2_
 
Estudo de caso segurança computação distribuída
Estudo de caso   segurança computação distribuídaEstudo de caso   segurança computação distribuída
Estudo de caso segurança computação distribuída
 
Inf seg redinf_semana5
Inf seg redinf_semana5Inf seg redinf_semana5
Inf seg redinf_semana5
 
Aula 2 semana3
Aula 2 semana3Aula 2 semana3
Aula 2 semana3
 
TCC Seguranca -1.0
TCC Seguranca -1.0TCC Seguranca -1.0
TCC Seguranca -1.0
 

Destaque

Desvendando o desenvolvimento seguro de software
Desvendando o desenvolvimento seguro de softwareDesvendando o desenvolvimento seguro de software
Desvendando o desenvolvimento seguro de softwareAllyson Chiarini
 
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29cadiego
 
Requisitos de Segurança
Requisitos de SegurançaRequisitos de Segurança
Requisitos de SegurançaOWASP Brasília
 
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWAREQUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWAREFabiano Souza
 
Aplicando técnicas de UX na reformulação de produtos.
Aplicando técnicas de UX na reformulação de produtos.Aplicando técnicas de UX na reformulação de produtos.
Aplicando técnicas de UX na reformulação de produtos.Ana Cristine Veneziani
 
Aula 03 qs - confiabilidade de sw
Aula 03   qs - confiabilidade de swAula 03   qs - confiabilidade de sw
Aula 03 qs - confiabilidade de swJunior Gomes
 
Segurança em Aplicações Web conforme OWASP
Segurança em Aplicações Web conforme OWASPSegurança em Aplicações Web conforme OWASP
Segurança em Aplicações Web conforme OWASPFabiano Pereira
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareRonney Moreira de Castro
 

Destaque (9)

Desvendando o desenvolvimento seguro de software
Desvendando o desenvolvimento seguro de softwareDesvendando o desenvolvimento seguro de software
Desvendando o desenvolvimento seguro de software
 
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
 
Requisitos de Segurança
Requisitos de SegurançaRequisitos de Segurança
Requisitos de Segurança
 
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWAREQUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE
QUALIDADE, SEGURANÇA E CONFIABILIDADE DE SOFTWARE
 
Ferranentas OWASP
Ferranentas OWASPFerranentas OWASP
Ferranentas OWASP
 
Aplicando técnicas de UX na reformulação de produtos.
Aplicando técnicas de UX na reformulação de produtos.Aplicando técnicas de UX na reformulação de produtos.
Aplicando técnicas de UX na reformulação de produtos.
 
Aula 03 qs - confiabilidade de sw
Aula 03   qs - confiabilidade de swAula 03   qs - confiabilidade de sw
Aula 03 qs - confiabilidade de sw
 
Segurança em Aplicações Web conforme OWASP
Segurança em Aplicações Web conforme OWASPSegurança em Aplicações Web conforme OWASP
Segurança em Aplicações Web conforme OWASP
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de software
 

Semelhante a Especificação formal de protocolos de Segurança

Cj027168 segurança scm mapas estratégicos
Cj027168 segurança scm mapas estratégicosCj027168 segurança scm mapas estratégicos
Cj027168 segurança scm mapas estratégicosvalneide
 
Gestão de Redes de Computadores e Serviços.pptx
Gestão de Redes de Computadores e Serviços.pptxGestão de Redes de Computadores e Serviços.pptx
Gestão de Redes de Computadores e Serviços.pptxHJesusMiguel
 
Aula 02 - Arquiteturas de Redes - Modelo em camadas.pdf
Aula 02 - Arquiteturas de Redes - Modelo em camadas.pdfAula 02 - Arquiteturas de Redes - Modelo em camadas.pdf
Aula 02 - Arquiteturas de Redes - Modelo em camadas.pdfrodrigofraga36
 
Clp automacao redes_protocolos
Clp automacao redes_protocolosClp automacao redes_protocolos
Clp automacao redes_protocolosWellington barbosa
 
REC0002 - Camada de Enlace
REC0002 - Camada de EnlaceREC0002 - Camada de Enlace
REC0002 - Camada de EnlaceJenis Costa
 
Confiabilidade do canal em codificação turbo dscdma sujeito a desvanecimento ...
Confiabilidade do canal em codificação turbo dscdma sujeito a desvanecimento ...Confiabilidade do canal em codificação turbo dscdma sujeito a desvanecimento ...
Confiabilidade do canal em codificação turbo dscdma sujeito a desvanecimento ...wagner1861
 
Apostila do treinamento profibus 2 instalação
Apostila do treinamento profibus 2  instalaçãoApostila do treinamento profibus 2  instalação
Apostila do treinamento profibus 2 instalaçãoconfidencial
 
Apostila do treinamento profibus instalação
Apostila do treinamento profibus   instalaçãoApostila do treinamento profibus   instalação
Apostila do treinamento profibus instalaçãoconfidencial
 
S2 B 2007 Infra Aula 01 V1.00
S2 B 2007   Infra   Aula 01 V1.00S2 B 2007   Infra   Aula 01 V1.00
S2 B 2007 Infra Aula 01 V1.00doctorweb
 
Apostila do treinamento profibus configuração
Apostila do treinamento profibus   configuraçãoApostila do treinamento profibus   configuração
Apostila do treinamento profibus configuraçãoconfidencial
 
Apostila do treinamento profibus 2 configuração
Apostila do treinamento profibus 2  configuraçãoApostila do treinamento profibus 2  configuração
Apostila do treinamento profibus 2 configuraçãoconfidencial
 
Propostas de Autenticação para SNMP
Propostas de Autenticação para SNMPPropostas de Autenticação para SNMP
Propostas de Autenticação para SNMPMauro Tapajós
 

Semelhante a Especificação formal de protocolos de Segurança (20)

Protocolos
ProtocolosProtocolos
Protocolos
 
Protocolos
ProtocolosProtocolos
Protocolos
 
Aes 25
Aes 25Aes 25
Aes 25
 
Lista01
Lista01Lista01
Lista01
 
Cj027168 segurança scm mapas estratégicos
Cj027168 segurança scm mapas estratégicosCj027168 segurança scm mapas estratégicos
Cj027168 segurança scm mapas estratégicos
 
Gestão de Redes de Computadores e Serviços.pptx
Gestão de Redes de Computadores e Serviços.pptxGestão de Redes de Computadores e Serviços.pptx
Gestão de Redes de Computadores e Serviços.pptx
 
Aula 02 - Arquiteturas de Redes - Modelo em camadas.pdf
Aula 02 - Arquiteturas de Redes - Modelo em camadas.pdfAula 02 - Arquiteturas de Redes - Modelo em camadas.pdf
Aula 02 - Arquiteturas de Redes - Modelo em camadas.pdf
 
Clp automacao redes_protocolos
Clp automacao redes_protocolosClp automacao redes_protocolos
Clp automacao redes_protocolos
 
REC0002 - Camada de Enlace
REC0002 - Camada de EnlaceREC0002 - Camada de Enlace
REC0002 - Camada de Enlace
 
2015-CBQEE-I
2015-CBQEE-I2015-CBQEE-I
2015-CBQEE-I
 
Confiabilidade do canal em codificação turbo dscdma sujeito a desvanecimento ...
Confiabilidade do canal em codificação turbo dscdma sujeito a desvanecimento ...Confiabilidade do canal em codificação turbo dscdma sujeito a desvanecimento ...
Confiabilidade do canal em codificação turbo dscdma sujeito a desvanecimento ...
 
Apostila do treinamento profibus 2 instalação
Apostila do treinamento profibus 2  instalaçãoApostila do treinamento profibus 2  instalação
Apostila do treinamento profibus 2 instalação
 
Apostila do treinamento profibus instalação
Apostila do treinamento profibus   instalaçãoApostila do treinamento profibus   instalação
Apostila do treinamento profibus instalação
 
Artigo Redes Jonnes
Artigo Redes JonnesArtigo Redes Jonnes
Artigo Redes Jonnes
 
Artigo Redes Jonnes
Artigo Redes JonnesArtigo Redes Jonnes
Artigo Redes Jonnes
 
Introdução a Redes de Computadores
Introdução a Redes de ComputadoresIntrodução a Redes de Computadores
Introdução a Redes de Computadores
 
S2 B 2007 Infra Aula 01 V1.00
S2 B 2007   Infra   Aula 01 V1.00S2 B 2007   Infra   Aula 01 V1.00
S2 B 2007 Infra Aula 01 V1.00
 
Apostila do treinamento profibus configuração
Apostila do treinamento profibus   configuraçãoApostila do treinamento profibus   configuração
Apostila do treinamento profibus configuração
 
Apostila do treinamento profibus 2 configuração
Apostila do treinamento profibus 2  configuraçãoApostila do treinamento profibus 2  configuração
Apostila do treinamento profibus 2 configuração
 
Propostas de Autenticação para SNMP
Propostas de Autenticação para SNMPPropostas de Autenticação para SNMP
Propostas de Autenticação para SNMP
 

Especificação formal de protocolos de Segurança

  • 1. Especificação formal de protocolos de segurança requisito para a disciplina CE-281 do programa de pós-graduação strictu sensu do Instituto de Tecnologia da Aeronáutica (ITA), Prof. Yano. 2010, Fabian Martins da Silva, fabian.martins@gmail.com Introdução O tema da especificação e verificação formal de protocolos está no escopo dos métodos formais, que é um conjunto de técnicas suportadas pela lógica matemática cujo propósito é viabilizar a especificação, desenvolvimento e verificação de software e hardware. De fato, a modelagem matemática vem sendo aplicada nas diversas áreas da engenharia como uma excelente forma de representação e validação de modelos de quaisquer tipo. Isto é muito mais eficiente e barato do que se implementar protótipos, apesar do uso de uma técnica não descartar a outra. As questões de segurança representaram um importante papel no desenvolvimento dos métodos formais nas décadas de 70 e 80, tanto que as pesquisas neste tema foram patrocinadas principalmente pela NSA (National Security Agency, USA). Estes trabalhos resultaram no desenvolvimento de modelos formais de segurança, ferramentas para suportar o raciocínio sobre este tema e a aplicação destas ferramentas para provar a segurança de sistemas [Wing,2002]. Neste artigo iremos abordar de forma objetiva a importância dos métodos formais no contexto da especificação e verificação dos protocolos de segurança e visitaremos algumas das técnicas criadas para este propósito. Especificação de protocolos de segurança Os protocolos de segurança definem regras de comunicação entre sistemas que tem por objetivo garantir a robustez do processo de comunicação destes sistemas frente a um conjunto de ameças consideradas. Uma vez que se torna inviável tratar todas as ameaças possíveis, os protocolos são projetados com base em certas conjecturas feitas com relação a estas possíveis ameaças ([Anderson, 2001], pag.13). A notação padrão de engenharia para protocolos consiste basicamente na indicação do comunicante emissor, do receptor e da lista de informações que é transmitida do primeiro para o segundo. Por exemplo, se queremos especificar um protocolo onde um crachá (C) fornece sua identificação (que também é representada por C) para um terminal (T), poderemos especificar simplesmente como: C T :C Obviamente o ideal é que o crachá transmita ao terminal sua identificação em claro e uma informação de conhecimento exclusivo do terminal. Por exemplo, a própria identificação do crachá cifrada por uma chave de conhecimento único do terminal: C T :C , { C } K T Neste caso, KT representa a chave de cifragem de conhecimento apenas do terminal e de seus sistemas de suporte. É fácil perceber que que se um falsário (F) capturar o sinal transmitido pelo crachá C e o transmitir ao terminal ele facilmente se passará pelo portador do crachá C: C  F :C , { C }K T F T :C , {C }K T Fig 1: Exemplo na notação padrão para a especificação de protocolos. Percebe-se que, uma vez entendida sua estrutura, o padrão é relativamente simples para descrever protocolos mais complexos que este, como por exemplo o protocolo de Needham-Schroeder, que descreve a comunicação entre duas entidades A e B, autenticada por um sistema S ([Anderson, 2001], pag.26):
  • 2. Mensagem 1 AS : A, B , N A Mensagem 2 S  A : { N A , B , K AB , { K AB , A }K BS }K AS Mensagem 3 A B : { K AB , A } K BS Mensagem 4 B  A : { N B }K AB Mensagem 5 A  B : { N B−1 } K AB Fig 2: Protocolo de Needham-Schroeder em notação padrão. Fica evidente que o protocolo de Nreedham-Schroeder tem por objetivo reduzir o risco de interceptação da informação de segurança, utilizando um sistema intermediário como autenticador da comunicação entre as entidades comunicantes. No exemplo temos: • A é o requisitante da comunicação, • B é o alvo da comunicação; • S é o sistema autenticador; • NA é um “nonce” (“number used once”, um número aleatório produzido por A); • KAS é a chave de comunicação entre A e S, de conhecimento exclusivo de S; • KAB é a chave de comunicação entre A e B, produzida por S e entregue à entidade A na mensagem 2; Apesar desta notação ser relativamente simples, o processo de projeto de protocolos de segurança mais complexos é particularmente complexo e sujeito a erros, tanto que foram encontradas falhas em um significante número de protocolos de segurança mesmo anos após a publicação original. Isto indica que os métodos informais de verificação dos protocolos podem manter escondidas suas falhas e vulnerabilidades. Especificações formais Uma especificação pode ser considerada formal se for expressa em uma linguagem composta de três componentes [Lamsweerde,2000]: 1. Sintaxe, que determina se as expressões estão bem formadas gramaticalmente; 2. Semântica, que especifique as regras para a interpretação das expressões, de forma precisa e significativa dentro do domínio considerado; 3. Regras, que consiste em regras para inferência de informações úteis a partir de uma especificação determinada; Escrever uma especificação correta não é algo trivial. A especificação deve descrever apropriadamente o problema, deve ser internamente consistente (ou seja, ter valor semântico), deve ser inambigua (indicar apenas uma interpretação possível), dentre outras características importantes. Dada a complexidade, alguém pode questionar por que utilizar especificações formais. O fato é que este tipo de especificação permite validar características sistêmicas de possíveis soluções para um problema sem que a mesma precise ser implementada. Além disso, as especificações formais são importantes para que possamos suplantar os problemas semânticos da linguagem natural e que, com isso, os conceitos a serem descritos possam ter interpretação única por qualquer leitor. Por este motivo são utilizadas largamente nas várias áreas de engenharia, matemática, computação e áreas afins, para documentar, comunicar, validar e reutilizar soluções [Holloway, 1997]. Do ponto de vista dos protocolos de segurança, as especificações formais fornecem uma abordagem sistemática para a descoberta de falhas e procuram descrever estes protocolos de modo que as conjecturas com respeito às possíveis vulnerabilidades possam ser avaliadas e os requisitos de segurança e o comportamento do protocolo, sob certas condições, possam ser testados e confirmados. Abordagens comuns para a verification formal de protocolos estão baseadas na lógica modal ou em máquinas de estados. Estas técnicas viabilizam a automatização do processo de verificação, o que agiliza o processo e remove diversas fontes pontenciais de erro da verificação manual [Tian, 2006]. Nas próximas seções vamos apresentar algumas delas: CSP, BAN Logic e CAPSL
  • 3. CSP CSP ou “Communicating Sequential Processes” é uma linguagem formal para descrever padrões de interação entre sistemas concorrentes descrito pela primeira vez em 1978 por Hoare [Hoare, 1978] e depois publicado em seu livro homônimo em 1985. A CSP descreve um sistema (ou protocolo) em termos de elementos independentes que operam por meio do envio de mensagens, oferecendo um conjunto sintático/semântico composto por operadores algebráicos que permitem que descrições de interações complexas entre processos sejam construídas a partir de poucos elementos primitivos. Apesar de eficiente, a CSP é relativamente complexa. A melhor forma de ilustrar sua aplicação é voltando ao protocolo de Needham-Schroeder conforme descrito na figura 2 e observando sua especificação em CSP na figura 3. A=□i∈USER trans.A! i ! K i !  K Ai . A rec.A.i ? K Ai n i . A (a) trans.A! i ! K i  ni−1 Stop B=rec.B ? j ? K B  y.j  trans.B! j ! y n B . y  (b) rec.B.j.y  n B−1 Stop Fig 3: Protocolo de Needham-Schroeder (parcial) em CSP. No exemplo da figura 3 temos apenas as mensagens onde A e B trocam as chaves já recebidas pelo sistema autenticador da comunicação. Em (a) podemos observar 3 passos, um em cada linha: 1. A transmite (função trans) a um usuário i, pertencente ao espaço de usuários definidos por USER, a mensagem (KAi.A) criptografada com a chave Ki (ou seja, a chave fornecida pelo sistema autenticador). Observe que a mensagem (KAi.A) possui dois elementos: A chave de comunicação entre A e i e a identificação de A. 2. Em seguida A recebe (função rec) de i um número ni (nonce de i) e a identificação de A, ambos cifrados pela chave de comunicação fornecida previamente pelo sistema. O símbolo ? Indica que há um questionamento e espera-se recerber o argumento que o segue. 3. Finalmente, A transmite à entidade i o valor ni decrementado de uma unidade. Agora certamente fica mais fácil entender a expressão em (b), onde está representada a contrapartida do lado de B, onde a entidade A é representada por j. Adicionalmente, a especificação CSP poderia determinar as regras válidas na execução dos processos: Proc :: = trans → rec | rec → trans | trans → Stop | rec → Stop | Stop A CSP define um conjunto de construções possíveis em que eventos e processos podem ser combinados, entre eles temos: Pa □ Pb ( escolha deterministica, uma entidade determina se Pa ou Pb será executado) Pa ∏ Pb ( escolha não-determinística ) if x then Pa else Pb Podemos perceber que CSP é relativamente complexa. No entanto, é bastante consistente e prática para os processos de verificação de protocolos. Mais detalhes sobre a aplicação de CSP na especificação e validação de protocolos podem ser encontrados em [Schneider,1996] e [Schneider,1997].
  • 4. BAN Logic A então denominada “lógica BAN” obtém seu nome a partir das iniciais de seus criadores, Burrows, Abadi e Needham, tendo sido publicada em 1989 no artigo “A Logic for Authentication” e algumas vezes é descrita como a primeira a analisar formalmente os protocolos criptográficos, apesar da CSP remontar a data anterior. Conforme especificam os autores, “o objetivo da lógica é descrever a crença das partes envolvidas na autenticação e a evolução desta crença enquanto os participantes se comunicam” [BAN, 1990]. A BAN não fornece prova de segurança, somente argumenta sobre a autenticação, também não tenta fazer a distinção entre receber uma mensagem e possuí-la; ambas são tratadas do mesmo modo. Os desenvolvedores da lógica BAN tinham como meta responder as seguintes perguntas [Santos, 2002]: • Quais são os objetivos do protocolo? • O protocolo precisa de mais suposições do que um outro? • O protocolo leva em consideração passos desnecessários que poderiam ser omitidos sem prejudicá-lo? • O protocolo cifra uma mensagem que poderia ser enviada em texto em claro sem prejudicar os aspectos de segurança? A BAN possui grande aplicação na análise de protocolos, o que é feito em três passos. O primeiro deles consiste em expressar as suposições e os objetivos como afirmações numa notação simbólica para que a lógica passe de um estado conhecido para um onde possa certificar se as metas serão realmente alcançadas. O passo seguinte consiste em transformar os passos do protocolo numa notação simbólica. Finalmente, um conjunto de postulados são aplicados para atingir os objetivos de autenticação [Santos, 2002]. A BAN utiliza um conjunto de expressões lógicas. Apresentamos algumas delas na tabela 1. Expressão Leitura Significado A |≡ B A acredita em B A considera B como uma verdade. A |~ X A uma vez disse X O participante A enviou uma mensagem contendo o valor X, em algum momento. A◃ X A “vê” X A recebeu a uma mensagem contendo X. A pode ler e repetir X caso deseje. A |⇒ X A tem jurisdição sobre X A é uma autoridade sobre X. Isto geralmente significa que X é uma chave de sessão criada por A. #(X) (X) é recente K é uma chave compartilhada na K é uma chave de conhecimento A K B comunicação entre A e B. exclusivo de A e B.  V A e B compartilham um segredo V V é, por exemplo, uma senha. É A⇔B tão novo quanto seguro. K K é chave pública de B B  Tabela 1: Exemplo de notações da lógica BAN. A lógica BAN fornece também um conjunto de postulados, que são a base da lógica para que se possa fazer a análise dos protocolos [BAN,1990]. Como o foco deste artigo não é a análise dos protocolos mas sim sua representação, vamos deixar a aplicação dos postulados para um outro momento.
  • 5. Mais uma vez vamos utilizar o protocolo de Needham-Schroeder para ilustrar como a BAN Logic pode ser utilizada para descrever protocolos. Na figura 4 descrevemos os passos do protocolo, com exceção do primeiro pois a BAN não considera, nos protocolos de segurança, as informações transmitidas em claro. Mensagem 2 SA : { N A ,  A K B , #  A K B  ,  A K B  AB AB  { AB  }} K BS K AS Mensagem 3 AB :  A { K AB  B } K BS Mensagem 4 BA : { N B , A K AB  B }K AB Mensagem 5 AB : { N B ' , A K AB  B }K AB Fig 4: Protocolo Needham-Schroeder especificado em BAN logic. Observamos que a complexidade da representação cresce um pouco e que, do ponto de vista da especificação, a semântica da lógica BAN é facilmente percebida como correspondente ao equivalente em CSP, apesar da sintaxe ser significativamente diferente. CAPSL CAPSL é o acrônimo para “Common Authentication Protocol Specification Language” e é uma linguagem formal para expressar protocolos de autenticação e trocas de chaves desenvolvida em 1997 por Millen. É sabido que apesar de sua expressividade e da posterior ampliação para a descrição de protocolos multicast, com MuCAPSL, CAPSL tem dificuldade de representar certas expressões possíveis com os métodos baseados em lógica, como BAN. Ao contrário dos modelos lógicos, a CAPSL é uma linguagem de alto-nível. Sua intenção é permitir que um protocolo possa ser especificado de uma forma que possa ser tratada por qualquer ferramenta de análise automática de protocolos, desde que exista o compilador adequado. A CAPSL possui várias características importantes: • faz a distinição entre dados recentes e de longa data associados à sessão; • é modular e extensível; • uma especificação CAPSL é composta de até três tipos de módulos: typespec, protocol e environment specifications, geralmente nesta ordem. As typespec correspondem a especificações de tipos de dados abstratos e permite a definição de novos tipos de dados e definir operadores criptográficos e outras funções. • As especificações de protocolos em CAPSL possuem três partes principais: declarações, mensagens e metas. Mais uma vez vamos usar o protocolo de Needham-Schroeder para ilustrar a técnica. Na listagem 1 temos a especificação do protocolo em CAPSL [Tian, 2006]. PROTOCOL NSPK; VARIABLES S : Principal; A, B: PKUser; Na, Nb: Nonce, CRYPTO; KAB : Skey , FRESH , CRYPTO; ASSUMPTIONS HOLDS A : S; HOLDS A : B; MESSAGES
  • 6. 1. A -> S : A, B, Na; 2. S -> A : {Na,B,KAB,{KAB,A}pk(B)}pk(A) 3. A -> B : {KAB,A}pk(B) 4. B -> A : {Nb}KAB 5. A -> B : {Nb'}KAB GOALS SECRET Na SECRET Nb; SECRET KAB; PRECEDES A: B | Na; PRECEDES B: A | Nb; END; Vamos a algumas explicações: • HOLDS X : Y indica que X é o iniciante da comunicação e espera uma resposta de Y; • PKUser é uma especialização do tipo Principal que possui um par de chaves pública/privada. Se A é um PKUser, pk(A) é sua chave pública e sk(A) é sua chave privada; • Skey indica uma chave simétrica; • {X}Y indica que X está cifrado pela chave Y; Vemos que a descrição em CAPSL é relativamente mais simples e próxima das linguagens de programação conhecidas, principalmente aquelas que permitem o uso de assertions. Conclusão As principais críticas às especificações formais, como um todo, estão na sua inerente complexidade e nas dificuldades de sua integração suave ao processo de engenharia de software [Smith,2008]. No entanto métodos formais como CAPSL, baseado nos modelos de máquina de estados, provêem pouco ou nenhum suporte para diversos operadores lógicos fundamentais para os processos de verificação, particularmente maduros nos modelos lógicos [Tian, 2006]. Percebe-se que o tema vem sendo tratado com crescente interesse desde a década de 70 e surgem inclusive propostas de modelagem de protocolos utilizando técnicas com a UML 2 [Smith, 2008]. Neste breve passeio pelo tema percebemos um movimento de conjunção das duas linhas. Por um lado procura-se uma especificação mais clara e natural como a CAPSL, mas sem perder o poder analítico de uma lógica BAN. Mesmo esta última possui evoluções suportadas pela lógica GNY [Gong, 1990], que busca suplantar algumas de suas falhas. O aprofundamento no tema requer a avaliação destas técnicas não só na especificação mas também na análise dos protocolos de segurança. Referências [Anderson, 2001] ANDERSON, R. “Security Engineering: A Guide to Building Dependable Distributed Systems”. Wiley, 2001. [BAN, 1990] BURROWS, M., ABADI, M. e NEEDHAM, R. “A logic of authentication”. ACM Transactions on Computer Systems, vol. 8, pp. 18-36. 1990. [Gong, 1990] GONG, L., NEEDHAM, R. AND YAHALOM, R., “Reasoning about belief in cryptographic protocols”, Proceedings of IEEE Computer Society Synopsis on Research in Security and Privacy, 1990, pp.234–248. [Hoare, 1978] HOARE, C.A.R. “Communicating Sequential Processes”. Communications of the ACM, volume 21, number 8, 1978. [Holloway, 1997] HOLLOWAY, C. M. “Why Engineers Should Consider Formal Methods”. Proceedings of the 16th Digital Avionics Systems Conference, October 1997 . [Kyntaja,1995] KYNTAJA, T. “A Logic of Authentication by Burrows, Abadi and Needham”. Proceedings of Helsinki University of Technology Seminar on Network Security, 1995. [Lamsweerde, 2000] LAMSWEERDE, A.V. “Formal Specification: a Roadmap”. Proceedings of the
  • 7. Conference on The Future of Software Engineering, Limerick, Ireland , 2000; p.147-159. [Santos, 2002] SANTOS, M.C.M.D. “Análise formal de protocolos de autenticação para redes celulares”. Dissertação de Mestrado, Instituto Militar de Engenharia, Rio de Janeiro/RJ, Brasil, 2002. [Schneider, 1996] SCHNEIDER, S. “Using CSP for protocol analysis:the Needham-Schroeder Public-Key Protocol”. Royal Holloway Technical Report CSD-TR-96-14, 1996. [Schneider, 1997] SCHNEIDER, S. “Verifying authentication protocols with CSP”. Proceedings of the 10th IEEE workshop on Computer Security Foundations, 1997. [Smith, 2008] SMITH, S., BEAULIEU, A.,PHILLIPS, W.G. “Modeling Security Protocols Using UML 2”. Modelling Security Workshop at the ACM/IEEE 11th International Conference on Model Driven Engineering Languages and Systems, Toulouse, France, 2008. [Tian, 2006] TIAN, L., DOJEN, R. AND COFFEY, T. “Extending Formal Security Protocol Specification Languages for use with New Verifications Techniques”. WSEAS Transactions on Information Science and Applications, Vol. 3, No. 2, February 2006, pp.372-378. [Wing, 2002] WING, J.M. “A Symbiotic Relationship Between Formal Methods and Security”. Computer Security, Dependability and Assurance: From Needs to Solutions, 1998; Proceedings, p.26-38, 2002.