• Nenhum resultado encontrado

Manipulac~ao de Contextos S3L Multiponto

B.2 Programac~ao de Aplicac~oes com a API do S3L

B.2.5 Manipulac~ao de Contextos S3L Multiponto

O S3L permite a constituic~ao de subgrupos seguros sobre os grupos de base oferecidos pelo IPMulticast. Ao contrario do S3L ponto{a{ponto, n~ao e necessario indicar, explicitamente, para cada transacc~ao entre duas entidades comunicantes, quais as qualidades de servico que v~ao ditar a seguranca da transacc~ao. Uma especie de \dono do grupo", materializado pela aplicac~ao s3lmgowner, de ne, para todo o grupo, a poltica de gest~ao de chaves e os

diversos algoritmos de Encriptac~ao, Autenticac~ao e Compress~ao a usar.

A gura B.4 apresenta as estruturas de dados usadas, ao nvel do dono de um grupo, a m de manter a informac~ao que caracteriza o grupo. Essas estruturas de dados s~ao preenchidas com base em informac~ao fornecida ao demonio s3lmgowner, atraves da sua

linha de comando (ver o manual de s3lmgownerna secc~ao B.1.4).

Os membros cam a conhecer as qualidades de servico que se obrigam a usar, enquanto membros do grupo, apos a execuc~ao de um processo de junc~ao que ocorre, de forma implcita,por necessidade, durante a assemblagem ou desassemblagem de uma mensagem S3L multiponto (ver func~oes S3LMmake message e S3LMopen messageem B.2.6).

A informac~ao recebida do dono do grupo em resultado do processo de junc~ao e mantida, nos membros, em estruturas de dados do mesmo tipo que as usadas pelo dono do grupo. Adicionalmente, e necessario preservar a identidade e a localizac~ao do dono do grupo, uma vez que, dependendo da poltica de gest~ao de chaves GIK5 de nida pelo dono do grupo, pode ser necessario repetir o processo de junc~ao, posteriormente. Como o processo de (re)junc~ao se baseia na utilizac~ao de mensagens S3L ponto{a{ponto, a chamada informac~ao de \caracter pessoal" (rever B.2.2) relativa ao membro, tambem deve estar facilmente acessvel.

Assim, um contexto S3L multiponto de ne{se como uma estrutura de dados onde se concentra toda a informac~ao relevante a operac~ao de uma entidade como membro de um grupo S3L. A gura B.5 apresenta a de nic~ao, em C, do tipo S3LMCtx, relativo a um

contexto S3L multiponto.

A inicializac~ao de um contextoS3LMCtxpor forma a permitir a realizac~ao posterior de

(re)junc~oes ao grupo e efectuada atraves da func~ao S3LMinit S3LMCtx que, tipicamente,

e invocada uma unica vez, no incio de um programa que utiliza as funcionalidades S3L 5

typedef struct {

time_t birthdate; /* ``data de nascimento'' da GIK */ char gik[32]; /* GIK */

} S3LMGikInfo; /* informacao relativa a uma GIK */ typedef struct {

u_char version; /* versao das extensoes multiponto do S3L */ char mipaddr[16]; /* endereco IP multicast do grupo */ time_t group_lifetime; /* tempo de vida do grupo */

time_t group_birthdate; /* ``data de nascimento'' do grupo */

char gik_file[UNIX_PATH_MAX]; /* ficheiro com a proxima versao da GIK */ S3LMGikInfo gik_array[S3LM_MAX_GIKS]; /* array circular de GIKs */ int gik_array_front; /* 1a posicao livre do array */

int gik_array_back; /* 1a posicao ocupada do array */ S3Lbool gik_array_full; /* estado (cheio/nao cheio) do array */ time_t gik_lifetime; /* tempo de vida de uma GIK */

time_t kp_kcis; /* intervalo de mudanca de Kp em segundos */ size_t kp_kcib; /* intervalo de mudanca de Kp em bytes */ char gikalg[64]; /* algoritmo de encriptacao de Kp */ char cryptalg[64];/* algoritmo de encriptacao dos dados */ car macalg[64]; /* algoritmo de producao do MAC */ char compalg[64]; /* algoritmo de compressao dos dados */ } S3LMGroupInfo;

Figura B.4: EstruturasS3LMGikInfoeS3LMGroupInfo.

multiponto. A reutilizac~ao de um contexto S3LMCtx e possvel desde que o grupo e o

seu dono se mantenham inalterados, uma vez que a reactualizac~ao do contexto ocorre, implcita e progressivamente, por necessidade, no interior das func~oes S3LMmake message

e S3LMopen message.

A API do S3L n~ao oferece mais func~oes de manuseamento de contextos S3L multiponto. A inicializac~ao dos restantes campos ca a cargo dos mecanismos implcitos de (re)junc~ao ao grupo. A utilizac~ao de memoria estatica dispensa tambem uma func~ao de libertac~ao espec ca.

Contudo, existem dois campos cuja manipulac~ao directa podera ter interesse. A leitu- ra do campo rem napos a recepc~ao de uma mensagem S3L multiponto permitira aceder

ao valor do campo n dessa mensagem e utiliza{lo, por exemplo, num mecanismo de se-

quenciac~ao ou de detecc~ao de repetic~oes. A escrita no campodeltade um valor positivo,

antes do envio de uma mensagem, constitui indicac~ao de que no destino esse campo devera ser usado na detecc~ao de ataques{de{repetic~aode uma forma analoga a sua utilizac~ao em mensagens S3L ponto{a{ponto.

typedef struct {

S3LPartieInfo *loc_info; /* informacao relativa `a entidade local */ char gowner_dname[SBUF_SIZE]; /* nome distinto X.500 do dono do grupo */ char gowner_ipaddr[16]; /* endereco IP do dono do grupo */

S3LMGroupInfo group_info; /* caracterizacao do grupo */

time_t loc_gik_birthdate; /* ``data de nascimento'' local da GIK mais recente */

size_t kp_counter; /* numero de bytes enviados com a ultima Kp */ time_t kp_birthdate; /* ``data de nascimento'' local da ultima Kp */ char kp[32]; /* ultima Kp gerada aleatoriamente */

struct timeval loc_n; /* marca temporal local */ struct timeval rem_n; /* marca temporal remota */

u_long delta; /* desvio maximo admissivel entre loc_n e rem_n */ } S3LMCtx;

Figura B.5: Estrutura S3LMCtx.

Nome: S3LMinit S3LMCtx{ inicializa uma estruturaS3LMCtx S3LMinit S3LMCtx

Sinopse:

#include <s3lsocket.h>

void S3LMinit S3LMCtx (S3LMCtx *mctx, S3LPartieInfo *loc info, char *mipaddr, char *gowner dname, char *gowner ipaddr);

Descric~ao:

A func~aoS3LMinit S3LMCtxinicializa um contexto multipontomctx, actualizan-

do os seus campos loc info, group info.mipaddr, gowner dname e gowner ipaddrcom o valor dos par^ametros homologos da func~ao.

Ver tambem:

S3LMmake message,S3LMopen message