Sítio do Piropo

B. Piropo

< Coluna em Fórum PCs >
Volte
03/12/2007

< Atributos digitais I: >
<
Confidencialidade e autenticação >


Acabei de abrir minha carteira, contei e descobri que carrego comigo para cima e para baixo dezoito cartões de plástico de todo tipo. Tem cartão com “chip”, sem “chip”, com tarja magnética, sem tarja magnética, com retrato e sem retrato. Servem para os mais diversos fins: uns me identificam, outros me garantem acesso a contas bancárias, a clubes, associações, o diabo a quatro.

Reduzidos à sua expressão mais simples, cada um deles serve para me atribuir algo. Os atributos variam desde ser cliente de tal ou qual banco, membro desta ou daquela associação ou, simplesmente, como se uma mera inspeção visual não bastasse, atestam que sou velho: um deles garante que exibo o pouco invejável atributo de “idoso” e permite que eu ande de graça no Metrô do Rio. E, curiosamente, apesar de ser intransferível por portar meu retrato, tem prazo de validade e deve ser renovado periodicamente. O que me faz presumir que o Metrô receia que dia desses, sem mais aquela, eu deixe de ser velho por algum meio que não o convencional e passe a andar de graça em seus trens indevidamente. Estou louco para descobrir como posso alcançar esta graça e, se o burrocrata (assim mesmo, com dois “rr”) do Metrô que teve a idéia de tornar obrigatória a renovação da carteirinha de velho me revelar o segredo de como deixar de ser velho e continuar vivo, prometo andar de Metrô todo o dia, mesmo que não precise, pagando o dobro da tarifa.

Mas isso foi apenas um desabafo e não vem ao caso. Voltemos ao tema da coluna.

Carregar tanto cartão é uma chateação. Porém incomparavelmente menor que a aporrinhação de renová-los todos em caso de perda ou roubo da carteira. Se, pelo menos, houvesse uma forma eletrônica de garantir que eu possuo tal ou qual atributo, minha vida ficaria bem mais fácil. Por exemplo: se eu levasse comigo apenas um cartãozinho plástico com um “chip” contendo todos aqueles atributos, em caso de perda ou furto eu poderia cancelá-lo com um único telefonema. E bastaria emiti-lo novamente junto à autoridade competente para receber de volta todos os meus atributos. Isso sem mencionar o fato que, sendo digital, ele poderia ser criptografado e incorporado a qualquer arquivo por mim produzido, o que garantiria não apenas que eu sou o autor dele como também que eu tenho condições de sê-lo por portar atributos ou qualificações para tal. Por exemplo: em um projeto de engenharia por mim desenvolvido e enviado ao cliente via Internet na forma de arquivo eletrônico, bastaria apor a ele uma “assinatura digital” que, caso contivesse meus atributos, não apenas certificaria ser eu o autor do projeto como informaria minha inscrição no CREA e garantiria que estou em pleno gozo de meus direitos profissionais de engenheiro podendo, portanto, assinar aquele projeto. Beleza, nénão?

Pois é justamente isto que a SERASA, em parceria com a Microsoft, pretende implementar. Chama-se “Certificação de Atributo Digital” e será o tema da coluna.

Segundo Igor Rocha, Gerente de Certificação Digital da SERASA, “o certificado de atributo digital permite qualificar as pessoas envolvidas em uma operação eletrônica, possibilitando com isso uma verificação automática de suas habilitações para executar a operação”. Entendeu? Nem eu. Então vamos destrinchar, que o assunto é interessante.

Para entendermos como a coisa deverá funcionar precisamos ter noções básicas de criptografia com chave assimétrica, assinatura digital e certificação digital. Parece complicado, mas garanto que não é. Senão vejamos.

O verbo “criptografar” tem origem na justaposição de dois termos gregos, o antepositivo “kruptos” (secreto, oculto; dele originaram-se termos como “cripta” e “críptico”) e o pospositivo “grapho” (grafia, escrita). Segundo o Houaiss, significa “cifrar um texto, reproduzi-lo em código não conhecido, tornando-o, desse modo, intencionalmente ininteligível para os que não têm acesso às suas convenções”. Portanto, “criptografar” (e não, pelamordedeus, “encriptar”, verbo usado por brasileiros que conhecem o idioma inglês mas ignoram o nosso) nada mais é que a arte ou ciência de escrever um texto cifrado. Quem recebe este tipo de texto, para entendê-lo, precisa efetuar o processo inverso, que não sem razão se denomina “decifrar”, ou seja, reproduzir o texto original a partir do conhecimento de três objetos: o texto cifrado, uma “chave” (geralmente um número) e o algoritmo usado para aplicá-la.

A criptografia de um texto pode ser muito simples. Por exemplo: se eu lhe enviar o texto cifrado: “GUVG VGZVQ HQK EKHTCFQ” e informar que a “chave” é 2 e que o algoritmo criptográfico consiste simplesmente em subtrair a chave da ordem alfabética de cada caractere cifrado (ou seja, um “G” no texto cifrado representa o caractere “E” no texto original porque o “E” está situado duas posições antes do “G” no alfabeto), você certamente não terá dificuldades em efetuar a decifração e obter o texto original. Mas, evidentemente, há criptogramas bastante complexos, cujas chaves são expressas em números binários de centenas de bits e que usam algoritmos difíceis de destrinchar, cuja aplicação exige um programa de computador capaz de aplicar sucessivas operações lógicas e matemáticas a cada caractere ou grupo de caractere do texto original, tornando quase impossível decifrá-lo sem dispor da chave.

Figura 1: Criptografia simétrica.

O tipo de criptografia acima descrito denomina-se “simétrica” porque a mesma chave é usada para cifrar e decifrar o texto. O problema da criptografia simétrica é que tanto o remetente quanto o destinatário devem conhecer a chave. E se duas pessoas conhecem um segredo, logo ele deixa de ser segredo. Basta que um deles permita, proposital ou acidentalmente, que a chave caia nas mãos de terceiros e todo o sigilo da operação é comprometido já que qualquer um que disponha da chave pode reconstituir o texto original.

Para evitar isto criou-se um novo e engenhoso tipo de criptografia, a “assimétrica”, onde as chaves são diferentes. Uma, privada, permanece exclusivamente de posse de seu “dono” e ninguém mais a conhece. A outra, pública, é enviada a todos os possíveis destinatários das mensagens cifradas com a primeira e pode mesmo ser posta à disposição do público em geral. Na criptografia assimétrica uma chave é gerada em função da outra e somente podem ser usadas aos pares. E tanto eu posso criptografar um documento com minha chave privada e enviá-lo para terceiros (que poderão decifrá-lo usando minha chave pública) quanto posso receber de terceiros um documento criptografado com minha chave pública (que somente eu poderei decifrar usando minha chave privada). Ou seja: na criptografia assimétrica chaves públicas e privadas são geradas aos pares e somente fazem sentido se forem usadas igualmente aos pares já que uma depende da outra e nenhuma delas terá qualquer serventia sem a outra.

O ato de tornar pública uma chave criptográfica soa estranho, eu sei. Se qualquer pessoa que dispõe dela pode decifrar o documento, onde está a confidencialidade da coisa?

Não está. Nem é para estar. Quando eu crio um documento cifrado com minha chave privada, não estou preocupado com o fato de que qualquer pessoa que ponha as mãos nele possa decifrá-lo, já que para isto basta usar a chave pública (que é do conhecimento geral). Na verdade é isso mesmo que eu quero.

Então porque me dei ao trabalho de cifrá-lo?

Ora, em um caso destes meu objetivo não foi preservar a confidencialidade, mas a autenticidade do texto. Ou seja: garantir que quem o escreveu foi eu mesmo, o dono da chave privada correspondente à chave pública usada para decifrá-lo. Pois se um único caractere do documento criptografado for alterado, o resultado não será o documento original mas um conjunto de caracteres ininteligíveis. Desta forma a autenticidade do documento está garantida já que quem o decifrar pode ter certeza não apenas de que fui eu mesmo que criei o documento como também que ele não foi alterado por terceiros.

Se criptografar um documento com minha chave privada garante sua autenticidade, a confidencialidade é garantida quando o documento transita no sentido oposto, ou seja, quando alguém o criptografa com minha chave pública e o envia a mim. Neste caso ele pode cair em mãos de terceiros sem qualquer risco de que seu conteúdo seja conhecido, já que só pode ser decifrado por mim, único detentor de minha chave privada. E quando o receber, eu (e somente eu) poderei reconstituir o documento original. Desta forma, se cada um de nós dispuser de um conjunto de chaves pública e privada, fica garantida tanto a confidencialidade quanto a autenticidade de qualquer documento eletrônico. Basta que eu criptografe com minha chave privada os documentos que desejar autenticar e os envie a qualquer pessoa que disponha da minha chave pública e que criptografe com a chave pública de outra pessoa os documentos que enviar a ela e desejar preservar a confidencialidade.

Figura 2: Criptografia Assimétrica.

Veja, na Figura 2, o que ocorre quando Regina envia um documento para Brenno e não deseja que ninguém, exceto o próprio Brenno, consiga conhecer seu teor. Neste caso ela criptografa o documento com a chave pública de Brenno, que ela dispõe por ser de conhecimento público, e envia o documento criptografado para o destinatário, Brenno, que ao receber o decifra usando sua chave privada, à qual ninguém mais tem acesso exceto ele próprio. Agora imagine que Brenno deseja enviar uma resposta a Regina confirmando o recebimento do referido documento. Esta resposta não deve necessariamente ser sigilosa, já que é uma mera confirmação de recebimento, mas sua procedência precisa ser garantida, ou seja, Brenno deve fazê-lo de tal forma que Regina não tenha dúvidas que a mensagem partiu dele mesmo. Neste caso basta que Brenno criptografe a resposta com sua chave privada e a envie para Regina, que pode decifrá-la com a chave pública de Brenno, tendo assim a certeza que foi ele mesmo quem a enviou.

Parece complicado, mas funciona que é uma maravilha. Desde, é claro, que todos se ponham de acordo quanto ao método (conjunto de algoritmos) usado para gerar as chaves e criptografar os documentos. Há diversos, como o < http://en.wikipedia.org/wiki/Data_Encryption_Standard > DEA (Data Encryption Standard), o < http://en.wikipedia.org/wiki/International_Data_Encryption_Algorithm > IDEA (International Data Encryption Algorithm) e o popular < http://en.wikipedia.org/wiki/Pretty_Good_Privacy > PGP (Pretty Good Privacy). Se quiserem detalhes sobre como a coisa funciona, cliquem sobre os atalhos para consultar a página correspondente da Wikipedia.

Agora que sabemos como funciona a criptografia assimétrica, podemos discutir a questão da assinatura digital.

Como vimos, cifrar um documento com uma chave privada não garante sua confidencialidade já que qualquer pessoa que disponha da chave pública correspondente poderá decifrá-lo. Garante apenas sua autenticidade. Ocorre que os programas de criptografia “forte” (ou seja, aqueles que usam chaves longas e algoritmos complexos para cifrar e decifrar textos) são relativamente lentos. E, se tudo o que eu preciso é garantir a autenticidade (ou seja, a autoria e a integridade) de um documento, não há necessidade de criptografá-lo inteiro, basta que eu consiga uma forma de autenticá-lo de modo a tornar indiscutível o fato de que ele foi gerado por mim.

É aí que entra a assinatura digital, o assunto da próxima coluna.

 

B. Piropo