18.11.2014 Views

Anais - Engenharia de Redes de Comunicação - UnB

Anais - Engenharia de Redes de Comunicação - UnB

Anais - Engenharia de Redes de Comunicação - UnB

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Dado um sistema especificado em PROMELA, o SPIN gera o código <strong>de</strong> um verificador.<br />

O verificador consiste basicamente <strong>de</strong> um autômato <strong>de</strong> Büchi, construído a<br />

partir da especificação, e procedimentos para verificação <strong>de</strong> proprieda<strong>de</strong>s fornecidas em<br />

PLTL. Estas proprieda<strong>de</strong>s são também transformadas em autômatos. A intersecção dos<br />

autômatos da especificação e das proprieda<strong>de</strong>s <strong>de</strong>termina a satisfação (ou não) <strong>de</strong>stas proprieda<strong>de</strong>s<br />

pelo sistema <strong>de</strong>scrito.<br />

A partir da verificação po<strong>de</strong>mos obter três tipos <strong>de</strong> resultados: a proprieda<strong>de</strong> po<strong>de</strong><br />

ser satisfeita no mo<strong>de</strong>lo; violada e, sendo assim, o SPIN irá fornecer o contraexemplo<br />

como prova <strong>de</strong>ssa violação; ou po<strong>de</strong> não haver memória suficiente para a verificação<br />

completa do mo<strong>de</strong>lo.<br />

6. Especificação com SPIN<br />

A especificação completa consiste em quatro processos principais: Alice, Bob,<br />

Eve e init [Vieira 2011]. O processo init é responsável pela inicialização dos outros<br />

processos. Aqui iremos <strong>de</strong>screver as estruturas utilizadas e mostrar dois trechos da<br />

especificação: do processo Alice (Figura 1) e do processo Bob (Figura 2).<br />

As variáveis usadas na especificação consistem em um conjunto <strong>de</strong> constantes<br />

simbólicas do tipo mtype que i<strong>de</strong>ntificam as mensagens do protocolo, chaves públicas<br />

dos agentes, i<strong>de</strong>ntificação dos agentes e os nonces. A estrutura Pkt, que correspon<strong>de</strong> ao<br />

conteúdo da mensagem cifrada, é composta por três constantes (key, content1 e content2).<br />

Na Figura 1 apresentamos o início da <strong>de</strong>scrição do processo Alice (no label MEN-<br />

SAGEM1) que escolhe, não-<strong>de</strong>terministicamente com quem irá se autenticar (linhas 3 e<br />

4). Em seguida, o processo envia pelo canal network1, que liga os agentes ao servidor <strong>de</strong><br />

chaves públicas, a sua i<strong>de</strong>ntificação e a <strong>de</strong> quem está solicitando a chave pública. Na linha<br />

7, o processo aguarda a resposta do servidor com o i<strong>de</strong>ntificador msg2, sua i<strong>de</strong>ntificação<br />

e os dados contendo a chave pública requisitada.<br />

A Figura 2 mostra um trecho do processo Bob. Inicialmente, o processo aguarda<br />

o recebimento da mensagem 3 do protocolo (linha 1). Uma vez que as variáveis msg3<br />

e agentB sejam instanciadas, o dados da variável data são extraídos (linhas 2 e 3). O<br />

operador -> é uma guarda, ou seja, os comandos apresentados à direita só serão executados<br />

caso o comando (ou expressão) à esquerda seja executável (satisfeita). Na linha<br />

4, o agente Bob requisita a chave pública <strong>de</strong> quem o enviou a mensagem e aguarda pela<br />

resposta (linha 5). Em seguida, se receber uma resposta do servidor, o protocolo é continuado<br />

passando à execução do código da MENSAGEM6; caso contrário, o processo passa<br />

a um estado inválido.<br />

1 MENSAGEM1:<br />

2 if<br />

3 :: partnerA = agentB; network1 ! agentA,agentB;<br />

4 :: partnerA = agentI; network1 ! agentA,agentI;<br />

5 fi;<br />

6<br />

7 network ? (msg2,agentA,data);<br />

Figura 1. Trecho do Processo Alice<br />

325

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!