Componentes: Alexandre Andressa Emilio Jacenildo Waldenice Introdução Criptografia (Do Grego Kryptós, “escondido”, e gráphein, “escrita”) é o estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário. O envio e recebimento de informações sigilosas é uma necessidade antiga, que existe há centenas de anos. Com o surgimento da internet e de sua consequente facilidade de transmitir dados de maneira precisa e extremamente rápida, a criptografia tornou-se uma ferramenta fundamental para permitir que apenas o emissor e receptor tenham acesso livre à informação trabalhada. Finalidade Autenticar a identidade de usuários Autenticar e proteger o sigilo de comunicações pessoais e de transações comerciais e bancárias Proteger a integridade de transferências eletrônicas de fundos Como você já sabe desde a aula anterior, criptografia não é uma invenção da era dos computadores, e a idéia de colocar textos em formatos ilegíveis a olho nu fascina muito as pessoas. Veja, a seguir, uma tentativa nessa direção, que não é criptografia, mas é uma brincadeira interessante de tentar se codificar texto. Fixe seus olhos no texto abaixo e deixe que a sua mente leia corretamente o que está escrito. 35T3 P3QU3N0 T3XTO 53RV3 4P3N45 P4R4 M05TR4R COMO NO554 C4B3Ç4 CONS3GU3 F4Z3R CO1545 1MPR3551ON4ANT35! R3P4R3 N155O! NO COM3ÇO 35T4V4 M310 COMPL1C4DO, M45 N3ST4 L1NH4 SU4 M3NT3 V41 D3C1FR4NDO O CÓD1GO QU453 4UTOM4T1C4M3NT3, S3M PR3C1S4R P3N54R MU1TO, C3RTO? POD3 F1C4R B3M ORGULHO5O D155O! SU4 C4P4C1D4D3 M3R3C3! P4R4BÉN5! É o tipo mais simples de criptografia, a mesma chave é utilizada para encriptar e decriptar uma mensagem. Somente o remetente e o destinatário devem conhecer a chave secreta, pois esta é a única maneira de obter a confidencialidade. O processamento necessário para a encriptação e decriptação é menor quando comparado ao da criptografia assimétrica. Com o um algoritmo força bruta é computacionalmente inviável, no caso médio, quebrar uma chave de 128 bits. Vantagem Rapidez na criptografia e descriptografia da informação e simples de implementar. Desvantagens É necessário um canal seguro para enviar a mensagem. A criptografia simétrica não garante a identidade de quem enviou ou recebeu a mensagem (autenticidade e não-repudiação). Se uma pessoa quer se comunicar com outra com segurança, ela deve passar primeiramente a chave utilizada para cifrar a mensagem. Este processo é chamado distribuição de chaves, e como a chave é o principal elemento de segurança para o algoritmo, ela deve ser transmitida por um meio seguro. Porém, se existe um meio seguro de se enviar a chave, por que não enviar a própria mensagem por este meio? A resposta para esta questão é que meios seguros de comunicação são geralmente caros e mais difíceis de serem obtidos e utilizados, sendo então razoável sua utilização uma única vez, mas não continuamente. Se n pessoas querem se comunicar utilizando chave secreta, será necessário (n)(n-1) /2 chaves, gerando um grande problema para o gerenciamento de chaves entre grandes grupos de usuários. Uma das tentativas de solucionar o problema da distribuição das chaves secretas foi a criação de um centro de distribuição de chaves (Key Distribution Center - KDC), que seria responsável pela comunicação entre pessoas aos pares. Para isto, o KDC deve ter consigo todas as chaves secretas dos usuários que utilizam seus serviços. Por exemplo, imagine a situação descrita pela figura, onde A quer mandar uma mensagem secreta para B. Para isto, ele manda a mensagem para o KDC usando sua chave secreta. O KDC recebe esta mensagem, decifrando com a chave secreta de A, depois o KDC a cifra novamente usando agora a chave secreta de B, e a envia para o mesmo. O maior problema em torno do KDC, é que este constitui um componente centralizado, além de ser gerenciado por pessoas que podem, casualmente, serem corrompidas. 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. Triple-DES Baseia-se na utilização três vezes seguidas do DES com chaves diferentes. 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 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. Skipjack Algoritmo secreto desenvolvido pela National Security Agency para uso por civis. É o coração do chip Clipper, desenvolvido pela NSA. Podemos citar ainda o Twofish e o Blowfish, entre outros. Em 1997, o NIST (National Institute of Standards and Technology), órgão dos EUA, lançou um concurso para adotar um novo algoritmo de criptografia simétrica para proteger informações condenciais. O novo algoritmo, que passaria a se chamar AES (Advanced Encryption Standard), substituiria o DES (Data Encryption Standard). O novo algoritmo deveria ter pré-requisitos como: Não possuir patentes; Cifrar em blocos de 128 bits com chaves de 128, 192 ou 256 bits; Possibilidade de implementação tanto em software quanto em hardware; Ser mais rápido do que o 3DES. Em 1998, apresentaram-se 15 candidatos e, um ano depois, 5 destes foram escolhidos como nalistas: MARS, RC6, Rijndael, Serpent e Twosh. Em 2000, após análises da comunidade criptográfica mundial, é escolhido como padrão o algoritmo Rijndael, criado pelos belgas Vincent Rijmen e Joan Daemen. Nb ! número de bits do bloco dividido por 32. Nk ! número de bits da chave dividido por 32 Nr ! número de rodadas, que é igual a 10, 12 e 14 para Nk igual a 4, 6 ou 8, respectivamente. Estado é o bloco de dados, ou seja, a matriz que contém inicialmente a mensagem e possui 4 linhas e Nb colunas. A chave principal é alocada em uma matriz de 4 linhas e Nk colunas SubBytes - Substitui cada byte individualmente por outro em uma caixa de substituição. ShiftRows - Rotaciona ciclicamente os bytes de cada linha, trocando sua posição. MixColumns - Multiplicação, sobre GF(28), de uma matriz xa pelo estado. AddRoundKey - É um XOR byte a byte entre o estado e a chave da rodada. O AES é rápido tanto em software quanto em hardware, é relativamente fácil de executar e requer pouca memória. Apesar de ser um padrão novo de criptografia, está sendo atualmente implantado em grande escala. *Nk ! número de bits da chave dividido por 32 Utilização de chaves diferentes para cifrar e decifrar. Emissor e receptor possuem duas chaves, uma pública que pode ser divulgada e outra privada que deve ser mantida em segredo. Emissor envia mensagem criptografada através da chave pública do receptor. A chave esta disponível para qualquer pessoa. O receptor recebe a mensagem e a decriptografa utilizando a sua chave privada(somente ele conhece). Se quiser responder deverá fazer o mesmo, a diferença é que dessa vez a chave pública do emissor será utilizada. O emissor de posse de sua chave privada, somente ele poderá decifrar a mensagem, garantindo assim o sigilo. A grande vantagem é que não só emissor pode enviar mensagens criptografadas para receptor, mas qualquer pessoa, basta conhecer a chave pública deste receptor, além disto, emissor e receptor não precisam combinar chaves antecipadamente. Emissor envia uma mensagem, primeiramente criptografa através de sua chave privada(assinando a mensagem) e logo após criptografa a mensagem com a chave pública do receptor(tornando-a sigilosa), isto é o emissor envia a mensagem duplamente criptografa para receptor, este por sua vez ao receber a mensagem deverá decriptografa duas vezes. Primeiro com sua chave privada e depois com a chave publica do emissor. O maior problema das chaves assimétricas é que ela é computacionalmente intensiva, sendo necessário muito tempo para criptografar uns poucos parágrafos. Um algoritmo que faz criptografia assimétrica é o RSA, e um exemplo de aplicativo que a utilize é o PGP que possibilita correio eletrônico criptografa. Pode-se combinar os melhores aspectos da criptografia com chave simétrica e assimétrica, codificando a mensagem com o método da chave simétrica e criptografando a chave simétrica com o método da chave assimétrica. Com isso beneficia-se velocidade do método simétrico e da facilidade de distribuição de chaves do método assimétrico. Emissor envia a mensagem codificada através da criptografia de chave simétrica, gerada aleatoriamente apenas para esta mensagem. Conhecida como chave de sessão (session key). Emissor criptografa essa chave de sessão com a chave pública do receptor (isto não toma muito tempo por que a chave não é muito grande). Emissor envia a mensagem criptografa e a chave de sessão criptografa para emissor, este por sua vez ao receber decriptografa a chave de sessão com sua chave privada e em seguida, decriptografa a mensagem usando a chave de sessão que acabou de receber, podendo assim ler o conteúdo da mensagem. Diffie-Helman Através da troca de uma chave de cifragem de tal forma que uma terceira parte não autorizada, não tenha como deduzi-la. Cada participante inicia com sua chave secreta e através da troca de informações é derivada uma outra chave chamada chave de sessão, que será usada para futuras comunicações. O algoritmo baseia-se na exponenciação discreta, pois sua função inversa, os logaritmos discretos, é de alta complexidade. Merkle-Hellman Baseava-se em um jogo matemático chamado Knapsack (Mochila), onde dada uma coleção de itens, verifica-se as possíveis maneiras de armazená-la dentro de um repositório de tamanho fixo, de forma a não sobrar espaço. Foi usado durante muitos anos, porém com a descoberta de uma falha crucial foi inutilizado para fins práticos. A assinatura digital é uma garantia que o documento é uma cópia verdadeira e correta do original. Com chaves assimétrica. Emissor criptografa a mensagem com sua própria chave privada e envia ao receptor. Para decriptografar deve-se usar a chave pública do emissor. Desta forma qualquer pessoa pode ler a mensagem, porém tem-se a certeza de que foi o emissor quem enviou, pois somente ele possui o chave privada. Para assinar uma mensagem, uma função Message Digest (MD) é usada para processar o documento, produzindo um pequeno pedaço de dados, chamado de hash. Uma MD é uma função matemática que refina toda a informação de um arquivo em um único pedaço de dados de tamanho fixo. Entra-se com os dados a serem "digeridos" e o algoritmo MD gera um hash de 128 ou 160 bits (dependendo do algoritmo, são exemplos: MD4, MD5 e Snefru). Uma vez computada uma message digest, criptografa-se o hash gerado com uma chave privada. O resultado de todo este procedimento é chamado de assinatura digital da informação. O motivo para se usar funções message digest está diretamente ligado ao tamanho do bloco de dados a ser criptografado para se obter a assinatura. De fato, criptografar mensagens longas pode durar muito tempo, enquanto que criptografar hashs, que são Contudo as assinaturas digitais podem ser forjadas, assim podese, matematicamente ser verificada em quanto sua integridade e autenticidade. Primeiro, executa-se a função MD (usando o mesmo algoritmo MD que foi aplicado ao documento na origem), obtendo assim um hash para aquele documento, e posteriormente, decifra-se a assinatura digital com a chave pública do remetente. A assinatura digital decifrada deve produzir o mesmo hash gerado pela função MD executada anteriormente. Se estes valores são iguais é determinado que o documento não foi modificado após a assinatura do mesmo, caso contrário o documento ou a assinatura, ou ambos foram alterados. Infelizmente, a assinatura digital pode dizer apenas que o documento foi modificado, mas não o que foi modificado e o quanto foi modificado. Para ser possível que um documento ou uma assinatura adulterada não seja detectada, o atacante deve ter acesso a chave privada de quem assinou esse documento.