• Nenhum resultado encontrado

A.9 Algoritmos de checksum

2.7 Considerações Finais

TAG CARACTERÍSTICAS TIPO

0x01 Universal, Primitivo, Número 1 Booleano (BOOLEAN) 0x02 Universal, Primitivo, Número 2 Inteiro (INTEGER)

0x03 Universal, Primitivo, Número 3 Cadeia de Bits (BITSTRING) 0x04 Universal, Primitivo, Número 4 Cadeia de Bytes (OCTETSTRING) 0x30 Universal, Construído, Número 16 Sequência de Dados (SEQUENCE)

Tabela 2.4: Tipos de dados da notação ASN.1

O comprimento dos dados representa a quantidade de bytes presentes no campo valor. Ele pode ser codificado em um ou mais bytes, dependendo do tamanho dos dados. Na sua forma curta, com apenas um byte, o oitavo bit é sempre igual a 0 e os sete bits restantes guardam o tamanho, o qual pode variar de 0 a 127. Na sua forma longa, com vários bytes, o primeiro byte possui o oitavo bit sempre igual a 1 e os sete bits restantes guardam a quantidade de bytes subsequentes necessários para armazenar o tamanho. Por exemplo, um campo comprimento dado por 0x08 guarda um tamanho de 8 bytes, enquanto que um campo comprimento dado por 0x820100 guarda um tamanho de 256 bytes.

Para exemplificar a codificação de um determinado dado representado com ASN.1, pode- se usar a constante pkcs15-ub-reference definida previamente. Ela é um inteiro de valor 255 (0xFF em hexadecimal e 11111111 em binário). Como os inteiros em ASN.1 possuem sinal (representação em complemento de dois), são necessários dois bytes para representar o valor 255 (um único byte de valor 11111111 representaria o inteiro -1). Sua tag é a que está definida na Tabela 2.4 para inteiros e o tamanho é igual a 2. Portanto, a representação de acordo com as BER é dada por 0x020200FF.

Uma ferramenta muito utilizada durante o desenvolvimento deste trabalho para verifica- ção de dados codificados dessa forma foi a asn1js (LUCHINI, 2017). Este software recebe como entrada os dados codificados em formato hexadecimal, processa-os e retorna a representação em ASN.1.

2.7 Considerações Finais

Cada aspecto do desenvolvimento do sistema proposto neste trabalho é especificado em padrões desenvolvidos e adotados pela indústria e pela academia. Assegurar a conformidade com tais padrões significa garantir a interoperabilidade do sistema com outros sistemas e projetos que também estejam de acordo com os mesmos documentos. Outra questão particularmente importante quando se trata de segurança é a necessidade de se utilizar métodos e algoritmos de conhecimento publico, os quais estão sob constante averiguação da sua eficácia. Tais métodos e algoritmos estão, também, detalhados em especificações citadas neste capítulo.

50 50 50

3

TRABALHOS RELACIONADOS

Nesta seção são apresentados trabalhos acadêmicos que se relacionam com o tema deste trabalho. As pesquisas dos textos foram realizadas nas bibliotecas digitais IEEE Xplore e ACM. Os termos de busca utilizados foram as palavras-chave definidas no resumo deste trabalho e termos relacionados (e.g., sinônimos, plurais, diferentes formas de escrever). A Tabela 3.1 sumariza os termos citados.

PALAVRAS-CHAVE E TERMOS RELACIONADOS Internet of Things, Internet-of-Things

Security, Secure, Privacy, Authentication

Smart Card, Smart Cards, Smartcard, Smartcards Java Card, Java Cards, Javacard, Javacards

Microcontroller, Microcontrollers, Microprocessor, Microprocessors Tabela 3.1: Termos de pesquisa utilizados na busca de trabalhos relacionados

As pesquisas consistiram em diferentes combinações dos termos da tabela, de forma a obter resultados mais específicos ou mais generalizados. As combinações são feitas nas expressões de busca, as quais permitem a utilização de operações lógicas como AND e OR para agrupar os termos. Os textos foram selecionados entre os 100 primeiros de cada pesquisa, e todas as pesquisas foram limitadas a publicações datadas de no máximo 15 anos. É necessário um intervalo de tempo maior, pois apesar de IoT ser um assunto muito recente, pesquisas com Smart Cards e Java Cards existem há mais tempo.

A Figura 3.1 mostra diagramas de Venn, os quais destacam as diferentes buscas realizadas. As diferentes tonalidades representam a quantidade de termos agrupados. É importante ressaltar que a área de cada região nos diagramas não tem relação com a quantidade de textos encontrados, é apenas uma representação para visualizar as diferentes combinações de termos que foram utilizadas. Como os Java Cards fazem parte de um subgrupo dos Smart Cards, eles foram tratados como sinônimos nas pesquisas. Pode-se observar que as pesquisas se concentraram principalmente em trabalhos envolvendo Smart Cards e microcontroladores. Também foi feita uma pesquisa apenas com os termos de IoT e segurança, com o objetivo de ver soluções gerais

3.1. APLICAÇÃO DE SMART CARDS EM PROTOCOLOS DE SEGURANÇA 51

de segurança para IoT, bem como avaliações de segurança e surveys. A maioria dos resultados encontrados foi relacionada a essa última pesquisa.

Security

Internet of Things Smart Card/Java Card

Microcontroller Security

Internet of Things Smart Card/Java Card

Microcontroller Security

Internet of Things Smart Card/Java Card

Microcontroller

Security

Internet of Things Smart Card/Java Card

Microcontroller Security

Internet of Things Smart Card/Java Card

Microcontroller Security

Internet of Things Smart Card/Java Card

Microcontroller

Figura 3.1: Diagrama das pesquisas de trabalhos relacionados realizadas

3.1 Aplicação de Smart Cards em Protocolos de Segurança

Badra e Urien (2008) apresentam uma proposta de sistema que utiliza Smart Cards para implementar o Protocolo TLS, aproveitando a segurança física que o cartão fornece. A arquitetura descrita no texto estabelece que tanto o cliente quanto o servidor possuem um SC, com os quais eles se comunicam. A aplicação não é específica para IoT, nem detalha o hardware dos clientes (é descrito um teste com telefones celulares). A principal diferença entre o software do texto e o que foi desenvolvido neste trabalho é que todos os parâmetros do handshake ficam armazenados no próprio cartão, e as entidades precisam enviar comandos ao mesmo para obter esses dados. Pode-se, inclusive, extrair do cartão as chaves negociadas após o handshake, algo que o sistema proposto neste trabalho não permite.