• Nenhum resultado encontrado

Interoperabilidade FIDO

N/A
N/A
Protected

Academic year: 2021

Share "Interoperabilidade FIDO"

Copied!
110
0
0

Texto

(1)

Interoperabilidade

FIDO

Mateus de Campos

Mestrado em Segurança Informática

Departamento de Ciência de Computadores 2020

Orientador

Manuel Barbosa, Professor Auxiliar, FCUP

Coorientador

(2)
(3)

Authentication has always been a challenge for information systems and has resorted to the most varied protocols to create a secure flow for the process. The storage of the secret to be verified in authentication is a process that requires effort from system architects and application of protocols and technologies. The present work was developed in compatibility with the Fast Identity Online protocol (FIDO), which aims to facilitate and standardize a secure means for authentication, based on asymmetric keys.

The work developed aims to create subsidies for the interoperability of the Loqr SA company system to the FIDO protocol. Through a requirements analysis and a study of the use cases of the protocol, possible scenarios are defined to be integrated into the system of the company that has its own protocol. The result is the specification for the implementation of the WebAuthn protocol on the company’s server and an authenticator module compatible with the FIDO protocol and integrable with the mobile solution of the Loqr SA system.

(4)
(5)

A autentica¸c˜ao sempre foi um desafio dos sistemas de informa¸c˜ao e recorreu aos mais variados protocolos para criar um fluxo seguro para o processo. O armazenamento do segredo a ser verificado na autentica¸c˜ao ´e um processo que exige esfor¸co dos arquitetos dos sistemas e aplica¸c˜ao de protocolos e tecnologias. O presente trabalho foi desenvolvido em compatibilidade com o protocolo Fast Identity Online (FIDO), que visa facilitar e padronizar um meio seguro para a autentica¸c˜ao, baseado em chaves assim´etricas.

O trabalho desenvolvido visa criar subs´ıdios para a interoperabilidade do sistema da empresa Loqr SA ao protocolo FIDO. ´E feita uma an´alise de requisitos e um estudo dos casos de uso do protocolo poss´ıveis de serem integrados ao sistema da empresa que possui um protocolo pr´oprio. O resultado ´e a especifica¸c˜ao para a implementa¸c˜ao do protocolo WebAuthn no servidor da empresa e um m´odulo autenticador compat´ıvel com o protocolo FIDO e integr´avel a solu¸c˜ao m´ovel do sistema da empresa Loqr SA.

(6)

Agrade¸co a todos que de alguma forma influenciaram minha vida, minha carreira e meu desejo de buscar conhecimento.

(7)
(8)

Abstract 3

Resumo 5

Lista de Tabelas 12

Lista de Figuras 14

Lista de Blocos de C´odigo 15

Lista de Abreviaturas 18 1 Introdu¸c˜ao 20 1.1 Apresenta¸c˜ao do Projeto . . . 20 1.2 Metodologia . . . 21 1.3 Organiza¸c˜ao do Documento . . . 22 2 Conceitos B´asicos 25 2.1 Fun¸c˜ao Hash . . . 25 2.1.1 SHA-256 . . . 26 2.2 Assinatura Digital. . . 27 2.2.1 ECDSA . . . 28 8

(9)

2.2.3 Autentica¸c˜ao com Assinatura Digital . . . 30

2.2.4 Atesta¸c˜ao . . . 30

2.3 Algoritmo AES . . . 32

2.4 Infraestrutura de Chaves P´ublicas . . . 32

2.5 Protocolo TLS. . . 34 3 FIDO2 37 3.1 Introdu¸c˜ao . . . 37 3.2 WebAuthn . . . 39 3.2.1 Registro . . . 39 3.2.2 Autentica¸c˜ao . . . 41 3.3 CTAP . . . 43 3.3.1 MakeCredential . . . 43 3.3.2 GetAssertion . . . 45 3.4 Requisitos de Seguran¸ca . . . 46 3.5 Estado da Arte . . . 50

4 An´alise de Requisitos 53 4.1 Introdu¸c˜ao . . . 53

4.2 Solu¸c˜ao Loqr SA . . . 53

4.3 Arquitetura . . . 56

4.3.1 Servidor Loqr SA e Aplica¸c˜ao Loqr SA . . . 57

4.3.2 Servidor Loqr SA e Autenticadores de Terceiros . . . 57

4.3.3 Aplica¸c˜ao Loqr SA e Servidores de Terceiros . . . 58

4.3.4 Adapta¸c˜ao ao FIDO . . . 59 9

(10)

4.5 Servidor WebAuthn . . . 61 4.5.1 Registrar. . . 62 4.5.2 Autenticar . . . 63 4.6 Autenticador FIDO . . . 63 4.6.1 Registrar. . . 64 4.6.2 Autenticar . . . 66 5 Desenvolvimento 69 5.1 Servidor WebAuthn . . . 69 5.1.1 Registro . . . 72 5.1.2 Autentica¸c˜ao . . . 73 5.2 Autenticador FIDO . . . 74

5.2.1 Componente Cliente WebAuthn . . . 75

5.2.1.1 Interface de Registro . . . 76

5.2.1.2 Interface de Autentica¸c˜ao . . . 77

5.2.2 Componente Token FIDO . . . 78

5.2.2.1 M´etodo CreateCredential() - Classe Authenticator . . 79

5.2.2.2 M´etodo GetAssertion() - Classe Authenticator . . . 86

6 Resultados 91 6.1 Ambiente de Execu¸c˜ao . . . 91 6.2 Processo de Registro . . . 93 6.3 Processo de Autentica¸c˜ao. . . 96 7 Conclus˜ao 101 7.1 Resumo da Soluc˜ao . . . 101 10

(11)

7.3 Trabalhos Futuros. . . 102

7.4 Considera¸c˜oes Finais . . . 103

A RFC 7049 - Concise Binary Object Representation (CBOR) 105

A.1 Objetivos . . . 105

B RFC 8152 - CBOR Object Signing and Encryption (COSE) 107

Referˆencias 110

(12)

3.1 Rela¸c˜ao de Metas de Seguran¸ca X Medidas Implementadas . . . 50

5.1 Conte´udo do Objeto authData . . . 82

5.2 Conte´udo do Objeto attestedCredentialData . . . 83

A.1 Item de Dados CBOR . . . 106

(13)

3.1 Fluxo FIDO2 (WebAuthn + CTAP) . . . 39

3.2 Fluxo de Registro WebAuthn . . . 41

3.3 Fluxo de Autentica¸c˜ao WebAuthn . . . 42

3.4 Objeto AuthData . . . 44

3.5 Objeto signature . . . 45

4.1 Emparelhamento Sistema Loqr SA . . . 55

4.2 Autentica¸c˜ao Sistema Loqr SA. . . 56

4.3 Servidor Loqr SA e Aplica¸c˜ao Loqr SA . . . 57

4.4 Servidor Loqr SA e Autenticadores de Terceiros . . . 58

4.5 Autenticador Loqr SA e Servidores de Terceiros . . . 58

4.6 Adapta¸c˜ao do Sistema Loqr . . . 60

4.7 Casos de Uso do Servidor . . . 61

4.8 Diagrama de Sequˆencia - Registro . . . 62

4.9 Diagrama de Estados - Registro . . . 62

4.10 Diagrama de Sequˆencia - Autentica¸c˜ao . . . 63

4.11 Diagrama de Estados - Autentica¸c˜ao . . . 63

4.12 Casos de Uso do Cliente (Autenticador). . . 64

4.13 Diagrama de Estados - Registrar . . . 65 13

(14)

5.1 Diagrama de Classes (Reduzido) do Autenticador . . . 75

5.2 Sequˆencia da Interface de Registro . . . 77

5.3 Sequˆencia da Interface de Autentica¸c˜ao . . . 78

5.4 Diagrama de Classes - Registrar . . . 80

5.5 Diagrama de Classes - Autenticar . . . 87

6.1 P´agina HTML do Servidor . . . 92

6.2 Solicita¸c˜ao de Registro Windows Hello . . . 94

6.3 Solicita¸c˜ao de Registro Solo Key . . . 94

6.4 Hardware Solo Key . . . 95

6.5 Informa¸c˜ao de Registro na P´agina HTML do Servidor . . . 95

6.6 Fluxo de Registro Autenticador . . . 96

6.7 Sele¸c˜ao do Dispositivo para Autentica¸c˜ao . . . 97

6.8 P´agina com as Credencias Registradas . . . 98

6.9 Fluxo de Autentica¸c˜ao Autenticador . . . 99

(15)

5.1 Gera¸c˜ao do Objeto authData . . . 83

5.2 Gera¸c˜ao do Objeto attestedCredentialData . . . 84

5.3 Codifica¸c˜ao da Chave P´ublica no Formato COSE . . . 85

5.4 Gera¸c˜ao do Array de Bytes para Assinatura . . . 89

5.5 Gera¸c˜ao do Objeto signature . . . 89

6.6 Container Servidor em Execu¸c˜ao. . . 92

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

(16)

AES Advanced Encryption Standard AIK Attestation Identity Key

API Application Programming Interface CA Certification Authority

CBOR Concise Binary Object Representation

COSE Concise Binary Object Representation (CBOR) Object Signing and Encryption

CRL Certificate Revocation List

CTAP Client to Authenticator Protocol DAA Direct Anonymous Attestation DoS Denial of Service

EC Elliptic Curve

ECC Elliptic Curve Cryptography

ECDAA Eliptic Curve Direct Anonymous Attestation ECDSA Elliptic Curve Digital Signature Algorithm EK Endorsement Key

FIDO Fast Identity Online

FIPS Federal Information Processing Standards FTP File Transfer Protocol

(17)

HMAC Hash-based Message Authentication Code HTML Hypertext Markup Language

HTTP Hypertext Transfer Protocol

HTTPS Hypertext Transfer Protocol Secure ICP Infraestrutura de Chaves P´ublicas IDE Integrated Development Environment

IEEE Institute of Electrical and Electronics Engineers IETF Internet Engineering Task Force

IPSec IP Security Protocol JAR Java Archive

JSON JavaScript Object Notation NFC Near Field Communication

NIST National Institute of Standards and Technology PKI Public Key Infrastructure

RA Registration Authority RFC Request for Comments RSA Rivest Shamir Adleman

SMTP Simple Mail Transfer Protocol SSH Secure Shell

SSL Secure Sockets Layer SSO Single Sign-On

SHA Secure Hash Algorithm

TCP Transmission Control Protocol 17

(18)

TPM Trusted Platform Module URL Uniform Resource Locator USB Universal Serial Bus

UTF Unicode Transformation Format W3C World Wide Web Consortium

(19)
(20)

Introdu¸

ao

Este cap´ıtulo apresenta uma vis˜ao geral sobre o projeto e como surgiu a necessidade que motivou seu desenvolvimento. Em seguida ´e apresentado o m´etodo para seu desenvolvimento e por fim uma descri¸c˜ao do documento e do conte´udo de cada cap´ıtulo.

1.1

Apresenta¸

ao do Projeto

A proposta do projeto surgiu com a parceria entre a empresa Loqr SA e a Faculdade de Ciˆencias da Universidade do Porto. O objetivo foi conciliar o ambiente de pesquisa e desenvolvimento da Faculdade com um cen´ario de mercado em que a empresa Loqr SA est´a inserido.

Desenvolvido no ˆambito da disciplina de Disserta¸c˜ao do mestrado em Seguran¸ca Inform´atica, ministrado no Departamento de Ciˆencia de Computadores. A proposta do trabalho era analisar a solu¸c˜ao de autentica¸c˜ao existente da empresa Loqr SA e elaborar um plano de adapta¸c˜ao para alcan¸car a interoperabilidade com o protocolo Fast Identity Online (FIDO). Para a Loqr SA o projeto representa um acr´escimo nos protocolos suportados por sua solu¸c˜ao, que diretamente amplia a tecnologia que pode ser utilizada por seus clientes e os servi¸cos que podem ser integrados ao seu sistema.

O FIDO ´e um protocolo criado por uma alian¸ca de empresas que foi denominada FIDO Alliance e posteriormente foi padronizado pelo World Wide Web Consortium (W3C). O FIDO, Fast IDentity Online, ´e um protocolo de autentica¸c˜ao baseado em

(21)

chaves p´ublicas. Sua estrutura prevˆe um protocolo para o servidor, o WebAuthn, e outro para o cliente, o Client to Authenticator Protocol (CTAP). Entre eles o navegador do cliente deve ter compatibilidade com o protocolo, pois ´e o navegador que faz a interlocu¸c˜ao da comunica¸c˜ao.

O desafio ´e permitir que um cliente possa utilizar um autenticador FIDO para autenticar-se no servidor da empresa Loqr SA. E tamb´em permitir que a aplica¸c˜ao cliente da Loqr efetue esta autentica¸c˜ao utilizando o mesmo padr˜ao. Mas, sem que essa integra¸c˜ao do novo protocolo interfira no funcionamento da solu¸c˜ao existente, que utiliza um protocolo pr´oprio e serve a v´arios clientes.

Este trabalho exp˜oe uma solu¸c˜ao aplic´avel a parte dos cen´arios de utiliza¸c˜ao, mas que permite a expans˜ao da implementa¸c˜ao para atender a todos os cen´arios poss´ıveis. A implementa¸c˜ao ´e definida por um servidor WebAuthn que pode ser integrado ao servidor atual da empresa Loqr SA e um autenticador que segue os padr˜oes do protocolo desenvolvido na linguagem Java e que pode ser integrado `a aplica¸c˜ao da empresa Loqr SA para sistema Android. Em um cen´ario comum, esta comunica¸c˜ao ocorre atrav´es de um navegador, o que se tornou um desafio adicional, j´a que a aplica¸c˜ao desenvolvida n˜ao utiliza um navegador e efetua a interlocu¸c˜ao direta com o servidor.

1.2

Metodologia

Para a implementa¸c˜ao do projeto ´e utilizada uma metodologia baseada em quatro etapas principais. O primeira passo ´e um debate t´ecnico com a equipe da empresa Loqr SA, seguido da an´alise de requisitos da solu¸c˜ao debatida. Ap´os ´e feito o desen-volvimento da solu¸c˜ao e a an´alise dos resultados.

O debate t´ecnico sobre a solu¸c˜ao ´e permeado pela preocupa¸c˜ao em atingir o objeto da interoperabilidade do protocolo sem interferir no funcionamento do protocolo exis-tente. O fluxo da comunica¸c˜ao dos protocolos ´e diferente e demanda um estudo dos casos de uso a serem implementados. O resultado do planejamento ´e a cria¸c˜ao de um m´odulo servidor e outro autenticador independentes da solu¸c˜ao.

(22)

A an´alise de requisitos leva em conta dois pontos de an´alise, o sistema Loqr SA e o protocolo FIDO. O primeiro passo ´e a an´alise do sistema Loqr SA, dos seus cen´arios de utiliza¸c˜ao e das poss´ıveis aplica¸c˜oes do protocolo FIDO em sua arquitetura. O segundo passo ´e uma an´alise de requisitos de seguran¸ca, levando em conta as diretrizes do protocolo FIDO. Na sequˆencia ´e necess´ario a defini¸c˜ao dos requisitos do servidor, seguindo o protocolo WebAuthn. Depois ´e efetuada a an´alise de requisitos do cliente autenticador, que deve levar em conta as fun¸c˜oes do navegador na interlocu¸c˜ao da comunica¸c˜ao e doCTAP, que cria e gere as credenciais.

O desenvolvimento da solu¸c˜ao ´e divido em duas etapas: a primeira ´e a execu¸c˜ao de um servidor WebAuthn implementado pela Duo Labs, que utiliza um padr˜ao de comunica¸c˜ao Hypertext Transfer Protocol (HTTP) e que implementa uma Application Programming Interface (API) WebAuthn de c´odigo aberto; a segunda etapa ´e a im-plementa¸c˜ao de uma aplica¸c˜ao na linguagem Java que autentica no servidor composta por duas camadas: uma executando as fun¸c˜oes de comunica¸c˜ao desempenhadas por um navegador, utilizando os endpoints de cada processo do servidor; a outra camada implementa as fun¸c˜oes do CTAP para criar e gerir as credenciais.

Por fim ´e feita a an´alise dos resultados, utilizando compara¸c˜oes com outros au-tenticadores para analisar a efic´acia do m´odulo desenvolvido. ´E poss´ıvel comparar a utiliza¸c˜ao da aplica¸c˜ao autenticadora com autenticadores FIDO que utilizam o navegador, levando em conta a chave gerada em cada um dos casos.

1.3

Organiza¸

ao do Documento

Esta sess˜ao apresenta a disposi¸c˜ao dos cap´ıtulos e o conte´udo dos mesmos, expondo uma vis˜ao geral sobre os capt´ıtulos que sucedem a introdu¸c˜ao.

No cap´ıtulo 2 s˜ao expostos conceitos necess´arios para o entendimento do conte´udo do trabalho, assim como fundamentos t´ecnicos utilizados pelo protocolo FIDO. Apre-senta uma vis˜ao geral sobre protocolos utilizados num ambiente web, o conceito de autentica¸c˜ao com base em assinaturas e o protocolo Transport Layer Security (TLS), que estabelece a seguran¸ca na maior parte dos protocolos na Internet.

(23)

No ca´ıtulo 3 ´e apresentado o conceito do protocolo FIDO, como deve ser a im-plementa¸c˜ao dos processos e a vis˜ao geral de como ´e feita a comunica¸c˜ao entre a parte confi´avel e o cliente que faz a autentica¸c˜ao. Tamb´em ´e feita uma rela¸c˜ao do protocoloFIDO e a implementa¸c˜ao do projeto com o desafio de aprimorar o processo de autentica¸c˜ao. ´E exposta uma vis˜ao da maturidade da implementa¸c˜ao em face `as implementa¸c˜oes mais comuns existentes no mercado.

O cap´ıtulo 4 apresenta a an´alise de requisitos, com uma an´alise de requisitos de seguran¸ca, os requisitos da implementa¸c˜ao do servidor, seguido dos requisitos do cliente autenticador. S˜ao apresentados casos de uso, diagramas de estados e de classes para cada um dos componentes, fazendo uma rela¸c˜ao entre os processos do servidor e do cliente.

O cap´ıtulo 5 exp˜oe o desenvolvimento da solu¸c˜ao. Primeiro exibindo o processo de execu¸c˜ao do container com o servidor e posteriormente o autenticador, as bibliotecas utilizadas e os protocolos empregados atrav´es da linguagem Java.

No cap´ıtulo 6, dedicado a mostrar os resultados da implementa¸c˜ao, s˜ao exibidos os resultados dos processos de registro e autentica¸c˜ao, em compara¸c˜ao com outros autenticadores. Permitindo a comprova¸c˜ao da efic´acia da solu¸c˜ao desenvolvida.

Por fim, o cap´ıtulo 7 exp˜oe a conclus˜ao do trabalho, analisando os resultados em face ao objeto inicial do projeto. Al´em de expor o que seriam trabalhos futuros com potencial utilizando a base de conhecimento e os artefatos criados pelo trabalho.

(24)
(25)

Conceitos B´

asicos

Os conceitos b´asicos s˜ao uma fundamenta¸c˜ao te´orica para facilitar o entendimento dos pr´oximos cap´ıtulos, descrevendo mecanismos e padr˜oes utilizados no desenvolvimento deste trabalho. Ser˜ao descritos conceitos de criptografia, assinaturas, infraestrutura de chaves p´ublicas e o protocolo TLS que sustenta a comunica¸c˜ao segura de muitos protocolos na Internet.

2.1

Fun¸

ao Hash

A fun¸c˜ao hash ´e uma opera¸c˜ao criptogr´afica que transforma dados de tamanho vari´avel em um valor de tamanho fixo. Esta fun¸c˜ao tem diversas aplica¸c˜oes na criptografia moderna, a principal delas ´e a verifica¸c˜ao da integridade de uma mensagem.

O hash de uma mensagem enviada ou armazenada ´e utilizado para comparar com o hash gerado ap´os o recebimento ou processamento da mesma mensagem e atestar a integridade dos dados. Para que a fun¸c˜ao cumpra seu objetivo de forma correta e segura ´e necess´ario que o algoritmo da fun¸c˜ao possua algumas carater´ısticas:

• Unidirecionalidade: conhecido um hash de uma mensagem, deve ser imposs´ıvel obter a mensagem atrav´es dele. Caracter´ıstica que denomina a fun¸c˜ao hash uma one-way-function.

• Compress˜ao: independente do tamanho de uma mensagem, o resultado de sua fun¸c˜ao hash possui um tamanho fixo.

(26)

• Facilidade de c´alculo: deve ser f´acil gerar o valor hash a partir da mensagem. • Difus˜ao: todos os bits de uma mensagem devem influenciar no resultado da

fun¸c˜ao. Exemplo: se um bit da mensagem mudar, o valor hash deve ter mudan¸ca de grande quantidade dos bits.

• Colis˜ao simples: conhecido o hash de uma mensagem, deve ser imposs´ıvel en-contrar outra mensagem com o mesmo resultado de hash.

• Colis˜ao forte: deve ser imposs´ıvel encontrar duas mensagens com o mesmo resultado de hash.

2.1.1

SHA-256

O Secure Hash Algorithm (SHA), traduzido como Algoritmo de Dispers˜ao Seguro, ´e um grupo de fun¸c˜oes hash projetadas pela Agˆencia de Seguran¸ca Nacional dos Estados Unidos. O SHA-256 faz parte do grupo de fun¸c˜oes publicadas na vers˜ao SHA-2, em 2001, pelo National Institute of Standards and Technology (NIST), atrav´es da publica¸c˜ao 180-4[15] do Federal Information Processing Standards (FIPS). Al´em do SHA-256 bits, a vers˜ao SHA-2 define outras cinco fun¸c˜oes com hashes de tamanhos 224, 384, 512, 512/224 e 512/256 bits.

O SHA-256 gera um hash com 256 bits e em seu algoritmo utiliza blocos com 512 bits e palavras (divis˜oes dos blocos) com 32 bits. Por ter esta estrutura, o primeiro passo do algortimo ´e o preenchimento da mensagem para que se torne divis´ıvel em blocos de 512 bits. A segunda etapa ´e a divis˜ao em blocos e cada bloco em palavras (dezesseis palavras). S˜ao definidas oito vari´aveis de c´odigo hash com 32 bits que comp˜oem o valor final do hash e que ser˜ao alteradas pelo processamento dos blocos.

A repeti¸c˜ao de opera¸c˜oes em cada bloco segue uma sequˆencia:

• Estender as 16 palavras para 64 palavras; • Iniciar vari´aveis funcionais;

• Repeti¸c˜ao de uma nova fun¸c˜ao 64 vezes; • Atualiza vari´aveis hash.

(27)

As fun¸c˜oes repetidas nos blocos envolvem opera¸c˜oes de rota¸c˜ao bit a bit das palavras e XOR (opera¸c˜ao l´ogica OU exclusivo), que agregam complexidade e caracterizam o algoritmo n˜ao revers´ıvel. O SHA-2 possui um sucessor (SHA-3) desde 2015, mas ainda ´

e muito utilizado em sistemas e protocolos.

2.2

Assinatura Digital

A assinatura digital ´e um mecanismo onde a criptografia assim´etrica pode ser aplicada. O objetivo da assinatura digital ´e garantir a integridade e a autenticidade das mensa-gens, consequentemente o n˜ao rep´udio. Ou seja, a assinatura digital visa permitir a verifica¸c˜ao que a mensagem est´a ´ıntegra e foi remetida pelo propriet´ario da identidade digital.

O algoritmo de assinatura digital deve incluir um processo que assina e outro que verifica a assinatura. Cada signat´ario possui um par de chaves, uma p´ublica conhecida por todos e outra privada. Com a chave privada o signat´ario assina a mensagem e o receptor utiliza a chave p´ublica para verificar a assinatura. O algoritmo deve garantir que a gera¸c˜ao da assinatura seja poss´ıvel somente com a chave privada e a verifica¸c˜ao da assinatura seja poss´ıvel somente com a respectiva chave p´ublica.

De acordo com o padr˜ao FIPS 186-4 [13], que define os padr˜oes de assinaturas digitais segundo o NIST, o processo de assinatura de uma mensagem consiste na gera¸c˜ao de um hash da mensagem e posteriormente a assinatura (Sign) com a chave privada(Sk) deste valor hash. A mensagem assinada consiste na soma da assinatura do hash com a mensagem: (Sign(Sk, H(mensagem)), mensagem).

Este processo n˜ao garante privacidade para as mensagens, uma vez que a mensagem n˜ao ´e cifrada. Garante a integridade e a autenticidade da mensagem atrav´es do processo de verifica¸c˜ao, que inicia ap´os o recebimento do pacote com a mensagem e a assinatura. A mensagem ´e utilizada na verifica¸c˜ao, onde o hash da mensagem ´e utilizado para compara¸c˜ao com o hash assinado.

A verifica¸c˜ao da assinatura (Ver) ´e baseada em uma fun¸c˜ao que recebe a chave p´ublica (Pk) junto com a assinatura (signature). O resultado ´e o conte´udo que foi

(28)

assinado, posteriormente comparado com o hash da mensagem. Se a assinatura ´e au-tentica e o conte´udo da mensagem n˜ao foi alterado, o resultado da fun¸c˜ao de verifica¸c˜ao da assinatura deve ser igual ao hash da mensagem recebida: (V er(P k, signature) = H(mensagem)).

2.2.1

ECDSA

O Elliptic Curve Digital Signature Algorithm (ECDSA) ´e um algoritmo de assinaturas digitais que utiliza chaves geradas com criptografia de curvas el´ıptcas, Elliptic Curve Cryptography (ECC). As curvas el´ıpticas s˜ao obtidas de uma equa¸c˜ao c´ubica, mas j´a s˜ao pr´e-definidas com um n´ıvel de complexidade que garante a seguran¸ca do algoritmo, o FIPS 186-4[13] recomenda quinze varia¸c˜oes de curvas para a gera¸c˜ao das chaves.

A defini¸c˜ao de uma curva el´ıptica ´e baseada nos valores dos coeficientes a e b da equa¸c˜ao y2 = x3+ a ∗ x + b, e um n´umero primo p para criar um grupo finito e c´ıclico, que possui uma ordem q e pelo menos um elemento primitivo A[17]. Baseado neste conceito matem´atico, ´e gerado um par de chaves:

• Gera-se um n´umero aleat´orio d, tal que: 1 ≤ d ≤ q − 1; • Calcula-se o ponto B = d ∗ A.

A chave privada ´e o n´umero d e a chave p´ublica ´e o conjunto de valores p, a, b, q, A, B. A assinatura de uma mensagem utiliza os valores do par de chaves para assinar uma mensagem m utilizando os valores r e s com mesmo tamanho de bits de q. A assinatura ocorre da seguinte forma:

• Define-se um n´umero aleat´orio k, tal que 0 < k < q;

• Calcula-se R = k ∗ A e associa-se o valor da coordenada x de R na curva ao elemento r;

• Calcula-se s ≡ (h(m) + d ∗ r) ∗ k−1(mod q).

O valor h(m) ´e o hash da mensagem m a ser assinada, cujo algoritmo utilizado comp˜oe a defini¸c˜ao do algoritmo de assinatura. O conjunto transmitido ´e composto pela mensagem e os valores calculados, na forma (m, (r, s)).

(29)

A verifica¸c˜ao da assinatura ´e feita com o conhecimento da mensagem recebida (m), do conjunto de valores da chave p´ublica (p, a, b, q, A, B) e dos valores da assinatura (r, s). A verifica¸c˜ao ´e feita da seguinte forma:

• Calcula-se w ≡ s−1 (mod q);

• Calcula-se u1 ≡ w ∗ h(m) (mod q); • Calcula-se u2 ≡ w ∗ r (mod q); • Calcula-se P = u1 ∗ A + u2 ∗ B

O valor P ´e um ponto na curva, cuja coordenada x deve equivaler ao valor de r m´odulo q para que a assinatura seja considerada v´alida. O valor h(m) ´e o hash da mensagem (m) gerado pelo verificador da assinatura.

2.2.2

Assinatura Digital RSA

A assinatura digital utilizando o algoritmo Rivest Shamir Adleman (RSA) consiste em um par de chavesRSA, a privada ´e utilizada para assinar as mensagens, enquanto a p´ublica verifica a assinatura gerada. A chave p´ublica ´e um m´odulo n, que ´e produto de dois n´umeros primos (p e q), e um expoente e, logo, a chave p´ublica ´e um par de valores (n, e). A chave privada corresponde ao mesmo m´odulo n com um expoente privado d, que depende de n e do expoente de chave p´ublica e.

O tamanho do valor n influencia no grau de seguran¸ca atingido pela chave e atrav´es da recomenda¸c˜ao que trata da gest˜ao de chaves SP 800-57[14] doNIST, s˜ao definidos trˆes comprimentos de chave: 1024, 2018 e 3072 bits. Utilizando os parˆametros de comprimento adequados, a gera¸c˜ao de um par de chaves consiste em:

• Escolhe-se dois n´umeros primos p e q; • Calcula-se n = p ∗ q;

• Calcula-se φ(n) = (p − 1)(q − 1);

• Escolhe-se um e tal que 1 < e < φ(n) e que e e φ(n) sejam co-primos; • Calcula-se d de forma que de ≡ 1(modφ(n)).

(30)

O propriet´ario da chave privada (d, n) executa a opera¸c˜ao s = hd mod n para gerar

a assinatura s, onde h deve ser o hash da mensagem a ser assinada. A verifica¸c˜ao ´e feita pelo receptor da mensagem utilizando o inverso multiplicativo de d, o valor da chave p´ublica e atrav´es da opera¸c˜ao: se = (hd)e mod n = h mod n. O receptor deve

utilizar o valor de hash da mensagem recebida para comparar com o valor gerado pela verifica¸c˜ao da assinatura.

2.2.3

Autentica¸

ao com Assinatura Digital

Autentica¸c˜ao ´e o processo que confirma a autenticidade de algo ou algu´em. No ambiente virtual esse processo pode ser efetuado utilizando diferentes mecanismos e com diferentes prop´ositos. Quando feita com assinatura digital, a autentica¸c˜ao utiliza chaves assim´etricas, a chave p´ublica ´e utilizada para verificar a identidade do interlocutor que envia a assinatura como prova de autenticidade.

Baseado nesta estrutura, o processo de autentica¸c˜ao deve utilizar mecanismos ade-quados para garantir a autenticidade das credencias. O diret´orio de chaves p´ublicas deve ser confi´avel, a inclus˜ao de uma chave p´ublica fraudulenta no diret´orio pode permitir que um atacante autentique-se sem ser detectado. O diret´orio de chaves pode fazer parte do sistema ou estar vinculado a um servidor de chaves p´ublicas.

Se as chaves p´ublicas do usu´arios estiverem no sistema ´e importante criar um m´etodo para registro das credenciais utilizando certificados de atestado para as chaves, garan-tindo a autenticidade das credenciais. Se as chaves p´ublicas estiverem armazenadas em um servidor externo ´e necess´ario que exista uma cadeia de confian¸ca que interligue o sistema com o diret´orio que armazena as credenciais. A utiliza¸c˜ao de assinaturas ´

e utilizada em diversos sistemas, de forma ampla aplicada ao protocolo Kerberos[10], que utiliza as chaves para autenticar e criar as sess˜oes dos ativos no sistema.

2.2.4

Atesta¸

ao

A atesta¸c˜ao ´e um mecanismo criptogr´afico utilizado para testemunhar, confirmar ou autenticar. No contexto do WebAuthn, a atesta¸c˜ao ´e utilizada para confirmar a autenticidade de um autenticador e dos dados gerados por ele, ou seja, as credenciais e os objetos que acompanham as chaves.

(31)

A atesta¸c˜ao pode ser efetuada de diversas formas, o protocolo WebAuthn prevˆe cinco tipos:

• Basic: o par de chaves de atestado do autenticador ´e o mesmo para os autenti-cadores de um mesmo modelo. O fabricante instala um par de chaves v´alido no dispositivo que ´e utilizado para assinar os atestados das credenciais geradas por ele. Isso torna o usu´ario anˆonimo, pois a chave do atestado est´a vinculada ao dispositivo, impedindo a revoga¸c˜ao de uma chave de atestado comprometida; • Auto: o autenticador n˜ao possui uma chave de atestado, mas utiliza a pr´opria

chave privada da credencial para assinar o objeto de atesta¸c˜ao. Geralmente este m´etodo indica que o autenticador n˜ao possui uma medida de prote¸c˜ao significativa das chaves privadas;

• AttCA: o autenticador ´e baseado em um Trusted Platform Module (TPM), um microcontrolador criptogr´afico, que possui uma chave de endosso, Endorsement Key (EK), espec´ıfica do autenticador. Esta chave ´e utilizada para se comunicar com a entidade confi´avel, geralmente vinculada ao fabricante do autenticador, e solicitar a assinatura de uma chave de identidade de atestado, Attestation Identity Key (AIK). O atestado ´e gerado com a assinatura da chave AIK, limitando a exposi¸c˜ao da chave EK.

• Eliptic Curve Direct Anonymous Attestation (ECDAA): o autenticador utiliza atesta¸c˜ao anˆonima direta baseada em curvas el´ıpticas. A atesta¸c˜ao anˆonima direta, Direct Anonymous Attestation (DAA), permite que o autenticador derive chaves de atesta¸c˜ao a partir de uma chave instalada em sua fabrica¸c˜ao, de modo que a atesta¸c˜ao seja atual e anˆonima, sem vincular a identidade do usu´ario que est´a utilizando a credencial atestada, mas que pode ser rastreada e revogada, pois utiliza uma chave de atesta¸c˜ao sempre atual;

• None: o autenticador n˜ao gera atesta¸c˜ao para a credencial;

Atrav´es desse m´etodos, o servidor pode verificar a autenticidade da chave gerada e do dispositivo que a criou. Os m´etodos que utilizam processos que envolvem uma terceira parte confi´avel (AttCA e ECDAA) s˜ao considerados mais seguros. O modo de atesta¸c˜ao b´asico (Basic) ´e um meio intermedi´ario, pois ´e baseado em uma ´unica chave que atesta todas as credenciais de uma grande quantidade de autenticadores. O modelo autoassinado (Auto) n˜ao agrega garantias de autenticidade da chave gerada.

(32)

2.3

Algoritmo AES

O Advanced Encryption Standard (AES) traduzido como Padr˜ao de Criptografia Avan¸cado foi estabelecido pelo Instituto Nacional de Padr˜oes e Tecnologia (NIST) dos EUA em 2001 [11]. Mas tamb´em ´e utilizado em larga escala na ind´ustria, adotado em protocolos como IP Security Protocol (IPSec),TLS, Secure Shell (SSH) e tamb´em no padr˜ao de criptografia WiFi Institute of Electrical and Electronics Engineers (IEEE) 802.11i.

´

E um padr˜ao de criptografia sim´etrica que implementa a cifra de bloco Rijndael com blocos de 128 bits e chaves de tamanho 128, 192 ou 256 bits. O algoritmo utiliza dados que s˜ao denominados: S-Box, ´e uma tabela de substitui¸c˜ao est´atica; estado, ´e o bloco de dados de 128 ( bits) fracionado da mensagem; a chave secreta conhecida somente pelas partes confi´aveis; e a chave de expans˜ao, derivada da chave. Estes dados s˜ao utilizados num algoritmo de cifragem baseado em quatro etapas:

• SubBytes: Substitui bytes do estado por bytes da S-Box

• ShiftRows: Desloca os bytes do estado de acordo com a fileira do bloco. • MixColumns: Multiplica os bytes do estado por um polinˆomio.

• AddRoundKey: Combina os bytes do estado com os bytes da chave de expans˜ao.

Este procedimento ´e aplicado ciclicamente sobre a mensagem de acordo com o tamanho da chave utilizada. O processo que decifra a mensagem ´e a execu¸c˜ao do algoritmo de forma inversa. Por ser um algoritmo de chave sim´etrica ´e mais eficaz e exige menos processamento para execu¸c˜ao se comparado com os algoritmos de chaves assim´etricas.

2.4

Infraestrutura de Chaves P´

ublicas

A Infraestrutura de Chaves P´ublicas (ICP), ou Public Key Infrastructure (PKI), ´e uma organiza¸c˜ao que inclui entidades p´ublicas e privadas afim de criar uma estrutura de confian¸ca digital [4]. ´E composta por entidades com diferentes fun¸c˜oes e que visam atribuir e verificar as identidades virtuais.

(33)

A organiza¸c˜ao ´e baseada em algumas constantes que permeiam a confian¸ca m´utua entre as entidades e os utilizadores:

• Autoridade de Certifica¸c˜ao Raiz, Root Certification Authority (CA): organiza¸c˜ao com mais alto n´ıvel de confian¸ca na hierarquia;

• Autoridade de Certifica¸c˜ao (CA): organiza¸c˜ao de confian¸ca dependente de uma Autoridade de Certifica¸c˜ao Raiz;

• Autoridade de Registro, Registration Authority (RA): organiza¸c˜ao que envia pedidos de cria¸c˜ao de identidades virtuais para as Autoridades de Certifica¸c˜ao;

• Lista de Revoga¸c˜ao de Certificado, Certificate Revocation List (CRL): lista que re´une identidades consideradas n˜ao confi´aveis ap´os sua cria¸c˜ao.

Essa estrutura pode ser particular, criada em um sistema, mas existe de forma p´ublica e considerada confi´avel em todo o ambiente virtual. E para fazer parte as autoridades precisam cumprir diversos requisitos impostos pela organiza¸c˜ao. A estrutura que identifica a autoridades e qualquer identidade ´e o certificado digital, que possui, entre outras informa¸c˜oes, as assinaturas baseadas em chaves assim´etricas do propriet´ario da identidade e das autoridades que a certificam.

AICP´e utilizada em diversos sistemas, para autenticar e-mails, documentos e prin-cipalmente na web, validando a identidade de sites, dando base para v´arios protocolos, entre eles o TLS e o processo de valida¸c˜ao da atesta¸c˜ao no FIDO. As identidades dos sites s˜ao validadas pelos clientes atrav´es da infraestrutura de chaves p´ublicas, onde os pacotes recebidos pelo cliente possuem a assinatura da chave privada do site.

O que permite a valida¸c˜ao das identidades pelo cliente ´e a lista de chaves de Autoridades de Certifica¸c˜ao Raiz Confi´aveis instaladas nos sistemas operacionais.

´

E atrav´es dessas chaves que as Autoridades de Certifica¸c˜ao e as identidades por elas assinadas s˜ao reconhecidas como autˆenticas. Com essa lista de Autoridades de Certifica¸c˜ao Raiz tamb´em s˜ao obtidas as Lista de Revoga¸c˜ao de Certificados.

(34)

2.5

Protocolo TLS

Na Internet, na maior parte das comunica¸c˜oes, ´e fundamental que haja privacidade, al´em da integridade das informa¸c˜oes. Isto significa que um observador externo n˜ao seja capaz de visualizar ou de alterar as mensagens. O protocolo TLS ´e a base para a comunica¸c˜ao segura na web, que permite a confian¸ca entre o cliente e o servidor. O TLS sucedeu o Secure Sockets Layer (SSL), considerado obsoleto pela Internet Engineering Task Force (IETF), passou por atualiza¸c˜oes de sua implementa¸c˜ao e sua vers˜ao 1.3, lan¸cada em agosto de 2018[7], tornou-se a vers˜ao confi´avel do protocolo.

OTLSestabelece uma conex˜ao privada atrav´es da utiliza¸c˜ao de criptografia sim´etrica, o que torna a comunica¸c˜ao mais r´apida em compara¸c˜ao a criptografia assim´etrica. Mas para construir este cen´ario, ´e necess´ario que haja uma troca de chaves, que ocorre atrav´es de um protocolo HandShake.

O HandShake, traduzido como aperto de m˜aos, ´e o processo que permite ao cliente e ao servidor estabelecerem confian¸ca m´utua entre as partes. O processo ´e baseado em no m´ınimo quatro etapas:

• No primeiro passo o cliente envia ao servidor uma mensagem ClientHello junto com o CipherSuite, uma lista de protocolos de criptografia aceitos pelo cliente; • O servidor envia para o cliente uma resposta contendo uma mensagem

Ser-verHello junto com o CipherSuite, baseado na lista de protocolos aceitos pelo cliente, al´em do certificado digital do servidor;

• O cliente verifica o certificado digital do servidor e baseado na lista de protocolos definido no CipherSuite, o cliente envia ao servidor uma sequˆencia de bytes que permite o c´alculo da chave secreta cifrados com a chave p´ublica recebida pelo certificado do servidor;

• Por fim, o servidor decifra os bytes, gera a chave secreta e responde ao cliente uma mensagem de HandShake conclu´ıdo, cifrada com a chave secreta, sinalizando ao cliente que pode iniciar a comunica¸c˜ao.

Com este processo, a sess˜ao segura ´e estabelecida e as mensagens possuem garantia de privacidade. Mas para a garantia da integridade ´e utilizado outro mecanismo

(35)

criptogr´afico, o Hash-based Message Authentication Code (HMAC), um hash para autentica¸c˜ao de mensagens. O mecanismo consiste na aplica¸c˜ao de uma fun¸c˜ao hash sobre a mensagem a ser enviada para garantir a integridade da mensagem. O protocolo consiste numa sequˆencia de dois passos:

• Aplica¸c˜ao de um hash sobre uma fun¸c˜ao XOR entre a chave secreta (K) e uma sequˆencia de bytes 0x36 de tamanho idˆentico a chave (ipad) junto com a mensagem a ser enviada: H(K ⊕ ipad, mensagem);

• Aplica¸c˜ao de um segundo hash sobre uma fun¸c˜ao XOR entre a chave sercreta (K) e uma sequˆencia de bytes 0x5C de tamanho idˆentico a chave (opad) junto com o hash anterior: H(k ⊕ opad, H(K ⊕ ipad, mensagem));

Desta forma, somente os conhecedores da chave secreta tˆem a capacidade de gerar novamente o hash que autentica a mensagem. O protocolo TLS ´e contru´ıdo sobre a camada de transporte, podendo servir a diversas aplica¸c˜oes e protocolos, comoHTTP, File Transfer Protocol (FTP), Simple Mail Transfer Protocol (SMTP) e outros. Esta camada de segura¸ca ´e transparente para as aplica¸c˜oes e pode ser utilizada por diversos protocolos.

(36)
(37)

FIDO2

3.1

Introdu¸

ao

A autentica¸c˜ao ´e aplicada por diversos mecanismos nos sistemas, que acabam sendo um vetor de ataque muito explorado por hackers. O desafio ´e implementar um meio seguro e user frendly, ou seja, f´acil de utilizar na ´optica do usu´ario.

A usabilidade costuma ser o oposto de seguran¸ca no cen´ario da autentica¸c˜ao, um meio f´acil de ser utilizado acaba sendo inseguro na maioria das vezes. A complexidade acaba sendo o pre¸co a se pagar pela seguran¸ca, senhas extensas e com v´arios crit´erios garantem eficiˆencia contra ataques de dicion´arios, de for¸ca bruta e outros. Mas isto acaba criando uma resistˆencia do usu´ario para utilizar o sistema e seguir a normas de seguran¸ca previstas. O resultado geralmente ´e um post-it com a senha na mesa de trabalho.

O outro lado do desafio ´e manter o segredo da senha armazenada de forma segura no servidor. O uso de hashes para armazenar a senha, de salt para evitar um ataque por rainbow table, s˜ao mecanismos seguros e complexos mas que n˜ao suprimem a necessidade de armazenar o segredo da senha em uma base de dados.

O protocolo denominado FIDO (Fast IDentity Online, traduzido de forma literal como identidade r´apida online) foi projetado pela FIDO Alliance e utiliza chaves assim´etricas para autentica¸c˜ao. A organiza¸c˜ao surgiu depois que em 2009, as empresas

(38)

Validity Sensors e PayPal discutiram a necessidade de implementar um padr˜ao de autentica¸c˜ao sem o uso de senhas.

Em 2012 esse grupo de empresas aumentou, juntaram-se Lenovo, Nok Nok Labs, In-fineon e Agnitio para o in´ıcio da implementa¸c˜ao do protocolo passwordless (sem uso de senhas) anteriormente debatido. Em fevereiro de 2013 a organiza¸c˜ao foi publicamente estabelecida.

Atualmente a organiza¸c˜ao conta com a participa¸c˜ao das maiores empresas de tecno-logia (Google e Microsoft), redes sociais (Facebook, Twitter), operadores financeiros (Paypal e VISA) e ´org˜aos governamentais (NIST). Foi desenvolvida a segunda vers˜ao do protocolo, FIDO2, que utiliza o padr˜ao de autentica¸c˜ao web (WebAuthn) doW3C

(World Wide Web Consortium) e especifica o protocolo de autentica¸c˜ao do cliente

CTAP (Client to Autheticator Protocol ).

O FIDO2 faz o uso do protocolo WebAuthn para utilizar chaves p´ublicas na auten-tica¸c˜ao. O servidor implementa a API WebAuthn que envia ao cliente os dados para as opera¸c˜oes de registro e autentica¸c˜ao. Atrav´es destas opera¸c˜oes, o servidor recebe os dados para para armazenar uma chave p´ublica de um usu´ario, quando ocorre um registro. Ou o servidor recebe os dados de uma assinatura para comparar com a chave p´ublica previamente armazenada, quando ocorre uma autentica¸c˜ao.

O FIDO2 tamb´em especifica o CTAP para comunica¸c˜ao da plataforma do cliente com um autenticador f´ısico que cria as credenciais e armazena as chaves privadas. O CTAP define um padr˜ao para as requisi¸c˜oes e as respostas na comunica¸c˜ao do autenticador com a plataforma. Parte das defini¸c˜oes ´e o tipo de comunica¸c˜ao f´ısica, que pode ser Universal Serial Bus (USB), Bluetooth ou Near Field Communication (NFC). O autenticador ainda pode ser virtual e estar conectado na plataforma, por exemplo, o Windows Hello. Um dispositivo virtual neste formato est´a conectado na plataforma, reconhecido como um autenticador e vai gerar uma resposta com os mesmos objetos previstos peloCTAP, sem a necessidade de haver transporte f´ısico entre o autenticador e a plataforma.

(39)

Entre o servidor e o autenticador, o navegador faz a interlocu¸c˜ao dos protocolos, os dados recebidos do protocolo WebAuthn s˜ao interpretados e encaminhados para a plataforma do cliente para utiliza¸c˜ao dos autenticadores compat´ıveis. ´E o navegador que mant´em a sess˜ao com o servidor no per´ıodo que o autenticador efetua as opera¸c˜oes. Por fim, o navegador ainda encapsula os objetos para gerar a resposta enviada ao servidor WebAuthn.

Figura 3.1: Fluxo FIDO2 (WebAuthn + CTAP)

3.2

WebAuthn

O WebAuthn[18] especifica umaAPI web que permite a utiliza¸c˜ao de chaves p´ublicas para autentica¸c˜ao e suporta autenticadoresFIDOem plataformas e navegadores com-pat´ıveis. Essa especifica¸c˜ao foi conclu´ıda atrav´es da parceria entre o W3Ce a FIDO Alliance e estabelecida como um padr˜ao de autentica¸c˜ao da web W3C em mar¸co de 2019.

A API WebAuthn implementa principalmente dois processos que se comunicam diretamente com a API dispon´ıvel nos navegadores suportados. Os navegadores executam a comunica¸c˜ao com os autenticadores e retornam a informa¸c˜ao necess´aria para continuar com os processos. Os dois processos essenciais para um servi¸co online s˜ao o registro e a autentica¸c˜ao.

3.2.1

Registro

O processo de registro cria uma credencial para posterior utiliza¸c˜ao no processo de autentica¸c˜ao. Para um servi¸co online (servidor ou Relying Party Server ) iniciar esse processo ´e necess´ario adequar o fluxo de acesso do usu´ario para que seja poss´ıvel incluir esse meio de autentica¸c˜ao.

(40)

O primeiro passo ´e submeter um objeto PublicKeyCredentialCreationOptions para o navegador do cliente iniciar o processo de cria¸c˜ao de um novo par de chaves atrav´es do m´etodo navigator.credentials.create(). Neste objeto est˜ao as seguintes informa¸c˜oes:

• challenge: buffer randˆomico para evitar ataques de repeti¸c˜ao; • rp: informa¸c˜oes do servidor/servi¸co;

• user: informa¸c˜oes do usu´ario;

• pubKeyCredParams: array de objetos com os tipos de chaves aceitas pelo servi-dor seguindo o formato CBORObject Signing and Encryption (COSE);

• authenticatorSelection: defini¸c˜ao de autenticadores pretendidos no processo. Permite ao servidor exigir um tipo de autenticador.

• timeout : tempo de espera em milissegundos para resposta;

• attestation: define o tipo de atesta¸c˜ao pretendida pelo servidor. A atesta¸c˜ao ´e uma assinatura do autenticador com a chave da autoridade de atestado, ins-talada no autenticador pelo fabricante. Os tipos podem ser: none, indicando que o servidor n˜ao analisa a atesta¸c˜ao; indirect : indica que o servidor aceita atesta¸c˜ao anˆonima; direct : indica que o servidor espera uma atesta¸c˜ao publica-mente v´alida.

Ap´os o envio destas informa¸c˜oes ao cliente, o servidor mant´em a sess˜ao em espera de resposta pelo tempo definido em timeout. Nesse per´ıodo o autenticador gera um par de chaves e retorna atrav´es da plataforma do cliente as informa¸c˜oes para concluir o registro no servidor.

A resposta deve conter um objeto AuthenticatorAttestationResponse, que cont´em a credencial gerada pelo autenticador. A credencial segue com alguns dados que servem para validar sua autenticidade:

• id: identificador da credencial gerado pelo autenticador, codificado em base64; • rawId: o mesmo identificador em formato bin´ario;

(41)

• response:clientDataJSON:informa¸c˜oes trocadas entre o navegador e o autentica-dor: challenge: mesmo buffer aleat´orio enviado pelo servidor que serve para verifica¸c˜ao. origin: endere¸co do servidor. type: deve conter a string ”we-bauthn.create”, caso contr´ario o autenticador efetuou uma opera¸c˜ao incorreta. • response:attestationObject: cont´em a credencial de chave p´ublica gerada e a

assinatura que valida a autenticidade: authData: dados do autenticador e a chave p´ublica em formatoCOSE. fmt: formato da atesta¸c˜ao. attStmt: atesta¸c˜ao da credencial contendo a assinatura com a chave da autoridade de atestado.

Se os dados forem validados, a chave p´ublica ´e armazenada no servidor para ser utilizada na autentica¸c˜ao do usu´ario junto com os dados de valida¸c˜ao da credencial (id e rawId).

Figura 3.2: Fluxo de Registro WebAuthn

3.2.2

Autentica¸

ao

O processo de autentica¸c˜ao requer um processo de registro anterior, pois a chave p´ublica registrada ser´a utilizada para verifica¸c˜ao da assinatura enviada na auten-tica¸c˜ao. O fluxo de autentica¸c˜ao baseado no WebAuthn pode ser adequado com o cen´ario do servi¸co online, podendo inclusive ser o ´unico meio e fator de acesso.

O primeiro passo, ap´os o servidor receber uma requisi¸c˜ao de autentica¸c˜ao de um usu´ario, ´e o envio de um objeto publicKeyCredentialRequestOptions para o navegador do cliente atrav´es do m´etodo navigator.credentials.get(). O objeto cont´em as seguintes informa¸c˜oes:

(42)

• allowCredentials: uma lista com o identificador das credenciais aceitas, o tipo de credencial e o tipo de comunica¸c˜ao do autenticador;

• timeout : tempo de espera em milissegundos para resposta;

Com estas informa¸c˜oes o autenticador consegue identificar a credencial solicitada atrav´es do endere¸co do servidor e do identificador da credencial. Se a credencial estiver presente no autenticador, ser´a enviada a resposta contendo a assinatura da chave privada correspondente. A resposta para o servidor vai conter os dados a seguir:

• id: identificador da credencial gerado pelo autenticador durante o registro. • rawId: identificador em formato bin´ario.

• response:authenticatorData: dados do autenticador que s˜ao utilizados na assi-natura.

• response:clientDataJSON: cont´em informa¸c˜oes da opera¸c˜ao efetuada entre o navegador e autenticador: challenge: buffer randˆomico que valida a sess˜ao; origin: endere¸co do servidor; type: deve conter a string ”webauthn.get”para validar o tipo da opera¸c˜ao.

• response:signature: assinatura da chave privada da credencial, para ser validada pelo servidor com a chave p´ublica.

• response:userHandle: ´e um dado opcional que o autenticador pode utilizar para enviar o us´ario da credencial.

• type: deve conter a string ”public-key”para identificar o tipo da credencial.

(43)

3.3

CTAP

O Client to Authenticator Protocol (CTAP)[2] ´e o protocolo de comunica¸c˜ao utilizado pelo autenticador durante os processos com o navegador que gere as credenciais e a intera¸c˜ao com o usu´ario. O protocolo ´e baseado em trˆes estruturas: AAPI de auten-tica¸c˜ao, o mecanismo de codifica¸c˜ao da mensagens e a conex˜ao f´ısica do autenticador.

A conex˜ao do autenticador e a codifica¸c˜ao das mensagens s˜ao mecanismos dependen-tes do meio f´ısico. A codifica¸c˜ao ser´a efetuada de acordo com o meio de conex˜ao, que pode ser USB, NFC ou Bluetooth. Cada meio de conex˜ao possui suas peculiaridades e demandam de defini¸c˜oes espec´ıficas para a comunica¸c˜ao.

A API do autenticador prevˆe o desenvolvimento de dois principais m´etodos que ser˜ao a resposta para os processos de registro e autentica¸c˜ao previstos no WebAuthn, MakeCredential e GetAssertion respectivamente. Al´em destes, existe defini¸c˜ao de outros quatro m´etodos:

• GetNextAssertion: ´e um m´etodo complementar para casos em que a chamada do m´etodo GetAssertion retorna a informa¸c˜ao numberOfCredentials com um valor maior que um. Neste caso o GetNextAssetion retorna a pr´oxima credencial da lista de credenciais eleg´ıveis para o servidor em quest˜ao;

• GetInfo: para obter informa¸c˜oes sobre o autenticador. Quando chamado, a resposta cont´em a lista de vers˜oes de protocolo com suporte, o AAGUID (iden-tificador do autenticador), os recursos e as capacidades do dispositivo;

• ClientPIN : para redefinir o PIN do autenticador ou criar um v´ınculo de confian¸ca com a plataforma;

• Reset : para redefinir as informa¸c˜oes do autenticador. Quando acionado, todas as credenciais s˜ao exclu´ıdas e o autenticador redefine as configura¸c˜oes pr´e-definidas em suas fabrica¸c˜ao.

3.3.1

MakeCredential

Este m´etodo responde a requisi¸c˜ao do servidor WebAuthn navigator.credentials.create(), tratada pelo navegador e encaminhada para o autenticador com os dados necess´arios.

(44)

Para a chamada deste m´etodo s˜ao necess´arios os seguintes parˆametros:

• clientDataHash: dados da opera¸c˜ao com o navegador contendo principalmente o endere¸co do servidor e o challenge que ser´a utilizado para gerar o attStmt (objeto de atesta¸c˜ao).

• rp: identificador e endere¸co do servidor. • user : identificador e utilizador do usu´ario

• pubKeyCredParams: lista de tipos de credenciais aceitas pelo servidor em for-mato de array de objetosCBOR.

A resposta do m´etodo ´e o objeto AttestationObject que cont´em: um array de bytes com os dados da credencial denominado authData; uma string com o formato de atesta¸c˜ao denominado fmt ; e um array de bytes contendo a atesta¸c˜ao denominado attStmt. O processo de cria¸c˜ao da credencial gera principalmente o objeto authData, que deve conter os dado a seguir:

• rpIdHash: hash SHA-256 do identificador do servidor (Relying Paty ID). • flags: um byte com defini¸c˜oes sobre a opera¸c˜ao: bit 0 aponta a presen¸ca do

usu´ario; bits 1, 3, 4 e 5 reservado para uso futuro; bit 2 aponta a verifica¸c˜ao do usu´ario; bit 6 aponta a presen¸ca de dados da credencial; bit 7 aponta a presen¸ca de extens˜oes.

• signCount : contador de autentica¸c˜oes que permite ao servidor verificar se o autenticador foi clonado. Na cria¸c˜ao da credencial, esse contado inicia em 0. • attestedCredentialData: objeto contendo o identificador do autenticador, o

iden-tificador da credencial e a chave p´ublica em formato COSE.

• extensions: dados opcionais que permitem adicionar funcionalidades ao processo, adequando-se a casos de uso espec´ıficos.

(45)

3.3.2

GetAssertion

Utilizado par autentica¸c˜oes, este m´etodo responde a requisi¸c˜ao navigator.credentials.get(). O navegador envia para o autenticador os dados a seguir:

• rpId : identificador do servidor.

• clientDataHash: dados da opera¸c˜ao com o navegador contendo principalmente o endere¸co do servidor e o challenge que ser´a utilizado para gerar o attStmt (objeto de atesta¸c˜ao).

• allowList : informa¸c˜ao opcional com uma lista de identificadores de credenciais aceitas pelo servidor.

A resposta do autenticador deve conter principalmente dados que permitam ao servidor WebAuthn validar a identidade utilizando a chave p´ublica previamente arma-zenada neste mesmo servidor pelo processo de registro do WebAuthn (MakeCredencial efetuado pelo CTAP). Os dados retornados contˆem as informa¸c˜oes a seguir:

• credential : descri¸c˜ao da credencial (opcional).

• authData: dados do autenticador similar ao objeto enviado na cria¸c˜ao da cre-dencial, mas sem a chave p´ublica.

• signature: assinatura dos objetos authData e clientDataHash utilizados pelo servidor para verifica¸c˜ao baseada na chave p´ublica.

• user : informa¸c˜oes do usu´ario (opcional).

(46)

3.4

Requisitos de Seguran¸

ca

Para implementa¸c˜ao do protocolo FIDO, que compreende o servidor WebAuthn e o autenticadorFIDO, existem medidas a serem tomadas para que se alcancem as metas de seguran¸ca necess´arias. Entre os objetivos do protocolo, s˜ao definidas dezesseis metas de seguran¸ca que devem ser seguidas pelo servidor WebAuthn e pelo autenticador

FIDO. Estas metas tˆem uma rela¸c˜ao de vinte e nove medidas para serem alcan¸cadas de forma integral. As metas de seguran¸ca (MS) s˜ao:

• MS-1 Autentica¸c˜ao forte do usu´ario: uso de criptografia avan¸cada para reconhe-cer o interlocutor;

• MS-2 Resiliˆencia de adivinha¸c˜ao de credencial: prote¸c˜ao robusta contra ataques de adivinha¸c˜ao;

• MS-3 Resiliˆencia de divulga¸c˜ao de credenciais: resistˆencia a ataques de phishing, mesmo quando o advers´ario tem a capacidade de manipular o tr´afego de rede; • MS-4 N˜ao vincula¸c˜ao: prote¸c˜ao da conversa para impedir a vincula¸c˜ao de uma

comunica¸c˜ao a um usu´ario;

• MS-5 Resiliˆencia a vazamentos do verificador: resistˆencia a vazamentos de outras partes confi´aveis;

• MS-6 Resiliˆencia a vazamentos de autenticador: resistˆencia a vazamentos de um autenticador, nada que um autenticador possa vazar pode ajudar um invasor a se passar por outro usu´ario;

• MS-7 Consentimento do usu´ario: exigˆencia de um reconhecimento expl´ıcito sempre que ocorrer a rela¸c˜ao com uma parte confi´avel;

• MS-8 Informa¸c˜ao de identifica¸c˜ao pessoal m´ınima: exposi¸c˜ao m´ınima da identi-fica¸c˜ao pessoal para as partes confi´aveis;

• MS-9 Propriedades atest´aveis: possibilidade de verifica¸c˜ao do modelo/tipo do autenticador pela parte confi´avel;

• MS-10 Resistˆencia Denial of Service (DoS): resiliˆencia a ataques de nega¸c˜ao de servi¸co, de forma a impedir inclus˜ao de informa¸c˜oes inv´alidas que neguem o acesso leg´ıtimo do usu´ario;

(47)

• MS-11 Resistˆencia a falsifica¸c˜ao: resiliˆencia a ataques que invasores interceptam comunica¸c˜oes para se passar por um usu´ario leg´ıtimo;

• MS-12 Resistˆencia de sess˜ao paralela: resiliˆencia a ataques que manipulam mensagens de autentica¸c˜ao;

• MS-13 Resistˆencia a encaminhamento: resiliˆencia a ataques de repeti¸c˜ao de comunica¸c˜oes interceptadas;

• MS-14 N˜ao rep´udio de transa¸c˜ao: uso de criptografia para o n˜ao rep´udio de transa¸c˜oes seguras;

• MS-15 Respeito pelos limites de seguran¸ca operacional: prote¸c˜ao do material criptogr´afico no ambiente operacional do dispositivo do usu´ario;

• MS-16 N´ıvel de seguran¸ca avali´avel: uso de padr˜oes transparentes para an´alise da seguran¸ca aplicada na implementa¸c˜ao de autenticadores.

Cada medida de segura¸ca implementada possui uma ou mais metas atingidas ou parcialmente atingidas, de forma que todas as medidas implementadas alcan¸cam todas as metas estabelecidas. A ´unica exce¸c˜ao ´e a MS-16, que permeia o modelo de implementa¸c˜ao de um autenticador. A lista de medidas a serem implementadas (MI) s˜ao:

• MI-1 Prote¸c˜ao da chave: mecanismo de bloqueio da chave privada, exigindo a autoriza¸c˜ao do usu´ario para utilizar a credencial;

• MI-2 Chaves de autentica¸c˜ao exclusiva: um par de chaves novo ´e gerado para autentica¸c˜ao em cada parte confi´avel e usu´ario distintos;

• MI-3 Atestado de classe do autenticador: utiliza¸c˜ao de uma chave assinada por uma autoridade p´ublica para reconhecer a procedˆencia do autenticador. Geralmente a chave ´e a mesma para um modelo/tipo de autenticador;

• MI-4 Verifica¸c˜ao de status do autenticador: os autenticadores devem informar o status para que as partes confi´aveis possam acessar a informa¸c˜ao se o dispositivo foi comprometido;

• MI-5 Consentimento do usu´ario: o cliente FIDOsolicita a permiss˜ao do usu´ario em toda a intera¸c˜ao com uma parte confi´avel;

(48)

• MI-6 Base de dados do verificador criptograficamente segura: a parte confi´avel mant´em somente a parte p´ublica da credencial no seu cadastro;

• MI-7 Canal seguro de autentica¸c˜ao de servidor: o protocolo TLS com auten-tica¸c˜ao do servidor deve ser utilizado na comunica¸c˜ao entre a parte confi´avel e o cliente. O Hypertext Transfer Protocol Secure (HTTPS) ´e imposto por um navegador ou aplica¸c˜ao;

• MI-8 Protocolo Nonce: uso de n´umeros aleat´orios nas opera¸c˜oes para evitar ataques de repeti¸c˜ao;

• MI-9 Certifica¸c˜ao de autenticador: mecanismo para notificar status de certi-fica¸c˜ao do autenticador;

• MI-10 Confirma¸c˜ao de transa¸c˜ao: exibi¸c˜ao de dados da transa¸c˜ao para o usu´ario; • MI-11 Integridade na comunica¸c˜ao: o servidor utiliza o desafio enviado na

solicita¸c˜ao da opera¸c˜ao para verificar a integridade da mensagem;

• MI-12 Vincula¸c˜ao de canal: os servidores podem verificar a continuidade de um canal seguro com um aplicativo cliente;

• MI-13 Acesso protegido ao autenticador: o autenticador restringe o acesso `as chaves, liberado mediante interven¸c˜ao do usu´ario;

• MI-14 Defini¸c˜ao de identificador da parte confi´vel: o valor rpId restringe o acesso `

as chaves com este identificador, que ´e derivado automaticamente da origem da web;

• MI-15 Contador de assinaturas: toda credencial tem um contador armazenado no autenticador que remete e incrementa esse valor em toda a transa¸c˜ao. Este processo permite ao servidor a verifica¸c˜ao de uma poss´ıvel clonagem do autenti-cador/credencial;

• MI-16 Uso de protocolos criptogr´aficos modernos: uso de cifras e chaves adequa-das com os dispositivos que cumprem os n´ıveis de complexidade exigidos pela especifica¸c˜ao;

• MI-17 Resistˆencia a ataques de canal;

(49)

• MI-19 Probabilidade limitada de uma colis˜ao de anivers´ario: uso de algoritmos complexos para gera¸c˜ao de n´umeros aleat´orios;

• MI-20 Autenticadores indistingu´ıveis: utiliza¸c˜ao de chave de atesta¸c˜ao idˆentica para uma quantidade consider´avel de autenticadores;

• MI-21 Autentica¸c˜ao e resistˆencia a reprodu¸c˜ao de informa¸c˜oes protegidas arma-zenadas externamente;

• MI-22 Autenticadores testados e certificados FIDO;

• MI-23 Os identificadores das chaves s˜ao vinculados ao autenticador que produziu a credencial;

• MI-24 A fabrica¸c˜ao dos autenticadores certificados FIDO possuem suporte `a seguran¸ca do autenticador;

• MI-25 Um alto n´ıvel de certifica¸c˜ao do autenticador pode suportar uma ´arvore de confian¸ca de todas a intera¸c˜oes do autenticador;

• MI-26 Valida¸c˜ao dos dados de entrada: os dados s˜ao validados pelo autenticador para evitar execu¸c˜ao maliciosa dentro do ambiente seguro que possui as chaves privadas;

• MI-27 Prote¸c˜ao dos dados de verifica¸c˜ao do usu´ario: quando presentes, os dados biom´etricos ou PINs s˜ao armazenados de forma segura;

• MI-28 Resistˆencia a ataques de inje¸c˜ao de falha;

• MI-29 Resistˆencia a ataques de cronometragem remota: n˜ao h´a vazamento de informa¸c˜oes secretas a terceiros por meio da varia¸c˜ao do tempo de execu¸c˜ao da opera¸c˜ao.

A tabela a seguir representa a rela¸c˜ao entre as metas de seguran¸ca e as medidas com implementa¸c˜ao necess´aria para serem alcan¸cadas:

(50)

Meta de Seguran¸ca Medidas Implementadas MS-1 Autentica¸c˜ao forte do usu´ario MI-1, MI-12, MI-14, MI-15,

MI-16, MI-17, MI-21, MI-23, MI-25, MI-29

MS-2 Resiliˆencia de adivinha¸c˜ao de credencial MI-1, MI-6, MI-16

MS-3 Resiliˆencia de divulga¸c˜ao de credenciais MI-1, MI-9, MI-15, MI-17, MI-29

MS-4 N˜ao vincula¸c˜ao MI-2, MI-3, MI-20 MS-5 Resiliˆencia a vazamentos do verificador MI-2, MI-6, MI-16 MS-6 Resiliˆencia a vazamentos de autenticador MI-9, MI-15, MI-16 MS-7 Consentimento do usu´ario MI-1, MI-5, MI-7, MI-10,

MI-25 MS-8 Informa¸c˜ao de identifica¸c˜ao pessoal m´ınima MI-2, MI-20 MS-9 Propriedades atest´aveis MI-3, MI-4, MI-9 MS-10 Resistˆencia DoS MI-8

MS-11 Resistˆencia a falsifica¸c˜ao MI-7, MI-8, MI-11, MI-12 MI-17, MI-23, MI-29 MS-12 Resistˆencia de sess˜ao paralela MI-7, MI-8, MI-11, MI-12 MS-13 Resistˆencia a encaminhamento MI-7, MI-8, MI-11, MI-12 MS-14 N˜ao rep´udio de transa¸c˜ao MI-1, MI-2, MI-8, MI-10

MI-11, MI-12, MI-25 MS-15 Respeito pelos limites de seguran¸ca operacional MI-13, MI-14

Tabela 3.1: Rela¸c˜ao de Metas de Seguran¸ca X Medidas Implementadas

3.5

Estado da Arte

A solu¸c˜ao mais atual para implementar um m´etodo de autentica¸c˜ao forte ´e o uso de chaves m´oveis, que s˜ao v´alidas na infraestrutura de chaves p´ublicas e autenticadas por ela. ´E um m´etodo eficaz e seguro se for aplicado da maneira correta, mas implica custo para cada chave gerada. Levando em considera¸c˜ao que uma chave n˜ao deve ser utilizada em mais de uma conta, para cada conta o usu´ario precisa gerar uma nova chave e pagar pela valida¸c˜ao p´ublica da mesma.

(51)

A proposta do protocolo FIDO2 ´e criar um mecanismo de autentica¸c˜ao forte que atende as duas principais necessidades de um modelo de autentica¸c˜ao. A senha ´e complexa e n˜ao est´a dispon´ıvel para observadores externos e ao mesmo tempo ´e f´acil para o usu´ario inser´ı-la a qualquer momento. O modelo tamb´em ´e baseado em chaves p´ublicas, mas o protocolo prevˆe a cria¸c˜ao de chaves protegidas por um dispositivo f´ısico ou virtual e somente uma chave v´alida publicamente, que serve de atesta¸c˜ao para as credenciais criadas.

Atualmente o protocolo FIDO2 possui implanta¸c˜oes comerciais em 22 organiza¸c˜oes, entre elas est˜ao as empresas Google, Facebook e Github. J´a existem ao menos 90 implementa¸c˜oes de autenticadores por diversos fabricantes, entre eles as empresas Yubico e Solokeys. A alian¸ca oferece trˆes programas de certifica¸c˜ao[3]: teste de inte-roperabilidade funcional (para servidores, clientes e autenticadores), teste de n´ıvel de autenticador certificado (que analisa o grau de seguran¸ca oferecido por autenticadores) e teste de certifica¸c˜ao de componente biom´etrico (para autenticadores aplic´aveis).

Neste cen´ario, o acr´escimo da interoperabilidade do protocolo FIDOpara a solu¸c˜ao de autentica¸c˜ao da empresa Loqr SA agrega seguran¸ca e visibilidade. A compatibi-lidade do servidor pode permitir ao usu´ario a utiliza¸c˜ao de um autenticadorFIDO e para a aplica¸c˜ao ´e a garantia de seguran¸ca e agilidade na comunica¸c˜ao com o servidor.

(52)
(53)

An´

alise de Requisitos

4.1

Introdu¸

ao

Neste cap´ıtulo ´e apresentada a lista de requisitos da solu¸c˜ao desenvolvida para ser interoper´avel com o padr˜ao FIDO. Os requisitos s˜ao divididos de acordo com o cen´ario da solu¸c˜ao, que compreende um servidor WebAuthn e um cliente que autentica seguindo o protocolo. Os casos de uso do servidor s˜ao conectados aos casos de uso do cliente autenticador, ou seja, os pedidos enviados ao servidor retornam informa¸c˜oes que s˜ao a entrada de dados para os casos de uso do autenticador, mas ser˜ao analisados separadamente.

A solu¸c˜ao de autentica¸c˜ao implementada pela empresa Loqr SA, no in´ıcio deste trabalho, utiliza um protocolo pr´oprio para fazer a vincula¸c˜ao e autentica¸c˜ao de usu´arios no servidor. A sess˜ao a seguir explica o funcionamento da solu¸c˜ao e como o padr˜ao FIDOser´a inclu´ıdo como uma op¸c˜ao a ser utilizada pela empresa.

4.2

Solu¸

ao Loqr SA

A solu¸c˜ao da empresa Loqr SA, a ser adequada para ter interoperabilidade com o padr˜aoFIDO, tem como fun¸c˜ao aplicar autentica¸c˜ao forte aos usu´arios de um servi¸co antes de permitir o acesso. A solu¸c˜ao se comunica com o usu´ario atrav´es de uma aplica¸c˜ao para dispositivos m´oveis, permitindo a cria¸c˜ao de um v´ınculo do dispositivo com a identidade deste usu´ario. Para autentica¸c˜ao ´e utilizado este v´ınculo previamente

(54)

efetuado.

O diagrama a seguir apresenta os estados do processo de emparelhamento, que vincula a aplica¸c˜ao de dispositivo ao registro do usu´ario:

• Autenticar no portal: o usu´ario autenticado na p´agina web do servi¸co, utilizando um navegador, inicia a autentica¸c˜ao;

• Apresentar p´agina de gest˜ao da conta pessoal: o sistema exibe a p´agina onde, entre outras fun¸c˜oes, permite a gest˜ao de credenciais;

• Escolher emparelhar dispositivo: o usu´ario escolhe emparelhar dispositivo para iniciar o processo;

• Mostrar QR Code: o servidor exibe um QR Code para que a aplica¸c˜ao obtenha os dados contidos nele;

• Ler QR Code: a aplica¸c˜ao obt´em informa¸c˜oes necess´arias para o emparelhamento atrav´es do QR Code, que cont´em os dados de acesso a autentica¸c˜ao ao servidor e solicita ao usu´ario permiss˜ao para criar o v´ınculo;

• Conceder autoriza¸c˜ao: o usu´ario permite o emparelhamento atrav´es da aplica¸c˜ao;

• Enviar informa¸c˜ao ao sistema: tendo por base os dados contidos no QR Code, a aplica¸c˜ao gera um conjunto de informa¸c˜oes un´ıvocas, que associa o usu´ario ao dispositivo utilizando um par de chave assim´etricas e envia para o sistema;

• Emparelhar dispositivo com a conta do usu´ario: o servidor armazena os dados de identifica¸c˜ao do dispositivo, vinculando-o ao o usu´ario;

• Mostrar mensagem: por fim, o usu´ario recebe uma mensagem de sucesso no emparelhamento.

(55)

Figura 4.1: Emparelhamento Sistema Loqr SA

O processo de autentica¸c˜ao segue um fluxo similar, mas desta vez j´a existe um v´ınculo de seguran¸ca entre o servidor e a aplica¸c˜ao no dispositivo do usu´ario. Neste caso o servidor ´e que notifica a aplica¸c˜ao sobre o processo de autentica¸c˜ao que est´a ocorrendo atrav´es de uma mensagem push notification. Ap´os a primeira autentica¸c˜ao atrav´es da aplica¸c˜ao, se o servi¸co ao qual o usu´ario pretende aceder est´a configurado para aceitar Single Sign-On (SSO), ser˜ao utilizados os mesmos dados da sess˜ao exis-tente no navegador, evitando a necessidade de nova autentica¸c˜ao forte pelo usu´ario. A figura a seguir representa o digrama de estados do processo:

• Aceder ao portal: o usu´ario acessa a aplica¸c˜ao de acesso ao sistema Loqr; • Fazer pedido da p´agina: o usu´ario acessa a p´agina web de autentica¸c˜ao no

navegador;

• Verificar se o usu´ario est´a autenticado: o sistema verifica se o usu´ario possui alguma sess˜ao v´alida na aplica¸c˜ao e encaminha para o processo se n˜ao houver; • Redirecionar para o servi¸co de autentica¸c˜ao: o servidor verifica se h´a uma sess˜ao

v´alida no navegador para seguir atrav´es de SSO se o servi¸co permitir;

• Apresentar p´agina de autentica¸c˜ao: o navegador exibe a p´agina de autentica¸c˜ao; • Inserir nome de utilizador: o usu´ario insere o nome de utilizador na p´agina

exibida no navegador;

• Enviar push notification: o servidor enviar uma notifica¸c˜ao para a aplica¸c˜ao no dispositivo do usu´ario;

(56)

• Contirmar autentica¸c˜ao: na aplica¸c˜ao o usu´ario confirma a autentica¸c˜ao em curso, dependendo do n´ıvel requerido para o servi¸co, pode ser atrav´es de PIN, fingerprint, reconhecimento facial ou simples bot˜ao;

• Validar autentica¸c˜ao: o servidor valida a autentica¸c˜ao feita na aplica¸c˜ao; • Carregar dados: o servidor carrega os dados do usu´ario autenticado; • Apresentar p´agina: o navegador carrega a sess˜ao do usu´ario autenticado.

Figura 4.2: Autentica¸c˜ao Sistema Loqr SA

4.3

Arquitetura

Para definir as funcionalidades necess´arias para o cliente e o servidor, ´e necess´ario analisar a arquitetura da solu¸c˜ao e os casos de uso a serem implementados. O sistema adaptado ao protocolo FIDO envolve trˆes componentes: o servidor WebAuthn, o navegador e o autenticador do cliente, neste caso a aplica¸c˜ao a ser desenvolvida. Cada um dos componentes possui suas fun¸c˜oes espec´ıficas e no caso do navegador, ´

e desenvolvido por terceiros e deve ser compat´ıvel com o protocolo.

Levando em conta a estrutura do sistema, h´a trˆes modelos de arquitetura de funci-onamento:

(57)

• O servidor WebAuthn Loqr SA registra e autentica as credenciais FIDO da aplica¸c˜ao Loqr SA;

• O servidor WebAuthn Loqr SA registra e autentica as credenciais de autentica-dores FIDO de terceiros;

• A aplica¸c˜ao Loqr SA registra e autentica as credenciais FIDO em servidores WebAuthn de terceiros;

4.3.1

Servidor Loqr SA e Aplica¸

ao Loqr SA

Para atender ao caso de uso onde servidor e cliente s˜ao conhecidos e pr´e-definidos ´e necess´ario a implementa¸c˜ao da API WebAuthn no servidor para permitir a utiliza¸c˜ao das credenciais FIDO. Na aplica¸c˜ao ´e necess´ario o acr´escimo de um componente que crie as credenciais FIDOe efetue registro e autentica¸c˜ao no servidor.

Neste caso de uso o servidor da empresa Loqr SA, atrav´es da API WebAuthn, se comunica diretamente com a aplica¸c˜ao da empresa Loqr SA e permite o uso de credenciais FIDO. Com esta implementa¸c˜ao a solu¸c˜ao de autentica¸c˜ao da empresa Loqr SA ganha uma op¸c˜ao de emparelhamento para o dispositivo do usu´ario com o servidor. A figura 4.3 representa o diagrama de componentes deste caso de uso.

Figura 4.3: Servidor Loqr SA e Aplica¸c˜ao Loqr SA

4.3.2

Servidor Loqr SA e Autenticadores de Terceiros

Para o cen´ario em que o servidor da empresa Loqr SA se comunica com autenticadores

FIDO de terceiros, basta que o servidor implemente a API WebAuthn. Neste caso a comunica¸c˜ao vai ser intermediada com o navegador do cliente, que mant´em a sess˜ao das opera¸c˜oes e envia ao autenticador FIDOos dados necess´arios para gerar as credenciais e assinaturas seguindo o protocolo WebAuthn.

Referências

Documentos relacionados

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

Chora Peito Chora Joao Bosco e Vinicius 000 / 001.. Chão De Giz Camila e

ensino superior como um todo e para o curso específico; desenho do projeto: a identidade da educação a distância; equipe profissional multidisciplinar;comunicação/interatividade

Para discutir a temática, iniciaremos nossa incursão teórica a partir da concepção de religião implícita em DURKHEIM (1996), mais especificamente sobre a religião como

1) As Operadoras obrigam-se a cumprir o que foi declarado na CPI da Telefonia Móvel em Santa Catarina quanto à execução de investimentos previstos nos termos do Plano de Melhoria

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

fraturas por torção fraturas por tor. fraturas por tor ç ç

Este estudo apresenta como tema central a análise sobre os processos de inclusão social de jovens e adultos com deficiência, alunos da APAE , assim, percorrendo