quarta-feira, 10 de junho de 2009

Metodologia matemática da criptografia RSA

O algoritmo.
Um dos algoritmos mais seguros de encriptação de informações atuais originou-se dos estudos de Ronald Rivest, Adi Shamir e Leonard Adleman, um trio de Matemáticos brilhantes que mudaram a história da Criptografia.
O princípio do algoritmo é construir chaves públicas e privadas utilizando números primos. Uma chave é uma informação restrita que controla toda a operação dos algoritmos de criptografia. No processo de codificação uma chave é quem dita a transformação do texto puro (original) em um texto criptografado.
Chave Privada
É uma informação pessoal que permanece em posse da pessoa - não publicável.
Chave Pública
Informação associada a uma pessoa que é distribuída a todos. Uma analogia amplamente conhecida no meio acadêmico é a transmissão de mensagens entre Alice e Bob.
Alice e Bob são personagens fictícios que precisam trocar mensagens seguras sem interceptação. O algoritmo RSA permite essa troca segura de mensagens pela utilização de chaves públicas e privadas:
Alice cria seu par de chaves (uma pública e outra privada) e envia sua chave pública para todos, inclusive Bob;
Bob escreve sua mensagem para Alice. Após escrita, Bob faz a cifragem do texto final com a chave pública de Alice, gerando um texto criptografado;
Alice recebe o texto criptografado de Bob e faz a decifragem utilizando a sua chave privada.
O procedimento é realizado com sucesso porque somente a chave privada de Alice é capaz de decifrar um texto criptografado com a sua chave pública.
É importante destacar que se aplicarmos a chave pública de Alice sobre o texto critografado não teremos a mensagem original de Bob. Dessa forma, mesmo que a mensagem seja interceptada é impossível decifrá-la sem a chave privada de Alice.
Funcionamento
Conforme mencionado, o algoritmo RSA é baseado na construção de chaves públicas e privadas utilizando números primos. Inicialmente devem ser escolhidos dois números primos quaisquer P e Q. Quanto maior o número escolhido mais seguro será o algoritmo.
A título de exemplificação, serão escolhidos números primos pequenos, para permitir um acompanhamento de todo o processo de cifragem e decifragem.
P = 17
Q = 11
A seguir são calculados dois novos números N e Z de acordo com os números P e Q escolhidos:
N = P * Q
Z = (P - 1) * (Q - 1)
No caso obtêm-se como resultado:
N = 17 * 11 = 187
Z = 16 * 10 = 160
Agora define-se um número D que tenha a propriedade de ser primo em relação à Z. No caso, opta-se pela escolha:
D = 7
De posse desses números começa o processo de criação das chaves públicas e privadas. É necessário encontrar um número E que satisfaça a seguinte propriedade:
(E * D) mod Z = 1
Se forem feitos os testes com 1, 2, 3... teremos:
E = 1 => (1 * 7) mod 160 = 7
E = 2 => (2 * 7) mod 160 = 14
E = 3 => (3 * 7) mod 160 = 21
E = 23 => (23 * 7) mod 160 = 1
E = 183 => (183 * 7) mod 160 = 1
E = 343 => (343 * 7) mod 160 = 1
E = 503 => (503 * 7) mod 160 = 1
Logo até o momento os números 23, 183, 343, 503 satisfazem a propriedade indicada. Para efeito de simplificação de cálculos, será tomado como referência:
E = 23.
Com esse processo definem-se as chaves de encriptação e desencriptação.
Para encriptar: utilizar E e N - esse par de números será utilizado como chave pública.
Para desencriptar: utilizar D e N - esse par de números utilizado como chave privada.
As equações são:
TEXTO CRIPTOGRAFADO = (TEXTO ORIGINAL E) mod N
TEXTO ORIGINAL = (TEXTO CRIPTOGRAFADO D) mod N
Caso prático para o exemplo
Seja a necessidade de se encaminhar uma mensagem bem curta de forma criptografada, como o número 4 por exemplo, tendo por base as chaves aqui estabelecidas.
Para criptografar:
TEXTO ORIGINAL = 4
TEXTO CRIPTOGRAFADO = (4 ^ 23) mod 39
TEXTO CRIPTOGRAFADO = 70.368.744.177.664 mod 39
TEXTO CRIPTOGRAFADO = 64
Para desencriptar:
TEXTO RECEBIDO = 64
TEXTO ORIGINAL = (64 ^ 7) mod 39
TEXTO ORIGINAL = 4.398.046.511.104 mod 39
TEXTO ORIGINAL = 4
A questão das escolhas dos números primos envolvidos é fundamental para o algoritmo. Por essa razão escolhem-se números primos gigantescos para garantir que a chave seja inquebrável.
Assim como o exemplo apresentado, existem outras combinações que podem ser feitas rapidamente para confirmação, sem que se exija uma aplicação especial para os cálculos envolvidos.

Qual a funçao do Scanners no sistema de segurança ?

Definição
Todos sabemos que nenhum sistema é perfeito.Falhas em programas e sistemas existem e são uma ameaça à segurança. Geralmente ocorre do seguinte modo : um administrador acidentalmente descobre que algum recurso do seu sistema gera um erro em resposta a algum tipo de pedido.Para exmplificar, suponhamos que a rede em que o administrador trabelha só se comunica gerando mensagens de “ola”.sem querer ele descobre que ao enviar a mensagem para outra máquina, ela fica confusa e trava. Bem, a resposta deveria dizer “Desculpe, só olá aceito”. Foi descoberto um bug. Agora imagine que centenas de bug são descobertos a cada dia e que o seu sistema “confiável” de hoje,pode ser destruido amanhã.Existem algumas saidas para fazer uma análise mais garantida. A primeira é que você se torne um completo nerd e conheça desde oprimeiro ao último bug existente. Se você trabalha com mais de um tipo de sistema operacional então, Boa sorte.Uma outra saída, infinitamente mais eficaz, é a utilização de scanners.
São programas que analisam um sistema ou rede em busca de falhas de qualquer tipo Existentem dezenas de scanners diferentes, cada um com suas vantagens, Aprendendo melhor sobre eles, poderá se proteger melhor e evitar que algum invasor malicioso dê um passo á sua frente.
Descobrindo falhas em um Computador
Para entender qual a parte do seu sistema é mais vulnerável, você terá que pensar com malícia.Ora se você usa um firewall e desabilita o acesso externo aos servidores de FTP e Telnet, com certeza eles não serão a sua maior preocupação.Em alguns Micros , deixa-se abilitada apenas a porta 80 (www) para acesso externo .Muitos se sentem seguros desse modo.Mais enganam-se Atualmente, a quantidade de falhas existentes em servidores Web é absurda. Tanto Internet Informação Servidor quanto Apacha ou qualquer outro, possuem erros.Alguns deles tão perigosas que possibilitam acesso ao interpretador de comandos do sistema,podendo gerar uma “entrada” para o invasor na rede.Outros podem fazer com que se consuma toda a memória existente, causando um Buffer Overflow(nome dado ao travamento do sistema devido a falhas dememória ). Vamos dividir onosso estudo sobre scanners em partes: os scanners de portas, scanners de Micros, scanners netbios e scanners de vulnerabilidade.
Portas abertas com serviços ativos
Ao contrario do que popularmente se pensa, não é fácil assim invadir um computador pessoal.Nós já sabemos que o sistema é composto de 65535 portas TCP e UDP.
21 – FTP(File Transfer Protocol)
23- TELNET
25- SMTP (Simple Mail Transfer Protocol)
79- FINGER
80- WWW
Esses são apenas alguns dos muitosserviço que são radados em computadores de empresas que precisam estabelecer contato com filiais e clientes.Realmente, um sistema possua os seguintes serviços acima ativos, pode ganhar sperios problemas com segurança.Mas imagine o seu computador na sua casa, em cima da mesa da sala, cheio de joguinhos dos seus filhos e que você só utiliza para ler e-mails e navegar pelas homepages. As portas da sua máquina estçao descansando totalmente. Às vezes, uma ou outra se abre para estabelecer conexão com um site, ou mandar uma mensagem pelo ICQ.Mas essas são randômicas.ou seja, a cada vez que uma conexão for feita, a pota mudará.Isso impede quealgum invasor fique à espreita e tente se conectar a portas padrões.Dificulta , mas não impede. Algum cavalo de tróia instalado sem você saber pode abrir uma porta qualquer e permitir a conexão de qualquer pessoa.Para saber quais portas estão abertas em um sistema remoto, utilizando o scan de portas.Existem muitos e muitos programas desse tipo. Alguns exemplos são o Cha0scan, o Shadow Scan e o Haktek.
Funcionam da seguinte maneira: vão tentar se conectar a todas as portas de um endereço ip fornecido , mostrando todas as portas encontradas “ativas” e o seu conteúdo. É uma boa tática para encontrar cavalos de tróia sem depender de Anti-vírus. Já que todos usam portas Exemplo: eu quero analizar o meu próprio computador para saber se têm alguma porta aberta.
Para isso , vou usar o HakTek. Então mando o programa tentar scannear portas no edereço 127.0.0.1 ( o chamado endereço de loopback. Serve para quaando você não está conectado na Internet e precisa utilizar algum programa de análise que precise de endereço IP) .Encontrei as seguintes portas ativas:
80
1256
21554
31337
Ora, a primeira porta eu sei que é o servidor de páginas que rodo no meu pc. Mas e as outras três? A porta 1256 era a que o icq havia aberto na hora. As outras são portas de trojans que usei como teste. A porta 21554 é do trojam Girlfriend e a porta 31337 é do Back Orifice. O único problema desse scan é que como ele foi feito nas três vias do tcp (syn, syn-ack, ack) pode ser facilmente detecdo por sistemas IDS(detecção de intrusos). Uma boa saida é usar o NMAP, disponível tanto para Windows NT Linux . Utilizando-o, você pode scannear portas de maneira furtiva, sem realizar as três vias do tcp, usando flags como TCp Svn ou TCp Fin. Ele possui muitas opções diferentes para scan de portas. Experimente-as. Para fazer um downloads segura entre neste link .www.insecure.org/nmap ou em www.eeye.com (Versão NT).
Máquinas ativas da subnet
O segundo tipo de scanner estudado, é o mais usado quando o objetivo do invasor é determinar todos os Micros ativos da subnet e saber seus nomes (DNS).Assim vamos supor que o endereço principal de um provedor é wwwphela.com.br. Usamos um ping qualquer, ou opróprio scanner, e descobrimos que o endereço ip é 200.205.215.37. Agora vou utilizar o scanner de micros para saber quais outras máquinas dessa rede estão ativas.
200.205.215.9 - diretoria.phela.com.br
200.205.215.34 - laboratorio.phela.com.br
200.205.215.35 - milho.phela.com.br
200.205.215.36 - gilmara.phela.com.br
200.205.215.37 - server.phela.com.br
200.205.215.67 - router.phela.com.br
Com isso conseguimos informações importantes do sistema. Sabemos por exemplo qual é o endereço do roteador, e onde deve ficar informações importantes.Se fosse um site de comércio eletronico por exemplo, as chances de conseguir os dados era enormes,pois mesmo que o invasor não conseguisse aceso diretamente ao computador 200.205.215.37 (que pode inclusive ser um firewall) ele poderia se conectar a um outro IP da subnet e conseguir os dados a partir dele. Às vezes poderia haver algum backup perdido por aí. Alguns bons scanners de hosts são o Shadow Scan o Haktek e o projeto r3x. Entre outros .. Claro que para Unix e Linux existem outros melhores.No site www.securityfocus.com existem códigos fontes ótimos para essa terefa.

Pesquisar este blog