segunda-feira, 1 de setembro de 2014

Cifras em criptografia: O que é, tipos e a relação entre cifras e chaves

Texto retirado do site:
http://www.di.ufpe.br/~flash/ais98/cripto/criptografia.htm
Autores:
Fernando Antonio Mota Trinta
Rodrigo Cavalcanti de Macêdo



Há duas maneiras básicas de se criptografar mensagens: através de códigos ou através de cifras. A primeira delas procura esconder o conteúdo da mensagem através de códigos predefinidos entre as partes envolvidas na troca de mensagens.

Códigos


Imagine o exemplo onde em uma guerra, um batalhão tem duas opções de ação contra o inimigo: atacar pelo lado direito do inimigo ou não atacar. A decisão depende da avaliação de um general posicionado em um local distante da posição de ataque deste batalhão. É acertado que se for enviado uma mensagem com a palavra "calhau", o exército deverá atacar pela direita; se for enviada uma mensagem com a palavra "araçagy", não deve haver ataque. Com isso, mesmo que a mensagem caia em mãos inimigas, nada terá significado coerente. O problema deste tipo de solução é que com o uso constante dos códigos, eles são facilmente decifrados. Outro problema é que só é possível o envio de mensagens predefinidas. Por exemplo: não há como o general mandar seu exército atacar pela esquerda.

Cifras


O outro método usado para criptografar mensagens é a cifra, técnica na qual o conteúdo da mensagem é cifrado através da mistura e/ou substituição das letras da mensagem original. A mensagem é decifrada fazendo-se o processo inverso ao ciframento.

Os principais tipos de cifras são:
  1. Cifras de Transposição: método pelo qual o conteúdo da mensagem é o mesmo, porém com as letras postas em ordem diferente. Por exemplo, pode-se cifrar a palavra "CARRO" e escrevê-la "ORARC";
  2. Cifras de Substituição: neste tipo de cifra, troca-se cada letra ou grupo de letras da mensagem de acordo com uma tabela de substituição. As cifras de substituições podem ser subdivididas em:
  1. Cifra de substituição simples, monoalfabética ou Cifra de César: é o tipo de cifra na qual cada letra da mensagem é substituída por outra, de acordo com uma tabela baseada geralmente num deslocamento da letra original dentro do alfabeto. Ela é também chamada Cifra de César devido ao seu uso pelo imperador romano quando do envio de mensagens secretas. César quando queria enviar mensagens secretas a determinadas pessoas, substituía cada letra "A" de sua mensagem original pela letra "D", o "B" pelo "E", etc., ou seja, cada letra pela que estava três posições a frente no alfabeto.
  2. Cifra de substituição polialfabética: consiste em utilizar várias cifras de substituição simples, em que as letras da mensagem são rodadas seguidamente, porém com valores diferentes.
  3. Cifra de substituição de polígramos: utiliza um grupo de caracteres ao invés de um único caractere individual para a substituição da mensagem. Por exemplo, "ABA" pode corresponder a "MÃE" e "ABB" corresponder a "JKI".
  4. Cifra de substituição por deslocamento: ao contrário da cifra de César, não usa um valor fixo para a substituição de todas as letras. Cada letra tem um valor associado para a rotação através de um critério. Por exemplo, cifrar a palavra "CARRO" utilizando o critério de rotação "023", seria substituir "C" pela letra que está 0(zero) posições a frente no alfabeto, o "A" pela letra que está 2 (duas) posições a frente, e assim por diante, repetindo-se o critério se necessário.
A principal vantagem das cifras em relação aos códigos é a não limitação das possíveis mensagens a serem enviadas, além de ser tornarem mais difíceis de serem decifradas.

As cifras são implementadas através de algoritmos associados a chaves, longas seqüências de números e/ou letras que determinarão o formato do texto cifrado.


Chaves


O conceito de chave apresentado é um tanto abstrato, mas se pensarmos no criptosistema como um conjunto de algoritmos, as chaves são elementos fundamentais que interagem com os algoritmos para a cifragem/decifragem das mensagens. A figura 1 ilustra bem esta relação.


Figura 1 – Cifragem e decifragem de uma mensagem.

Para entender melhor o conceito de chave, considere o exemplo de cifras de substituição por deslocamento descrito anteriormente. Nele, o critério utilizado para a cifragem das mensagens não é nada mais que a chave usada pelo algoritmo. No caso também da cifra de substituição simples, poderia-se dizer que o algoritmo de cifragem seria algo do tipo "deslocamento de n letras à frente", onde seria a chave.

Do ponto de vista do usuário, as chaves de criptografia são similares as senhas de acesso a bancos e a sistema de acesso a computadores. Usando a senha correta, o usuário tem acesso aos serviços, em caso contrário, o acesso é negado. No caso da criptografia, o uso de chaves relaciona-se com o acesso ou não à informação cifrada. O usuário deve usar a chave correta para poder decifrar as mensagens.

Tomando-se ainda a comparação aos sistemas de acesso a computadores, senhas dos serviços descritos acima podem possuir diferentes tamanhos, sendo que quanto maior for a senha de um usuário, mais segurança ela oferece. Assim como estas senhas, as chaves na criptografia também possuem diferentes tamanhos, e também seu grau de segurança está relacionado com sua extensão.

Na criptografia moderna, as chaves são longas seqüências de bits. Visto que um bit pode ter apenas dois valores, 0 ou 1, uma chave de três dígitos oferecerá 23 = 8 possíveis valores para a chave. Sendo assim, quanto maior for o tamanho da chave, maior será o grau de confidencialidade da mensagem.

segunda-feira, 25 de agosto de 2014

Segurança e Ataques

A avaliação da segurança de algoritmos está na facilidade ou não com que uma pessoa consegue decifrar mensagens sem o conhecimento da chave de decifragem, ação comumente conhecida por "quebrar o código". As tentativas de se quebrar os códigos de algoritmos são chamadas ataques. A forma mais simples de ataque a algoritmos é o ataque por força bruta, na qual é feita a tentativa de se quebrar o código utilizando-se todas as chaves possíveis, uma após a outra. Esta é a forma mais simples, porém a menos eficiente, às vezes até impossível de ser implementada. No entanto, ataques por força bruta são raramente necessários. Na maioria das vezes, é utilizada uma mistura de matemática e computadores potentes para quebrar códigos, num processo chamado criptoanálise. Os possíveis tipos de ataque usando criptoanálise são:
    • Ataque por texto conhecido: Neste tipo de ataque, o criptoanalista tem um bloco de texto normal e seu correspondente bloco cifrado, com objetivo de determinar a chave de criptografia para futuras mensagens.
    • Ataque por texto escolhido: Neste tipo de ataque, o criptoanalista tem a possibilidade de escolher o texto normal e conseguir seu texto cifrado correspondente;
    • Criptoanálise diferencial: Este ataque, que é uma variação do ataque por texto escolhido, procura cifrar muitos textos bem parecidos e comparar seus resultados.
Todos os sistemas criptográficos possuem níveis diferentes de segurança, dependendo da facilidade ou dificuldade com que os mesmos são quebrados. Só teremos um sistema condicionalmente seguro quando ele for teoricamente inquebrável, ou seja, não importa a quantidade de texto normal ou cifrado a disposição de um criptoanalista, ele nunca terá informação suficiente para se quebrar as cifras ou deduzir as chaves que foram usadas.
A segurança de um criptosistema não deve ser baseada nos algoritmos que cifram as mensagens, mas sim no tamanho das chaves usadas. Um algoritmo para ser avaliado como forte ou fraco, deve amplamente ser testado contra todos os possíveis tipos de ataques descritos para que sua robustez seja assegurada. Um algoritmo é considerado forte quando é praticamente impossível quebrá-lo em um determinado espaço de tempo em que as informações ainda sejam relevantes e possam ser utilizadas por pessoas não autorizadas.
Geralmente, a maneira mais fácil de se determinar se um algoritmo é forte ou fraco é publicando sua descrição, fazendo com que várias pessoas possam discutir sobre a eficiência ou não dos métodos utilizados. Programas que usam algoritmos proprietários não divulgam sua especificação. Geralmente isto acontece porque a simples divulgação do método revelará também seus pontos fracos. Por esta razão, um criptosistema deve ser tão seguro, que mesmo o autor de um algoritmo não seja capaz de decodificar uma mensagem se não possuir a chave.

Fonte: http://www.di.ufpe.br/~flash/ais98/cripto/criptografia.htm

terça-feira, 19 de agosto de 2014

Origem da palavra Criptografia e o significado de seus bits

Texto retirado do site:
http://www.infowester.com/criptografia.php
Escrito por Emerson Alecrim - Publicado em 12/08/2005 - Atualizado em 11/07/2009

Origem


O termo criptografia surgiu da fusão das palavras gregas "kryptós" e "gráphein", que significam "oculto" e "escrever", respectivamente.

Bits


Você já deve ter ouvido falar de chave de 64 bits, chave de 128 bits e assim por diante. Esses valores expressam o tamanho de uma determinada chave. Quanto mais bits forem utilizados, mais segura será a criptografia. Explica-se: caso um algoritmo use chaves de 8 bits, por exemplo, apenas 256 chaves poderão ser usadas na decodificação, pois 2 elevado a 8 é 256. Isso deixa claro que 8 bits é inseguro, pois até uma pessoa é capaz de gerar as 256 combinações (embora demore), imagine então um computador! Porém, se forem usados 128 ou mais bits para chaves (faça 2 elevado a 128 para ver o que acontece), teremos uma quantidade extremamente grande de combinações, deixando a informação criptografada bem mais segura.

terça-feira, 12 de agosto de 2014

Usos da Criptografia Simétrica

Existem diversos algoritmos criptográficos que fazem uso da Chave Simétrica, tais como:

- DES (Data Encryption Standard)
Criado pela IBM em 1977, usa criptografia de 56 bits, o que corresponde a cerca de 72 quadrilhões de chaves diferentes. Apesar de ser um valor bastante alto, foi quebrado por em 1997 por força bruta (tentativa e erro), em um desafio feito na Internet.

- IDEA (Internacional Data Encryption Algorithm)
Criado em 1991 por Massey e Xuejia Lai, utiliza chaves de 128 bits com uma estrutura semelhante ao anteriormente citado DES, porém, possui uma implementação mais simples.

- RC (Ron’s Code ou Rivest Cipher)
Desenvolvido por Ron Rivest, é largamente utilizado em e- mails. Possui diversas versões (RC2, RC4, RC5 e RC6), com chaves que vão de 8 à 1024 bits

Podemos citar ainda o 3DES, o Twofish e o Blowfish, entre outros.
Porém, a Chave Simétrica apresenta alguns problemas graves, tais como a necessidade da troca constante dessas chaves e a impossibilidade de serem usados com fins de autentificação (já que a transmissão da chave privada de um para o outro pode não ser segura e acabar caindo em outras mãos), apesar de seus algoritmos serem mais rápidos do que os algoritmos assimétricos.


segunda-feira, 4 de agosto de 2014

O que é Criptografia Simétrica?

A criptografia consiste em escrever uma mensagem cifrada ou codificada, de forma a dificultar que outras pessoas venham a ter acesso à informações de caráter restrito.

Uma dessas formas de criptografia é a chamada Criptografia Simétrica (ou criptografia de chave secreta ou única). Para que isto ocorra, é necessário que seja definida uma senha, que será utilizada para codificação quanto para o processo inverso.

Para envio do arquivo codificado, o receptor precisa saber qual foi o algoritmo foi utilizado e ter conhecimento da senha definida inicialmente. Por isso, antes de enviar a mensagem codificada, o emissor envia a chave que será utilizada na decodificação para que seja possível ser interpretada e entendida pela pelo destinatário.