http://www.linuxmagazine.com.br/images/uploads/pdf_aberto/LM_64_64_69_05_seg_criptog

Page 1

Terceiro fascículo do tutorial de criptografia

SEGURANÇA

Criptografia: teoria e prática, parte 3 Entenda os algoritmos de hash e comece a praticar a criação de pares de chaves. por Marcio Barbado Jr. e Tiago Tognozi

P

rosseguindo em nosso tutorial de criptografia, vamos agora explicar as últimas questões teóricas e finalmente adentrar a seção prática usando o famoso e poderoso GnuPG (GNU Privacy Guard).

Hash

Hash, checksum ou simplesmente sum são nomes dados ao valor retornado por “funções de hash”. Um hash pode ser descrito como uma pequena string de dados que representa uma outra, maior que ela. Tais valores são muito utilizados em fingerprinting (atestado de procedência), para comprovar o caráter genuíno de informações e são, em verdade, strings. Cabe elucidar que o termo “checksum” faz alusão ao ato de se verificar o valor hash de uma informação, e deve ser empregado nesse contexto. Já a designação “sum” é pouco utilizada, pois prima por abreviatura e derivação de checksum em detrimento de rigor técnico e clareza de sentido. Um exemplo de uso de hash é para garantir que um arquivo recebido seja genuíno e não tenha sido adulterado. Identificar um arquivo por sua assinatura hash propicia a 64

seu dono ou autor a oportunidade de enviá-lo a outras pessoas de modo que, chegando tal arquivo em seu destino, seus destinatários poderão conferir se as informações ali contidas não foram indevidamente manipuladas no trajeto. É interessante mencionar que a confiabilidade do hash para identificar arquivos digitais é maior que a do DNA para identificar pessoas.

Funções de hash

As funções de hash utilizam algoritmos de dispersão e atuam sobre porções arbitrárias de informações (um grande arquivo, por exemplo), extraindo dali um valor, o hash. As boas funções de hash são aquelas cujas inversas são difíceis de se obter. Suas finalidades são diversas, tais como: t abelas hash: utilizadas em desenvolvimento de sistemas para definir privilégios de acesso a usuários e serviços; rainbow tables: são tabelas hash construídas especificamente para a recuperação de senhas; fingerprinting: técnicas já mencionadas, utilizadas para se verificar a integridade e autenticidade de arquivos de computador;

“fingerprinting” diz respeito às técnicas utilizadas para se comprovar a autenticidade de uma identidade. A tradução do termo leva ao conceito de impressão digital, utilizada para identificar pessoas. Entretanto, a ideia se estendeu para o universo digital e para a necessidade de identificar informações. Enquanto um cidadão pode ser reconhecido por sua impressão digital ou até mesmo por seu DNA – este último sendo mais confiável –, um arquivo de computador pode ser identificado por seu hash, também conhecido como “assinatura hash”; correção de erros: por meio das verificações de redundância presentes em determinadas transmissões de dados; e criptografia: finalidade foco deste documento, a proteção de informações mediante a aplicação de funções criptográficas.

As funções de hash também são utilizadas nas já populares “assinaturas digitais” e em diversos mecanismos de autenticação. Também são extremamente úteis em planos de “gerenciamento de

http://www.linuxmagazine.com.br


Criptografia | SEGURANÇA

riscos” e “planos para continuidade de negócios”, pois sua utilização preventiva facilita análises forenses de equipes CSIRT caso algum problema comprometa os sistemas de informação de uma empresa. Dentre as diversas funções de hash, destacam-se algumas: MD5: já foram identificadas falhas no algoritmo desta função, que entrega 128 bits em sua saída; e SHA-1: especificações do governo norte-americano, por meio de sua agência de segurança (a NSA), as funções SHA são publicadas como padrões FIPS pela agência NIST. O termo “SHA” significa secure hash algorithm (algoritmo de hash seguro, utilizando o jargão técnico brasileiro).

Message

O mundo das funções de hash chama os argumentos (também conhecidos como entradas) de “message” (mensagem), ou seja, caso uma dessas funções resolva extrair o hash de um arquivo MP3, tal arquivo é a “message” da função, e o checksum extraído é chamado de “message digest” (mensagem digerida).

Tamanho da saída

O “tamanho da saída” é um parâmetro presente nas funções de hash, frequentemente expresso em bits. Ele traduz a dificuldade imposta por uma função. Valores comuns (em bits) são 128, 160, 224, 256 e 512.

de protocolos; a ordem de camadas pelas quais os dados devem passar é sempre apresentada na vertical, como na figura 1. Desperta grandes preocupações a camada de aplicação, a mais alta tanto no modelo OSI como no TCP/ IP. É nela que acontecem transações como Internet banking, compras com cartão de crédito e entregas de imposto de renda. Embora a criptografia também possa ser empregada nas camadas de enlace de dados (criptografia de enlace) e transporte, ela surte efeito de maior espectro na camada de aplicação.

Aplicações

Além das situações básicas citadas e exemplificadas anteriormente, a indústria de Segurança da Informação apresenta diversos outros produtos baseados nos conceitos matemáticos da criptologia. Um dos mais conhecidos é o VPN (Virtual Private Network). Também podemos destacar os Hardware Security Modules (chamados às vezes de Host Security Modules ou HSMs), appliances de segurança que lançam mão de algoritmos criptográficos (frequentemente utilizam

Linux Magazine #64 | Março de 2010

Os mais sofisticados podem ainda atuar juntamente a tokens USB ou smart cards para salvaguardar suas chaves. Esta última característica é imprescindível a empresas de alguns setores específicos da economia. A proteção de informações baseada em criptografia constitui um dos pilares da indústria de cartões de crédito e débito, formada por gigantes do mercado de serviços financeiros. Os padrões bem definidos de segurança adotados por tais empresas – conhecidos como PCI DSS (Payment Card Industry Data Security Standard) – exigem que as informações contidas nos cartões sejam codificadas antes de ser transmitidas (end-to-end) e impõem rigorosas

modelo OSI aplicação (dados) apresentação (dados)

A camada de aplicação

Esta seção trata do papel da criptografia em contextos não tão aparentes das comunicações entre computadores. “Camada” é um conceito ligado a redes de computadores, que designa uma etapa com processos distintos, por meio dos quais dados em trânsito devem passar. A formalização elementar de camadas pode ser encontrada nos modelos OSI e TCP/IP, padrões adotados mundialmente para a definição

chaves públicas) para proteger determinados computadores. O mercado apresenta HSMs em diversos formatos, destacando-se entre eles: um periférico padrão, que se comunica via porta serial RS-232; um dispositivo que se comunica via interface SCSI; uma placa padrão PCI; um dispositivo IP; e um dispositivo USB.

sessão (dados) transporte (datagramas) rede (pacotes) enlace de dados (frames) física (bits) Figura 1 Assim como o modelo OSI, a segurança também utiliza o conceito de camadas.

65


SEGURANÇA  | Criptografia

políticas para a administração das chaves utilizadas.

PCI DSS

O PCI DSS não representa uma categoria de produtos ou serviços, mas um padrão. O CPqD [1] foi a primeira instituição da América Latina a se credenciar como QSA (Qualified Security Assessor) pela PCI.

Encriptação de disco

Técnica utilizada por alguns programas, que protege informações mesmo quando o sistema operacional que as abriga não está ativo. A técnica preenche uma lacuna de segurança extremamente explorada por Live CDs. Diferentemente de programas para encriptação de arquivos como o PGP e o GnuPG, que utilizam arquivos temporários (buffers), um programa para encriptação de disco não os utiliza. Ele encripta e decripta o conteúdo do disco de forma transparente, ou seja, quando o usuário encerra uma sessão, a encriptação ocorre automaticamente e, no início de uma nova sessão, tudo bastará a esse usuário fornecer sua senha ou passphrase. Nenhum conhecimento específico é necessário para que se possa usufruir de seus benefícios. Recentemente, o termo on-the-fly encryption (ou OTFE) passou a ser utilizado para se referir a tais características, que se mostram especialmente interessantes para laptops. Considere um executivo que possui um laptop e utiliza nele um programa para encriptação de disco. Caso esse computador seja roubado, as chances de se obter acesso às suas informações – e da organização onde ele trabalha – são mínimas. Exemplos de programas para encriptação de disco são: TrueCrypt, da TrueCrypt Foundation: software livre multiplataforma [2]; e BitLocker, da Microsoft. 66

Gerenciamento de identidades O termo “gerenciamento de identidades” designa uma categoria de produtos e serviços que fazem uso das técnicas assimétricas de autenticação.

GnuPG ou GPG

Sendo o PGP um software proprietário [3], o projeto GNU de Richard Stallman sempre almejou a criação de uma alternativa livre. Isso, entretanto, se mostrava impossível, pois os algoritmos utilizados para criptografia assimétrica eram então patenteados. Então, em 1997, assim como a norte americana Diffie-Hellman [4], algumas outras patentes expiraram. Contudo, tal fato não fez muita diferença legal nos Estados Unidos, base do projeto GNU. Continuava sendo proibida a manipulação dos referidos algoritmos a qualquer cidadão norte americano, residente ou não em seu país. Entretanto, a utilização dos referidos algoritmos, visando implementar uma versão aberta do PGP, tornou-se possível em outras localidades do globo. Atento a isso tudo, o americano Stallman estimulou algumas comunidades hackers europeias a iniciar esse trabalho. Foi quando o alemão Werner Koch, do German Unix User Group, começou a desenvolver o que hoje se conhece por GnuPG. Atualmente com mais de dez anos de idade, o projeto GnuPG (alternativamente citado como GPG), assim como o clássico PGP de Zimmermann, é um programa de computador utilizado para criptografia simétrica e assimétrica (chaves públicas) que segue o padrão OpenPGP. Lançado sob a licença GPL, o GnuPG é disponibilizado para sistemas baseados em UNIX, Mac OS X e Windows. Ele compacta, encripta e decripta informações, e trabalha

com assinaturas digitais. Dois dos maiores benefícios que seu uso oferece podem ser traduzidos na troca segura de emails importantes e na proteção de arquivos armazenados em máquinas tradicionais ou em mídias externas para fins de backup.

Política de backup ideal Considere a tão tradicional quanto frequente necessidade que as empresas possuem de realizar backups. Os arquivos presentes nas referidas cópias de segurança costumam ser guardados em mídias fisicamente separadas de suas máquinas de origem, ou seja, os backups são feitos em CD-Rs, CD-RWs, DVDs diversos, unidades de fita etc. Se, por um lado, isso oferece segurança mediante fontes redundantes das informações em questão, acaba, por outro lado, disponibilizando aqueles arquivos em mais de um lugar e, consequentemente, expondo-os ao dobro do risco de ser indevidamente acessados ou manipulados. Hipoteticamente, estando os arquivos originais em um servidor seguro, quão protegidas estarão suas cópias? Considerando um cenário plausível de furto das as mídias de backup, o emprego do GnuPG em políticas de backup reduziria significativamente as chances dos criminosos utilizarem os arquivos, uma vez que as informações estariam encriptadas.

Funcionamento

Sofisticado e coerente, o GnuPG trabalha com criptografia simétrica e assimétrica, e não inclui algoritmos patenteados como o IDEA, que, para ser utilizado, exige a instalação de um módulo à parte. Além disso, possibilita o gerenciamento das chaves cadastradas. Exemplos de algoritmos e funções com os quais o GnuPG pode trabalhar são:

http://www.linuxmagazine.com.br


Criptografia | SEGURANÇA

algoritmos RSA para criptografia assimétrica; algoritmos Triple DES (3DES), AES e Blowfish; funções hash MD5 e SHA; e algoritmos ZIP, ZLIB e BZIP2 para compressão.

Uma vez instalado, o arquivo (texto simples) a comportar as configurações do usuário é o gpg.conf. Também é interessante destacar que o GnuPG apresenta recursos de segurança que nem o PGP possui. É o caso da proteção à integridade MDC, um hash adicionado à mensagem encriptada que alerta o “dono” da informação, caso esta tenha sido adulterada por meio de ataques do tipo chosen-ciphertext (assim chamados pelo especialista Bruce Schneier). Esses ataques são aplicados em situações que envolvem criptografia assimétrica, e exploram vulnerabilidades dos destinatários em trocas de emails. A proteção MDC é desativada por padrão ao se usar criptografia simétrica, buscando evitar problemas de compatibilidade com o PGP.

Criptografia no KDE

As definições criptográficas são acessíveis por meio do Painel de Controle do KDE, comando kcontrol. O KDE oferece o Kgpg, interface gráfica para o GnuPG em Linux. Integrado ao ambiente gráfico, ele é disponibilizado ao usuário em menus de contexto, pela opção Arquivar & Criptografar.

Prática

Vamos começar agora a parte prática desta série de artigos. Antes de focar o GNU Privacy Guard, é importante tomar certas precauções que auxiliarão na utilização do GnuPG. O GnuPG já vem instalado na maioria das distribuições. Esta seção introduz medidas para a devida configuração do programa. O arquivo gpg.conf exerce papel

Linux Magazine #64 | Março de 2010

fundamental no comportamento do programa. Trata-se de um arquivo texto utilizado para se ativar ou desativar recursos do GPG. Algumas instalações do GnuPG trazem a proteção à integridade MDC desativada por motivos de compatibilidade com o PGP. Isso faz com que o programa gere avisos como:

há um plugin disponível em [5], que fornece os seguintes arquivos: idea.c.gz: o arquivo fonte do módulo, compactado; e idea.c.gz.sig: sua assinatura.

que não representa grande risco a princípio; seu propósito é alertar sobre a possibilidade de se ativar a proteção MDC.

Descompacte o pacote contendo o fonte (idea.c.gz) e siga as instruções de compilação contidas no próprio arquivo. Em seguida, edite corretamente o arquivo texto de configuração, ~/. gnupg/gpg.conf, para que a biblioteca IDEA possa ser utilizada pelo programa. Insira a seguinte linha para que o GnuPG carregue o módulo IDEA:

Passphrase

load-extension idea

message was not integrity protected

O GPG protege a chave privada com uma passphrase (ou frase-senha), espécie de senha escolhida pelo usuário. Ou seja, há uma senha (a passphrase, não residente no computador) protegendo outra senha (a chave, abrigada no computador). A passphrase é simétrica, isto é, a mesma cadeia de caracteres é utilizada para criptografar e também para decifrar a chave privada. Nesse sentido, parece-se com uma senha tradicional. Assim, sempre que a chave privada for necessária, o usuário deverá fornecer a passphrase que, analogamente a uma senha tradicional, deve ser escolhida com cautela. Jamais escolha passphrases óbvias, pois tentativas de ataque frequentemente utilizam padrões baseados em nomes de parentes, amigos e bichos de estimação relacionados ao alvo. O ideal para a obtenção de uma passphrase segura e memorizável é misturar números e letras esporádicos e não relacionados ao usuário, de modo aleatório, até totalizar cerca de vinte caracteres.

Módulo IDEA

A biblioteca para utilização do algoritmo simétrico IDEA não vem inclusa na instalação do GnuPG. Caso sua utilização seja necessária,

deixando uma linha em branco ao final. Depois, salve e feche o arquivo. Teste o reconhecimento da biblioteca com o comando: $ gpg --version

ou $ gpg2 --version

Por meio desses comandos, o algoritmo IDEA deve surgir como uma opção de cipher.

Novo par de chaves

É importante destacar que o GnuPG, uma vez instalado, já está pronto para a criptografia simétrica. Todavia, a utilização criptográfica assimétrica exige algumas medidas adicionais. Caso ainda não se possua um par de chaves ou, caso elas já existam e ainda assim seja necessário criar um par adicional, deve-se fornecer o seguinte comando: $ gpg --gen-key

e então, o GnuPG oferece o menu para definir o tipo do par de chaves a gerar; convém aceitar a oferta padrão, DSA and Elgamal. Ela ativa 67


SEGURANÇA  | Criptografia

o algoritmo de autenticação DSA (Digital Signature Algorithm) para assinaturas digitais, e também o ElGamal para conferir privacidade às comunicações (confira [6] para mais detalhes dos algoritmos). Aceite também 1024 para o tamanho de chave em bits. Também é preciso definir o tempo de renovação das chaves, fornecer um nome e um endereço de email, que serão ligados ao par. A criação do par de chaves assimétricas é finalizada com o fornecimento de sua passphrase. Confirmada a passphrase, o programa realiza então uma série de cálculos e cria uma chave pública e outra privada. Uma dica para essa etapa está relacionada ao interessantíssimo algoritmo envolvido: o GnuPG tenta fornecer o par da maneira mais aleatória possível, realizando cálculos com todo o tipo de informação que estiver disponível, inclusive dados provenientes do teclado e da atividade do disco rígido. Portanto, após fornecer e confirmar a passphrase, durante a fase de produção do par de chaves, é possível participar desse processo, digitando algo no teclado e consequentemente, entregando dados adicionais ao processo que culminará com a geração das chaves. Após os cálculos das chaves, visualiza-se a chave pública criada, exportando-a para o formato ASCII com a opção --armor. Abra o prompt de comando e, dentro do diretório no qual se deseja abrigar o arquivo, digite: $ gpg --armor \ --output “chave_pub.txt” \ --export “E-MAIL_ASSOCIADO”

Nesse comando, deve-se utilizar o endereço de email associado àquela chave; a opção --output deve ser seguida do nome completo que o arquivo a ser gerado possuirá. 68

Então, visualiza-se a chave pública, abrindo-se o arquivo chave_pub. txt com um editor de texto. Note que as linhas iniciadas por --- também fazem parte da chave. Além disso, a linha semelhante a:

Opcionalmente, entretanto, recomenda-se a realização de cópias de segurança também dos seguintes arquivos: pubring.gpg; secring.gpg; e trustdb.gpg.

----BEGIN PGP PUBLIC KEY BLOCK----

indica a natureza pública (PUBLIC) da chave exportada e serve a fins de confirmação, ou seja, trata-se da chave correta para divulgação. Com isso, está feito o backup da chave pública.

Esses arquivos são chamados de “chaveiros”, pois guardam chaves e informações referentes ao par, não apenas à chave pública. Recomendase, portanto, abrigar essas cópias em um local de difícil acesso.  n

Mais informações [1] CPqD: http://www.cpqd.com.br/ [2] Truecrypt: http://www.truecrypt.org/ [3] PGP na Wikipédia: http://pt.wikipedia.org/wiki/PGP [4] Método de criptografia Diffie-Hellman na Wikipédia: http://pt.wikipedia.org/wiki/Diffie-Hellman [5] Plugin IDEA para GnuPG: ftp://ftp.gnupg.dk/pub/contrib-dk [6] Marcio Barbado Jr. e Tiago Tognozi, “Criptografia: teoria e prática, parte 2”: http://lnm.com.br/article/3292

Sobre os autores Marcio Barbado Jr. (marcio.barbado@bdslabs.com.br) e Tiago Tognozi (tiago.tognozi@bdslabs .com.br) são especialistas em segurança na BDS Labs (www.bdslabs.com.br).

Nota de licenciamento Copyright © 2010 Marcio Barbado Jr. e Tiago Tognozi É garantida a permissão para copiar, distribuir e modificar este documento sob os termos da Licença de Documentação Livre GNU (GNU Free Documentation License), Versão 1.2 ou qualquer versão posterior publicada pela Free Software Foundation. Uma cópia da licença está disponível em http://www.gnu.org/licenses/fdl.html

Gostou do artigo? Queremos ouvir sua opinião. Fale conosco em cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/3330

http://www.linuxmagazine.com.br


Quer falar com os 30.000 profissionais de TI com maior nível de conhecimento técnico do mercado nacional? Então anuncie na Linux Magazine! Segundo dados do Instituto Verificador de Circulação*, a Linux Magazine é atualmente a segunda revista mais vendida para profissionais de TI do mercado editorial brasileiro. Além disso, é a revista que tem o público mais qualificado no quesito técnico. Nossa combinação exclusiva de conteúdo avançado com uma abordagem prática faz da Linux Magazine a publicação preferida de quem toma decisões e faz recomendações para compra de produtos e contratação de serviços. Anuncie conosco e fale com esse público.

Para anunciar, entre em contato: anuncios@linuxmagazine.com.br 11 4082.1300 *Comparação de circulação para os últimos três meses de publicações nacionais voltadas ao segmento de TI.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.