O blog da AWS

Assinatura de Notas Fiscais Eletrônicas com o AWS CloudHSM

Nos últimos anos, o Brasil passou a receber grandes investimentos internos e externos no setor de tecnologia, mais particularmente em computação em nuvem. Uma parte significativa destes investimentos encontrou nos serviços financeiros um nicho atrativo para inovação, causando uma grande expansão nos players deste mercado, especialmente nos segmentos bancários e de meios de pagamento. Por conta desta enxurrada de novas empresas digitais, instituições mais tradicionais passaram a buscar maior agilidade nas suas operações, para competir e continuar atraindo a atenção dos consumidores.

Na AWS segurança é prioridade máxima. O segmento financeiro também tem na segurança o seu principal pilar. A grande questão para muitas empresas ao pensarem em migrar para a nuvem é: “consigo manter o meu padrão atual de segurança?”

Em 2019, a AWS tornou disponível na região do Brasil o serviço de hardware de armazenamento de chaves e criptografia, chamado AWS CloudHSM. Esta é uma versão em nuvem de um Hardware Secure Module (HSM), dispositivo utilizado por uma grande quantidade de empresas para manter os mais altos níveis de segurança para as suas chaves de criptografia, com o auxílio de várias camadas de proteção lógica e física.

Em outras palavras, esta classe de equipamentos pode ajudar a armazenar, controlar e proteger a identidade digital de uma empresa, através de seus certificados digitais e chaves de criptografia. O AWS CloudHSM oferece um nível avançado de proteção e controle, fazendo o armazenamento de chaves em um equipamento dedicado ao cliente, possuindo certificação FIPS 140-2 nível 3, além de contar com características de elasticidade, automatização e interoperabilidade com outros serviços da AWS, mantendo as expectativas de um serviço em nuvem.

O CloudHSM pode ser usado em uma grande quantidade de casos de uso que requerem o emprego de chaves criptográficas, sejam estas simétricas ou assimétricas. Por exemplo, a chave que protege uma wallet de um banco de dados Oracle ou a chave que faz a criptografia de dados enviados pela internet (pública-privada) podem ser gerenciadas pelo CloudHSM. Além disso, arquiteturas mais modernas, como as chaves privadas de carteiras Ethereum, podem permanecer no CloudHSM para serem usadas durante a assinatura de uma transação enviada de uma carteira para outra.

Aproveitando o momento em que temos uma demanda por assinatura digital de documentos por empresas do setor de meios de pagamento e, celebrando a chegada do AWS CloudHSM à região Brasil, criamos um microsserviço que visa demonstrar as capacidades do CloudHSM no processo de assinatura de documentos XML, como por exemplo as Notas Fiscais Eletrônicas (NF-e).

A criação deste microsserviço tem o objetivo de demonstrar a agilidade no modelo operacional de computação em nuvem na AWS. Por este motivo, optamos pelo uso do serviço gerenciado de containers da AWS, o Amazon Elastic Container Service (ECS), em conjunto com o serviço de computação para containers, o AWS Fargate. O Fargate também chegou recentemente à região Brasil e, no quesito operacional, traz uma proposta única no mercado: é um serviço de computação para containers “serverless”, onde o cliente não precisa administrar servidores.

Desta forma, tentamos demonstrar como alavancar a agilidade no uso da nuvem, utilizando da nossa gama de serviços e implementando um microsserviço de assinatura de notas fiscais eletrônicas que usa uma infraestrutura mínima em termos de recursos utilizados e sobrecarga operacional.

O microsserviço desenvolvido (xmlsigner) foi escrito em Java, utilizando a máquina virtual Java (JVM) Amazon Corretto, tecnologia multiplataforma baseada no Open Java Development Kit (OpenJDK), sem custo e uma excelente opção ao JDK Oracle, agora licenciado. A AWS mantém o Corretto com suporte de longo prazo, provendo atualizações trimestrais de desempenho e correções de segurança críticas para o uso no desenvolvimento de aplicações corporativas.

O módulo de criptografia utilizado é o Amazon Corretto Crypto Provider (ACCP), que torna o processo de executar operações criptográficas até 20x mais eficiente quando comparado ao JDK Oracle.

O microsserviço expõe, por meio de APIs, a possibilidade de listar e criar chaves e certificados digitais e assinar e validar documentos XML. Ele utiliza o AWS CloudHSM para armazenar as chaves de criptografia.

Para implementar o serviço, basta executar 3 scripts CloudFormation e, adicionalmente, três simples passos manuais. Em aproximadamente 40 minutos, a seguinte arquitetura será implantada em sua conta da AWS:

Na arquitetura acima, o serviço CloudHSM utiliza apenas uma zona de disponibilidade, não provendo um nível de disponibilidade recomendado para aplicações em ambiente de produção. Embora o AWS CloudHSM permita o funcionamento em configuração Multi-AZ (redundante), o microsserviço foi desenvolvido para fins de demonstração e experimentação das tecnologias envolvidas (CloudHSM e Containers). Além disso, optamos por retirar a redundância para otimizarmos custos.

Caso seja do interesse ter a implementação do serviço de assinatura de NF-e operando com os CloudHSM de forma redundante (Multi-AZ) basta entrar em contato com um Arquiteto de Soluções da AWS.

A instalação da solução, é feita em 3 etapas:

  1. Criação da rede e cluster de CloudHSM;
  2. Criação de uma esteira de integração contínua com o AWS Codebuild que fará: a inicialização do cluster do CloudHSM (com apenas uma instância); compilação da aplicação Java; criação de uma imagem de Container contendo a aplicação e o software necessário à sua operação, e publicação desta imagem em um repositório do Amazon ECR;
  3. Implementação do serviço em um container no Amazon Elastic Container Service (ECS) usando AWS Fargate.

Outros três serviços da AWS foram utilizados no processo de integração e operação da aplicação:

  • AWS Systems Manager Parameter Store para armazenamento de parâmetros de configuração dos containers;
  • AWS Secrets Manager para armazenamento seguro de credenciais de acesso ao CloudHSM;
  • Amazon S3 para armazenamento de objetos “KeyStore”, contendo certificados digitais e metadados de chaves utilizadas pelo microsserviço.

Uma vez terminada a criação do microsserviço, basta acessar sua API para interagir com a solução funcionando. Por meio de URLs, é possível gerenciar chaves criptográficas, assinar e validar um documento assinado.

O microsserviço xmlsigner foi testado usando-se notas fiscais eletrônicas (NF-e) reais, permitindo assinar um documento de 6KB (NF-e) em cerca de 30ms ou menos (dependendo da quantidade de recursos computacionais do container).

Convido você a testar o AWS CloudHSM, agora no Brasil, começando por aqui.


Sobre os Autores

Luiz Henrique Decaro é arquiteto de soluções com foco em clientes do setor financeiro e mestre em Engenharia de Software com experiência de 18 anos em desenvolvimento e arquitetura de sistemas de missão crítica na área de TI.

 

 

 

 

Daniel Garcia é arquiteto de soluções especialista em segurança com experiência de mais de 20 anos em tecnologia e segurança da informação. Daniel trabalha continuamente para ajudar companhias de vários segmentos e abrangências geográficas a definir, planejar e implementar com sucesso suas estratégias de cibersegurança.