domingo, 26 de abril de 2009

Algoritmos Criptográficos e Criptografia Simétrica e Assimétrica

A criptografia digital está presente na área de Segurança da Informação e foi possibilitada em grande parte, senão totalmente, graças à existência de algoritmos criptográficos.

Os algoritmos criptográficos são os responsáveis por cifrar ou embaralhar as mensagens antes de serem enviadas aos seus destinatários e decifrar ou organizar de forma legível as mensagens anteriormente cifradas. Cada algoritmo de criptografia possui características próprias e utiliza técnicas diversas, conheçamos alguns deles:

DES (Data Encryption Standard – Padrão de Criptografia de Dados): Esse algoritmo foi desenvolvido pela IBM em 1974, publicado em 1977 e quebrado 20 anos depois por meio do método de força-bruta (método utilizado onde, por meio de tentativa e erro, se tenta “adivinhar” a chave criptográfica utilizada) num desafio proposto na Internet. Esse algoritmo possui chave de 56 bits (256= 72.057.594.037.927.936 de combinações) o que é considerado frágil já tendo sido violado num tempo de 22 horas e 15 minutos (atualmente cogita-se que ele pode ser quebrado em cerca de 5 minutos por 10.000 computadores processando concomitantemente). O DES monta um bloco de 64 bits (somente 56 bits são utilizados pelo algoritmo; 8 bits são usados para conferir a paridade – técnica utilizada para detectar erro no envio ou recebimento da mensagem) e o divide em duas partes de 32 bits. Após alguns estágios de processamento e cruzamentos a mensagem pode ser cifrada e decifrada pelo mesmo algoritmo. Saiba mais!

3DES: O Triplo Data Encryption Standard é o algoritmo DES com três partes de 56 bits efetivos (8 bits, conforme já mencionado, são usados como bits de paridade), o que o torna uma chave de 168 bits muito mais difícil de ser violada. Embora a usabilidade natural do 3DES seja das três partes de 56 bits, ele pode ser usado apenas com duas partes tornando-se uma chave de 112 bits que não é tão segura quanto à forma usual, porém, é mais rápida quando comparada àquela por exigir menos processamento para cifrar e decifrar. Saiba mais!

AES (Advanced Encryption Standard Padrão de Criptografia Avançada) – Anunciado no final de 2001, o AES foi escolhido para ser o novo padrão de criptografia adotado pelo governo americano. Ele venceu um concurso que buscava um algoritmo com blocos de 128 bits que aceitasse chaves de 128, 192 e 256 bits. O AES incorporou às condições propostas e chegou para superar o DES e para não correr o risco de ser quebrado. Ao aumentar o tamanho da chave e utilizar uma técnica mais apurada para cifrar e decifrar estima-se que, para quebrá-lo, levem-se milhões de anos. O AES opera utilizando o conceito de matrizes (estruturas bidimencionais) com quatro linhas e quatro colunas que passam por processos de arranjos conhecidos como estados. Saiba mais!

IDEA (International Data Encryption Algorithm­ – Algoritmo Internacional de Criptografia de Dados) – É um algoritmo que segue a mesma estrutura do DES, criado por James Massey e Xuejia Lai. O IDEA opera sobre blocos de 64 bits (subdividido em blocos de 16 bits) e possui chave criptográfica de 128 bits tendo tido boa aceitação no mercado financeiro. Saiba mais!

RSA (Rivest, Shamir e Adleman) – Algoritmo criado pelos professores Ron Rivest, Adi Shamir e Len Adleman do MIT (Massachusetts Institute of Technology). É considerado um dos algoritmos mais seguros e utilizados atualmente e funciona por meio da utilização de chaves públicas e privadas. Esse conceito muito utilizado em assinaturas digitais permite somente ao detentor da chave privada – chave que cifra a mensagem – ter acesso ao conteúdo da chave pública – chave que decifra a mensagem. O RSA, atualmente, é inquebrável, pelo fato de que o processamento computacional exigido para decifrá-lo, com a atual tecnologia, possa exigir milhares de anos utilizando variadas técnicas de ataque (ou criptoanálise). Saiba mais! (...)

Os algoritmos criptográficos são a base da criptografia simétrica (representada, entre outros, pelos algoritmos DES, 3DES, AES e IDEA anteriormente mencionados) e assimétrica (representada, entre outros, pelo algoritmo RSA, anteriormente exposto) onde, por meio do uso de chaves, remetente e destinatário ocultam a mensagem nos seguintes moldes:

1. Utilizando criptografia simétrica os envolvidos na troca de mensagens detêm uma chave que é utilizada para cifrar e decifrar a mensagem. Isso permite que a mensagem não seja violada garantindo-lhe integridade, porém, não possibilita autenticidade porque a segurança está atribuída somente ao conteúdo, prejudicando que o remetente seja fidedignamente identificado e, dessa forma, também, impossibilitando o não-repúdio (vide aqui o post explicativo dos termos empregados neste parágrafo).

2. Utilizando criptografia assimétrica há a presença de duas chaves: chave pública e chave privada. A chave pública é conhecida por todos os remetentes do destinatário e a chave privada é somente da propriedade deste. Quando o detentor da chave privada envia uma mensagem, somente os detentores da chave pública terão acesso a ela e não terão dúvida de que a mensagem foi enviada de fato pelo remetente (garantia de autenticidade e não-repúdio).

Nota-se que a criptografia simétrica é muito útil para garantir confidencialidade e integridade à mensagem enviada porque o conteúdo não será lido por quem não lhe é de direito, entretanto, peca nos itens autenticidade, não-repúdio e disponibilidade (nesse item a desvantagem está em garantir, de forma segura e eficiente, a troca de chaves entre remetente e destinatário). Já na criptografia assimétrica a utilidade em termos de segurança é total porque garante os cinco pilares da segurança da informação (vide postagem anterior).

Pode-se, dessa maneira, entender como dados e informações podem seguir por uma rede compartilhada de forma segura levando em conta padrões jurídicos e comerciais; garantindo que transações não sejam prejudicadas ou impossibilitando que nos beneficiemos das virtudes da ampla rede mundial sem que a veridicidade e a legalidade dos fatos sejam comprometidas.

domingo, 19 de abril de 2009

Criptografia Digital: Conceito e Objetivo

Sabe-se que dados e informações são os principais ativos tanto de uma empresa quanto de um sujeito que a domina porque o conhecimento, e por consequência a sabedoria, advém desses dois elementos essenciais. Ora, estamos na conhecida era do conhecimento, onde o maior patrimônio particular ou organizacional é a capacidade que se tem em poder reter, gerir e adquirir, adequadamente, valores conceituais, tendo como meio os dados e informações e as pessoas que participam e compõe o capital intelectual de uma empresa.

Para poder administrar com eficiência os dados e informações existentes ganharam destaque no mundo moderno os computadores, redes, Sistemas de Informação e correlatos, compondo a estrutura básica atual para que instituições privadas não percam na “corrida da competitividade” ou para que instituições públicas não fiquem fadada ao uso de práticas obsoletas, ineficientes e impróprias à atual conjuntura. (...)

Com o amadurecimento da Internet para interligar as pessoas, as instituições privadas e as instituições públicas – B2B, B2C, C2C, B2G, B2E, G2C, etc – o canal de comunicação – a própria Internet – torna-se uma via acessível a todos, incluindo-se os criminosos virtuais.

Para impedir a identificação de dados ou informações privilegiadas ou sigilosas surge como alternativa a criptografia digital. A criptografia é uma técnica utilizada para cifrar (embaralhar ou tornar ilegível) dados ou informações de forma que somente o destinatário da mensagem consiga decifrá-los. É uma técnica muito antiga utilizada por povos como os egípcios e os romanos para comunicarem informação sigilosa que, se recebida por pessoas não autorizadas a recebê-las, seria um monte de símbolos sem nexo. Contemporaneamente está sendo utilizada por computadores que podem aproveitar as seguintes técnicas de criptografia:

Transposição: Essa técnica alterna a ordem dos elementos de uma mensagem transformando-a numa sequência adversa, por exemplo, a palavra “Janela Tecnológica” poderia ser cifrada assim: alenaJ acigólonceT ou Jaalne Taeccingoól. Para um bom estudante de criptoanálise (ciência que estuda a forma de decifrar mensagens sem o conhecimento da que técnica utilizada para cifrá-la) seria fácil deduzir que, no primeiro caso – alenaJ acigólonceT – a técnica de transposição utilizada foi inverter as palavras enquanto, no segundo caso, a técnica utilizada foi fazer com que, lendo a palavra cifrada da esquerda para a direita, cada letra, na sequência, corresponderia à primeira e a última, a segunda e a penúltima, a terceira e a antepenúltima, e assim por diante, da palavra decifrada.

Substituição: Aqui os elementos são substituídos por outros para dificultar o entendimento da mensagem. Por exemplo, a palavra “Janela Tecnológica” poderia ser cifrada assim: 10,1,14,5,12,1;20,5,3,14,15,12,15,7,9,3,1. Cada vírgula separa os caracteres da palavra, o ponto e vírgula separa as palavras e cada número corresponde à posição que a letra ocupa no alfabeto (1=A, 11=K, ..., 26=Z).

Algoritmo criptográfico: Algoritmo, para aqueles que não conhecem o termo, é uma sequência de passos a serem realizados para desempenhar uma tarefa especifica, por exemplo, um algoritmo para somar dois números numa calculadora seria: digitar um número, pressionar o sinal de soma (+), digitar outro número e pressionar o sinal igual (=). Se essa sequência de passos não for obedecida é pouco provável que alguém consiga fazer um cálculo de soma entre dois números numa calculadora tradicional.

Algoritmo criptográfico é um algoritmo feito para que uma mensagem seja cifrada ao sair da posse do remetente e somente decifrada quando recebida pelo destinatário. Se a mensagem for interceptada será difícil de ser entendida porque a convenção para cifrá-la é somente do conhecimento de quem possui o algoritmo criptográfico. A título de exemplo a palavra “Janela Tecnológica” poderia utilizar um algoritmo criptográfico que a tornasse assim:

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

0123456789@#ABCDEFGHIJKLMNOPQRSTUVXWYZ

Difícil de ser decifrada, não é mesmo? Isso porque ninguém conhece o algoritmo criptográfico para decifrá-la, o qual é descrito a seguir:

O algoritmo criptográfico para a mensagem apresentada absorve o seguinte princípio: cada linha representa um caractere (letra número ou símbolo) e se o caractere selecionado na linha for um símbolo (@ ou #) isso representa um espaço. Cada linha possui 38 caracteres e o sinal a ser considerado em cada linha depende da ordem de leitura que se alterna a cada minuto de cada hora do dia e, dessa mesma forma, alterna-se também a ordem dos caracteres em cada linha para cada caractere digitado. Por exemplo, no exposto acima, a mensagem foi enviada à 00h00min e, além da ordem assumida pelas linhas naquele horário, conforme se pode observar, os caracteres a serem considerados, para aquele horário, para aquela mensagem, são os seguintes: linha 1: caractere = 22, linha 2: caractere = 13, linha 3: caractere = 26, linha 4: caractere = 19, linha 5: caractere = 24, linha 6: caractere = 13, linha 7: caractere = 11, linha 8: caractere = 32, linha 9: caractere = 17, linha 10: caractere = 15, linha 11: caractere = 26, linha 12: caractere = 27, linha 13: caractere = 24, linha 14: caractere = 27, linha 15: caractere = 19, linha 16: caractere = 21 linha 17: caractere = 15, linha 18: caractere =13. Num outro horário, por exemplo, 15h32min, as linhas poderiam ser apresentadas por meio dos caracteres E2UIZN45HBDR69@LMKAW8CF#GYOJ3P7QS1TV0X com outra sequência de leitura que identificasse a mesma mensagem (“Janela Tecnológica”). A linha 1 neste caso não mais seria o caractere 22, em sim o caractere 28 para cada letra J digitada.

Chave criptográfica: A chave criptográfica utiliza um algoritmo criptográfico que, por mais que muitas pessoas detenham esse algoritmo, apresenta resultado diferente dependendo de quem a utiliza. No exemplo acima, com o uso de uma chave criptográfica, embora muitas pessoas tivessem acesso ao algoritmo, somente a que tivesse a chave criptográfica é que conseguiria decifrar a mensagem. As chaves criptográficas possuem certo número de bits que pode ser 32, 64, 128 entre outros; isso significa que quanto mais bits ela tiver, mais segura ela será porque o número de possibilidades de encontrar a sequência correta para ter acesso à mensagem aumentará exponencialmente com o aumento do número de bits da chave.

Com o uso da criptografia pode-se alcançar os seguintes objetivos: confidencialidade (ou sigilo), integridade, autenticidade, disponibilidade e não-repúdio.

Confidencialidade é a garantia de que o acesso às informações somente está sendo feito por pessoas autorizadas. Integridade é a garantia de que a mensagem original não foi alterada ou violada. Autenticidade é garantia de que ninguém se fez passar pelo remetente autêntico da mensagem. Disponibilidade é garantia de que o destinatário possa ter acesso à informação que lhe é de direito e não-repúdio é a garantia de que, após efetuada a ação de envio ou recebimento da mensagem, o envolvido não consiga negar a sua participação. Ilustremos o exposto:

Imagine um correntista que tenha conta no banco X. Ao permitir que somente o correntista tenha acesso aos movimentos efetuados em determinada conta corrente, o banco X garante confidencialidade – tanto que é crime a quebra de sigilo bancário sem ordem judicial. Ao permitir que os saques, depósitos ou movimentações sejam feitos adequadamente pelo correntista, o banco X garante integridade aos processos de negócio do cliente. Ao permitir que somente aquele correntista tenha acesso a sua conta, o banco X garante a autenticidade das operações efetuadas. Ao permitir que o correntista consiga efetuar as suas operações bancárias em vários lugares e em vários horários, o banco X garante disponibilidade e; ao controlar as operações efetuadas com meios de segurança adequados, o banco X não dá direito ao correntista de, por exemplo, negar ou afirmar que efetuou uma operação quando os registros bancários demonstram o contrário (não-repúdio).

Pode-se notar com isso a importância da criptografia e a finalidade aplicada que se pode ter deste recurso. Para a próxima postagem serão discutidos alguns tipos de algoritmos e criptografias existentes. Até lá!