Criptografia em AdvPL – Parte 04

Introdução

Nos posts anteriores, abrimos a caixa de Pandora da criptografia, e os três primeiros posts vimos uma introdução ao assunto e tudo o que temos em matéria de HASH Criptográfico em AdvPL. Agora, vamos entrar no mundo das conexões seguras, chaves criptográficas e certificados digitais 😀

Posts anteriores

Glossário – Introdução de terminologias

Como são muitas terminologias novas, vou colocar aqui no começo algumas descrições breves sobre algumas palavrinhas novas que vamos ver muito daqui pra frente 😀

Chave criptográfica — Uma chave criptográfica é uma parte da informação que permite codificar (ou cifrar) um texto em algo incompreensível, que somente pode ser decodificado por quem também têm esta chave. A criptografia assimétrica baseia-se em pelo menos um par de chaves — a chave privada, que deve ser de acesso único da pessoa ou entidade proprietária da chave, e a chave pública, gerada a partir da chave privada usando um método que não torna possível descobrir uma através da outra.

Criptografia assimétrica — Mais conhecida por criptografia de chave pública e privada, oferece um método seguro de troca de mensagens entre as partes envolvidas na troca de mensagens e documentos criptografados ou assinados com um certificado digital. É necessário um par de chaves para codificar e decodificar uma informação.

Criptografia simétrica – Método criptográfico que utiliza apenas uma chave criptográfica para codificar e decodificar uma informação.

Certificado Digital — Trata-se de um arquivo eletrônico que serve como identidade virtual para uma pessoa física ou jurídica, e por ele pode se fazer transações online com garantia de autenticidade e com toda proteção das informações trocadas. Ela contém alguns dados de identificação, uma chave criptográfica púbica para identificá-lo em comunicações seguras e assinaturas digitais.

Assinatura Digital — Processo realizado sobre um documento, envolvendo HASH e criptografia assimétrica, para garantir que um documento não foi alterado ou adulterado após assinado, e garantindo em caráter irrevogável que a assinatura digital pertence ao emissor do documento, de forma autêntica e irretratável. De forma resumida, um HASH do documento é gerado e criptografado com a chave privada do emissor, e esse conteúdo passa a fazer parte daquele documento. A autenticidade do documento e validade da assinatura pode ser verificada por outra entidade que possua a chave pública do emissor, descriptografando o HASH que está no documento usando a chave pública do emissor, e recalculando o HASH do documento para ver se os valores são idênticos.

Conexão Segura (SSL e/ou TLS) — Trata-se de uma especificação de protocolo de conexão segura, criada para prover privacidade e integridade das informações trocadas entre as duas pontas da conexão. É uma especificação extensa e bem flexível, que internamente usa chaves criptográficas geradas dinamicamente, envolvendo pelo menos a autenticidade do certificado digital usado pelo servidor, mas também pode envolver a autenticação de ambas as partes através de uma troca de certificados e de chaves públicas entre as partes envolvidas.

OpenSSL — Trata-se de um projeto Open Source criado para prover ferramentas e bibliotecas de funções para criar e manipular certificados digitais, funções criptográficas e implementação de conexões seguras SSL/TLS para Clientes e Servidores. Vamos usá-la em breve, inclusive…

RSA – Nome do principal sistema / especificação de criptografia e assinatura digital, baseado em chave pública. Criado em 1978, é um dos mecanismos de criptografia mais usados no mundo, e considerado um dos mais seguros.

AES – Acrônimo de Advanced Encryption Standard, é o nome da especificação de um algoritmo de criptografia simétrico de dados eletrônicos estabelecida pelo Instituto Nacional de Padrões e Tecnologia (NIST) dos EUA em 2001. Ela substitui o DES — Data Encryption Standard — publicado em 1977

DES e 3DESData Encryption Standard e Triple Data Encryption Algorithm , respectivamente, são algoritmos de criptografia de 56 bits e 168 bits (***) de tamanho de chave, atualmente considerados inseguros devido ao tamanho curto das chaves empregadas, foram substituídos pelo AES.  

(***) Embora o 3DES tenha uma chave de 168 bits, ele é composto por três chaves de 56 bits, onde a primeira é igual a terceira, garantindo uma segurança efetiva de apenas 112 bits.

X.509 — Trata-se da especificação do formato de um certificado digital de chave pública. A especificação possui até o momento três versões, sendo que a versão 3 está em uso e atende a múltiplas necessidades com segurança a mais de 20 anos.

PKCS 12# — Formato de arquivo para armazenamento de múltiplos objetos criptográficos — chaves, certificados, etc — em um único arquivo. O Windows usa esta especificação em arquivos com extensão .PFX — Os certificados digitais X.509 podem ser gravados em arquivos com outros formatos e extensões, como por exemplo .pem , .cer , .per, .der , .p12, … O formato PEM é codificado em BASE64 e pode ser aberto para visualização em um editor de textos comum. Os formatos de arquivos são divididos em dois tipos : Container (pfx,pks12,pkcs7) e Encoding (pem,der,cert).

Só pelo número de termos e conceitos, percebe-se que o assunto é extenso … mas se abordarmos ele por partes — algumas partes, um monte de partes — veremos que todas se encaixam, e que o monstro não é tão feio assim 😀

Onde tudo isso é utilizado ?

Conexões seguras usando SSL/TLS são usadas em diversos protocolos, como HTTPS (Conexões WEB seguras — sites de e-commerce, bancos, etc), protocolos de acesso a e-mails por conexão segura (SMTP, POP3, IMAP). Assinaturas digitais são usadas em documentos como NFE (Nota Fiscal Eletrônica), e-mails com certificado pessoal, eCPF e eCNPJ para acesso e operações com as ferramentas e portais da Secretaria da Fazenda, o leque é muito grande.

Como isso é utilizado ?

Aí sim, a resposta é maior ainda. Existem tipos de certificados digitais para finalidades diferentes, entidades e órgãos certificados para a emissão de certificados, conjuntos de certificados auxiliares para validação e autenticação dos certificados emitidos, formas e padrões para a assinatura digital de vários tipos de documentos, conexões seguras com ou sem autenticação do cliente, com parâmetros e tipos de chaves diferenciados, cada utilização tem a sua receita de bolo que pode usar ou não boa parte desse embrolho 😛

Para não dar nó nem na minha cabeça e nem na de vocês, eu acho interessante começar com os testes práticos em pequenas aplicações, demonstrando os comportamentos apresentados pelos componentes envolvidos para cada caso de uso. Assim, fica mais fácil entender o que cada caso têm em comum, e como as funções do AdvPL e as configurações do TOTVS Application Server permitem usar tudo isso, além de descrever o que exatamente e como ele suporta cada recurso para cada caso .

O material de pesquisa na Internet é muito amplo e completo, ao longo dos posts dessa série eu me baseio em muito material, todos os posts são acompanhados dos links de referência de onde eu obtive as informações, utilize-os e não se limite as fontes que eu usei, pesquise outras fontes para obter mais detalhes 😀

Conclusão

Por hora eu acho que já tem bastante coisa pra digerir e assimilar, os termos usados aqui serão repetidos com frequência nos próximos posts, não se acanhe em ler esta página quantas vezes forem necessárias para fixar estas terminologias 😀

Espero que este conteúdo lhe seja útil, em caso de dúvidas ou sugestões, escreva um comentário, e novamente desejo a todos TERABYTES DE SUCESSO !!!

Referências

 

6 comentários sobre “Criptografia em AdvPL – Parte 04

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s