1ª Premissa : "O Nível de Segurança é aceitável quando os custos de um ataque bemsucedido, é de uma ordem de grandeza maior que o lucro em potencial."
2ª Premissa : "Com tempo, esforço e dinheiro, qualquer solução de segurança pode ser comprometida." Nesse Artigo discutirei sobre Certificação Digital e onde os Smart Cards entram nessa história.
Já há algum tempo tenho ouvido um barulho envolta desse assunto falando-se bastante sobre segurança digital, sobre o quão incrível é, sobre RIC (Registro de Identidade Civil), sobre NF-e (Nota Fiscal Eletrônica), e-CNPJ / e-CPF, etc.
Hoje compartilharei com vocês um pouquinho da minha experiência no assunto e o caminho das pedras a ser percorrido para implementação da tal Certificação Digital.
Certificação Digital é atualmente (2011) RSA e SHA
Pois bem essas duas siglas são a base da Certificação Digital. Sim só elas duas e mais ninguém e como sempre digo "é simples assim".
O RSA trata-se de um algoritmo criptográfico assimétrico criado por Ronald Rivest, AdiShamir e Leonard Adleman e é sem dúvida nenhuma um dos algoritmos de criptografia mais bem sucedidos pois chaves acima de 1024 bits tem se mantido inquebrável até o momento em que este artigo estava sendo escrito (2011).
O RSA trata-se de um algoritmo criptográfico assimétrico criado por Ronald Rivest, AdiShamir e Leonard Adleman e é sem dúvida nenhuma um dos algoritmos de criptografia mais bem sucedidos pois chaves acima de 1024 bits tem se mantido inquebrável até o momento em que este artigo estava sendo escrito (2011).
A ultima chave RSA fatorada (decomposta ou quebrada), tinha 768 bits e ocorreu em Dezembro de 2009, esse feito foi realizado por 6 institutos de pesquisa ao redor do mundo Suíça, Japão, Alemanha, França, Estados Unidos e Holanda.
Levou 6 Meses para se selecionar os Polinômios em um cluster de 80 Processadores e a fatoração levou 2 anos utilizando centenas de processadores.
Só a seleção de Polinômios em uma máquina com um Processador Opteron de 2.2GHz e 2 GB de RAM levaria cerca de 1.500 anos.
Os resultados podem ser vistos aqui : http://eprint.iacr.org/2010/006.pdf
Estima-se que a próxima Chave RSA de 1024 bits será quebrada em meados do ano 2014 apenas.
O funcionamento do RSA é muito simples, não entrarei em detalhes de como o algoritmo é implementado ou como se gera os pares de chaves pois isso é de livre acesso na Internet e está fora do escopo desse artigo.
Por se tratar de um algoritmo de criptografia assimétrico isso implica em 2 chaves distintas mas que possuem uma afinidade matemática, ambas são geradas a partir de 2 números Primos grandes e aleatórios.
A isso se dá o nome de Pares de Chaves, consistindo de uma Chave Privada e uma Chave Pública, obviamente a chave privada nunca deve ser exposta enquanto a chave pública pode ser distribuída e embora haja uma afinidade entre elas é impossível matematicamente se calcular a chave privada a partir da chave pública.
Então uma vez gerada o Par de Chaves, basta distribuir a Chave Pública entre as pessoas interessadas em decifrar suas mensagens.
O contrario também é possível, por exemplo o portador da Chave Pública pode usa-la para cifrar uma mensagem, nesse caso somente o que tem a posse da Chave Privada pode decifrar e ler a mensagem.
O SHA trata-se de uma família de algoritmos criptográficos de resumo (hash), foi criado pela NSA (National Security Agency) e é recomendada pela FIPS 180-2.
A versão utilizada geralmente pela Certificação Digital é o SHA-1, que é baseado nos princípios de outro conhecido algoritmo de resumo o MD4 e MD5 esses 2 últimos criados por Ronald Rivest (sim o R do RSA).
A principal função desse algoritmo conforme dito é resumir. Lembra-se das aulas de português onde você tinha que ler aquele livro "Grande Sertão : Veredas" de Guimarães Rosa e tinha que entregar um resumo dele? Pois é exatamente isso que o SHA-1 faz de maneira digital.
O SHA-1 sempre entrega um resumo de 160 bits (20 bytes), independente da quantidade de bytes de dados que se deseja resumir.
A vantagem desse algoritmo é que se ao menos 1 bit for alterado nos dados, um resumo completamente diferente é entregue quando recalculado.
Além da Certificação Digital os algoritmos de resumo são amplamente usados em programas P2P, senhas de logins, calculo de imagens ISO disponibilizadas em sites e FTP´s, etc.
Algoritmos de resumo são capazes de resumir desde 1 Byte até Infinito. Embora o SHA-1 seja reconhecido como seguro segundo a FIPS, ele já sofreu ataques e já se discute a criação de um novo algoritmo em substituição ao SHA.
Funcionamento do SHA-1:
Exemplos de Resumo usando o SHA-1:
Dado : 0x00
Resumo (hash): 0x5BA93C9DB0CFF93F52B521D7420E43F6EDA2784F
Dado : 0x01
Resumo (hash): 0xBF8B4530D8D246DD74AC53A13471BBA17941DFF7
Caso queira brincar com algoritmos de resumo você pode baixar um gratuito aqui:
Ok, assumo que você entendeu bem o funcionamento dos algoritmos RSA e SHA-1 e com isso já podemos assinar conceitualmente um documento, veja como:
Assinando uma Mensagem |
O Processo de Assinatura é extremamente simples, digito meu testamento onde deixo minha coleção de Java Cards para meu amigo.
Aplico o algoritmo de resumo SHA-1, que me produz um hash de 20 bytes.
Aplico nesse hash o algoritmo de criptografia RSA em modo cifragem usando minha chave Privada, que me produz um conjunto de bytes que se pode chamar de Assinatura Digital.
Monto um pacote de Dados contendo a mensagem mais a assinatura digital e envio isso tudo via Internet para o cartório.
Com isso o cartório com posse da minha Chave Pública pode então realizar a verificação da minha Assinatura Digital:
Verificando uma Mensagem Assinada |
Assim que o cartório recebe o pacote de dados ele separa a mensagem e a assinatura digital.
Aplica-se sobre os dados da assinatura digital o algoritmo RSA em modo decifragem usando-se a Chave Pública, com isso o Hash gerado anteriormente pelo emissor é recuperado.
Aplica-se o algoritmo SHA-1 na mensagem produzindo o resumo (hash) da mensagem.
Compara-se os dois hash e se ambos forem idênticos a mensagem está integra.
Suponha que o corpo da mensagem tenha sido violada no meio do caminho, nesse caso o hash gerado pelo cartório se diferirá do criptografado com a chave privada.
Caso a assinatura digital seja violada o algoritmo RSA não conseguirá decifrar a assinatura usando a chave Pública, para gerar uma nova assinatura válida é necessária a chave Privada que já sabemos desde que seja bem guardada é impossível de ser quebrada.
Isso é a pedra fundamental de toda Certificação Digital, absolutamente tudo que se utilize de Certificados Digitais usa essa mesma regra seja assinando uma NF-e, um documento bancário, um contrato imobiliário, uma ação judicial, uma declaração de imposto de renda, um e-mail, uma imagem de um documento escaneado, etc, etc, etc.
A seguir é adicionado sobre isso meios para tornar isso tudo ainda mais seguro, por exemplo como garantir que a Chave Pública é realmente Par de quem se diz ser? Como proteger de maneira eficiente e segura a Chave Privada?
Para se tratar dessas questões foram criadas o PKI, Tokens, Módulos HSM e padrões conhecidas por PKCS.
Para se tratar dessas questões foram criadas o PKI, Tokens, Módulos HSM e padrões conhecidas por PKCS.
Public Key Infrastructure (PKI)
O PKI ou Infraestrutura de Chave Públicas é um conjunto que une Hardware, Software, pessoas, procedimentos e politicas que venham garantir que uma Chave Pública pertença a um individuo e que esse tenha posse do consecutivo Par de Chave Privado.
Como você já deve ter imaginado uma maneira eficiente de se fazer isso é Assinando Digitalmente a Chave Pública do indivíduo.
Existe um órgão responsável por esse procedimento chamada de Autoridade Certificadora (AC), exemplos de AC Brasileiras são a Receita Federal, Casa da Moeda, Caixa Econômica Federal, Serasa Experian, Certisign e outras mais.
Assinando uma Chave Pública:
Gerando um Certificado Digital |
Após a Chave Pública ser assinada pela Chave Privada da AC, é criado um Certificado Digital para a Chave Pública do Indivíduo.
O Certificado Digital é um arquivo binário que possui diversas informações embutidas como nome do individuo, e-mail, endereço, uma cópia da própria Chave Pública assinada, etc.
É dever da AC certificar-se que o indivíduo requerente é quem se diz ser através da verificação de seus documentos legais e até características biométricas.
É dever da AC certificar-se que o indivíduo requerente é quem se diz ser através da verificação de seus documentos legais e até características biométricas.
O Certificado também possui dados relacionados à AC como versão do certificado, algoritmos utilizados, validade do certificado, caminho de autenticação (lista todas as AC´s envolvidas no processo até a AC Raiz), uma cópia do Certificado Digital da AC, etc.
Além de certificar Chaves Públicas uma AC também tem a responsabilidade de manter um diretório público com uma listagem de estado de cada certificado emitido, pois cada certificado pode se encontrar revogado, vencido ou válido somando se a isso ainda alguns detalhes de como cada certificado foi emitido.
Exemplo dos Detalhes de um Certificado:
Da mesma forma que um individuo tem sua Chave Pública Certificada por uma AC, uma AC também deve ter sua Chave Pública assinada por uma outra AC de nível superior a dela até chegar ao topo ocupada pela Autoridade Certificadora Raiz, a isso se dá o nome de Caminho de Certificação ou Cadeia de Certificação.
Exemplo de um Caminho da Certificação:
Além de certificar Chaves Públicas uma AC também tem a responsabilidade de manter um diretório público com uma listagem de estado de cada certificado emitido, pois cada certificado pode se encontrar revogado, vencido ou válido somando se a isso ainda alguns detalhes de como cada certificado foi emitido.
Exemplo dos Detalhes de um Certificado:
Da mesma forma que um individuo tem sua Chave Pública Certificada por uma AC, uma AC também deve ter sua Chave Pública assinada por uma outra AC de nível superior a dela até chegar ao topo ocupada pela Autoridade Certificadora Raiz, a isso se dá o nome de Caminho de Certificação ou Cadeia de Certificação.
Exemplo de um Caminho da Certificação:
As AC´s são dividas e níveis similares a um sistema em árvore conforme a figura abaixo:
No topo da árvore fica a AC Raiz, cabe a ela emitir, expedir, distribuir, revogar e gerenciar os certificados das AC´s de 1º Nível, ela também é responsável por fiscalizar e auditar as AC´s imediatamente subsequentes a ela.
No Brasil a Autoridade Certificadora Raiz é conhecida por ICP-Brasil (Infraestrutura de Chaves Públicas Brasileira), que é mantida pelo ITI (Instituto Nacional de Tecnologia da Informação), órgão diretamente ligada a Presidência da República.
A ICP-Brasil possui um par de Chaves RSA de 2048 bits e a sua Chave Pública é auto-assinada pelo Par Privado, gerando assim o Certificado Digital com validade até 2021.
Logo abaixo da AC Raiz se encontram as AC´s de 1º Nível, cada uma delas com seu referente par de chaves e certificado digital expedido pela AC Raiz.
Uma AC de 1º Nível pode ter zero ou diversas AC´s de 2º Nível subsequente a ela, cada AC de 2º Nível possui o referente par de chaves e certificado digital expedido pela AC de 1º Nível a qual pertence.
Uma AC de 2º Nível pode ter zero ou diversas AR´s (Autoridade Registradora), diferente de uma AC a AR não possui um Par de Chaves Criptográficos nem um Certificado Digital, ela é responsável por emitir Certificados Digitais seguindo as politicas e recursos tecnológicos providos pela AC a qual pertence, também possuem a responsabilidade de validar o indivíduo requerente do Certificado através dos documentos legais (RG, CPF, Comprovante de Residência, etc) e até características biométricas (Impressão Digital, Escaneamento de Retina, etc ).
Protegendo a Chave Privada
"Software Cannot Protect Software" (Software não pode proteger Software).
Não existe uma frase que melhor expresse as necessidades de se proteger uma Chave Privada pois a mesma se trata de algumas centena de bytes e é consequentemente Software.
Cabe ao ITI (Institudo Nacional de Tecnologia da Informação), definir todas as normas e obrigações que a AC Raiz, AC´s e AR´s devem obedecer para que o PKI Brasileiro funcione.
O Par de Chaves de uma AC é obrigatoriamente gerada em um HSM (Hardware Security Module), sem contato humano e a chave Privada nunca é exposta todas as operações de criptografia são realizadas pelo HSM apenas apresentando os dados a ser cifrado/decifrado.
O Dispositivo possui diversos sensores em hardware e software, que ao menor sinal de tentativa de violação o par de chaves é destruído.
Muitas das funções do HSM (nem todas), trabalham fora de um padrão ou norma evitando assim tentativas de ataques aos padrões conhecidos.
Aparência de um HSM |
Uma AC deve ser dividida em níveis de acesso pessoal, para cada nível a segurança é aumentada e restrita, por exemplo a partir de certo nível é proibido um indivíduo transitar sozinho.
Smart Cards e Tokens o "HSM" Popular
Obviamente nem eu nem você possui recursos para se ter um HSM pessoal, aqui entra os Smart Cards e os Tokens que praticamente realiza as mesmas funções de um HSM e são soluções de bolso.
Uma boa fatia do mercado de certificação digital pertencem aos Java Cards graças a interoperabilidade que eles provêm, pois uma vez desenvolvido a Applet PKI ela é compatível com uma grande variedade de cartões.
Existem também os Smart Cards puramente PKI desenvolvido unicamente para esse segmento de mercado e os Tokens criptográficos.
Token / Cartão |
A Chave Pública deve ser assinada pela AC e o Certificado Digital produzido deve ser armazenada pelo dispositivo.
A operação de assinatura digital é realizada internamente pelo dispositivo seguindo algumas normas PKCS (Public-Key Cryptography Standards).
Clonar um desses dispositivos é tão custoso que não vale a pena de ser feito e uma vez roubado o Certificado Digital pode ser revogado pelo titular.
A Public Key Cryptography Standards (PKCS)
Para quem almeja trabalhar ou já trabalha como Certificação Digital, certamente irá ou já se deparou com a sopa de letrinhas do PKCS#X.
O PKCS são várias especificações desenvolvidas pela RSA Laboratories (sim eles de novo), em conjunto com diversos desenvolvedores de sistemas de segurança, visando padronizar a utilização e desenvolvimento de algoritmos com Chaves Públicas para garantir a troca segura de informações entre sistemas não padronizados de maneira acelerada.
O PKCS está divido em diversos # (Números) sendo que cada # define um padrão, atualmente (2011) 15 padrões estão definidos, não entrarei em detalhes de todos eles e farei um breve comentário sobre os mais importantes dentro do escopo desse artigo.
O PKCS#1 - RSA Cryptography Standard - Define os padrões acerca do algoritmo de criptografia RSA como propriedades matemáticas, codificação de Chaves, esquemas de codificação de dados antes/depois de uma operação criptográfica e produção/verificação de assinaturas.
O PKCS#7 - Cryptographic Message Syntax Standard - Define os padrões de como se "envelopar" dados/mensagem cifrados ou não, basicamente esse padrão trata de como os dados são dispostos dentro de um arquivo, imaginem um envelope de carta contendo dentro dele uma carta assinada e com firma reconhecida em cartório, o PKCS#7 é a versão digital disso tudo.
O PKCS#10 - Certification Request Standard - Define os padrões de como uma requisição de Certificado Digital deve ser composta antes ser enviada a uma Autoridade Certificadora.
Imaginem um Applet Java Card PKI, esse applet gera internamente um Par de Chaves RSA, para requisitar-mos um Certificado Digital à AC primeiro precisamos auto-assinar a Chave Pública utilizando o Par de Chave Privado, o pacote de dados produzidos por essa operação é codificada seguindo o padrão PKCS#10 e é enviado para AC, que assina a chave Publica e gera o Certificado Digital..
O PKCS#11 - Cryptographic Token Interface - Define uma API abstrata também conhecida como "Cryptoki", trata-se de arquivos texto mais precisamente cabeçalhos em Liguagem C (cryptoki.h, pkcs11.h, pkcs11f.h e pkcs11t.h), esses arquivos definem protótipos de funções a serem implementadas para dar suporte a um determinado Sistema Operacional, um tipo especifico de Token ou Smart Card PKI.
Suponha que você desenvolva um Applet PKI Java Card, você deve implementar uma biblioteca que prove acesso a esse seu applet (.dll em sistemas MS, .lib em sistemas *nix), escritas e compiladas em C/C++.
O PKCS#12 - Personal Information Exchange Syntax Standard - Define os padrões de como um ou mais Pares de Chaves e seus respectivos Certificados Digitais são armazenados em um arquivo criptografado (algoritimo simetrico) e protegido por uma senha.
Um arquivo PKCS#12 pode ou não conter chaves privadas, vários aplicativos são compatíveis com arquivos PKCS#12 como o Internet Explorer, Mozilla Firefox, Java Keystore, etc.
Esse arquivo serve para realizar Backups de Pares de Chaves e Certificados para transporte, quando um certificado digital é requerido a uma AC a mesma retorna um arquivo PKCS#12 contendo o Certificado Digital e a Cadeia de Certificação.
O PKCS#15 - Cryptographic Token Information Format Standard - Define os padrões de como implementar a aplicação PKI em Tokens e Smart Cards.
Basicamente é o padrão a ser seguido quando se for desenvolver um Applet Java Card PKI.
Cryptographic Application Programming Interface (CAPI)
Também conhecida como CryptoAPI, Microsoft Cryptography API ou MS-CAPI é uma Interface Criptografica que os produtos Microsoft como o Internet Explorer, Outlook, Office, Windows Live, etc, utilizam para realizar operações criptográficas como cifragem, decifragem, assinaturas e verificações.
Outros aplicativos podem utilizar a MS-CAPI, um exemplo é o Adobe Acrobat Reader que acessa o Key Store do Windows para assinatura de pdf´s.
Basicamente para um Token ou Smart Card de certificação digital funcionar com produtos Microsoft é necessário implementar as funções contidas na interface da MS-CAPI, trata-se de uma biblioteca dinâmica (DLL), que irá se linkar com a DLL PKCS#11 do Token / Smart.
Esse link é definido através de uma entrada no registro do Windows que linka a implementação da DLL MS-CAPI com o Token / Smart Card, e um Certificado Digital do Key Store do Windows linkado com a DLL MS-CAPI.
Como podem ver na figura acima, existem duas maneiras de se utilizar Certificação Digital em ambientes MS, uma é utilizar a MS-CAPI e acessar certificados digitais a partir do Key Store do Windows e outra é acessar diretamente o serviço através do PKCS#11 como o Firefox e a API JCE IAIK fazem.
O Card / Token Manager
Trata-se do aplicativo responsável pelo gerenciamento de todas essas especificações citadas acima como instalação de applets no cartão, disparo de geração de chaves, requisição de certificados, instalação de certificados no cartão e no Key Store do Sistema Operacional, assinatura e verificação, etc.
Um dos aplicativos mais usados e completo é o "SafeSign Identity Client (link)" inclusive um dos mais adotados pelas AC´s brasileiras que pode ser obtido gratuitamente via download. Outra Solução é a da "Charismathics (link)".
PIN e PUK
O PIN (Personal Identification Number) é a senha que identifica o dono do Cartão/Token e é requerida antes de uma operação criptográfica ser realizada como geração de chaves, assinatura e cifragem.O PUK (Personal Unblock Key) é a senha utilizada para desbloqueio do PIN em caso de bloqueio por tentativas de entradas incorretas.
O Caminho das Pedras
Existem dois caminhos bem distintos a serem percorridos pelos profissionais que almejam trabalhar com Certificação Digital.
O Primeiro Caminho e mais complexo é desenvolver tudo do Zero nesse caso:
O Caminho das Pedras
Existem dois caminhos bem distintos a serem percorridos pelos profissionais que almejam trabalhar com Certificação Digital.
O Primeiro Caminho e mais complexo é desenvolver tudo do Zero nesse caso:
- Desenvolver uma Aplicação PKCS#15 para Smart Cards (Ex. Applet Java Card), ou utilizar um Smart Card / Token com PKCS#15 nativo (Ex. Cartão StarCos da GD Burti, token HASP).
- Desenvolver uma biblioteca de link dinâmico que implemente a especificação PKCS#11 (Ex. DLL para MS-Win).
- Para Ambientes Microsoft, desenvolver uma biblioteca de link dinâmico que implemente a especificação CryptoAPI e que implicitamente se link com a biblioteca PKCS#11. Essa DLL (CryptoAPI), deve ser Assinada Digitalmente pela Microsoft para que ela possa ser devidamente utilizada em ambientes Windows.
- Desenvolver um Card Manager com a função de Iniciar o Cartão (instalar o aplicativo se necessário, definir PIN e PUK, etc). Prover suporte aos padrões PKCS#1,7,10,11 e 12. Prover suporte ao Padrão MS-CAPI (se usada em ambientes Microsoft).
- Desenvolver uma aplicação que utilize a certificação digital como um assinador de Nota Fiscal (NFe), documentos, etc. Utilizando a biblioteca PKCS#11 ou MS-CAPI em ambientes Windows.
Nesse caso você utilizará SDK´s (Software Development Kit), providas por elas como Applet PCKS#15, Biblioteca PKCS#11, Biblioteca MS-CAPI, etc. E obviamente estará sujeito a pagamento das devidas licenças de uso e distribuição.
1ª Curiosidade : Conheço uma empresa Brasileira que roubou os códigos fontes do Card Manager da Charismatics e não contente com isso ainda utiliza implementações Open-Source do PKCS#11 e 15. Essa empresa já ganhou pelo menos duas licitações uma para o Governo Paulista e uma para a área Militar, e se apresenta anualmente no Evento Cards em SP e tem parceria com uma grande fabricante de cartões brasileira. Sim a Pirataria existe até no mundo da Certificação Digital Acreditem. =^D
2ª Curiosidade : Eu primeiro implementei um Card Manager usando Java IAIK-JCE sobre o SafeSign e depois com mais coragem e experiência implementei tudo do Zero. ;^)
Amparos Legais
Medida Provisória 2.200-2, institui o Comitê Gestor da ICP-Brasil e apartir dessa MP diversos decretos, resoluções, instruções normativas, portarias e burocracias foram instituídas.
Uma das mais interessantes é que a Certificação Digital garante a autenticidade eintegridade de um documento, logo é uma prova de não repúdio ou irretratabilidade(você não pode negar que foi você que o fez), em poucas palavras um documento assinado digitalmente tem o mesmo valor legal de um documento assinado pelo seu próprio punho.
O que vem por ai
No mundo da Certificação Digital já se estuda a mudança do algoritmo de Criptografia RSA pelo ECC (Elliptic Curve Cryptography), pois possue o mesmo nível de segurança do RSA e é baseado em polinômios de adição, enquanto o RSA é baseado em módulo. Com isso o ECC é um algorítmo mais eficiente que o RSA.
Outra grande vantagem é que as Chaves ECC são menores que a do RSA, por exemplo uma Chave Pública ECC de 512 bits equivale a uma Chave Pública RSA de 15360 bits.
O Algoritmo de Resumo também será substituido talvez pelo SHA-512 ou quem sabe até por um outro modelo que seja desenvolvido posteriormente.
Considerações Finais
Isso foi um resumo rápido sobre Certificação Digital, obviamente a coisa é bem mais complicada que isso, porém um campo muito pouco explorado e compreendido, prova disso é que certa vez no evento CertiForum em SP assisti a uma palestra do então responsável pela área de TI da Petrobrás o qual implementou todos os processos relacionados a Certificação Digital, desde a Autoridade Certificadora Petrobrás até o Smart Card / Token do usuário. E após anos de trabalho e muito dinheiro investido apresentou o Smart Card / Token para a alta cúpula da Empresa o qual lançou a questão "Afinal pra que serve isso?" uma simples pergunta que nem ele (o responsável por tudo) e nem a alta cúpula sabiam responder na época. Sim Petrobás. ;^)
Hoje alguns Fóruns Judiciais assinam e armazenam digitalmente processos, advogados assinam documentos com seus Smart Cards com o Selo OAB, contratos imobiliários são fechados com assinatura digital, malotes bancários são assinados e enviados eletronicamente para as agencias, notas fiscais e declaração de Imposto de Renda são assinadas digitalmente, logins em sistemas operacionais como MS-Windows e *nix, etc, etc, etc.
Os campos a serem explorado, acesso seguro à agencias bancárias via internet, receitas e prontuários médicos podem ser assinado digitalmente, empresas podem internamente assinar documentos de texto ou pdf´s em cascata, faculdades e estudantes podem assinar avaliações ou garantir a presença do aluno em sala de aula, consultas on-line podem ser garantidas apenas as pessoas que possuem o certificado digital, enfim imagine que tudo que um individuo assina de próprio pulso ou exija uma confirmação pessoal pode ser substituido pela Certificação Digital gerando uma enorme economia com gasto de papeis e tinta para canetas e impressões.
Porém nem tudo são flores, o sistema possui falhas sim, que podem ser exploradas, embora seja virtualmente impossivel se clonar um Smart Card de Certificação é possivel de se roubar o cartão e o número PIN e assinar documentos, ou mesmo através de software mal intencionado roubar o PIN e mesmo fazer o cartão assinar documentos sem o conhecimento do seu dono. É como eu disse no inicio do artigo com tempo, esforço e dinheiro qualquer solução pode ser comprometida, infelizmente qualquer solução de segurança possui "algumas" pontas soltas.
E acreditem já tive o privilégio de ver tais pontas soltas em um mega ERP como o daquela empresa em que a Marília Gabriela faz comercial, pontas que expõe o punho do dono da empresa à assinaturas não autorizadas. ;^D
2ª Curiosidade : Eu primeiro implementei um Card Manager usando Java IAIK-JCE sobre o SafeSign e depois com mais coragem e experiência implementei tudo do Zero. ;^)
Amparos Legais
Medida Provisória 2.200-2, institui o Comitê Gestor da ICP-Brasil e apartir dessa MP diversos decretos, resoluções, instruções normativas, portarias e burocracias foram instituídas.
Uma das mais interessantes é que a Certificação Digital garante a autenticidade eintegridade de um documento, logo é uma prova de não repúdio ou irretratabilidade(você não pode negar que foi você que o fez), em poucas palavras um documento assinado digitalmente tem o mesmo valor legal de um documento assinado pelo seu próprio punho.
O que vem por ai
No mundo da Certificação Digital já se estuda a mudança do algoritmo de Criptografia RSA pelo ECC (Elliptic Curve Cryptography), pois possue o mesmo nível de segurança do RSA e é baseado em polinômios de adição, enquanto o RSA é baseado em módulo. Com isso o ECC é um algorítmo mais eficiente que o RSA.
Outra grande vantagem é que as Chaves ECC são menores que a do RSA, por exemplo uma Chave Pública ECC de 512 bits equivale a uma Chave Pública RSA de 15360 bits.
O Algoritmo de Resumo também será substituido talvez pelo SHA-512 ou quem sabe até por um outro modelo que seja desenvolvido posteriormente.
Considerações Finais
Isso foi um resumo rápido sobre Certificação Digital, obviamente a coisa é bem mais complicada que isso, porém um campo muito pouco explorado e compreendido, prova disso é que certa vez no evento CertiForum em SP assisti a uma palestra do então responsável pela área de TI da Petrobrás o qual implementou todos os processos relacionados a Certificação Digital, desde a Autoridade Certificadora Petrobrás até o Smart Card / Token do usuário. E após anos de trabalho e muito dinheiro investido apresentou o Smart Card / Token para a alta cúpula da Empresa o qual lançou a questão "Afinal pra que serve isso?" uma simples pergunta que nem ele (o responsável por tudo) e nem a alta cúpula sabiam responder na época. Sim Petrobás. ;^)
Hoje alguns Fóruns Judiciais assinam e armazenam digitalmente processos, advogados assinam documentos com seus Smart Cards com o Selo OAB, contratos imobiliários são fechados com assinatura digital, malotes bancários são assinados e enviados eletronicamente para as agencias, notas fiscais e declaração de Imposto de Renda são assinadas digitalmente, logins em sistemas operacionais como MS-Windows e *nix, etc, etc, etc.
Os campos a serem explorado, acesso seguro à agencias bancárias via internet, receitas e prontuários médicos podem ser assinado digitalmente, empresas podem internamente assinar documentos de texto ou pdf´s em cascata, faculdades e estudantes podem assinar avaliações ou garantir a presença do aluno em sala de aula, consultas on-line podem ser garantidas apenas as pessoas que possuem o certificado digital, enfim imagine que tudo que um individuo assina de próprio pulso ou exija uma confirmação pessoal pode ser substituido pela Certificação Digital gerando uma enorme economia com gasto de papeis e tinta para canetas e impressões.
Porém nem tudo são flores, o sistema possui falhas sim, que podem ser exploradas, embora seja virtualmente impossivel se clonar um Smart Card de Certificação é possivel de se roubar o cartão e o número PIN e assinar documentos, ou mesmo através de software mal intencionado roubar o PIN e mesmo fazer o cartão assinar documentos sem o conhecimento do seu dono. É como eu disse no inicio do artigo com tempo, esforço e dinheiro qualquer solução pode ser comprometida, infelizmente qualquer solução de segurança possui "algumas" pontas soltas.
E acreditem já tive o privilégio de ver tais pontas soltas em um mega ERP como o daquela empresa em que a Marília Gabriela faz comercial, pontas que expõe o punho do dono da empresa à assinaturas não autorizadas. ;^D
0 comments:
Post a Comment