• Nenhum resultado encontrado

Uma prova de conceito em identidade móvel

N/A
N/A
Protected

Academic year: 2018

Share "Uma prova de conceito em identidade móvel"

Copied!
89
0
0

Texto

(1)

CAMPUS QUIXADÁ

BACHARELADO EM SISTEMAS DE INFORMAÇÃO

CAIO VINÍCIUS GOMES BALTHAZAR

UMA PROVA DE CONCEITO EM IDENTIDADE ORGANIZACIONAL MÓVEL

(2)

UMA PROVA DE CONCEITO EM IDENTIDADE ORGANIZACIONAL MÓVEL

Trabalho de Conclusão de Curso

submetido à Coordenação do Curso Bacharelado em Sistemas de Informação da Universidade Federal do Ceará como requisito parcial para obtenção do grau de Bacharel.

Área de concentração: computação

Orientador Prof. MSc. Marcos Dantas Ortiz

(3)

Dados Internacionais de Catalogação na Publicação Universidade Federal do Ceará

Biblioteca do Campus de Quixadá

B158p Balthazar, Caio Vinícius Gomes

Uma prova de conceito em identidade organizacional móvel / Caio Vinícius Gomes Balthazar. – 2013.

87f. : il. color., enc. ; 30 cm.

Monografia (graduação) – Universidade Federal do Ceará, Campus de Quixadá, Curso de Sistemas de Informação, Quixadá, 2013.

Orientação: Prof. MSc Marcos Dantas Ortiz Área de concentração: Computação

1.Computação móvel 2. Android (recurso eletrônico) 3. Criptografia de dados (computação) I. Título.

(4)

UMA PROVA DE CONCEITO EM IDENTIDADE ORGANIZACIONAL MÓVEL

Trabalho de Conclusão de Curso

submetido à Coordenação do Curso Bacharelado em Sistemas de Informação da Universidade Federal do Ceará como requisito parcial para obtenção do grau de Bacharel.

Área de concentração: computação

Aprovado em: _____ / janeiro / 2014.

BANCA EXAMINADORA

_____________________________________ Prof. MSc. Marcos Dantas Ortiz (Orientador)

Universidade Federal do Ceará-UFC

_________________________________________ Prof. Dr. David Sena Oliveira

Universidade Federal do Ceará-UFC

_________________________________________ Prof. MSc. Marcio Espíndola Freire Maia

(5)

Aos meus pais, Tarciso e Bernadete, que

sempre me motivaram a ir mais longe e me

deram forças para enfrentar quaisquer

(6)

Agradeço à comunidade de software aberto pelas incontáveis horas de esforço e

dedicação contribuídas ao ensino e à propagação do conhecimento, sem as quais este trabalho

simplesmente não seria possível. Àqueles que alimentam a comunidade com suas dúvidas,

experiências e contribuições nos clareiam a mente quando os livros não são capazes.

Agradeço aos coordenadores do curso de Sistemas de Informação, Tânia Pinheiro,

Francisco Aragão e Davi Romero, que pacientemente guiaram um estudante inexperiente e

um a um foram essenciais na minha jornada. Em nome de Shriram Mohan, Wladimir Tavares,

Ricardo Reis, Michael Wollowski, Camilo Almendra, Alex Lo, Críston Souza, Marcos

Dantas, Cary Laxer, Carla Moreira, Nadine Shillingford, Andreia Sampaio e Jeandro Bezerra

agradeço a todos os brilhantes professores que me apontaram caminhos e serviram de

profunda inspiração ao longo desses anos.

Agradeço àqueles que sempre me ouviram, acolheram e aconselharam, me

conduzindo pelos caminhos da vida: Eliseuda, Tarciso e Mirtes. Agradeço aos meus pais por

todos os sacrifícios feitos ao longo dos anos. Aos meus irmãos, tios e primos. A todos estes, o meu “muito obrigado” pelo apoio incondicional, alegria, exemplo e estímulo.

Em nome de Luana Dias, Rafael Vieira, Caleb Drake, Eduardo Bonet, Geovanny

Filho, Samuel Torres, Marcelo Arraes, Franklin Barroso, Thaís Melo, Romário Cabó, Jessica

Souza Alves, Regis Melo, Marcelo Barros, André Campos, Rodrigo Matihara, Samuel

Freitas, Luís Covatti, Allan Vitor, Daniel de Araújo, Tim Curley, Ricardo Sindeaux e Hector

Escobar agradeço a todos os meus amigos, essenciais em todas as etapas da minha vida.

Finalmente, à banca avaliadora, por prontamente aceitar fazer parte desse

momento tão especial. Aos companheiros de trabalho, funcionários e desconhecidos que

(7)

"Tudo parece impossível até que seja feito."

(8)

Dentre as formas de identificação organizacional comuns, destacam-se o uso de senhas, crachás e dispositivos de acesso especializados. Embora bastante difundidas, elas apresentam algumas ineficiências discutidas no trabalho. Paralelamente, sistemas de segurança modernos caminham para um novo cenário de autenticação conhecido como autenticação de dois fatores. Entretanto, mesmo soluções organizacionais recentes para autenticação de dois fatores frequentemente requerem hardware especializado. Este trabalho implementa uma solução para identificação organizacional com autenticação de dois fatores, sem hardware especializado, através de uma ferramenta quase ubíqua: smartphones. Smartphones já são considerados dispositivos multi-propósito devido aos seus recursos e portabilidade. Porém, a facilidade de manipulação desses dispositivos deixa organizações ainda temerosas, mantendo-os potencialmente subutilizadmantendo-os. Um segundo desafio para smartphones vem de sua moderada capacidade computacional se comparada aos requerimentos da criptografia assimétrica moderna. Esse desafio se torna ainda mais evidente com a demanda exigente de desempenho por parte dos usuários. O modelo implementado neste trabalho aborda esses e ainda outros desafios. Enquanto trabalhos relacionados utilizam criptografia simétrica, outros canais de comunicação, requerem hardware ou plataformas especiais, impõem fortes requisitos de implantação, ou simplesmente se orientam a outros cenários, a solução apresentada se destaca ao utilizar avanços computacionais recentes para operar uma infraestrutura de chave pública simples porém completa, orientada especialmente ao ambiente organizacional e à mobilidade. O sistema é implementado seguindo as recomendações do National Institute of Standards and Technology e do Internet Engineering Task Force, sem com isso abdicar da simplicidade de uso. Tendo como objetivo principal implementar a identificação organizacional móvel com dois fatores através de smartphones, a arquitetura é projetada para suportar dois modos de implantação, dois modos de operação e janelas de operação off-line, adaptando-se às necessidades organizacionais de forma transparente. A solução busca ainda ser extensível a outras aplicações, almejando promover a autenticação de dois fatores por diversos setores organizacionais. O processo metodológico foi composto de macrociclos e microciclos de desenvolvimento. Cada macrociclo inclui atividades de análise de requisitos, prototipagem, modelagem, validação, planejamento, implementação e feedback. Utilizando técnicas de processamento móvel paralelo, criptografia assimétrica, comunicação visual com códigos QR e a plataforma Android a arquitetura foi implementada em um protótipo funcional apresentado no trabalho. É feita uma comparação entre as implementações da arquitetura com RSA e com Curvas Elípticas, com a criptografia elíptica obtendo melhor desempenho mesmo com nível de segurança superior. Independentemente do algoritmo assimétrico utilizado, a arquitetura se mostra resistente a ataques como homem no meio e repetição, trazendo consigo estratégias para o tratamento do caso em que dispositivos são comprometidos.

(9)

Among the most common forms of organizational identification, the use of passwords, ids and specialized access devices stand out. Although quite widespread, they present some inefficiencies discussed is this paper. Simultaneously, modern security systems reach for a new authentication model known as two-factor authentication. Nevertheless, even recent organizational solutions for two-factor authentication often require specialized hardware. This work offers a solution for organizational identification with two-factor authentication without specialized hardware, through an almost ubiquitous tool: smartphones. Smartphones are already considered multi-purpose devices because of their resourcefulness and portability. However, the ease of manipulation of such devices concerns organizations, keeping them potentially underused. A second challenge for smartphones relates to their moderate computational power when compared to the requirements of modern asymmetric cryptography. This challenge becomes even more evident with the high demands of performance from users. The architecture implemented in this paper addresses these challenges and few others. While related works use symmetric cryptography, other communication channels, require special hardware platforms, enforce strong deployment requirements, or simply target other scenarios, the solution presented here stands out by using the latest technology to operate a simple and complete public key infrastructure, specifically designed for the organizational environment and for mobility. The system is implemented following the recommendations of the National Institute of Standards and Technology and the Internet Engineering Task Force, without thereby giving up the simplicity of use. Its main goal is to implement mobile organizational identification with two-factor authentication through smartphones. The architecture is designed to support two deployment modes, two modes of operation of off-line time windows, adapting to organizational needs in a transparent manner. The solution aims to be further extended by other applications, striving to bring two-factor authentication to many organizational sectors. The methodological process was composed of macrocycles and microcycles of development. Each macrocycle includes requirement analysis, prototyping, modeling, validation, planning, implementation and feedback activities. Using mobile parallel processing techniques, asymmetric encryption, visual communication with QR codes and the latest advancements of the Android platform, the architecture was successfully implemented into a working prototype. A comparison between the architecture implementations using RSA and Elliptic Curves is performed, with elliptic encryption getting better performance even with higher security levels. Regardless of the asymmetric algorithm used, the architecture is resistant to attacks such as man in the middle and replay, carrying strategies for dealing with the case in which devices are compromised.

(10)

Figura 1 - Comparação entre tamanho de chaves em esquemas criptográficos ... 23

Figura 2 - Recomendações do NIST para tamanhos de chave e algoritmos de acordo com a época ... 24

Figura 3 – Trecho introdutório sobre Cryptographic Message Syntax (CMS) publicada na RFC5652 pela IETF ... 25

Figura 4 - Visão geral sobre a especificação do formato de requisição de certificado PKCS#10 encontrado na RFC2986, uma republicação IETF do PKCS#10 v1.7 da RSAS ... 25

Figura 5 - Distribuições Android em dezembro de 2013 ... 27

Figura 6 - Exemplos das telas para uso do keystore nativo no Android antes da API 18 ... 29

Figura 7 - Exemplos de códigos QR e Data Matrix, ressaltando suas áreas de controle ... 31

Figura 8 – Exemplo de esboço primitivo criado durante o projeto ... 33

Figura 9 – Exemplo simplório de divisão e ordenação através da ferramenta Trello (FOG CREEK SOFTWARE INC, 2013) ... 35

Figura 10 - Exemplo de análise de código fonte durante o processo de controle de qualidade com a ferramenta SonarQube ... 36

Figura 11 - Diagrama de um macrociclo metodológico de desenvolvimento ... 37

Figura 12 - Ilustração do modelo básico de autenticação ... 40

Figura 13 - Ilustração das fontes alternativas de sincronia temporal ... 41

Figura 14 - Ausência de fontes temporais ... 43

Figura 15 – Exemplo de solicitação de certificado seguida de autenticação, sob perspectiva do aplicativo provedor ... 45

Figura 16 - Exemplo de comunicação na arquitetura multi-organizacional, sob perspectiva do aplicativo provedor ... 46

Figura 17 - Diagrama do modo de implantação uni-organizacional ... 48

Figura 18 - Diagrama do modo de implantação comercial ... 49

Figura 19 - Inicialização do keystore pelo Android ... 54

Figura 20 – Tela de cadastro do PIN ... 55

Figura 21 - Diagrama de sequência da instalação de identidade ... 57

Figura 22 - Fluxo de telas da instalação de identidade ... 58

Figura 23 - Acesso às opções de ... 58

(11)

Figura 26 - Exemplo do fluxo de telas de uso direto do módulo verificador pelo usuário ... 61

Figura 27 - Acesso às opções de gerenciamento ... 61

Figura 28 - Fluxo de acesso a tela de identidade para autenticação ... 63

Figura 29 - Consulta ao usuário sobre ... 64

Figura 30 - Alguns exemplos dos possíveis erros de verificação detectados pelo módulo verificador (lista não exaustiva) ... 65

Figura 31 - Exemplo de verificação bem sucedida com recebimento de informações adicionais ... 66

Figura 32 - Navegabilidade do módulo verificador ... 67

Figura 33 - Ilustração do recebimento de resultados pelo aplicativo externo consumidor ... 68

Figura 34 - Bloqueio preventivo do aplicativo provedor ... 71

(12)

AES Advanced Encryption Standard

API Application Programming Interface

CMS Cryptographic Message Syntax

CRL Certificate Revocation List

DSA Digital Signature Algorithm

ECC Elliptic Curve Cryptography

ECDSA Elliptic Curve Digital Signature Algorithm

GPS Global Positioning System

HTTP Hypertext Transfer Protocol

HTTPS Hypertext Transfer Protocol Secure

ICP Infraestrutura de Chave Pública

IP Internet Protocol

IETF Internet Engineering Task Force

JSON JavaScript Object Notation

MITM Man In The Middle

NIST National Institute of Standards and Technology

OTP One Time Password

PBE Password-Based Encryption

PBKDF2 Password-Based Key Derivation Function 2

PIN Personal Identification Number

PKCS Public-Key Cryptography Standards

PRNG Pseudo-Random Number Generator

QA Quality Assurance

(13)

SSL/TLS Secure Sockets Layer / Transport Layer Security

TFA Two-Factor Authentication

(14)

1 INTRODUÇÃO ... 15

1.1 Objetivos ... 17

1.1.1 Objetivo Geral ... 17

1.1.2 Objetivos Específicos ... 18

1.2 Organização do texto ... 18

2 REVISÃO BIBLIOGRÁFICA ... 20

2.1 Trabalhos relacionados ... 20

2.2 Criptografia ... 21

2.2.1 Qualidades de segurança necessárias ... 21

2.2.2 Infraestrutura de chave pública ... 21

2.2.3 RSA ... 22

2.2.4 Criptografia de Curvas Elípticas ... 23

2.2.5 Recomendações de instituições ... 24

2.2.6 Ataques à segurança ... 25

2.2.7 HTTPS e SSL/TLS ... 26

2.3 Android ... 26

2.3.1 Keystore nativo ... 27

2.3.2 Provedor de criptografia ... 29

2.4 Códigos QR ... 30

3 PROCEDIMENTOS METODOLÓGICOS DE DESENVOLVIMENTO ... 32

3.1 Cadeia de dependência ... 32

3.1.1 F ase 1: Visualização do problema ... 33

3.1.2 F ase 2: Projeto e modelagem ... 34

3.1.3 F ase 3: Validação do modelo ... 34

3.1.4 F ase 4: Planejamento ... 34

3.2 Microciclo de desenvolvimento... 35

4 IDENTIFICAÇÃO ORGANIZACIONAL MÓVEL ... 38

(15)

4.2.2 Sincronia temporal ... 40

4.2.3 Autenticidade criptográfica ... 43

4.2.4 Entidades da arquitetura ... 44

4.2.5 Modo de implantação uni-organizacional ... 47

4.2.6 Modo de implantação comercial ou multi-organizacional ... 48

4.2.7 Modo de operação com revogação ... 49

4.2.8 Modo de operação com certificados curtos ... 50

4.3 Fluxos de comunicação e procedimentos ... 51

4.3.1 Confiança transitiva ... 52

4.3.2 Inicialização ... 53

4.3.3 Instalação de identidade no provedor ... 56

4.3.4 Posicionamento organizacional do verificador ... 59

4.3.5 Verificação de identidade... 61

4.3.6 Revogação ... 69

4.4 Implementação da arquitetura ... 69

4.4.1 Android PRNG ... 69

4.4.2 Android PBKDF 2 ... 70

4.4.3 Apache HTTP client 3 ... 70

4.4.4 Medidas de segurança extra ... 70

4.4.5 Armazenamento de segredos no Android ... 72

4.4.6 F erramentas utilizadas nos módulos móveis ... 72

4.4.7 F erramentas utilizadas nos módulos servidores ... 73

4.4.8 Interface do módulo organizacional ... 74

4.4.9 Interface do módulo central ... 74

5 APLICAÇÃO E ESTUDO DE DESEMPENHO ... 76

5.1 Desempenho: RSA e ECC ... 76

5.1.1 Tempo de instalação ... 77

5.1.2 Tempo de geração de código ... 77

5.1.3 Tempo de reconhecimento ... 77

5.1.4 Tamanho da CMS gerada ... 77

(16)

6 CONSIDERAÇÕES FINAIS ... 82

(17)

1 INTRODUÇÃO

Identificação organizacional, referindo-se ao método pelo qual um indivíduo alega

e comprova sua identidade vinculada a uma organização, é um passo de grande importância

em contextos organizacionais seguros. Em algumas instituições, é a base para o consumo de

uma diversidade de serviços. Quando se mostra necessária, tem sido implementada de

diversas formas diferentes. Dentre as mais difundidas, encontram-se o uso de senhas, crachás

e dispositivos de acesso especializados. Embora essas as formas de identificação tenham

tradicionalmente cumprido seu papel, elas apresentam algumas ineficiências discutidas a

seguir.

O uso isolado de senhas, por exemplo, embora muito adequado ao meio virtual, se

apresenta consideravelmente inapto ao cenário da identificação organizacional. Essa forma de

autenticação demandaria a presença de terminais de verificação espalhados por toda a

organização, constantemente conectados. Esses terminais, sejam eles computadores comuns

ou dispositivos especializados, apresentam custos de implantação e de manutenção para serem

mantidos em rede constante com bancos de dados. Adicionalmente, senhas utilizadas dessa

forma se mostram vulneráveis ao mau gerenciamento e a ataques como phishing e malware,

como apontam Hallsteinsen, Jorstad e Thanh (2007), Thanh et al. (2009), Alzomai e Jøsang

(2010), Choi et al. (2011), Tanvi, Sonal e Kumar (2011).

O uso de crachás, apesar de não exigir hardware custoso, pode não ser adequado

ao nível de segurança necessário a um contexto em particular, por depender exclusivamente

do reconhecimento humano e da incapacidade alheia de forjar um apetrecho similar. Além

disso, não é incomum que sua conferência deixe de ser precisa com o passar do tempo e com

o envelhecimento desses acessórios.

Dispositivos especializados de acesso, por outro lado, guardam as credenciais de

usuários em seu hardware, como em Busold et al. (2013). Geralmente são fabricados em

formato de cartão, sendo magnéticos ou não. O fluxo de uso desses dispositivos envolve sua

apresentação junto a sensores capazes de extrair essas informações e verificar sua

autenticidade. No entanto, o uso de hardware específico impõe maior custo de implantação e

(18)

Paralelamente, sistemas de segurança modernos caminham para um novo método

de identificação, buscando fortalecer os métodos tradicionais através do requerimento de um

duplo fator de autenticação. Esse novo modelo é conhecido como autenticação de dois fatores,

comumente abreviado para TFA. Nesse modelo, é necessário utilizar conjuntamente ‘algo que você sabe’ e ‘algo que você possui’, explica DeFigueiredo (2011).

Em âmbito organizacional, já existem iniciativas recentes que buscam substituir

as formas tradicionais de identificação por autenticação de dois fatores. A exemplo, em US

Deparment Of Defense (2006), governos emitem smartcards contendo chips eletrônicos que

guardam as credenciais do usuário e requerem um código de acesso para descriptografar essas

credenciais, durante cada tentativa de autenticação. Dessa forma, o cartão só tem valor se for

utilizado em conjunto com uma senha.

Em um outro exemplo frequente, a autenticação por dois fatores é implantada

através da utilização de tokens expiráveis gerados por dispositivos conhecidos por One Time

Password ou OTP, como explica Lee et al. (2010). Um fluxo comum, como em Cheng (2011)

e Choi et al. (2011), exige que um usuário confirme o conteúdo de um token exibido no seu

dispositivo no exato momento da autenticação que, em conjunto com a sua senha, irá

satisfazer a dois fatores.

Apesar dos benefícios sobre as formas tradicionais, essas formas de autenticação

apresentam dificuldades em sua implantação, como indicam Cheng (2011) e Abe, Itoh e

Takahashi (2007). Algumas das mais impactantes surgem da necessidade de hardware

específico, impondo custos, baixa escalabilidade e menor praticidade quando se tem mais de

um vínculo organizacional. Implementar uma forma de autenticação organizacional prática e

sem hardware especializado não é um problema facilmente solucionável. Consequentemente,

ainda é comum a utilização das formas mais simples de autenticação, sendo geralmente

desassociadas, abrindo caminho para o mau gerenciamento de credenciais, ataques e

desperdícios de tempo, recursos e esforços.

Aqui, será explorada uma oportunidade de solucionar o problema de autenticação

organizacional sem hardware especializado e ainda implementar autenticação de dois fatores

na identificação organizacional. Mobilidade e extensibilidade serão adicionadas ao conjunto

de qualidades desejadas. Para tanto, faz-se uso de uma ferramenta cada vez mais ubíqua:

(19)

Smartphones já são considerados dispositivos multi-propósito devido ao seu

relativo baixo custo aliado a sua portabilidade e recursos, como explicam Bhutta, Ghafoor e

Sultan (2012). O uso de smartphones tem crescido e se integrado a diversas atividades

pessoais e organizacionais. Simultaneamente, a qualidade das plataformas móveis de

desenvolvimento tem melhorado.

Dessa forma, smartphones poderiam ser utilizados como dispositivos

autenticadores no controle de acesso a serviços organizacionais. Já existem aplicações que

oferecem parcialmente essa capacidade, a exemplo de algumas aplicações bancárias e o

Google Authenticator (GOOGLE INC., 2013).

No entanto, ainda existem desafios relacionados ao uso de smartphones para

identificação organizacional. Devido à facilidade de manipulação desses dispositivos,

organizações se encontram temerosas quanto à segurança de credenciais confiadas a

smartphones, impedindo que eles sejam usados como provedores de identidade e

mantendo-os como um acessório de segurança potencialmente subutilizado.

Um segundo desafio para os smartphones vem de sua moderada capacidade

computacional se comparada aos requerimentos da criptografia assimétrica moderna. Esse

desafio se torna ainda mais evidente com a demanda de desempenho cada vez mais exigente

por parte dos usuários.

Por fim, há ainda o desafio do equilíbrio entre segurança e simplicidade. Uma

solução para identificação organizacional precisa ser capaz de operar de maneira ágil e

simples buscando alcançar uma integração bem sucedida nos processos organizacionais e

aceitação dos usuários. Entretanto, frequentemente procedimentos de segurança contribuem

para o aumento da complexidade de processos internos e diminuição de sua agilidade, o que,

segundo Gutmann (2013) acaba resultando na má utilização das ferramentas ou sua total

inutilização. Esses e outros desafios são explorados neste trabalho, cujo objetivos são

definidos a seguir.

1.1 Objetivos

1.1.1 Objetivo Geral

Desenvolver uma solução extensível de software para identificação organizacional

(20)

1.1.2 Objetivos Específicos

a) Projetar uma arquitetura de sistema para identificação organizacional

sustentada por apenas smartphones e servidores;

b) Projetar uma infraestrutura de segurança baseada em criptografia assimétrica

sob as recomendações NIST e IETF para a arquitetura;

c) Projetar um modelo de autenticação com dois fatores resistente a ataques

Man-In-The-Middle (MITM) e repetição capaz de suportar janelas de operação sem

conexão com internet;

d) Projetar um modelo componentizado de software capaz de suportar extensão de

funcionalidade e reuso do módulo de verificação;

e) Implementar um módulo de armazenamento de segredos integrado às

estratégias de segurança da plataforma Android;

f) Implementar um protótipo funcional da arquitetura e suas entidades.

1.2 Organização do texto

O documento está divido em seis seções. Na primeira seção apresentou-se uma

introdução ao tema, fazendo uma contextualização e apresentando a problemática

vislumbrada, assim como os objetivos geral e específicos.

Na segunda seção é realizada uma revisão sobre os principais componentes do

projeto, incluindo alguns trabalhos relacionados, conceitos de criptografia utilizados, detalhes

sobre a plataforma de desenvolvimento móvel e elucidações sobre códigos bidimensionais

que serão uma característica notável do sistema.

A terceira seção apresenta os procedimentos metodológicos utilizados no

desenvolvimento do trabalho, detalhando a metodologia iterativa empregada e os passos que

foram necessários para a obtenção da solução aqui apresentada.

A quarta seção traz o detalhamento dos principais elementos e contribuições do

projeto. Esta seção se divide em quatro partes, sendo: (a) uma apresentação dos requisitos

considerados; (b) uma descrição da arquitetura e sua infraestrutura de segurança; (c) uma

descrição dos fluxos de comunicação e procedimentos e (d) um detalhamento da

(21)

A quinta seção apresenta avaliações de desempenho e discute resultados obtidos

com a implementação da arquitetura utilizando os sistemas criptográficos RSA e de Curvas

Elípticas. Há ainda uma comparação com trabalhos relacionados

(22)

2 REVISÃO BIBLIOGRÁFICA

As subseções a seguir oferecem uma revisão de quatro componentes fundamentais

do projeto: trabalhos relacionados, criptografia, Android e códigos QR. Na primeira seção, há

um breve resgate histórico dos trabalhos mais influentes a esta contribuição. Na subseção de

criptografia, são feitas introduções aos conceitos criptográficos utilizados, seguidas de

contextualizações do papel de cada conceito na solução implementada. Na segunda subseção,

são detalhados alguns elementos da plataforma de desenvolvimento Android relevantes ao

trabalho. A subseção de códigos QR faz uma breve caracterização desse tipo de código e de

suas qualidades.

2.1 Trabalhos relacionados

Em 2005, McCune et al propõe um modelo de identificação demonstrativa e

negociação genérica de chaves dentre dispositivos através de um duplo canal de comunicação:

wireless e visual. O trabalho de McCune et al permite a autenticação entre partes que não

compartilham um contexto confiável prévio, em uma abordagem quase oposta à deste

trabalho. Embora o trabalho de McCune et al não tenha orientação organizacional almejada

aqui, seu modelo foi inspirador em diversos aspectos, principalmente em sua utilização do

canal visual como meio confiável de comunicação.

Ainda em 2005, Hassinen e Hypponen propõem um modelo de autenticação

móvel baseado em ICPs governamentais e no uso de SMS. Embora o modelo não tenha

desfrutado das capacidades dos smartphones modernos devido à época em que foi proposto,

os princípios de ICP integrados no seu modelo influenciaram a maneira com que esse trabalho

confia a ICP características de autenticidade, integridade e não repúdio.

Em 2011, Tanvi, Sonarl e Kumar apresentam um modelo de autenticação OTP

baseado em senhas geradas por smartphones. Embora o modelo aqui apresentado siga a

filosofia ICP, o modelo proposto por eles influenciou este trabalho à medida que apresenta

assiduamente smartphones como substituição para tokens de hardware.

Em 2012, Bhutta e Ghafoor estendem o protocolo PACS e demonstram a

capacidade que smartphones têm de serem meios confiáveis para determinar controle de

(23)

Em 2013, Busold et al constrói um modelo chaves inteligentes para automóveis

baseando-se em smartphones, NFC e ICP. Desconsiderando suas necessidades de hardware

especializado, Busold et al tem uma abordagem muito mais próxima à deste trabalho do que

os outros trabalhos mencionados anteriormente. O modelo construído por ele implementa um

protocolo de delegação de acesso, utilizando ICP em conjunto com seu próprio protocolo. O

modelo de Busold et al teve influência considerável nesse trabalho ao despertar a

sensibilidade para as vantagens de ICP dentro de uma hierarquia organizacional.

2.2 Criptografia

Neste trabalho, devido à utilização de hardware comum, criptografia é a principal

barreira entre um atacante e as informações privadas. Segundo Laureano (2005), criptografia

representa um conjunto de técnicas para manter uma informação segura, sendo a maneira

mais segura de se enviar informações através de um canal de comunicação.

2.2.1 Qualidades de segurança necessárias

Dentre as qualidades de segurança promovidas pela criptografia, as consideradas

essenciais para o funcionamento da solução aqui desenvolvida são:

a) confidencialidade - propriedade que limita o acesso à informação tão somente

às entidades autorizadas pelo proprietário da informação.

b) integridade - propriedade que garante que a informação manipulada mantenha

todas as características originais estabelecidas pelo proprietário da informação.

c) autenticidade - propriedade que garante que a informação é proveniente da

fonte anunciada e que não foi alvo de mutações ao longo de um processo.

d) não repúdio - propriedade que garante a impossibilidade de negar a autoria em

relação a uma transação anteriormente feita

Essas qualidades são inseridas na arquitetura proposta através de procedimentos e

protocolos dependentes de uma infraestrutura de segurança baseada em chave pública.

2.2.2 Infraestrutura de chave pública

Laureano (2005) ressalta que a infraestrutura de chave pública ou ICP consegue

(24)

de ser fraudada e que se apresenta de forma transparente para o usuário. Estes dois pontos,

transparência aliada à forte base técnica de seus mecanismos, denotam o aspecto forte desta

tecnologia.

Infraestrutura de chave pública é uma iniciativa para utilização de criptografia que

tem como base a emissão de chaves por uma organização tida como confiável pelas partes

envolvidas. A natureza característica dessa infraestrutura vem do pareamento crítico, mútuo e

único entre uma chave pública e sua chave privada. Diversos algoritmos criptográficos podem

ser utilizados para implementar essa infraestrutura, sendo conhecidos como algoritmos de

criptografia assimétrica.

Essas emissões são realizadas através de certificados digitais, documentos

eletrônicos que ligam uma entidade a sua chave publicamente e são assinados pela

organização confiável. Ainda segundo Laureano (2005), uma assinatura digital é o processo

pelo qual uma entidade gera uma assinatura de uma mensagem criptografada com sua chave

privada, que apenas pode ser descriptografada através do uso de sua chave pública, atestada

pelo seu certificado digital. Dessa forma, se o reconhecimento da assinatura com a chave

pública for bem sucedido, fica comprovado que o assinante tem domínio da chave privada

correspondente e verifica-se sua identidade junto à autenticidade da assinatura.

Em ICP, existe ainda um procedimento chamado revogação. Ele se refere ao ato

de retirar ou anular a validade de um certificado digital, indicando publicamente que esse

certificado não é mais confiável. Dentre as diversas razões que podem levar uma autoridade a

revogar um certificado, destaca-se a situação em que a privacidade da chave privada de uma

entidade foi comprometida ou sabidamente posta em risco.

A arquitetura proposta neste trabalho é fortemente baseada em ICP. A cadeia de

confiança restrita, a habilidade de gerar e reconhecer assinaturas digitais, o controle do ciclo

de vida de certificados e a capacidade de revogação dos mesmos são elementos essenciais

para a solução implementada aqui. O RSA foi o primeiro algoritmo a implementar assinatura

digital, sendo ainda hoje um dos mais utilizados.

2.2.3 RSA

RSA é um dos primeiros e mais utilizados sistemas criptográficos de chave

pública, desenvolvido por Ronald Rivest, Adi Shamir e Leonard Adleman em 1977. O

(25)

computacional de se fatorar o produto de dois grandes números primos. Embora pequenos

avanços tenham sido feitos no ataque ao problema, como apontam Magalhães e Queiroz

(2011), grandes tamanhos de chave para o algoritmo são estipulados de forma a garantir a

dificuldade computacional de um ataque. O RSA é um dos sistemas criptográficos avaliados

como implementação para a infraestrutura de segurança deste trabalho, o outro envolve

criptografia de curvas elípticas.

2.2.4 Criptografia de Curvas Elípticas

Criptografia de curvas elípticas, ou ECC, é um sistema criptográfico de chave

pública relativamente novo desenvolvido independentemente por Victor Miller e Neal Koblitz

em 1985. Sua adoção comercial, no entanto, não se popularizou antes de 2004. ECC tem sua

segurança baseada na dificuldade computacional de se resolver o problema do logaritmo

discreto em curvas elípticas.

ECC tem ganhado recente popularidade sobre o RSA devido a sua capacidade de

apresentar segurança equiparável utilizando chaves significativamente menores e velocidade

de processamento na ordem de 10 vezes mais rápido que o RSA (MAGALHÃES; QUEIROZ,

2011). A adoção de ECC nas suítes criptográficas e infraestruturas de segurança em todo o

mundo tem crescido a medida que órgãos regulamentadores padronizam especificações para

sua implementação e resultados acadêmicos atestam sua segurança teórica no atual estado da

arte matemática (BARBOSA, 2003). A figura 1 traz uma comparação entre tamanhos de

chave de criptografia simétrica, elíptica e RSA.

Figura 1 - Comparação entre tamanho de chaves em esquemas criptográficos

Fonte: Magalhães e Queiroz (2011)

Essas qualidades de segurança, tamanho e desempenho se mostram

(26)

dispositivos tem poder computacional e largura de banda mais limitados. Isso faz de ECC o

segundo sistema criptográfico avaliado como implementação para a infraestrutura de

segurança deste trabalho.

2.2.5 Recomendações de instituições

Por todo o mundo, existem órgãos regulamentadores e empresas de segurança

influentes que especificam padrões e protocolos a serem utilizados por sistemas

criptográficos. Algumas dessas organizações incluem o National Institute of Standards and

Technology (NIST), a Internet Engineering Task Force (IETF) e a RSA Security (RSAS para

diferenciar do algoritmo).

A seguir, algumas das recomendações dessas instituições que serão referenciadas

ao longo do texto, incluindo tamanhos de chave, algoritmos criptográficos, encapsulamento

de mensagens criptográficas e formatos de requisição de certificado:

Figura 2 - Recomendações do NIST para tamanhos de chave e algoritmos de acordo com a época

(27)

Figura 3 – Trecho introdutório sobre Cryptographic Message Syntax (CMS) publicada na RFC5652 pela IETF

Fonte: (IETF, 2013)

Figura 4 - Visão geral sobre a especificação do formato de requisição de certificado PKCS#10 encontrado na RFC2986, uma republicação IETF do PKCS#10 v1.7 da RSAS

Fonte: (IETF, 2013)

2.2.6 Ataques à segurança

Existe uma vasta e crescente diversidade de ataques à segurança de sistemas

computacionais. Enquanto uma significativa porção desses ataques pode ser mitigada

simplesmente pelo uso correto dos procedimentos de criptografia, outros ataques precisam ser

contornados por medidas externas dependentes de cada contexto e análise de riscos. Dois

tipos de ataques receberam atenção especial durante o desenvolvimento da arquitetura aqui

apresentada: homem no meio, ou MITM, e repetição.

Um ataque do tipo homem no meio, como traduzido por Laureano (2005), é uma

forma de ataque em que dados trocados entre duas partes são interceptados e potencialmente

manipulados por um atacante sem alertar essas partes. Esse tipo de ataque depende da

capacidade do atacante de assumir satisfatoriamente a identidade de pelo menos uma das

partes. Já um ataque de repetição se caracteriza quando uma transmissão válida de informação

entre duas partes é interceptada e retransmitida por um atacante para fins mal-intencionados.

Esses ataques são levados em especial consideração durante o desenvolvimento

(28)

códigos bidimensionais. A principal ferramenta para proteção da comunicação via rede é o

protocolo Hypertext Transfer Protocol Secure (HTTPS).

2.2.7 HTTPS e SSL/TLS

O protocolo Transport Layer Security (TLS), especificado pela IETF baseando-se

no seu precedente Secure Sockets Layer (SSL), fornece segurança criptográfica a

comunicações realizadas através da Internet. O protocolo permite que aplicações

cliente/servidor se comuniquem de uma maneira projetada para evitar a espionagem,

adulteração ou falsificação de mensagens (IETF, 2013). O protocolo SSL/TLS é um

componente essencial do protocolo de comunicação HTTPS.

Dado que uma parte ‘S’ ofereça capacidades HTTPS para comunicação com a parte ‘C’, apresente um certificado digital reconhecido por ‘C’ e tenha a posse das chaves privadas correspondentes, então ‘C’ tem a oportunidade de utilizar HTTPS para autenticar ‘S’ e trocar informações criptografadas, sem estar vulnerável aos ataques MITM e repetição descritos na seção anterior. Adicionalmente, caso ‘S’ necessite autenticar a parte ‘C’ através do mesmo protocolo, ‘C’ precisa ter posse de um certificado digital reconhecido por ‘S’ e

posse das chaves privadas correspondentes (IETF, 2013).

O HTTPS com SSL/TLS é o único protocolo de comunicação via rede aceito no

sistema aqui implementado. Para assegurar que esse protocolo seja sempre utilizado, todas as

entidades tiveram suas capacidades de se comunicar por HTTP comum desabilitadas.

2.3 Android

Smartphones atuais dispõem de diferentes plataformas de desenvolvimento. Elas

são impulsionadas por múltiplas empresas dos ramos de telecomunicações, software,

entretenimento e eletrônicos. A partir do final de 2010, a plataforma de desenvolvimento

móvel mais popular passou a ser o Android, como atesta Canalys (2011). O Android é um

sistema operacional e plataforma de desenvolvimento de código aberto, atualmente mantido

pela Google (GOOGLE INC., 2013).

Essa plataforma apresenta características importantes ao contexto desse trabalho

que não são encontradas, simultaneamente, nas outras plataformas: sua dominante

(29)

suporte a uma grande variedade de dispositivos, sua API interna para comunicação entre

aplicações e seu suporte integrado ao NFC.

Em 2014, mais de 55% dos dispositivos com Android operam sobre a versão Jelly

Bean ou superior, internamente conhecida como as APIs 16 a 18 (GOOGLE INC, 2013). A

figura 5 traz um detalhamento das distribuições Android em dezembro de 2013.

Figura 5 - Distribuições Android em dezembro de 2013

Fonte: (GOOGLE INC, 2013)

Na versão Jelly Bean, foi introduzido um conjunto significativo de melhorias de

segurança na plataforma, incluindo encriptação de aplicativos e o suporte à proteção de

chaves criptográficas através de hardware. Um elemento seguro embutido nos aparelhos mais

modernos confere essa capacidade. No entanto, a utilização de segurança protegida por

hardware depende da presença desse elemento físico no aparelho, sendo transparentemente

substituída pela tradicional segurança através de software caso o aparelho não seja fabricado

com um elemento seguro internamente. A segurança através de software se baseia no uso do

keystore do sistema.

2.3.1 Keystore nativo

Assim como demonstra Elenkov (2012), o keystore nativo do sistema Android é

um componente para armazenamento de chaves e certificados, sendo criptografado com o

Advanced Encryption Standard, ou AES. A senha que protege essa criptografia é derivada do

método de desbloqueio do smartphone utilizando Password-Based Key Derivation Function 2

(PBKDF2) com mais de oito mil iterações. Para utilizar o keystore, o usuário precisa cadastrar

(30)

inicializado, protegido e acessado exclusivamente sob permissão do usuário. Uma vez

inicializado, o keystore só pode ser utilizado por aplicações após o usuário ter desbloqueado o

smartphone.

Tentativas de remover forçadamente o PIN ou padrão de desbloqueio do

dispositivo tornarão o sistema incapaz de derivar a senha do keystore, inevitavelmente

inutilizando os dados armazenados anteriormente. Adicionalmente, mesmo após o keystore ter

sido desbloqueado pelo usuário, as chaves contidas nele só podem ser acessadas pela mesma

aplicação que as criou, nem mesmo processos do tipo root podem ler seus valores em texto

plano. Entretanto, embora também não possam acessar os valores em texto plano, processos

do tipo system podem apagar os textos cifrados do keystore para trazê-lo de volta ao estado de

fábrica (ELENKOV, 2012). Em smartphones com Jelly Bean ou superior, que contenham um

elemento seguro de hardware, o keystore do sistema fará uso de proteção de hardware

transparentemente, operando de maneira ainda mais segura.

Na prática, isso significa que o keystore nativo do Android é surpreendentemente

seguro para uma solução de software: mesmo que um atacante tivesse acesso a um dispositivo

como root e conseguisse ter acesso ao texto cifrado, ele ainda precisaria da senha do usuário

para derivar a chave AES utilizada na encriptação do keystore. Experimentar senhas

diferentes na tentativa de derivar a chave correta exigiria pelo menos 8.192 iterações de

PKBF2 por cada chave tentada, o que é normalmente proibitivamente caro. Além disso, a

função de derivação utiliza como “sal” um número aleatório de 128 bits, de modo que tabelas

de hash previamente-calculadas não podem ser utilizadas.

Apesar de suas qualidades, até a versão 4.3 do Android (API 18), o keystore do

sistema só estava diretamente acessível às aplicações nativas da plataforma, como as de VPN

eWiFi. Antes dessa versão, não havia uma API pública de interação direta com keystore, mas

apenas através de intents. Aplicações eram forçadas a saírem de seu contexto, chamar uma

tela do sistema, esperar por interação do usuário e só então receber o resultado dessa interação

para dar continuidade às suas tarefas. Esse procedimento, além de ser significativamente lento

e intrusivo, abria oportunidade para erros de usuário. A figura 6 traz exemplos dessas telas de

(31)

Figura 6 - Exemplos das telas para uso do keystore nativo no Android antes da API 18

Fonte: (ELENKOV, 2011)

2.3.2 Provedor de criptografia

O sistema operacional Android executa sobre uma versão modificada da máquina

virtual Java chamada Dalvik. O Java Android mantém alta familiaridade com a plataforma

Java tradicional, hoje mantida pela Oracle. Não surpreendentemente, a versão Android

também delega todas as operações criptográficas a provedores de criptografia através da Java

Cryptography Extension.

Porém, diferentemente da versão Oracle, a versão Android já inclui uma

implementação de criptografia da renomada organização BouncyCastle (LEGION OF THE

BOUNCY CASTLE INC, 2013). A implementação criptográfica BouncyCastle é a mais

utilizada no mundo Java, tanto por ser aberta quanto por ser australiana, não estando,

portanto, submetida às restrições legais americanas de exportação de criptografia.

No entanto, a versão incluída no Android não corresponde integralmente à

implementação da original biblioteca, sendo na verdade uma versão diminuída que contém

(32)

claras à comunidade, a maioria dos desenvolvedores acredita que esteja relacionada ao

tamanho da biblioteca e à intenção de integrar nativamente apenas o essencial.

Essa integração nativa se torna um problema à medida que a biblioteca original

recebe atualizações mais frequentemente do que o Android é capaz de acompanhar.

Desenvolvedores que desejam utilizar versões mais completas da implementação, ou

simplesmente mais atuais, não podem utilizar a versão original devido a conflitos com os

pacotes já incluídos nativamente. O resultado é que, por algum tempo, desenvolvedores foram

forçados a copiar o código da biblioteca em suas aplicações, o que aumentava o risco de erros

e o esforço de implementação. Se possível, a alternativa seria utilizar a versão limitada e

desatualizada da mesma biblioteca.

Para resolver esse problema, a comunidade aberta criou o projeto SpongyCastle

(TYLEY, 2013), que nada mais é do que um empacotamento da implementação original

BouncyCastle sob um nome identificador diferente, possibilitando que a biblioteca original

seja usada sem conflitar com os pacotes nativos limitados. No protótipo funcional da

arquitetura deste trabalho, o empacotamento SpongyCastle foi utilizado como provedor de

criptográfico no Android.

2.4 Códigos QR

Ao contrário de códigos unidimensionais, como códigos de barra, onde todas as

informações podem ser encontradas em um único corte através do código, códigos

bidimensionais utilizam uma segunda dimensão, contendo muitas "linhas" de dados. Eles são

comumente utilizados para comunicação visual extremamente rápida no mundo móvel,

incluindo, por exemplo, campanhas publicitárias, distribuição de conteúdo e utilizações

técnicas.

Entre os códigos bidimensionais mais populares estão o QR e o Data Matrix.

Ambos contêm áreas de dados e áreas que ajudam a detectar o código. Adicionalmente,

ambos utilizam o sistema de Reed Solomon para recuperação de partes danificadas do código.

(33)

Figura 7 - Exemplos de códigos QR e Data Matrix, ressaltando suas áreas de controle

Fonte: (OREILLY, 2011)

Mesmo sendo mais novo que o Data Matrix, o QR ganhou maior popularidade no

contexto móvel devido a sua leitura rápida, estética de personalização e capacidade nativa de

suportar caracteres japoneses. O código QR também apresenta algumas vantagens técnicas

sobre os códigos Data Matrix que são úteis no contexto deste trabalho, sendo ela maior

(34)

3 PROCEDIMENTOS METODOLÓGICOS DE DESENVOLVIMENTO

A metodologia de desenvolvimento do trabalho foi derivada pelo autor a partir do

modelo tradicional em cascata em conjunto com metodologias ágeis iterativas. Ela emprega

uma abordagem algorítmica para a perseguição dos objetivos listados. Os resultados obtidos

durante os ciclos de desenvolvimento serão apresentados na próxima seção do trabalho,

reservando esta seção para uma descrição da metodologia.

A metodologia é composta de um macrociclo de desenvolvimento que se divide

em duas etapas bastante distintas: a cadeia de dependência e o microciclo de

desenvolvimento. Essas etapas se alternam constantemente. A figura 11 traz um diagrama de

um macrociclo, detalhado no texto a seguir.

3.1 Cadeia de dependência

A cadeia de dependência é a etapa inicial do macrociclo. Seu objetivo principal é

criar um modelo minimamente sólido de parte do sistema antes do início da próxima etapa.

Sua estrutura busca detectar os problemas conceituais mais básicos. As características

marcantes dessa etapa são:

a) é composta por um conjunto ordenado de atividades;

b) ao término de uma atividade, a próxima atividade na sequência deve ser

executada, não se permitindo saltos;

c) se, durante a execução de uma atividade, for necessário fazer alterações

relacionadas a uma atividade anterior, o fluxo deve ser retornado a essa

atividade anterior, com atenção ao item ‘c’. O sequenciamento da cadeia deve

ser mantido;

d) ao fim da cadeia, inicia-se a etapa de ciclo de desenvolvimento.

Visivelmente, a etapa de cadeia de dependência se assemelha a uma cascata.

Porém, ela é indefinidamente retornável. Mudanças percebidas ao longo da cadeia causam um

retorno a uma atividade anterior, seguido de uma conferência de todo o trecho retornado,

(35)

atividades foi estipulada para que mudanças mais fundamentais ressaltassem a necessidade de

revisão das atividades seguintes. As atividades desenvolvidas na etapa são agrupadas em fases

apenas por mérito de categorização. As fases não têm influência no fluxo da etapa. Ao todo,

são 10 atividades dividas em 4 fases.

3.1.1 Fase 1: Visualização do problema

Contém 3 atividades. Em ordem:

1. análise dos objetivos:

 verifica-se se algo precisa ser acrescentado à lista de objetivos. Em seguida, seleciona-se um subgrupo de objetivos a ser trabalhado nesta

iteração.

2. esboço parcial da solução (figura 8):

 faz-se ou incrementa-se um esboço parcial da solução, em sua forma ideal, detalhando as aspirações dos objetivos selecionados.

Figura 8 – Exemplo de esboço primitivo criado durante o projeto

Fonte: elaborado pelo autor

3. especificação dos requisitos:

 baseando-se no esboço e também nos objetivos, incrementa-se os requisitos formais que devem ser atendidos pela solução após a

(36)

3.1.2 Fase 2: Projeto e modelagem

Contém 4 atividades. Ordenadas:

1. identificação de entidades e definição da arquitetura:

 identifica-se as entidades envolvidas nos requisitos e suas responsabilidades principais, incrementando a arquitetura se

necessário.

2. definição da sequência de comunicação e autenticação:

 sequencia-se os passos principais do fluxo de comunicação. Procura-se mapear de onde a informação se origina e a quem se destina.

3. planejamento de armazenamento:

 de acordo com os fluxos de comunicação, determina-se aonde, quando e como informações devem ser armazenadas. Ajuda a garantir que os

fluxos estejam coerentes.

4. verificação da segurança:

 assegura-se que seja possível proteger as comunicações e os armazenamentos anteriores.

3.1.3 Fase 3: Validação do modelo

Contém apenas uma atividade de verificação: assegurar que os objetivos sejam

alcançados pela arquitetura, assegurar que as comunicações e armazenamentos estejam

protegidos e assegurar que o modelo de autenticação construído é utilizável.

3.1.4 Fase 4: Planejamento

Contém 2 atividades. Em ordem:

1. divisão em funcionalidades:

 quebra-se o modelo validado em múltiplas e pequenas funcionalidades, preparando-o para o planejamento de implementação.

(37)

 ordena-se as funcionalidades e faz-se o agendamento das mesmas de acordo com estimativas e tempo de projeto.

Figura 9 – Exemplo simplório de divisão e ordenação através da ferramenta Trello (FOG CREEK SOFTWARE INC, 2013)

Fonte: elaborado pelo autor

3.2 Microciclo de desenvolvimento

Essa etapa é iniciada sempre que a etapa anterior termina. O microciclo de

desenvolvimento tem como objetivo implementar o que foi modelado na cadeia, uma

funcionalidade por vez. Sua estrutura é simples e eficaz. Ela se assemelha ao ciclo de

desenvolvimento iterativo e incremental. Aqui, funcionalidades planejadas são escolhidas

para serem implementadas. O processe segue o fluxo:

1. seleção de funcionalidade;

2. componentização da funcionalidade;

3. implementação, testes e controle de qualidade (figura 10);

4. feedback e redirecionamento.

Não raro, essa etapa requer alguma mudança relacionada à etapa anterior. Nesse

(38)

redirecionamento: no pior caso, algo precisa ser mudado e o fluxo será retornado à cadeia de

dependência; no caso médio, tudo correu bem e outra funcionalidade pode ser implementada;

no melhor caso, todas as funcionalidades foram implementadas e o macrociclo pode reiniciar,

selecionando um outro grupo de objetivos. Mesmo no caso de redirecionamento à cadeia de

dependência, a mesma eventualmente retornará ao microciclo de desenvolvimento.

Figura 10 - Exemplo de análise de código fonte durante o processo de controle de qualidade com a ferramenta SonarQube

(39)

Figura 11 - Diagrama de um macrociclo metodológico de desenvolvimento

(40)

4 IDENTIFICAÇÃO ORGANIZACIONAL MÓVEL

A solução para identificação organizacional móvel será apresentada nas seções a

seguir. Suas características são detalhadas ao longo de cinco subseções: requisitos; arquitetura

e infraestrutura de segurança; fluxos de comunicação e procedimentos e implementação da

arquitetura.

4.1 Requisitos

Os requisitos identificados são derivados dos objetivos específicos na tentativa de

se obter um equilíbrio entre usabilidade, desempenho e segurança. Consequentemente, os

requisitos principais representam a necessidade de se realizar identificação organizacional

através de smartphones, abstendo-se de hardware especializado, e de integrar autenticação de

dois fatores ao processo de identificação.

Para tanto, acrescentam-se requisitos não funcionais de segurança, exigindo que o

processo de autenticação apresente qualidades de autenticidade, não repúdio e integridade.

Adicionalmente, a confidencialidade dos dados privados das entidades precisa ser assegurada

ao armazenar e transferir informações. Ataques do tipo MITM e repetição devem ser

mitigados pela solução.

Buscando maior aceitação dentro de processos organizacionais e sempre tentando

reduzir a quantidade de pré-requisitos impostos pelo sistema, dois requisitos são ainda

considerados no trabalho: a não exigência de cadastros adicionais de usuário e a capacidade

de operação durante janelas de tempo off-line.

Por fim, há o requisito de extensibilidade, que demanda que a solução seja

reusável por outras aplicações de maneira compatível com o padrão de intercomunicação da

plataforma Android.

4.2 Arquitetura e infraestrutura de segurança

A geral arquitetura da solução foi em grande parte construída pela integração

entre o modelo de autenticação desejado e a infraestrutura de segurança baseada em

(41)

processo de sincronia temporal desenvolvido, a autenticidade criptográfica dos códigos

gerados, as entidades da arquitetura, os seus modos de implantação e os modos de operação.

4.2.1 Modelo de autenticação

Uma das características marcantes da solução desenvolvida é sua mobilidade em

ambos os lados identificador e identificado. Essas qualidades de mobilidade se somam à

abstenção de hardware especializado e rapidamente convergem para um modelo de

autenticação baseado na interação entre dois smartphones.

Um modelo de autenticação baseado em smartphones dispõe de poder

computacional considerável assim como da oportunidade de implementar a autenticação de

dois fatores envolvendo sua posse. Nesse modelo, o smartphone em posse do identificado

assume o papel de provedor de identidade e o outro smartphone, em posse do identificador,

assume o papel de verificador. Essas duas partes passarão a ser comumente referenciadas no

trabalho como respectivamente provedor e verificador.

O canal de comunicação escolhido para o modelo foi o canal visual. Frente aos

canais de comunicação via rede, como Wi-Fi, Bluetooth e redes de telefonia, o canal visual se

destaca por apresentar as seguintes características, adaptadas de McCune et al (2005):

a) rapidez de reconhecimento (através de códigos QR) e consequente agilidade

da interação;

b) eliminação de problemas de conectividade e de identidade em rede através do

apontamento ativo e direto das câmeras dos dispositivos;

c) dificuldade de ataque ao canal visual devido aos recursos e esforços

necessários serem consideravelmente maiores que em ataques à comunicação

via rede;

d) não requer pareamento.

Assim, o modelo de autenticação da solução é construído pela interação visual

entre os dispositivos provedor e verificador. Particularmente, o princípio básico do modelo é

que o dispositivo provedor deve ser capaz de emitir um código visual de tamanha unicidade

que o dispositivo verificador será capaz de extrair sua identidade a partir da interpretação do

(42)

Figura 12 - Ilustração do modelo básico de autenticação

Fonte: elaborado pelo autor

O uso do canal visual no modelo de autenticação já representa um grande

obstáculo a ataques do tipo MITM, como aponta McCune et al (2005). Adicionalmente, dado

que a informação transmitida pelo código não é confidencial, mas sim única, um ataque do

tipo MITM não oferece grandes benefícios a um atacante. Por outro lado, um ataque de

repetição poderia ser extremamente danoso ao modelo em sua forma primitiva. Supondo que

um atacante fosse capaz de interceptar um código válido, ele poderia repeti-lo e assumir a

identidade da vítima indiscriminadamente.

Nesse cenário, a arquitetura é incrementada de forma a mitigar ataques de

repetição. Para isso, dois conceitos são introduzidos no modelo de autenticação: sincronia

temporal e sessão de autenticação. O princípio de sincronia temporal busca diminuir

drasticamente a janela de oportunidade de atacantes ao introduzir uma consciência temporal

no código gerado, limitando sua validade a apenas alguns segundos. O princípio de sessão de

autenticação estipula que uma identidade só pode ser recebida uma vez por sessão, rejeitando

repetições posteriores. Esses dois conceitos, aliados a resiliência do canal visual, reduzem a

viabilidade de ataques de repetição a níveis proibitivos.

4.2.2 Sincronia temporal

Para que o código assinado possa conter informações temporais, é necessário que

haja uma mínima sincronia de relógios entre os dispositivos verificador e provedor. Do

contrário, os códigos seriam potencialmente rejeitados como expirados ou adiantados.

Embora a sincronia de relógios seja comumente realizada via Internet, seu uso como única

fonte de sincronia aumentaria as necessidades de conectividade dos dispositivos, limitando a

(43)

Adicionalmente, visando dificultar a ação de um atacante que obtenha posse

temporária de um dispositivo, o tempo utilizado na aplicação deve ser independente do tempo

manipulável dos aparelhos. Embora smartphones Android disponham de um relógio interno

independente do relógio de usuário ele não é suficiente para resolver o problema. Utilizado

pelo controle interno de threads do sistema, esse relógio conta a quantidade de nanosegundos

desde o momento que o aparelho foi iniciado. Enquanto esse relógio é útil para o cálculo de

tempo relativo e por não ser manipulável, ele não representa uma informação temporal que

possa ser comparada a outro dispositivo. Ele será referenciado a partir de então como relógio

elapsed real time (ERT).

Com essas necessidades explicitadas, um algoritmo de sincronia temporal foi

desenvolvido para os módulos móveis da solução. Esse algoritmo foi inspirado em uma

versão simplificada do Network Time Protocol (ECE/CIS, 2012), ou NTP, e seu

funcionamento é descrito a seguir.

O primeiro aspecto relevante do algoritmo são suas fontes de tempo alternativas.

Oportunamente, smartphones modernos são capazes de obter tempo a partir de fontes que não

dependem de conexão com a internet: redes telefônicas e GPS. O algoritmo desenvolvido

utiliza essas fontes transparentemente quando não há conexão disponível, possibilitando a

sincronia de tempo mesmo estando “off-line”. O algoritmo escolhe a fonte mais adequada

dentre as opções dependendo do contexto atual do dispositivo.

Figura 13 - Ilustração das fontes alternativas de sincronia temporal

(44)

O princípio básico do algoritmo é: tendo sido obtida alguma informação real de

tempo, mesmo que seja uma única vez durante a inicialização atual do sistema, é possível

calcular o tempo real atual utilizando essa informação obtida e o relógio ERT. Para tanto, no

momento do recebimento, cria-se uma estrutura de dados contendo a informação temporal

recebida (T) e o estado do relógio ERT (E). A qualquer o momento, o tempo real atual (TR)

pode ser calculado a partir do estado do novo estado do relógio ERT (A), seguindo a fórmula:

TR = (A - E) + T (1)

No entanto, como T é oriundo de uma fonte externa ao sistema como a Internet, é

necessário compensar os eventuais atrasos na comunicação para mitigar os desvios temporais.

O protocolo NTP faz a correção desses desvios utilizando uma complexa estrutura de dados e

comunicação hierárquica contendo informações capturadas dos dois lados comunicantes.

Dado que na solução implementada aqui se utiliza o mesmo algoritmo para todas as fontes,

isto é, Internet, GPS e rede de telefonia, o algoritmo NTP original foi simplificado para operar

sem as informações que seriam geradas pelo lado servidor.

Assim, seguindo a estratégia de compensação de atraso simétrico do NTP, a

fórmula (1) anterior é incrementada da seguinte maneira: registra-se o estado (R1) do relógio

ERT ao iniciar a requisição de tempo e registra-se novamente o estado (R2) ao receber a

resposta. A qualquer momento futuro, o tempo real aproximado (TRA) será:

TRA = ((R2 – R1) / 2) + (A - E) + T (2)

Com essa estrutura de dados, tudo que o algoritmo de sincronia precisa fazer é

escolher a fonte apropriada de tempo e decidir quando coletar novas amostras. Na

implementação da solução, o algoritmo escolhe a fonte de tempo de acordo com

conectividade atual do dispositivo:

a) caso haja conexão com a Internet disponível, via pacote de dados ou WiFi,

essa será a fonte utilizada;

b) caso não haja conexão com a Internet disponível, a fonte de tempo será a rede

de telefonia;

c) caso a rede de telefonia também não esteja disponível, a fonte de tempo

utilizada será o GPS;

d) caso não seja possível contatar a Internet, a rede de telefonia, nem mesmo o

(45)

usuário é alertado de que o módulo se encontra sem fontes confiáveis de

tempo, sendo solicitado a ativar alguma fonte por um breve período.

Figura 14 - Ausência de fontes temporais

Fonte: elaborado pelo autor

Exceto no caso em que todas as fontes estão inacessíveis desde o momento em

que a aplicação foi iniciada, a sincronia temporal é automática e transparente ao usuário.

Imediatamente ao iniciar a aplicação, enquanto o usuário reage à abertura da primeira tela, o

gerenciador de tempo é disparado e age em segundo plano mantendo a sincronia temporal

sempre que necessário. Adicionalmente, nenhuma informação temporal é descartada

prematuramente ou atualizada sem necessidade, permitindo que trocas de contexto frequentes

não exijam novas sincronias em um período de tempo muito curto.

4.2.3 Autenticidade criptográfica

Para garantir a autenticidade do código provido na autenticação, assim como sua

integridade e não repúdio, faz-se uso de criptografia assimétrica. Um código com essas

qualidades é precisamente o que é representado pela assinatura digital em uma ICP.

No contexto da solução, a criptografia assimétrica traz benefícios sobre

criptografia simétrica, como a capacidade de autenticar o código provido sem armazenar

nenhuma informação crítica no dispositivo verificador. No caso alternativo em que

criptografia simétrica fosse utilizada, ambos os dispositivos precisariam conter uma chave

compartilhada para realizar a verificação, duplicando o fator de risco no caso de furto ou

perda de um dos dispositivos. Além disso, um esquema de atualização de chaves precisaria

ser desenvolvido para manter o dispositivo verificador a par de todas as chaves que ele precisa

Imagem

Figura  2  -  Recomendações  do  NIST  para  tamanhos  de  chave  e  algoritmos  de  acordo  com  a  época
Figura 5 - Distribuições Android em dezembro de 2013
Figura  6  -  Exemplos  das  telas  para  uso  do  keystore   nativo  no  Android  antes  da  API 18
Figura 7 - Exemplos de códigos QR e Data Matrix, ressaltando suas áreas de controle
+7

Referências

Outline

Documentos relacionados

● Arquiteturas de software são especificadas através de uma ou mais de suas visões.. Três

• Estudo do estado da arte em síntese de alto nível.. • Estudo de ferramenta de síntese de

Na camada de controle de acesso a autenticação e controle de acesso RBAC são modularizados por um mecanismo – intitulado Heimdall – criado para este fim,

а) а гешосао рага а morgue ои casa пюгшапа dos cad:.iveres das pessoas falecidas fora das estruturas de assistencia ·medico-sanitaria, desde que ет vida

– Em cada directoria todos os ficheiros devem ter identificadores distintos (directorias distintas podem conter ficheiros com mesmo identificador) – A cada utilizador é atribuído

As manifestações clínicas dos pacientes submetidos à angiocinecoronariografia, nas primeiras horas após o procedimento terapêutico percutâneo foram classificadas em nove categorias

A determinação do peso inicial das fêmeas submetidas à alimentação artificial por meio de tubos capilares influenciou no peso final dos carrapatos.. A alimentação artificial

“O aumento da eficiência e o plano de produção fizeram com que a disponibilidade das células de fabricação aumentasse, diminuindo o impacto de problemas quando do