quarta-feira, 10 de setembro de 2014

Origem da criptografia

Antigamente, a cifragem era utilizada na troca de mensagens, sobretudo em assuntos ligados à guerra (no intuito de o inimigo não descobrir a estratégia do emissor da mensagem, caso se apoderasse dela), ao amor (para que os segredos amorosos não fossem descobertos pelos familiares) e à diplomacia (para que facções rivais não estragassem os planos de acordos diplomáticos entre nações). O primeiro uso documentado da criptografia foi em torno de 1900 a.c., no Egito, quando um escriba usou hieróglifos fora do padrão numa inscrição.

Entre 600 a.c. e 500 a.c., os hebreus utilizavam a cifra de substituição simples (de fácil reversão e fazendo uso de cifragem dupla para obter o texto original), sendo monoalfabético e monogrâmica (os caracteres são trocados um a um por outros), e com ela escreveram o Livro de Jeremias.

O chamado "Codificador de Júlio César" ou "Cifra de César" que apresentava uma das técnicas mais clássicas de criptografia, é um exemplo de substituição que, simplesmente, substitui as letras do alfabeto avançando três casas. O autor da cifragem trocava cada letra por outra situada a três posições à frente no alfabeto. Segundo o autor, esse algoritmo foi responsável por enganar muitos inimigos do Império Romano; no entanto, após ter sido descoberta a chave, como todas, perdeu sua funcionalidade.

Em 1586, destacam-se os estudos de Blaise de Vigenère que constituíram um método muito interessante; é a cifra de Vigenère que utiliza a substituição de letras. Tal processo consiste na seqüência de várias cifras (como as de César) com diferentes valores de deslocamento alfanumérico. A partir desse período, Renascença, a criptologia começou a ser seriamente estudada no Ocidente e, assim, diversas técnicas foram utilizadas e os antigos códigos monoalfabéticos foram, aos poucos, sendo substituídos por polialfabéticos.

Dos anos 700 a 1200, são relatados incríveis estudos estatísticos, em que se destacam expoentes como al-Khalil, al-Kindi, Ibn Dunainir e Ibn Adlan, que marcaram sua época. Na Idade Média, a civilização árabe-islâmica contribuiu muito para os processos criptográficos, sobretudo quanto à criptoanálise (análise da codificação, a procura de padrões que identificassem mensagens camufladas por códigos).


Esquema da Cifra de César

Na Idade Moderna, merecem destaque o holandês Kerckoff e o alemão Kasiski. Modernamente, em 1918, Arthur Scherbius desenvolveu uma máquina de criptografia chamada Enigma, utilizada amplamente pela marinha de guerra alemã em 1926, como a principal forma de comunicação.

Em 1928, o exército alemão construiu uma versão conhecida como "Enigma G", que tinha como garantidor de segurança a troca periódica mensal de suas chaves. Essa máquina tinha como diferencial ser elétrico-mecânica, funcionando com três (inicialmente) a oito rotores. Aparentava ser uma máquina de escrever, mas quando o usuário pressionava uma tecla, o rotor da esquerda avançava uma posição, provocando a rotação dos demais rotores à direita, sendo que esse movimento dos rotores gerava diferentes combinações de encriptação.


Enigma G em uso pelo Exército Alemão

Assim, a codificação da mensagem pelas máquinas "Enigma" era de muito difícil decodificação, uma vez que, para isso, era necessário ter outra máquina dessas e saber qual a chave (esquema) utilizada para realizar a codificação.

A Colossus surgiu do esforço de engenharia reversa das forças aliadas em decriptar as mensagens da marinha e do exército alemão, só logrando efetivo êxito após se ter conseguido uma máquina Enigma alemã (furtada). Tais equipamentos foram, inicialmente, desenvolvidos como máquinas de decriptação, mas depois passaram a codificar mensagens das forças aliadas.

Depois, surgiram outras máquinas fisicamente semelhantes à Enigma (pareciam com antigas máquinas de escrever), porém foram aperfeiçoadas de forma a dificultar o mais possível a decriptação por quem não as possuísse.

Devido aos esforços de guerra, a criptografia passou a ser largamente utilizada. Em 1948, Claude Elwood Shannon desenvolveu a Teoria Matemática da Comunicação, que permitiu grandes desenvolvimentos nos padrões de criptografia e na criptoanálise.
Durante a chamada "Guerra Fria", entre Estados Unidos e União Soviética, foram criados e utilizados diversos métodos a fim de esconder mensagens a respeito de estratégias e operações, criptografadas com diferentes métodos e chaves.

Além dos avanços da criptografia, a criptoanálise se desenvolveu muito com os esforços de se descobrir padrões e chaves, além da diversidade dos canais de propagação das mensagens criptografadas. Desses esforços, surgiram diversos tipos de criptografia, tais como por chave simétrica, por chave assimétrica, por hash e até a chamada criptografia quântica, que se encontra, hoje, em desenvolvimento.

Atualmente, a criptografia é amplamente utilizada na WEB, em segurança a fim de autenticar os usuários para lhes fornecer acesso, na proteção de transações financeiras e em comunicação.



terça-feira, 9 de setembro de 2014

Sistema de Arquivos com Criptografia (EFS) - Video



Fonte: 
http://goo.gl/kd0Ebu

Sistema de Arquivos com Criptografia (EFS)


Sistema de Arquivos com Criptografia no Microsoft Windows é uma funcionalidade que foi introduzida na versão 3 do  NTFS que provê Criptografia em nível de sistema de arquivos. A tecnologia permite que arquivos sejam criptografados de forma transparente para proteger dados confidenciais de atacantes com acesso físico ao computador.


EFS está disponível em todas as versões do Windows desenvolvidas para ambientes de negócios a partir do Windows 2000. Por padrão, nenhum arquivo é criptografado, mas a criptografia pode ser ativado pelos usuários por arquivo, por diretório ou por dispositivo.








Fonte:
http://goo.gl/PpRhHb
http://en.wikipedia.org/wiki/Encrypting_File_System
http://en.wikipedia.org/wiki/Filesystem-level_encryption

Criptografia Simétrica vs Assimétrica

Criptografia Simétrica

A criptografia simétrica tem como característica utilizar uma única chave para cifrar e decifrar a mensagem. Na criptografia simétrica a chave de cifração pode ser obtida facilmente a partir da chave de decifração e vice-versa. A chave simétrica deve ser compartilhada. Desta forma, surge um problema de distribuição de chaves: como passar a chave simétrica sem que ele seja roubada por um atacante?

Criptografia Assimétrica

Na criptografia assimétrica (ou criptografia de chave pública) são utilizadas duas chaves diferentes. Uma para cifrar e outra para decifrar. Uma chave não pode ser obtida facilmente através da outra. As chaves geradas são chamadas de pública e privada. A chave pública pode ser conhecida por todos e é utilizada para cifrar o texto. Por sua vez, a chave privada deve permanecer secreta e é utilizada para decifrar o texto cifrado. Na verdade, este esquema é utilizado quando o objetivo é garantir a confidencialidade. Também é possível utilizar a chave privada para cifrar o texto e a respectiva chave pública para decifrar a mensagem criptografada. Neste caso, busca-se garantir a autencidade. É caso típico de assinaturas digitais.

Fonte:
http://goo.gl/sVn8Oe
http://goo.gl/NXzzH9

segunda-feira, 8 de setembro de 2014

AES - Origem

Em 1997 O governo americano, através do NIST (National Institute of Standards and Technology) lançou um processo de seleção para definir um novo algoritmo de chave simétrica para proteger as informações do governo federal. Tratou-se de uma medida com o objetivo de substituir o DES (Data Encryption Standard), que havia sido quebrado pela máquina DES Cracker. As condições necessárias para a candidatura de algoritmos: divulgação pública, direitos autorais livres, e os algoritmos deveriam ser de chave privada (simétricos) e suportar blocos de 128 bits e chaves de 128, 192 e 256 bits. Em 1998, a Primeira Conferência dos Candidatos ao AES, foram apresentados 15 candidatos: Cast-256CryptonDealDFCE2FrogHPCLOKI97MagentaMARSRC6RijndaelSafer+Serpent e Twofish. Em 1999, na Segunda Conferência dos Canditatos AES, foram escolhidos 5 finalistas: MARSRC6RijndaelSerpent e Twofish. O Rijndael (fusão de Vincent Rijmen e Joan Daemen) foi o escolhido, três anos e meio após Segunda Conferência, ele combina as características de segurança, desempenho, facilidade de implementação e flexibilidade. O Rijndael apresenta alta resistência a ataques como "power attack" e "timing attack" e exige pouca memória, o que o torna adequado para operar em ambientes restritos como "smart cards", PDAs e telefones celulares.

O AES tem um tamanho de bloco fixo em 128 bits e uma chave com tamanho de 128, 192 ou 256 bits. O AES opera sobre um arranjo bidimensional de bytes com 4x4 posições, denominado de estado. Para criptografar, cada turno do AES (exceto o último) consiste em quatro estágios:
1. AddRoundKey- cada byte do estado é combinado com a subchave própria do turno (RoundKey); cada subchave é derivada da chave principal usando o algoritmo de escalonamento de chaves.
2. SubBytes- é uma etapa de substituição não linear onde cada byte é substituído por outro de acordo com uma tabela de referência.
3. ShiftRows- é uma etapa de transposição onde cada fileira do estado é deslocada de um determinado número de posições.
4. MixColumns- é uma operação de mescla que opera nas colunas do estado e combina os quatro bytes de cada coluna usando uma transformação linear.

O turno final substitui o estágio de MixColumns por um novo estágio de AddRoundKey.

Fonte:
http://pt.wikipedia.org/wiki/Advanced_Encryption_Standard
http://www.gta.ufrj.br/grad/05_2/aes/

segunda-feira, 1 de setembro de 2014

Bcrypt

O Bcrypt é utilitário de encriptação multi plataforma, baseado no Blowfish que é altamente recomendado para encriptação de senhas. Foi criado por Niels Provos e David Mazières sendo apresentado publicamente em 1999. O Bcrypt apresenta uma segurança maior em relação a outros mecanismos de criptografia por adicionar um salt que é utilizado na proteção contra ataques rainbow table. O Bcrypt possui um work factor, que nos permite determinar quão custosa a função de hash irá ser. É possível aumentar a quantidade de iterações na criação da chave para tornar o processo mais lento, para continuar sendo resistente a ataques de força bruta.

O Bcrypt possui implementação em diversas linguagens de programação como Python, Perl, Ruby, Java, C# entre outras.

O Bcrypt é o algoritimo padrão de geração de hashs de senha para o BSD e para muitos outros Sistemas Operacionais Unix-Like


Fonte:
http://pt.wikipedia.org/wiki/Bcrypt
http://codahale.com/how-to-safely-store-a-password/
http://en.wikipedia.org/wiki/Bcrypt
http://en.wikipedia.org/wiki/Salt_%28cryptography%29
http://pt.wikipedia.org/wiki/Blowfish
http://bcrypt.sourceforge.net/

3DES, AES e Blowfish - Breve explicação e comparativo

Fonte:
http://www.brighthub.com/computing/smb-security/articles/75099.aspx


3DES


3DES (Triple DES) é um aprimoramento do DES. O algoritmo é o mesmo, apenas a técnica de criptografia é aplicado três vezes, a fim de aumentar o nível de segurança.

AES


AES (Advanced Encryption Standard) foi proposta pelo Instituto Nacional de Norma e Tecnologia (NIST), a fim de substituir o DES. É utilizada em vários órgãos do governo dos EUA. O único ataque conhecido para o AES é o ataque de força bruta, que é a técnica de tentar várias combinações até que o código seja aceito. No entanto, o uso de força bruta não é uma tarefa fácil, mesmo para um super computador, se o número de combinações for alto.

Blowfish


Foi desenvolvido por Bruce Schneier, o presidente da Counterpane Systems, uma empresa que lida com criptografia e segurança. Blowfish é conhecido por ser a cifra de chave secreta que usa um número variável de bits que variam entre 16 e 448 bits e criptografa os dados 16 vezes para torná-lo impossível para um hacker decifrá-lo.
Segundo Schneier, até agora, nenhum ataque foi descoberto para quebrar a criptografia Blowfish.

Comparativo




Comparativo de performance

Segundo a tabela acima, o Blowfish obteve o melhor desempenho. O AES também possui um bom desempenho. Já DES e 3DES completaram a tarefa utilizando mais do dobro do tempo AES. Além de apresentarem ótimo desempenho, Blowfish e AES também são mais seguros que DES e 3DES.


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.