quarta-feira, 30 de novembro de 2016

Algoritmos Matemáticos - Protocolo para a Distribuição de Chaves Secretas

Quando se adota o método de chaves secretas, é recomendável não utilizar por muito tempo a mesma. Quando ideal é a cada nova sessão uma nova chave seja estabelecida. Mas como estabelecer a chave ao início de cada sessão? Como evitar as escutas? Cifrar a mensagem? Com que chave? Aqui apresenta-se uma solução para ilustrar o conceito de funções unidirecionais.  A função a ser usada é a exponencial módulo de um número, isto é, dados os inteiros 'a', 'x' e 'n', seja ~x)=aAx mod n (n>O, x>=O). Assim, ftx) é o resto da divisão de aAx por n. O cálculo desta função é viável. O procedimento abaixo mostra uma maneira de calcular esta função :
Procedimento expomod (a,x,n,r:inteiro); {r possui o resultado da função}
declare y, c :  tipo inteiro
inicio

r:= l; 

y:=x; 
c:=a mod n; 
   

    enquanto y>O faça inicio
        se ímpar(y) então

            r=r*c mod n; 

            y=y div 2;             
            C=C 2 mod n;

       fim;
fim;
  Suponha que dois usuários A e B desejam manter uma conversa sigilosa através de chave secreta. As duas partes escolheram um número primo grande , p' da ordem de 10A 100, e já concordaram também em utilizar uma base , a'. Preferivelmente deve ser uma raiz primitiva de p, de modo que ffx)=aAx mod p é uma b~eção sobre o conjunto 1..p-l dos naturais x tais que l<=x<=p-l. Para iniciar o estabelecimento da chave, A gera ao acaso um expoente x no intervalo 1..p- l e B gera outro, y Usando expomod, A calcula ffx) e B ffy). Então A envia pela rede ffx) e B envia ffy). De posse de y e ffx), B calcula, usando
expomod :
K = [(ffx)]Ay mod p = (aAx mod p)Ay mod p = aA(xy) mod p = K.
Da mesma forma, A usa expomod e de posse de x e ffy) calcula:
k = [(ffy)]AX mod p = (aAy mod p)AX mod p = aA(xy) mod p - - K.
Assim A e B chegam a um número comum K, que será a chave de ciframento para as mensagens.

Suponha um espião bem informado que obtenha os valores de a e p e, através de escuta, os valores de f(f(x)) e de f(f(y)). Para determinar K, ele precisa determinar a função logaritmo módulo p, que é intratável. Mesmo A não é capaz de determinar o valor de y e B o valor de x. A função expomod é unidirecional sem segredo, permite a A e B trocarem uma chave secreta utilizando a própria rede. 

Nenhum comentário:

Postar um comentário