• Nenhum resultado encontrado

Log do Evento de Autentica¸c˜ ao no Container Servidor

No documento Interoperabilidade FIDO (páginas 99-110)

A.1 Item de Dados CBOR

6.7 Log do Evento de Autentica¸c˜ ao no Container Servidor

Conclus˜ao

7.1

Resumo da Soluc˜ao

Neste cap´ıtulo ´e feita uma s´ıntese do trabalho desenvolvido, expondo os objetivos alcan¸cados e os trabalhos que podem ser desenvolvidos na sequˆencia. O cen´ario de adapta¸c˜ao de uma solu¸c˜ao de autentica¸c˜ao interoper´avel com o protocoloFIDOimpˆos dois pilares para a implementa¸c˜ao do trabalho. O primeiro ´e a solu¸c˜ao e a maneira de aplicar o protocolo nos poss´ıveis casos de uso de maneira que mantenha a usabilidade para o cliente e agrege a seguran¸ca proposta pelo protocolo. O segundo ´e o protocolo, que prevˆe a especifica¸c˜ao de um servidor que utiliza chaves p´ublicas para autentica¸c˜ao e um cliente que cria e gere as credenciais, sendo dois componentes independentes que criam um v´ınculo de confian¸ca m´utua.

Durante a an´alise de requisitos ´e poss´ıvel clarificar onde o protocolo pode ser aplicado e em quais casos de uso vai agregar seguran¸ca e compatibilidade com o padr˜ao pretendido. Com base nestas informa¸c˜oes o trabalho gera um resultado que atende casos de uso espec´ıficos e cria uma base para expans˜ao do procolo em outros casos de uso que fa¸cam sentido para a empresa e seus clientes.

7.2

Objetivos Conclu´ıdos

Entre os trˆes casos de uso levantados para aplica¸c˜ao do protocolo FIDO na solu¸c˜ao de autentica¸c˜ao da empresa Loqr SA, foram atendidos dois. Levando em conta as

caracter´ısticas do produto, s˜ao os casos de uso mais relevantes para o neg´ocio, pois permitem que o servidor receba autenticadores externos compat´ıveis com o protocolo e qualificam, atrav´es do protocolo, a comunica¸c˜ao entre o servidor de autentica¸c˜ao e a aplica¸c˜ao da empresa Loqr SA.

Os padr˜oes definidos pelo protocolo s˜ao completamente atendidos no servidor, com a API WebAuthn as fun¸c˜oes propostas s˜ao implementadas e compat´ıveis. Desta forma, o servidor pode interagir com os autenticadores que implementam o protocolo e permite ao usu´ario utilizar dispositivos que j´a utiliza em outras plataformas. Estes dispositivos est˜ao se tornando cada vez mais comuns e utilizados, levando em conta que os principais desenvolvedores est˜ao adotando o padr˜aoFIDO como uma op¸c˜ao de autentica¸c˜ao em seus sistemas.

A aplica¸c˜ao desenvolvida tˆem compatibilidade com o protocolo, que atende ao caso de uso que envolve a aplica¸c˜ao da empresa Loqr SA e o servidor da empresa Loqr SA. Os padr˜oes do protocolo s˜ao atendidos, uma vez que as credenciais s˜ao criadas e geridas de acordo com as defini¸c˜oes. O fluxo dos processos de registro e autentica¸c˜ao proposto pelo protocoloFIDO´e atendido pela aplica¸c˜ao, limitada a se comunicar com o servidor pr´e-definido da organiza¸c˜ao.

7.3

Trabalhos Futuros

A limita¸c˜ao de comunica¸c˜ao da aplica¸c˜ao desenvolvida com o servidor da organiza¸c˜ao ´e reflexo da impossibilidade de implementa¸c˜ao da interfaceCTAPcom o sistema opera- cional. Num cen´ario com este componente operacional a aplica¸c˜ao faria a comunica¸c˜ao indireta com o servidor, sendo intermediada por um navegador compat´ıvel. Mas para que isso seja poss´ıvel ´e necess´ario que a aplica¸c˜ao seja reconhecida pelo navegador como um autenticador FIDO e estar conectada com o sistema operacional atrav´es do componente com a interfaceCTAP.

Desta limita¸c˜ao surge um trabalho futuro em potencial que pode utilizar a estrutura desenvolvida na aplica¸c˜ao. Para que a biblioteca criptogr´afica possa ser utilizada por um futuro projeto, a estrutura j´a segue o padr˜ao de comunica¸c˜ao em hardware

CTAP definido pelo FIDO. O componente necess´ario para tornar a aplica¸c˜ao um autenticador operacional com outros servidores ´e um emulador do hardware de um

autenticador com um drive de hardware que seja reconhecido pelo sistema operacional como um dispositivo FIDO. Atrav´es deste canal, a solu¸c˜ao pode utilizar a biblioteca criptogr´afica para criar e gerenciar as chaves e credenciais de acordo com o padr˜ao

CTAP e expandir o uso do autenticador tornando a aplica¸c˜ao um autenticador FIDO

virtual.

7.4

Considera¸c˜oes Finais

Este trabalho, desde sua proposta, me interessou pela ´area de aplica¸c˜ao e pelo para- digma que sempre desafiou os arquitetos e desenvolvedores dos meios de autentica¸c˜ao. O protocoloFIDO´e de interesse direto de empresas como Google, Microsoft, Facebook e outras gigantes da ´area de tecnologia, al´em de ser um potencial ”m´etodo de auten- tica¸c˜ao do futuro”. A atualidade do protocolo e a relevˆancia da ´area (autentica¸c˜ao) para a seguran¸ca da informa¸c˜ao me instigaram a buscar conhecimento sobre como implementar o padr˜ao no servidor e no cliente e o resultado me satisfaz. O servidor WebAuthn, exposto por um template, exp˜oe quais as necessidades para implementar o protocolo e como isso agrega seguran¸ca para o processo. A aplica¸c˜ao desenvolvida, que implementa o cliente WebAuthn, tem uma camada baseada no padr˜ao CTAP, alinhada com o protocolo utilizado pelos autenticadores comerciais.

Baseado no resultado da implementa¸c˜ao, tenho a certeza que embarquei no desafio certo e que aproveitei a oportunidade para aprender, evoluir e contribuir com meu trabalho. Acredito que o conhecimento aqui compartilhado possa ser aproveitado pela Faculdade de Ciˆencias em novos projetos e pela empresa Loqr SA na implementa¸c˜ao da adapta¸c˜ao da sua solu¸c˜ao ao protocolo FIDO.

RFC 7049 - Concise Binary Object

Representation (CBOR)

Segundo a Request for Comments (RFC) 7049[5], CBOR (Concise Binary Object Representation) ´e um formato de dados que permite a cria¸c˜ao de mensagens de tamanho extremamente pequeno sem a necessidade de negoci¸c˜ao de vers˜oes, como costuma ser necess´ario em outros formatos. O modelo de dados ´e uma vers˜ao estendida do modelo de dados JSON (RFC 4627), mas n˜ao utiliza diretamente a estrutura do formato JSON, em vez disso ´e definido um novo modelo de dados que come¸ca com

JSON.

A.1

Objetivos

Os principais objetivos da Representa¸c˜ao Concisa de Objetos Bin´arios (CBOR) s˜ao: • A representa¸c˜ao deve ser capaz de codificar inequivocamente a maioria dos

formatos de dados usados em padr˜oes de Internet;

• O c´odigo para um codificador ou decodificador deve ser compact´avel para ofere- cer suporte a sistemas com capacidade limitada;

• Os dados devem ser decodificados sem a descri¸c˜ao do esquema;

• A serializa¸c˜ao deve ser razoavelmente compacta, mas a compacta¸c˜ao dos dados ´e secund´aria `a compacta¸c˜ao do c´odigo para o codificador ou decodificador;

• O formato deve ser aplic´avel em sistemas restritos ou com alto volume de dados; • O formato deve suportar a convers˜ao de e para o formato JSON;

• O formato deve ser extens´ıvel e os dados estendidos devem ser decodific´aveis por decodificadores de vers˜oes anteriores.

Assim como oJSON, ´e baseado em pares de chave e valor que caracterizam um item de dados. Cada item de dados possui um tipo que define a maneira de codifica¸c˜ao e decodifica¸c˜ao do dado. Os tipos de dados podem ser:

• Tipo 0: n´umero inteiro sem sinal; • Tipo 1: n´umero inteiro negativo; • Tipo 2: uma string de bytes;

• Tipo 3: uma string de texto codificado como Unicode Transformation Format (UTF)-8 (RFC 3629);

• Tipo 4: uma matriz de itens de dados;

• Tipo 5: um mapa de pares de itens de dados;

• Tipo 6: marca¸c˜ao semˆantica para outros tipos de dados;

• Tipo 7: n´umeros de ponto flutuante, tipos de dados simples que n˜ao precisam de conte´udo ou o c´odigo de parada ”break ”.

Utilizando a referˆencia para o tipo de dado, cada item de dado deve ter a estrutura da tabela A.1.

Dado CBOR Item de Dados

Bytes 1byte Vari´avel Vari´avel Estrutura Tipo Informa¸c˜ao Tamanho do dado Dados

adicional (opcional)

Bits 3 bits 5 bits 8 bits x vari´avel 8 bits x vari´avel Tabela A.1: Item de Dados CBOR

RFC 8152 - CBOR Object Signing

and Encryption (COSE)

De acordo com a RFC 8152[6], o formato COSE ´e a utiliza¸c˜ao do formato CBOR

(apˆendice A) para a cria¸c˜ao e processamento de assinaturas, c´odigos de autentica¸c˜ao de mensagens e criptografia, de forma que apresentem as mesmas caracter´ısticas das mensagens no formato CBOR. A estrutura dos objetos seguem um padr˜ao que identifica o tipo de objeto sobre uma matrizCBOR, os primeiros trˆes elementos sempre contˆem as mesmas informa¸c˜oes:

• 1 - O conjunto de parˆametros protegidos contidos em uma string de bytes; • 2 - O conjunto de parˆametros desprotegidos como um mapa;

• 3 - O conte´udo da mensagem, apropriado ao tipo de mensagem;

Para representa¸c˜ao de chaves, o formato prevˆe a defini¸c˜ao de parˆametros que apon- tam informa¸c˜oes sobre o conte´udo e o tipo de chave representado. Os parˆametos a seguir contˆem informa¸c˜oes b´asicas sobre as chaves:

• kty: este parˆametro utiliza a chave 1, que identifica a informa¸c˜ao no objeto

CBOR,´e utilizado para identificar a fam´ılia de chaves da estrutura representada e ´e obrigat´orio quando o objeto for do tipo chave;

• alg: este parˆametro utiliza a chave 3 para identificar a informa¸c˜ao no objeto

CBORe define o algoritmo utilizado pela chave representada no objeto. 107

No contexto deste trabalho, o tipo de objeto utilizado ´e para transporte de chaves baseadas em curvas el´ıpticas. Para esse tipo de representa¸c˜ao existem duas vers˜oes de cria¸c˜ao do objeto: A primeira vers˜ao utiliza as coordenadas X e Y para representar a chave (EC2); A segunda vers˜ao utiliza apenas a coordenada X e a coordenada Y deve ser recalculada se necess´ario para uma opera¸c˜ao de acordo de chaves (OKP).

A vers˜ao utilizada ´e a que representa as duas coordenadas, e neste contexto a chave ”kty”´e definida com o valor 2 e a chave ”alg”´e definida com o valor -7, que identifica o algoritmo de curvas el´ıpticas. Al´em destes valores, o objeto deve receber essencialmente mais trˆes valores:

• curve: utiliza a chave -1 no objetoCBORe define a curva utilizada para gera¸c˜ao da chave representada;

• x: utiliza a chave -2 no objetoCBORe define o valor da coordenada X da chave; • y: utiliza a chave -3 no objetoCBORe define o valor da coordenada Y da chave.

[1] FIDO Alliance. Authenticator allowed cryptography list. https: //fidoalliance.org/specs/fido-security-requirements-v1.

1-fd-20171108/fido-authenticator-allowed-cryptography-list-v1. 1-fd-20171108.pdf, acessado em 20/09/2020.

[2] FIDO Alliance. Client to authenticator protocol (ctap).

https://fidoalliance.org/specs/fido-v2.0-ps-20190130/

fido-client-to-authenticator-protocol-v2.0-ps-20190130.html, acessado em 20/09/2020.

[3] FIDO Alliance. Fido alliance certification. https://fidoalliance.org/ certification/, acessado em 20/09/2020.

[4] Instituto Nacional de Tecnologia da Informa¸c˜ao Brasil. Estrutura icp. https: //estrutura.iti.gov.br/, acessado em 20/09/2020.

[5] IETF. Rfc 7049 - concise binary object representation (cbor). https://tools. ietf.org/html/rfc7049, acessado em 20/09/2020.

[6] IETF. Rfc 8152 - cbor object signing and encryption (cose). https://tools. ietf.org/html/rfc8152, acessado em 20/09/2020.

[7] IETF. Rfc 8446 - the transport layer security (tls) protocol version 1.3. https: //tools.ietf.org/html/rfc8446, acessado em 20/09/2020.

[8] Duo Labs. Github - api webauthn. https://github.com/duo-labs/webauthn, acessado em 20/09/2020.

[9] Duo Labs. Github - webauthn.io. https://github.com/duo-labs/webauthn. io, acessado em 20/09/2020.

[10] MIT. Kerberos documentation. https://web.mit.edu/kerberos/, acessado em 20/09/2020.

[11] NIST. Advanced encryption standard (aes). https://fidoalliance. org/specs/fido-security-requirements-v1.1-fd-20171108/

fido-authenticator-allowed-cryptography-list-v1.1-fd-20171108.pdf, acessado em 20/09/2020.

[12] NIST. Elliptic curve cryptography. https://csrc.nist.gov/Projects/ elliptic-curve-cryptography, acessado em 20/09/2020.

[13] NIST. Fips 186-4 - digital signature standard. https://csrc.nist.gov/ publications/detail/fips/186/4/final, acessado em 20/09/2020.

[14] NIST. Recommendation for key management. https://csrc.nist.gov/ publications/detail/sp/800-57-part-1/rev-5/final, acessado em 20/09/2020.

[15] NIST. Secure hash standard (shs). https://csrc.nist.gov/publications/ detail/fips/180/4/final, acessado em 20/09/2020.

[16] Oracle. Class keypairgenerator. https://docs.oracle.com/javase/10/docs/ api/java/security/KeyPairGenerator.html, acessado em 20/09/2020.

[17] C. Paar and J. Pelzl. Understanding Cryptography: A Textbook for Students and Practitioners. Springer Berlin Heidelberg, 2009.

[18] W3C. Web authentication: An api for accessing public key credentials. https: //www.w3.org/TR/webauthn-1/, acessado em 20/09/2020.

[19] Yubico. Github - java-webauthn-server. https://github.com/Yubico/ java-webauthn-server, acessado em 20/09/2020.

No documento Interoperabilidade FIDO (páginas 99-110)

Documentos relacionados