Introdução:

 

Ao longo dos anos as redes têm se tornado mais e mais populares e a cada dia que passa a internet tem mais informações trafegando, um número maior de aplicações e usuários.

A cada dia aumenta o número de usuários domésticos, que desejam maneiras mais simples de utilizar a rede e também aumenta o número de usuários disponibilizando serviços via internet. De modo geral o problema da segurança pode ser analisado primeiramente sob dois pontos de vista.

Os usuários "domésticos" desejam estabelecer comunicação segura via internet para que possam realizar suas compras via internet, consultar extratos bancários ou realizar aplicações financeiras sem grande dificuldade e com grande simplicidade. Por outro lado, bancos, empresas de todos os portes procuram disponibilizar seus serviços via internet sem correr o risco de sofrerem fraude eletrônica.

De modo geral os problemas de segurança em redes são causados por diversas razões, exemplificaremos algumas possíveis:

 

Estudante

Brincar enviando e-mails em nome de outra pessoa.

Hacker

Burlar a segurança pelo prazer que dá.

Ex-empregado

Se vingar da empresa que o demitiu.

Contador

Conseguir algum dinheiro já que ele não fará falta.

Espião

Descobrir as bases de lançamento do inimigo.

 

 

Independente de qual seja a razão, qualquer violação da segurança deve ser evitada para que usuários em todos os níveis fiquem satisfeitos.

De modo geral podemos distinguir em 4 pontos a serem observados.

 

1)A informação deve trafegar sem que ninguém possa compreendê-la além do seu destinatário.

2)A identidade do destinatário deve ser autenticada para que ele tenha acesso aos dados enviados.

3)Ao receber uma mensagem assinada o destinatário pode estar certo de quem a enviou foi realmente o "dono" da assinatura.

4)Os dados devem ser recebidos integros.

 

Podemos também classificar os invasores como sendo ativos ou passivos: passivos são os que são capazes de receber uma mensagem não originalmente endereçada a eles, mas não podem bloquear sua chegada ao destino verdadeiro e tampouco alterá-la, e os invasores ativos são os que recebem, e alteram mensagens não endereçadas a eles mesmos.

 

As providências para garantir segurança em uma dada rede podem buscar tornar o meio de transmissão inacessível ou ainda tornar os dados a serem transmitidos incompreensíveis para todos como exceção do destinatário.

No intuito de transformar as informações de modo que elas possam trafegar livremente pela rede sem que ninguém não autorizado possa compreendê-las ou alterará-las são utilizadas diversas técnicas de criptografia, algumas das quais serão apresentadas a seguir:

 

 

 

Criptografia

 

O objetivo das técnicas de criptografia é permitir que uma dada informação possa ser transformada de modo que seu significado permanece oculto para todas pessoas exceto para aquelas a quem ela se destina.

 

Apresentaremos algumas idéias básicas de criptografia que nos permitirão compreender os princípios das técnicas.

 

Consideremos que desejamos estabelecer um meio de codificar uma mensagem de modo que outros não a possam compreender, para isso usaremos as 3 descrições abaixo.

  1. Cada letra do alfabeto será substituída pela letra a uma distância de 'n' letras a sua direita numa seqüência alfabética.
  2. Cada letra no alfabeto será substituída por outra qualquer sem ordem especificada e sem repetições.

 

Os exemplos descritos acima nos mostram duas das idéias mais básicas de criptografia e nos levarão a uma primeira discussão sobre criptoanálise.

A criptoanálise, visa permitir o conhecimento de informações criptografadas sem que seja necessariamente o destinatário daquelas informações.

Consideremos por exemplo os dois casos descritos acima:

Tanto o primeiro como o segundo podem ser 'quebrados' utilizando-se as estatísticas do idioma da mensagem. É possível descobrir quais são as seqüências de caracteres mais comuns na mensagem e associá-las às seqüências de caracteres mais comuns na língua. Depois de descobrir as outras seqüências comuns e fazer as devidas associações o texto estará próximo do texto original.Obviamente o primeiro caso pode ser 'quebrado' com muito menos esforço que o segundo.

 

Agora que já se tem uma vaga idéia sobre o que trata a criptografia, passaremos a uma apresentação um pouco mais sólida.

 

Criptografia de chave secreta:

Para realizar a criptografia de uma informação se faz necessário utilizar uma chave, que poderia ser previamente estabelcida entre o remetente e o destino da mensagem, esta maneira de criptografar é dita criptografia de chave secreta, uma vez que só existe uma chave, que será utilizada tanto pelo destinatário como pelo remetente.

Criptografia de chave pública:

É possível realizar um esquema criptográfico no qual se utilize uma chave para criptografar (chave pública) o que será enviado. e uma outra para se ler a mensagem (chave privada) enviada. É necessário que a chave pública esteja associada à chave secreta por alguma funcão matemática. A criptografia de chave secreta é também chamada de criptografia simétrica, uma vez que a chave usada para criptografar e decriptografar é a mesma.

Comparando chave pública com chave secreta, podemos perceber que as chaves públicas podem trafegar pela rede livremente sem que nenhum usuário tenha como fazer uso dela, diferente com o que acontece com uma chave secreta. De alguma forma uma chave secreta deve ser combinada com os remetente e o destino, e ela precisa trafegar em algum meio, caso não seja pela rede, será pela linha telefônica, pelo courier ou por qualquer outro meio que também oferece suas inseguranças para os que desejam poder transmitir dados importantes via rede. A criptografia de chave pública é chamada de criptografia assimétrica pois as chaves para criptografar e decriptografar são diferentes.

Os sistemas de chave pública podem gerar uma assinatura digital que não pode ser repudiada.

É possível fazer uso de um envelope digital que é a transmissão de uma chave secreta criptografada por uma chave pública e então transmitida ao seu destino, e que então poderia ser usada para transmitir os dados em criptografia de chave secreta, com a vantagem de desta maneira, é possivel trocar de chave secreta a cada trasnmissão tornando difícil a vida de um eventual invasor.

 

Elementos básicos de criptografia

 

Cifradores de bloco:

Um cifrador de bloco é um algoritmo de criptografia de chave simétrica que transforma um bloco de tamanho fixo de 'plaintext' (texto a ser criptografado e que se deseja transmitir) num bloco de tamanho fixo de 'ciphertext' (texto criptografado, que pode ser transmitido com segurança).

A decriptografia é feita aplicando a transformação reversa ao ciphertext com a mesma chave secreta

 

Iterated block cipher:

Estes blocos criptografam um bloco por meio de m processo que tem vários rounds, em cada round, a mesma transformação, chama da de função de round é aplicada aos dados utilizando-se uma sub-chave (usualmente derivada da chave secreta).

O número de rounds deve ser estabelecido buscando um compromisso entre o nível de segurança desejado e a velocidade desejada para o processo de criptografia.

 

Cifradores de Feistel:

Num cifrador de Feistel o plaintext é dividido em duas metades assim o esquema abaixo é aplicado.

  1. A função de round (f) é aplicada numa metade utilizando uma sub-chave;
  2. É realizado um exclusive-or da outra metade a saída de f;
  3. É realizado um swap. A primeira metade é trocada pela segunda e a segunda pela primeira.

 

Todos os rounds seguem este procedimento com exceção do último onde não é realizado o swap.

Num cifrador de Feistel criptografia e decriptografia são estruturalmente idênticas, bastando para reverter o processo o uso das sub-chaves em ordem reversa.

Existem outros cifradores que exibem comportamento similar, ainda que não sejam cifradores de Feistel.

 

Quando se usa um cifrador de bloco para criptografar uma mensagem de tamanho arbitrário, deve-se utilizar os modos de operação do cifrador.

 

Modos de operação padronizados dos cifradores de bloco :

Electronic Code Book - ECB

Cada bloco de plaintext é criptografado de maneira independente pelo cifrador, cada bloco identico de plaintext gera um bloco identico de ciphertext.

 

Cipher Block Chaining - CBC

Cada bloco de plaintext passa por um exclusive-or com o bloco de ciphertext anterior e então é criptografado. Se faz necessário um vetor de inicialização para o processo. Observe-se que os padrões presentes no plaintext foram eliminados no ciphertext devido ao exor com o ciphertext anterior.

Cipher Feedback Mode - CFB

O bloco de ciphertext anterior é criptografado e a saída produzida passa por um exclusive-or com o bloco de plaintext para gerar o bloco de ciphertext atual. Deve ser utilizado um vetor de inicialização para o processo.Observe-se que erros em um impossibilitam a decriptografia correta de outros bytes.

 

Output Feedback Mode - OFB

É similar ao CFB, diferenciando-se pelo fato de que a quantidade que passa pelo exor com o plaintext não depende do ciphertext e nem do plaintext. Um vetor s0 é utilizado para inicialização e um conjunto de vetores é derivado da criptografia desse vetor inicial.Observe-se que erros em um byte não se propagam além daquele byte.

 

 

Funções de via única

São funções que são facilmente calculáveis numa direção mas que são muito mais difíceis de serem calculadas na direção oposta. De modo geral o que se espera é que se o cálculo da forma direta pode ser realizado em segundos, o cálculo da inversa pode demorar meses ou anos. Também existem funções cujo cálculo na direção inversa é difícil se não se conhece determinada informação (trap door).

Todos os sistemas práticos de criptografia pública são baseados em funções de via-única.

Consideremos por exemplo o problema da fatoração.

Uma vez que sabemos que os fatores do número 'x' são 3 e 5, e fácil obter computacionalmente o número x multiplicando os fatores, no entanto descobrir os fatores uma vez que foi dado o número 15 é bem mais difícil. O problema fica ainda maior quando o número x é o produto de somente dois fatores primos e normalmente maiores que 10100 .

 

Algoritmo RSA:

 

Algoritmo de criptografia de chave pública. Desenvolvido por pesquisadores do MIT. As iniciais dos sobrenomes dos 3 descobridores (Rivest, Shamir, Adlemman).

  1. escolha dois numeros primos grandes, 'p' e 'q';
  2. compute n = pq e z = (p-1)(q-1);
  3. escolha um numero primo relativo a z e chame-o d;
  4. ache e, tal que (ed -1) seja divisível por (p-1)(q-1);
  5. cada código da mensagem M a ser criptografada deve se manter no intervalo 0£ M<n. Pode ser feito agrupando M em grupo de k bits onde 2k < n.
  6. A criptografia de M será dada por C = Me (mod) n. A operação [A(mod)B] fornece o resto da divisão inteira de A por B.
  7. Para decriptografar, o processo é o de fazer M = Cd (mod) n.

 

Segundo estimativas dos criadores do RSA, a fatoração de um número de 200 dígitos requereria 4 bilhões de anos de tempo de computação e um número de 500 dígitos requereria 1025 anos, assumindo que se use o melhor algoritmo conhecido e o tempo de instrução se encontre em 1us. ( Ainda que hoje o tempo de instrução se aproxime de nanosegundos e que os algoritmos tenham progredido ao longo dos anos, as possibilidades de quebra por esse caminho parecem bastante remotas, ainda que outras sejam esquematizadas.