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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1 network ? (msg3, agentB, data) -><br />

2 partnerB = data.content1;<br />

3 pnonce = data.content2;<br />

4 network1 ! agentB,partnerB;<br />

5 network ? (msg5,agentB,data);<br />

6 if<br />

7 :: (data.key == keyS) -> pkey = data.content1;<br />

8 goto MENSAGEM6;<br />

9 :: else -> goto FAIL;<br />

10 fi;<br />

Figura 2. Trecho do Processo Bob<br />

7. Comparação das especificações<br />

Nesta seção será discutida a relação entre alguns trechos das duas especificações.<br />

O Axioma Global 2 da Tabela 3 <strong>de</strong>termina que “nenhum par <strong>de</strong> agentes possui chaves<br />

públicas idênticas”. Seu equivalente na especificação em PROMELA é dado pelas diferente<br />

<strong>de</strong>finições <strong>de</strong> chave no escopo do processo servidor, on<strong>de</strong> cada processo possui uma<br />

variável Keyi, on<strong>de</strong> i i<strong>de</strong>ntifica o processo (S, A, B ou I).<br />

O Axioma <strong>de</strong> Conhecimento 1 da Tabela 4 caracteriza a proprieda<strong>de</strong> <strong>de</strong> que “nenhum<br />

agente sabe as chaves públicas dos outros agentes no início do protocolo”. O código<br />

correspon<strong>de</strong>nte em PROMELA utiliza uma variável local mtype pkey, inicializada com<br />

o valor zero. O mesmo acontece para o Axioma <strong>de</strong> Conhecimento 2: no código em<br />

PROMELA é criada uma variável mtype pnonce para armazenar o valor do nonce durante<br />

toda execução.<br />

Ainda na Tabela 4, o Axioma <strong>de</strong> Conhecimento 3 especifica a proprieda<strong>de</strong> <strong>de</strong> que<br />

“todos os agentes sabem as chave privada do servidor S”. Em PROMELA, esta condição<br />

é assegurada com a utilização <strong>de</strong> uma variável global.<br />

Um dos Axiomas <strong>de</strong> Comunicação, que faz parte da formalização completa do<br />

protocolo, mas que não foi apresentado anteriormente, <strong>de</strong>termina que “se um agente receber<br />

uma mensagem, então existe um agente que em algum momento anterior a enviou”.<br />

A especificação <strong>de</strong>ste axioma é mostrada na Tabela 5, on<strong>de</strong> o operador modal significa<br />

“em algum momento do passado”.<br />

∀X, Chave, M 1 [recv(X, M 1 , Chave) ⇒ ∃Y send(Y, M 1 , Chave)]<br />

Tabela 5. Axioma <strong>de</strong> conhecimento<br />

Os comandos <strong>de</strong> envio e recebimento <strong>de</strong> mensagens via canais em PROMELA<br />

codificam esta proprieda<strong>de</strong>, já que uma mensagem só será recebida caso algum outro<br />

processo a tenha enviado; caso contrário o processo que aguarda o recebimento fica bloqueado<br />

naquele ponto da sua execução.<br />

Proprieda<strong>de</strong>s que especifiquem o conhecimento dos agentes durante cada etapa do<br />

processo po<strong>de</strong>m ser caracterizados somente usando a abordagem lógica. Por exemplo, a<br />

terceira e quarta mensagens do protocolo, dadas na Tabela 1, são:<br />

Mensagem 3: A ⇒ B : {N A , A} chave pub B<br />

Mensagem 4: B ⇒ S : {B, A}<br />

326

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

Saved successfully!

Ooh no, something went wrong!