• Nenhum resultado encontrado

Treinamento CryptoAuthentication Fevereiro de 2016

N/A
N/A
Protected

Academic year: 2021

Share "Treinamento CryptoAuthentication Fevereiro de 2016"

Copied!
29
0
0

Texto

(1)

RODRIGO 1

Treinamento CryptoAuthentication – Fevereiro de 2016

Pré-requisitos

 Hardware

o AT88CK590 Evaluation Kit  Software

o ACES – Atmel Crypto Evaluation Studio 5.0.0.26357 o Bloco de Notas

 Estimativa o 1 horas

Resumo

Este treinamento tem o objetivo de fornecer ao participante as noções básicas de criptografia assim como entender o funcionamento do CryptoAuthentication ATECC508A e como ele pode ajudar nos

desenvolvimentos de aplicações que necessitam deste tipo de solução. Este treinamento irá utilizar o software ACES como interface configuração inicial do slot_config e para que o ATECC508A possa criar chaves, assinar e verificar documentos e fazer troca de chaves de modo seguro utilizando a criptografia assimétrica baseada em curvas elípticas. Uma das criptografias que o FIPS-NIST recomenda para uso. Outra funcionalidade implementada neste treinamento é a geração de um HASH utilizando o mecanismo SHA-256. Os seguintes tópicos serão abordados:

 Familiarização com o ambiente ACES  Entendimento do protocolo de comunicação  Identificação do estado do chip (travado ou aberto)  Configuração do ATECC508A

 Geração de número randômico.  Geração de pares de chave  Regelação de chave pública  Assinatura digital de um texto  Verificação da Assinatura digital  Troca de chaves utilizando ECDH

(2)

RODRIGO 2

O Atmel AT88CK590-EK é um kit de avaliação que se conectar diretamente à interface USB de um computador. Este kit de desenvolvimento possui três itens diferentes da família CryptoAuthentication. ATSHA204A, ATECC508A e ATAES132A, além de um microcontrolador que faz a ponte de comunicação USB-I2C necessária para comunicação com o chip criptográfico. Como cada item na placa possui endereços diferente, todos os itens estão no mesmo barramento. Inicialmente, os itens vêm sem o travamento das config_zone e data_zone. Uma vez programado, não é mais possível fazer a alteração das zonas.

ATSHA204A

O ATSHA204A é uma solução completa para sistemas de segurança, incluindo 4,5Kbits de EEPROM dividido em 16 slots configuráveis individualmente. Estes slots podem ser configurados como armazenadores de chaves, modo leitura e escrita, somente leitura, password ou dado secreto. É possível também configurar os slots como consumível. Estas configurações são feitas no processo de personalização do chip. Uma vez personalizado, não é possível alterar as configurações.

A comunicação é feita uma comunicação I2C padrão com velocidade de até 1Mbits por segundo. Este chip também suporta a comunicação via um fio, assim economizando IO do microcontrolador principal. Esta comunicação é compatível com a comunicação UART. O sistema é alimentado por um grande gradação de tensão e o consumo de modo sleep é de menos de 100nA.

(3)

RODRIGO 3

ATECC508A

O ATECC508A oferece a solução completa para o ECDSA (Elliptic Curve Digital Signature Algorithm) usando a curva P256 recomendada pela NIST.

A comunicação é feita uma comunicação I2C padrão com velocidade de até 1Mbits por segundo. Este chip também suporta a comunicação via um fio, assim economizando IO do microcontrolador principal. Esta comunicação é compatível com a comunicação UART.

O ATECC508A é capaz de gerar números randômicos de alta qualidade exigido pela FIPS para ser aplicado em sistemas de criptografia.

ATAES132A

O ATAES132 oferece o algoritmo de criptografia AES-CCM, provendo uma solução completa de criptografia AES capaz de armazenar chaves e prover os mecanismos para a encriptação de dados. É possível também implementar a autenticação e a mutua autenticação com este item.

As comunicações do ATECC132A são I2C padrão com velocidade de até 1Mbits por segundo e também comunicação SPI.

O ATAES132A é capaz de gerar números randômicos de alta qualidade exigido pela FIPS para ser aplicado em sistemas de criptografia assim como Gerador determinístico de bits randômicos (DRBG) que previne ataques por repetição.

Cada item sai de fábrica com um número serial único de 64 bits.

Endereço de comunicação I2C

Cada item vem com um valor pré-configurado de endereço I2C. Este endereço pode ser alterado durante a personalização do chip enquanto o config_zone não estiver travado.

Os endereços padrões do CryptoAuthentication são:  ATSHA204A – 0xC8

 ATECC508A – 0xC0  ATAES132A – 0xA0

(4)

RODRIGO 4

processo de desenvolvimento em diversas aplicações.

O ACES também tem a capacidade de fazer a customização do CryptoAuthentication em escala de produção, utilizando a ferramenta AT88CK9000.

(5)

RODRIGO 5

Exercício 1: Explorando o ACES

Resumo

Neste exercício iremos explorar as funcionalidades e janela do ACES. Além disso será apresentado o protocolo de comunicação do CryptoAutentication e como montar os comandos.

Para o desenvolvimento será necessário:  AT88CK590-EK

 Atmel ACES

Instalação do ACES

Faça o download do ACES através do site:

http://www.atmel.com/pt/br/tools/ATMELCRYPTOEVALUATIONSTUDIO_ACES.aspx

OBS: A ferramenta é gratuita. Para fazer o download do site, é necessário apenas preencher um cadastro. Uma vez instalado, execute o ACES.

O ACES é capaz de reconhecer se existe algum kit de desenvolvimento compativel com ele conectado a alguma USB do computador. Caso ainda não tenha contectado, a seguinte mensagem aparecerá:

Conecte o kit AT88CK590-EK em qualquer USB do computador. O ambiente consegue identificar o kit conectado assim como os itens que estão conectados a esse kit.

Selecione o AT88CK590 – ECC508 0.1.0 I2C C0 e clique em “Select Device”

(6)

RODRIGO 6 Device Navegator: Janela onde é possível navegar entre os diferentes slots, “configuration zone” e “OTP

Zone”. Uma vez que um slot é selecionado, as informações referente ao slot aparece na Area de Trabalho e no “Zone Configuration”.

(7)

RODRIGO 7 Area de Trabalho: Janela central do ACES onde aparece de forma grafica os dados contido em cada slot ou

zona. A navegação dos diferentes slots e zone é feito pelo “Device Navegation”. Além de ver presentar os dados, a area de trabalho disponibiliza ferramentas de configuração dos slots e do device.

Note que quando não é possível ser determinado o valor dos slots, as dados aparecem como 0xFF e em vermelho. Esta estado aparece quando a configuração da zone do slot está como leitura proibida ou com criptografia.

Zone Configuration: Esta janela apresenta um resumo das configurações de cada zona ou slot. Esta janela é

apenas informativa. A navegação dos diferentes slots e zone é feito pelo “Device Navegation”. Para alterar os dados de configuração é possivel utilizar o botao “configure”.

(8)

RODRIGO 8 Communication Log: Esta janela mostra toda a comunição enviada e recebida para o CryptoAuthentication.

Além dos dados é apresentado também a descrição da ação, seja comando ou resposta. A montagem dos dados para envio ao CryptoAuthentication será descrito posteriormente.

Device State: Esta janela mostra as informações do estado do chip e do “Tempkey”

Lock State: Esta janela apresenta o estado dos bits de travamento. É possível ver os dois bits de configuração

(9)

RODRIGO 9 System Status: Esta janela apresenta as informações referente ao kit de desenvolvimento e o chip que está

sendo utilizado.

Protocolo de comunicação

Existem duas versões de cryptoauthentication que alteram somente no barramento de

comunicação, sendo possível ser “Single wire” baseado em comunicação UART ou I2C. O barramento de comunicação é uma característica do chip, assim não é possível alterar o barramento de comunicação. No caso da comunicação I2C, é possível fazer a troca do endereço, está configuração é permitido apenas enquanto o “Configuration Zone Locked” não estiver setado.

O Cryptoauthentication trabalha com comunicação resposta a todo dado enviado. Abaixo é possível ver o protocolo de comunicação para envio de comandos:

Count Packet Checksum

1 Byte 1Byte 1 Byte 2 Bytes 0 a 64 bytes 2 bytes

Tamanho da mensagem Comando Modo do comando Configuração Adicional

Dados CRC de todos os bytes anteriores

Assim, qualquer envio de comunicação para o CryptoAuthentication tem entre 7 a 71 bytes. Todos os dados são escritos em Hexadecimal. Nos slots que mais de 1 byte, o primeiro byte é o mais significativo.

(10)

RODRIGO 10

Abaixo é possível ver o protocolo de comunicação para envio de comandos:

Count Packet Checksum

1 Byte 1 a 64 Bytes 2 bytes

Tamanho da mensagem

(11)

RODRIGO 11

As respostas podem ser diretamente os dados de resposta ou mensagens do chip. As mensagens seguem o seguinte protocolo:

Envio de comando e recebimento de resposta

A ferramenta ACES possui várias formas de montar o comando a ser enviado para o CryptoAuthantication. A montagem do comando manualmente é bastante interessante para o entendimento de como montar o comando corretamente. Desta forma, no exercício abaixo, será demonstrado como montar o comando manualmente e depois como utilizar o “Command Builder”.

Abra a aba Tools e o ícone “send raw bytes”:

Nesta janela é possível escrever manualmente os dados que serão enviados ao CryptoAuthentication e também visualizar a resposta ao comando dado.

(12)

RODRIGO 12

Para este exemplo, iremos enviar o comando de leitura dos 4 primeiros números do número serial. Os 4primeiros número do número serial fica nos endereços de 0x00 a 0x03 na “Configuration Zone”.

As configurações do comando e a resposta “Read” podem ser encontradas na tabela abaixo extraída do datasheet completo.

Assim, podemos montar o comando para ler 4 bytes a partir do endereço 0x0000 da zona de configuração, desta forma, o Opcode é 0x02, Modo de comando é 0x00 para ler a “Configuration Zone” e o Param2, que neste caso é o endereço do dado que quer ser lido é 0x0000. O campo data não é usado neste caso.

O ACES também tem uma calculadora de CRC. Ela se encontra na aba “Tools” no ícone “Crypto Calculator”. Esta ferramenta é para auxiliar no desenvolvimento e todos os cálculos são feitos no PC.

(13)

RODRIGO 13

Assim, podemos calcular o valor do CRC do comando 07 02 00 00 00 – O resultado é 1E 2D E o comando completo é:

Count Packet Checksum

1 Byte 1Byte 1 Byte 2 Bytes 0 a 64 bytes 2 bytes

Tamanho da mensagem Comando Modo do comando Configuração Adicional

Dados CRC de todos os bytes anteriores

0x07 0x02 0x00 0x0000 - 0x1E2D

Resultado:

Count Packet Checksum

1 Byte 1 a 64 Bytes 2 bytes

Tamanho da mensagem

Resposta ou dados CRC de todos os bytes anteriores

0x07 0x01 0x23 0x66 0x2A 0x91 0xF7

É possível também fazer o comando de leitura através do “Command Builder” localizado na aba tools e obtendo o mesmo resultado

(14)

RODRIGO 14

Na janela Communication Log, é possível ver o histórico de comunicação com o CryptoAuthentation. Estes dados são os dados enviado pelo canal de comunicação.

Configuração dos Slots:

O ATECC508A vem com uma configuração padrão de zonas, slots e dados. É possível verificar estas configurações padrões no documento “Factory Default Test Data” - http://www.atmel.com/Images/Atmel-8953-CryptoAuth-ECC-Factory-Default-Test-Data-ApplicationNote.pdf

(15)

RODRIGO 15

Estas configurações podem ser alteradas conforme a necessidade de utilização do CryptoAuthentication.

No ambiente ACES, é possível escrever de duas formas. A primeira é escrevendo diretamente os dados de configuração no “SlotConfig” através da janela Configuration zone.

(16)

RODRIGO 16

A Janela de “Write Byte” aparece quando é dado um clique sobre o “SlotConfig” que quer ser alterado. É possível ver na tela de communication log que o comando write foi executado com sucesso.

A segunda forma é através do botão Configure na janela “Configuration Zone”. Note que esta configuração é feita a cada slot. Assim o slot a ser configurado é selecionado na janela “Device Navegation”.

(17)

RODRIGO 17

Neste treinamento iremos utilizar as configurações padrões do ATECC508A. Iremos utilizar os Slots 0, 1 e 2 que estão configurados como chaves privadas P256.

Para finalizar, é necessário fazer o travamento tanto do “Configuration Zone Locked” como do “Data Zone Loked”. Isto é feito através da janela Lock Zone.

Note que ambos os fuses estão configurados como False. Uma vez configurado como True, não existe como retornar.

Clique no botão “Lock Zone” e habilite o ícone “Lock Configuration Zone” para travar as configurações das Zonas.

Neste momento, com as zonas configuradas, é possível alterar os dados dos slots que não estão configurados como chaves abertamente, incluindo os dados na região “Only read” e OTP. No próximo passo, abra novamente a janela “Lock Zone” e desta vez habilite o ícone “Lock OTP and Data Zones”.

(18)

RODRIGO 18

(19)

RODRIGO 19

Cada chip terá uma resposta diferente já que a chave privada referente a esta chave pública foi gerada aleatoriamente. Este comando pode ser dado mais uma vez para gerar outro par de chaves.

Para gerar apenas a chave pública, mantendo a mesma chave privada, pode se usar o mesmo comando “GenKey” e o modo 0. Desta forma a resposta será a chave pública, mas sem alterar a chave privada. Note que todas as vezes que este comando for usado, a chave pública gerada será a mesma.

Repita este procedimento para gerar os pares de chaves nos slots 1 e 2.

Assinatura e verificação de assinatura:

O ACES tem uma janela específica para demonstrar a funcionalidade de assinatura e verificação de assinatura. O acesso da janela “Sign verify” é acessada pela aba “Tools”.

(20)

RODRIGO 20

No espaço “Message” é possível escrever a mensagem a ser assinada. É possível escrever tanto em texto como em dados hexadecimais. A mensagem que será enviada ao ECC508A aparece na “Message Bytes”.

(21)

RODRIGO 21

A assinatura digital da mensagem é apresentada no “Signature”, destacado em amarelo. Se a mensagem de erro abaixo aparecer, o dado que está dentro do slot selecionado não é uma chave, assim é necessário gerar uma nova chave conforme os passos vistos anteriormente.

Clique no botão “Generate” com a configuração de “Generate Public Key From Signing Key”, que irá utilizar o comando GenKey em modo 0 como visto anteriormente para obter a chave pública. Se a chave privada não estiver disponível para geração da chave, é possível incluir esta informação manualmente através do “Provide Public Key” e escrever a chave Pública no espaço “Public Key”.

(22)

RODRIGO 22

Após obter ou incluir a chave pública, clique o botão “Verify” para executar o comando de verificação de assinatura.

(23)

RODRIGO 23

Se tudo estiver correto, a palavra “Verified” em verde aparecerá. Altere um bit da chave pública ou da assinatura ou mensagem para ver que a mensagem irá mudar.

Dê uma olhada no communication log para verificar todos os comandos necessários para esta ação.

Calculo de HASH:

O ATECC508A é capaz de gerar o HASH de dados enviado externamente para o chip através do SHA. Este recurso pode ser utilizado para obter o HASH de um documento ou programa de qualquer tamanho. Os dados são enviados para o ECC508A em blocos fixos de 64 bytes utilizando o modo 1. Para enviar dados de 0

(24)

RODRIGO 24

2C 5A FD FE 13 78 A1 F9 4A 90 F4 16 21 2E F8 3E 6F BD DC 5C C0 CC 7C A4 FD 6F 95 E1 7C E5 F0 EF

Hash – SHA-256 esperado:

4D 05 CB B0 5C 74 1A 37 36 69 B0 7B BF 56 CC F9 56 59 27 FA 4A 6D 51 03 5A 80 2A BE 69 63 A4 E8 O Resultado do HASH esperado pode ser calculado utilizando o “CryptoCalculator” que se encontra da aba “Tools”.

Outro modo de verificar o Hash desta informação é utilizar uma calculadora de SHA-256 encontrada na internet:

(25)

RODRIGO 25

Para utilizar o ATECC508A é preciso separa a informação em blocos de 64 bytes. Neste caso, um bloco de 64 bytes e um bloco de 32 bytes. O Cálculo do HASH neste caso será feito em 3 etapas:

Etapa 1 – Inicialização – É necessário enviar o comando HASH em modo 0. É possível utilizar o “Command Builder para gerar este comando.

Etapa 2 – Envio dos blocos de 64 bytes – É enviar o comando HASH em modo 1 com o bloco de 64 bytes. Para isso iremos utilizar o “Send Raw Bytes”. Montado da seguinte forma (valores em HEX):

Count Packet Checksum

Count Opcode mode Length 64 bytes 2 bytes

47 47 01 00 00 FD CA 94 D1 2B 47 13 70 E8 10 E7 AA 42 57 56 93 7E 66 06 12 8E 33 12 08 4A 56 D2 20 84 AA C5 BF 7C 2E 3E AB 43 88 45 3E ED 4A 2F 9E F3 E8 45 D0 33 88 F7 AB 39 7A 6A 4A 5C AE 45 E2 7E 4E C5 1B

(26)

RODRIGO 26

O CRC da mensagem pode ser calculado utilizando o “CryptoCalculator”.

Etapa 3 – Envio do último bloco de dados de até 63 bytes. Este comando retorna o resultado do SHA-256– É enviar o comando HASH em modo 2 com o bloco de 32 bytes. Para isso iremos utilizar o “Send Raw Bytes”. Montado da seguinte forma (valores em HEX):

Count Packet Checksum

Count Opcode mode Length 64 bytes 2 bytes

28 47 02 20 00 2C 5A FD FE 13 78 A1 F9 4A 90 F4 16 21 2E F8 3E 6F BD DC 5C C0 CC 7C A4 FD 6F 95 E1 7C E5 F0 EF

D9 7B

Resposta em HEX:

Count Packet Checksum

1 Byte 1 a 64 Bytes 2 bytes

Tamanho da mensagem

SHA -256 CRC de todos os bytes anteriores 23 4D 05 CB B0 5C 74 1A 37 36 69 B0 7B BF 56 CC F9 56

59 27 FA 4A 6D 51 03 5A 80 2A BE 69 63 A4 E8

82 51

(27)

RODRIGO 27

OBS: Existe um problema já reportado no ACES que não é possível utilizar o Command Builder para enviar o comando SHA com mais de 7 bytes. Desta forma, as etapas 2 e 3 precisam ser feitas desta forma.

Se houver uma informação de 1025 bytes que necessita ser gerado o hash, será necessário enviar um comando SHA no modo 0 para inicializar o cálculo de HASH, 16 comandos de SHA no modo 1 com 64 bytes cada um e mais um comando SHA no modo 2 com 1 byte e retorno do SHA-256.

Calculo de ECDH:

O ATECC508A é capaz de gerar uma chave de comunicação utilizando o algoritmo ECDH de acordo com o NIST Special Publication 800-56A.

Basicamente, se dois dispositivos possuem pares que chave e querem abrir um canal de comunicação segura, é possível gerar uma chave de comunicação de 256 bits que os dois dispositivos possam compartilhar apenas com o envio da chave pública de cada um.

Para esta demonstração, iremos utilizar os pares de chaves que se encontram nos Slots 1 e 2 e estão configurados para gerar ECDH.

Gerar a chave de comunicação utilizando a chave privada que se encontra na slot 1 e a chave pública foi gerada a partir da chave privada do slot 2.

Para testar o procedimento citado basta ir em command builder e seguir os passos a seguir: 1- Gera-se a chave e armazena no slot 01

(28)

RODRIGO 28

(29)

RODRIGO 29

Referências

Documentos relacionados

O Museu Digital dos Ex-votos, projeto acadêmico que objetiva apresentar os ex- votos do Brasil, não terá, evidentemente, a mesma dinâmica da sala de milagres, mas em

nhece a pretensão de Aristóteles de que haja uma ligação direta entre o dictum de omni et nullo e a validade dos silogismos perfeitos, mas a julga improcedente. Um dos

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Tal será possível através do fornecimento de evidências de que a relação entre educação inclusiva e inclusão social é pertinente para a qualidade dos recursos de

Com o objetivo de compreender como se efetivou a participação das educadoras - Maria Zuíla e Silva Moraes; Minerva Diaz de Sá Barreto - na criação dos diversos

A prova do ENADE/2011, aplicada aos estudantes da Área de Tecnologia em Redes de Computadores, com duração total de 4 horas, apresentou questões discursivas e de múltipla

Se Lucas foi de carro, Eliana não foi de ônibus. Se Eliana não foi de ônibus, Antônio foi de moto. Se Antônio foi de moto, Rafaela não foi de táxi. Como Rafaela foi de táxi,

17 CORTE IDH. Caso Castañeda Gutman vs.. restrição ao lançamento de uma candidatura a cargo político pode demandar o enfrentamento de temas de ordem histórica, social e política