• Nenhum resultado encontrado

CRIPTOGRAFIA E SEGURANÇA – I 7.0 – Revendo os Conceitos

No documento Criptografia Classica e Moderna (páginas 181-195)

Criptografia (kryptós, "escondido"; gráphein, "escrita") é o estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para uma outra ilegível, de forma que possa ser conhecida apenas por seu destinatário autorizado (detentor da chave secreta), pois só ele poderá ler a mensagem.

É um ramo da Matemática, e parte da Criptologia.

7.1 – A Encriptação

A encriptação é o processo de tornar uma mensagem ou texto inteligível (o texto claro) em uma mensagem ou texto ininteligível (o texto cifrado ou criptograma).

O sistema de cifragem consiste em:

• um conjunto de regras que descreve o processo de criptografia (chamado sistema geral), o qual deve ser conhecida entre as partes legítimas da comunicação;

• uma chave (fixa ou variável), igualmente conhecida pelas partes. Os processos básicos de encriptação são:

• Os métodos de transposição. • Os métodos de substituição. • Os métodos mistos.

• Os métodos algébricos.

• Os métodos lógico-computacionais.

Qualquer que seja o método utilizado, ele deve prover regras para a encriptação e a desencriptação, e deve dificultar ou impossibilitar a sua quebra pelo criptoanalista.

A transposição realiza uma re-disposição ou embaralhamento das letras do texto claro, sem trocá-las por outras letras. Ou seja, os caracteres conservam a sua identidade, mas perdem a sua posição.

A substituição é o processo pelo qual as letras do texto claro são trocadas por outras, através de um sistema elaborado de troca. Assim, os caracteres conservam a sua posição, mas perdem a sua identidade.

O método misto envolve os dois processos, de transposição e de substituição. Neste caso, os caracteres perdem a sua identidade e a sua posição.

O método algébrico faz a substituição dos caracteres por algarismos (geralmente em base decimal), realizando em seguida uma série de operações matemáticas para a codificação. Estas operações devem ser reversíveis, para que possa ocorrer a desencriptação.

Os métodos lógico-computacionais realizam operações lógico-matemática no texto claro, para encriptá-lo.

7.2 – A Desencriptação

A desencriptação implica o processo inverso ao anterior: implica em deixar inteligível uma mensagem ou criptograma recebido.

A interceptação é o processo pelo qual um agente não autorizado intercepta a mensagem cifrada e procura decifrá-la.

Deciframento é o processo pelo qual o agente recupera em parte ou na íntegra a mensagem cifrada interceptada.

O processo de deciframento é chamado de ataque ao texto cifrado. O ataque pode ser:

pela força bruta, que consiste em testar todos os tipos de chaves possíveis;287 • pelo processo de quebra de cifra. Quebrar uma cifra significa simplesmente

encontrar uma fraqueza no criptograma (que se expressa por padrões ocultos existentes na mensagem cifrada), a qual possa ser explorada com uma complexidade menor do que pelo ataque pela força bruta.

Quando um código é facilmente decifrável, é chamado cifra fraca ou código fraco. É chamado de cifra forte ou código forte, no caso contrário.

Atualmente, considera-se que todas as cifras clássicas são completamente inseguras.

7.3 – Chaves e Algoritmos

Cifrar é o ato de transformar dados em algo ilegível. Seu propósito é o de garantir a privacidade, mantendo a informação escondida de qualquer pessoa não autorizada, mesmo que esta consiga ver os dados criptografados.

Decifrar é o processo inverso, ou seja, transformar os dados criptografados na sua forma original, inteligível.

Para cifrar ou decifrar uma mensagem são necessárias informações confidenciais chamadas chaves.

Uma chave é uma peça de informação que controla a operação de um algoritmo de criptografia. Na codificação, uma senha especifica a transformação do texto puro em texto cifrado, e vice-versa, na decodificação.

Chaves são também usadas em outros algoritmos criptográficos, tais como esquemas de assinatura digital288 e funções hash, algumas vezes para autenticação.

Em algoritmos bem projetados, cifrar o mesmo texto com uma chave diferente deve produzir um texto cifrado completamente diferente. Igualmente, decifrar o texto cifrado com a chave errada deve produzir um texto aleatório ininteligível. Se a chave de

287 O ataque pela força bruta é conhecido atualmente como ataque por procura exaustiva no espaço das

chaves (a dimensão do espaço das chaves é dado pelo número de pares encriptação/desencriptação disponível no sistema de cifragem).

288 A assinatura digital é usada para verificar a confiabilidade da mensagem, ou seja, a sua procedência;

ela tem a mesma função que uma assinatura pessoal. Assim, para cada mensagem existe uma função de certificação, mantida em sigilo pelo emissor. Este emite uma função de verificação (pública), que certifica se o par (Mensagem,Assinatura) é real ou falso. O receptor, ao receber este par, como possui a função de verificação, pode verificar a veracidade da mensagem (ver item 8.3).

desencriptação se perder, a mensagem cifrada não pode ser recuperada pelo mesmo algoritmo de criptografia.

Dependendo do método de criptografia empregado, a mesma chave pode ser utilizada para criptografar ou para descriptografar mensagens. De todo modo, o texto criptografado, se for interceptado, não deve poder ser decifrado; ele deve poder ser lido apenas por quem tem a chave para restaurar as informações à sua forma original.

A chave, ou chave digital, é uma seqüência dos números 0 e 1 combinados de várias maneiras. Chaves maiores têm maiores possibilidades de combinações e por isso são mais difíceis de serem decifradas. Uma chave de 8 bits, por exemplo, tem 28 =

256 combinações (permutações) possíveis, e uma chave de 56 bits tem 256 = 72057594037927936 (cerca de 72 quatrilhões) de combinações possíveis.

O padrão atual para chaves na Internet é de 128 bits289, que tem 4,7 sextilhões de vezes mais combinações do que as chaves de 56 bits.

Em geral, aumentando o tamanho da chave, aumenta a segurança na criptografia. Acredita-se que chaves acima de 80 bits já dificultam bastante as tentativas de quebrá- las pelo método da força bruta, uma vez que o número de possibilidades torna-se muito grande, exigindo uma potente ferramenta computacional.

Porém, devido aos progressos computacionais, principalmente no que diz respeito a capacidade dos processadores, o tempo para se gerar todas estas possibilidades está diminuindo, e isso vem tornando as ferramentas de proteção baseadas unicamente no comprimento da chave, cada vez menos seguras.

7.4 – Sistemas Criptográficos

Os criptossistemas podem ser simétricos ou assimétricos. Num criptossistema simétrico a encriptação e a desencriptação são feitas com uma única chave, ou seja, tanto o remetente quanto o destinatário usam a mesma chave. Num sistema assimétrico, ao contrário, duas chaves são empregadas.

Em criptossistemas de uma chave ocorre o problema de distribuição de chaves. A chave tem de ser enviada para todos os usuarios autorizados antes que mensagens possam ser trocadas. Isso resulta em atraso de tempo e possibilita que a chave possa ser roubada.

Os criptossistemas assimétricos, ou de duas chaves, contormam esse problema através do uso de chaves públicas. Nesse sistema, cada pessoa tem um par de chaves: a chave pública e a chave privada. A chave pública é divulgada, enquanto que a chave

privada e deixada em segredo. Para mandar uma mensagem privada, o transmissor encripta a mensagem usando a chave públicado destinatário pretendido.

A chave de ciframento é publicada ou tornada acessível aos usuários, sem que haja quebra na segurança. Dessa forma cada usuário tem uma chave de ciframento, de conhecimento público, e outra de deciframento, secreta. Se um usuário A deseja mandar uma mensagem para um usuário B, ele utiliza a chave de ciframento pública PB e envia a mensagem para B, este de posse de sua chave de deciframento secreta SB decodifica a mensagem.

7.5 – Cifragem de Blocos

Um algoritmo que realiza cifragem sobre blocos pode operar de diversas maneiras distintas. As mais conhecidas são:

• Cifras de Substituição: é a troca de cada caracter ou grupo de caracteres por outro, de acordo com uma tabela de substituição. Pode-se quebrar este método analisando-se a freqüência de cada caracter no texto cifrado e comparando-se estas freqüências com aquelas que normalmente aparecem em um determinado idioma.

o Substituição Monoalfabética: cada letra do texto original é trocada por outra de acordo com uma tabela e com sua posição no texto.

o Substituição por Deslocamento: a chave indica quantas posições deve-se avançar no alfabeto para substituir cada letra.

o Substituição Monofônica: nesse caso, cada caracter pode ser mapeado para um ou vários caracteres na mensagem cifrada. Isso evita a linearidade da substituição.

o Substituição Polialfabética: é a combinação de várias substituições monoalfabéticas, usadas em rotação de acordo com um critério ou chave. A substituição por polígramos utiliza um grupo de caracteres, ao invés de um caracter individual.

o Cifras de Transposição: troca-se a posição dos caracteres na mensagem. Por exemplo, pode-se reescrever o texto percorrendo-o por colunas. Ou então definir o tamanho para um vetor de trocas e também uma ordem em que as trocas serão feitas.

Muitos cifradores de blocos podem ser enquadrados como redes Feistel, ou mais geralmente, como redes de substituição-permutação. Estas redes usam freqüentemente operações aritméticas, operações lógicas (especialmente XOR) e várias permutações.

Um algoritmo que realiza cifragem sobre blocos pode operar de diversas maneiras distintas:

• Modo do Livro de Códigos (Electronic Code Book – ECB);

• Modo de Encadeamento de Blocos (Cipher Block Chaining – CBC); • Modo da Realimentação de Cifra (Cipher Feedback – CFB);

• Modo de Encadeamento de Blocos (Block Chaining);

• Modo de Encadeamento Propagado (Propagating Cipher Block Chaining – PCBC).

Máquinas de Cifragem: um código trabalha com grupos de caracteres de

tamanho variável, ao contrário da cifra. Cada palavra é substituída por outra. Quebrar um código equivale a quebrar uma gigantesca substituição monoalfabética onde as

unidades são as palavras, e não os caracteres. Para isso, deve-se usar a gramática do idioma e analisar a estrutura das sentenças.

7.6 – Critérios de Segurança

De acordo com D. Van Tassel (cf. Katzan, Jr.), quatro critérios devem ser aplicados ao projeto de métodos criptográficos:

1) Não deveria ser necessário conservar o método em segredo, apenas as chaves. 2) A extensão do sigilo obtido deveria ser diretamente relacionada à extensão de tempo computacional necessário para uso do sistema.

3) O método deveria destruir os parâmetros estatísticos ou a estrutura natural da língua.

4) Um erro não deveria destruir a informação sucessiva. 7.6.1 – Como Aumentar a Segurança

As antigas técnicas do uso de nulas ou sistemas homofônicos podem ser usadas juntamente com as modernas técnicas matriciais, o que aumenta sobremaneira a dificuldade de desencriptação. De acordo com Katzan, Jr.,

Varias outras técnicas desencorajam a análise. Seqüências fixas de dígitos aleatórios, convenientemente codificados, formam uma técnica particularmente útil quando acrescentadas ao início ou final de uma mensagem. As mensagens podem ser divididas em segmentos e transmitidas em instantes diversos.290 De modo semelhante, um

determinado registro de dados pode ser armazenado como uma parte de dois diferentes arquivos. O objetivo das técnicas criptográficas é limitado somente pela imaginação do analista de segurança.291

7.7 – Criptografia Por Ocultação de Mensagem

Esta forma de criptografia é chamada esteganografia. Ela consiste em ocultar uma informação de tal forma que sua existência não seja percebida (ou seja, é o estudo das técnicas de ocultação de mensagens dentro de outras). Não é considerada parte da Criptologia.292

A esteganálise é o equivalente a criptoanálise, com relação à esteganografia. Esteganografia digital é a arte de ocultar informações no interior de arquivos como imagens, áudio ou até mesmo vídeos. Estes arquivos digitais contêm áreas não utilizadas, as quais podem ser aproveitadas para a inserção de dados.

290 Uma técnica extremamente complexa de transmissão cifrada por rádio, que utilizava a técnica do salto

de freqüências, foi utilizada pelos EUA durante a Segunda Guerra Mudial. A habilidade do serviço de informações do exército alemão (Abwher), no entanto, foi capaz de interceptar e seguir tais transmissões, quando as frequencias mudavam aleatoriamente.

291 KATZAN, Jr. 1977, p.113.

292 Ver: http://www.stegoarchive.com. Para baixar um programa free-ware (JP Hide and Seek – JPHS),

ver: http://linux01.gwdg.de/~alatham/stego.html. Este programa permite embutir dentro de um arquivo .jpg qualquer outro tipo de arquivo, como documentos Word ou planilhas Excel. O S-Tools (Steganography Tools) permite trabalhar com arquivos WAV e imagens GIF. Para download: http://www.spychecker.com/program/stools.html.

7.7.1 – Técnicas de Esteganografia

Algumas formas modernas de esteganografia são variações sobre métodos antigos ou então novas criações, como, por exemplo:

• Uso de microponto.

• Uso de marca d’água e imagens (ou símbolos). • Uso de bit menos significativo.

• Semagramas

7.7.1.1 – O Microponto

O microponto foi uma técnica de esteganografia muito usada pelos espiões alemães em solo norte-americano, durante a Segunda Guerra Mundial. Era uma fotografia reduzida ao tamanho de um ponto final, o qual era colado no texto de uma carta qualquer. A foto podia conter imagens, planos, desenhos ou textos relativos a equipamentos ou áreas militares, os quais serviriam ao esforço de guerra da Alemanha.

Este é um sistema complexo porque exige máquinas fotográficas especiais capazes de reduzir uma imagem, projetores para projetar a imagem em um celulóide de tamanho micrométrico, e lentes para operar a colagem no papel. O espião, que também deveria usar equipamentos especiais (para ampliar e ler o microponto), ficava muito exposto, se não conseguisse explicar a posse deste equipamento.

Como a mensagem fica escondida, a esteganografia por microponto não levanta suspeita sobre o remetente e o destinatário. Mas se é descoberta, pode ser lida por qualquer um, a não ser que também tenha sido criptografada. Neste caso, o dado a ser escondido é primeiro encriptado e depois oculto de alguma maneira (como um ponto final inserido no fim de um parágrafo) dentro de um bloco maior de dados não encriptados, geralmente um texto literário ou uma carta pessoal.

Uso do microponto

7.7.1.2 – A Marca D’Água293

A rigor, a inserção de marca d’agua é um processo complementar à criptografia. Este sistema não visa evitar o uso indevido de dados, mas sim fazer com que este uso

293 Ver: http://www.catalao.ufg.br/mat/revista/ART-008.pdf. Ver também:

http://en.wikipedia.org/wiki/Digital_watermarking. E ainda: http://watermarker.com/how-to-ptotect- digital-images.aspx.

indevido possa ser detectado. Com ele, a informação adicionada a um dado permanecerá sempre presente, de modo que nunca se perca a informação que lhe foi adicionada.294

Um sistema de marca d´agua digital pode ser visível ou invisível. A marca d´água visível pode ser um logotipo ou um texto qualquer inserido em algum ponto do documento, ou então uma imagem de fundo, semitransparente.295

Imagem com logotipo

Imagem com marca pessoal

294 Para download de um arquivo free-ware, ver: http://picmarkr.com/. Entretanto, o próprio Word oferece

esta possibilidade: Formatar/Plano de Fundo/Marca d’água impressa/Selecionar figura.

Imagem com indicação de autoria

7.7.1.3 – Uso do Bit Menos Significativo

Arquivos de imagem ou de som possuem áreas de dados que não são usadas ou são pouco significativas. A esteganografia se aproveita desse fato, trocando essas áreas por informação.

Uma imagem qualquer é formada por um conjunto de pixels, em três canais de cores (vermelho, verde e azul) de 8 bits cada um. Alterando-se o bit menos significativo, não ocorrem mudanças perceptíveis na imagem. Desse modo, é possível codificar em uma imagem uma seqüência de dígitos binários que contenham um texto, apenas usando o bit menos significativo de cada componente (canal) da cor dos pixels. Um dos métodos usados para realizar esta codificação é chamado Codificação de Huffman.

Para ocultar uma informação (um texto ou mesmo outra imagem) em uma imagem .jpeg, esta deve ser igual ou maior do que o tamanho do arquivo a ser ocultado.

7.7.1.4 – Esteganografia Subliminar

Um outro tipo de esteganografia (em imagens estáticas) pode ser chamado esteganografia por imagem subliminar. É uma imagem disfarçada no interior de outra imagem,296 geralmente associada a temas eróticos ou que permitam fazer associações de idéias que passem imperceptíveis a quem as vê.297

A imagem subliminar é muito utilizada em propaganda, como se pode ver na imagem a seguir:

296 O prof. Joseph Rosen, da Universidade Ben Gurion, em Israel, desenvolveu um tipo de esteganografia

chamado concealogram (ou ocultograma), cujo algoritmo permite misturar um código de barras bidimensional em uma imagem impressa em tons de cinza. O código poderá ser lido posteriormente por um scaner ótico comum.

297 Associações de idéias passadas subliminarmente são poderosos impulsos psíquicos capazes de

influenciar ou modificar atitudes. Por exemplo, as imagens eróticas passam um tipo de prazer sexual inconsciente associado subliminarmente ao prazer de beber um determinado refrigerante.

7.7.1.4.1 – Codificação de Huffman

Esta é uma forma de compressão de dados em que cada caracter do texto é representado com códigos binários de comprimento variável. O tamanho do código varia conforme a sua freqüência no texto, atribuindo-se códigos menores aos caracteres mais freqüentes, e maiores aos menos freqüentes.

De início o programa lê o texto e calcula a freqüência com que cada caracter aparece. Assume-se que cada um é uma árvore de um nodo apenas. Os dois com menor freqüência são pesquisados e combinados para formar uma árvore. A freqüência dos dois é somada e atribuída à raiz. Repete-se esta etapa até que haja uma única árvore.

Ao final, tem-se uma árvore com os caracteres do texto na folhas. Para ter o código de cada um basta convencionar para um nodo qualquer “0”, se for um filho à esquerda, e “1”, se for à direita. O código do dígito será o caminho percorrido da raiz até a folha.

Um exemplo de codificação Huffman (parcial):298

Para a decodificação, é necessário incluir a árvore. Assim, grava-se a lista de caracteres da árvore em percorrimento pré-ordem, no início da seqüência de bits do arquivo de imagem:

@@a@bdc

Como @ indica um nodo com dois filhos e os outros caracteres representam folhas, é possível reconstruir a árvore a partir dessa string de caracteres. Na parte inicial do arquivo de imagem é gravada a string da árvore em binário, seguida de um caracter especial que indica o fim da árvore e o início da seqüência codificada. Antes da codificação do texto é acrescentado um outro caracter especial que indica o fim da frase.

Outro exemplo de Codificação Huffman (parcial):299

298 Ver: http://www.inf.ufrgs.br/~lkunz/cpd/. Para download de arquivos, ver:

http://www.inf.ufrgs.br/~lkunz/cpd/Hidden.zip. Ver também (para outros arquivos): http://www.inf.ufrgs.br/~lkunz/cpd/. Os arquivos de imagem usados devem ser bitmaps de 24 bits.

Analisando a figura:

• O primeiro bit do codigo ASCII de 'A' é zero. Logo a primeira componente (vermelha do primeiro pixel) será alterada para zero.

• O segundo bit do codigo ASCII de 'A' é um. Logo a segunda componente (verde do primeiro pixel) será alterada para um.

• O terceiro bit do codigo ASCII de 'A' é zero. Como a terceira componente (azul do primeiro pixel) já está em zero, nada será feito nessa componente.

• ... (repete o processo com os bits restantes).

• A codificação de outro caractere começaria na primeira componente do terceiro pixel.

• Note-se que dos 8 bits codificados, somente 5 (marcados em laranja) deles alteraram a imagem. Em uma situação ideal, nenhum bit seria modificado. A situação oposta, pior caso, seria quando todos os bits fossem modificados.

7.7.1.5 – Técnica “Joio e Trigo”

O nome desta técnica vem dos métodos de separação de grãos utilizados na agricultura, em que se separam sementes indesejadas que vêem misturadas com as sementes de um cereal (após este ser colhido). Ela foi concebida por Ron Rivest para conseguir confidenciabilidade sem o uso da criptografia no envio de dados por um canal inseguro. Embora tenha semelhanças com ambas as técnicas (esteganografia e criptografia), ela não pode ser classificada em nenhuma. Seu funcionamento é o seguinte:

O remetente (Alice) envia diversas mensagens para o destinatário (Bob). Cada uma das mensagens é autenticada com um MAC cujo segredo da chave Alice divide com Bob, embora não possua nenhum tipo de criptografia sobre a mensagem. Apenas uma das mensagens é verdadeira, as outras são falsas (são o “joio”).

Um invasor será incapaz de “separar o joio do trigo”, ou seja, descobrir qual mensagem é falsa e qual é verdadeira. Bob usa o MAC para encontrar a mensagem verdadeira e descartar as mensagens “joio”.

Em redes comutadas de pacotes (tipo Internet), cada mensagem é enviada em pacotes separados. Pacotes enviados para vários destinatários, aproveitam apenas àqueles que recebem o “trigo”; os que recebem o “joio” irão simplesmente descartar a mensagem.

7.7.1.6 – Inserção de Atrasos em Pacotes

Uma técnica de esteganografia envolve injetar imperceptíveis atrasos em pacotes enviados na rede, a partir do teclado. Atraso na digitação, em algumas aplicações de

No documento Criptografia Classica e Moderna (páginas 181-195)