• No results found

Na fase inicial não se distinguiu o tipo de ligação, para o envio dos dados, contudo percebeu- se que isso seria um problema. Diversos utilizadores de smartphones não possuem um plano de dados móveis, ou são limitados a um determinado tráfego. Para o envio dos dados adotou-se uma abordagem oportunista. Assim quando é detetada ligação à Internet através de Wi-Fi, é iniciado o envio dos dados armazenados.

Vários fatores, como a utilização de períodos de amostragem curtos, a disponibilidade cons- tante dos interfaces, ou poucas oportunidades de envio dos dados recolhidos, conduzem ao armazenamento de um grande volume de dados, sendo consumido tráfego significativo no seu envio. Esta situação representaria um problema para os utilizadores que utilizam os dados móveis, tendo consequentemente impacto na utilização da aplicação.

dos dados é processado apenas através de redes Wi-Fi.

Para o envio dos dados foi criada uma tarefa específica e independente, executada periodica- mente através de um temporizador. Esta tarefa, utiliza os métodos da classe DatabaseHandler, para a leitura dos dados armazenados na base de dados, enviando-os para o servidor utilizando a classe DataSender. Esta classe, foi desenvolvida não só para o envio dos dados para o servi- dor, mas também para a troca de informações necessárias ao funcionamento do DataManager, como o pedido e receção de configurações. Adicionalmente cria um nível de abstração, sendo responsável por executar os comandos REST.

Após a receção dos dados no servidor, é identificado o interface pelo qual foram recolhidos, sendo armazenados na base de dados MySQL especificada (Fig.6.12).

Na figura 6.17 está representado de forma sintetizada o processo de leitura e envio dados e armazenamento no servidor.

TIMER ENVIA DADOS

BD DATA DataManager.java DatabaseHandler.java http://geo.../GeoAds/DataManager/ receiveData.php BD DATA DataSender.java

ENVIAR PARA O SERVIDOR

TAREFA ENVIA DADOS

Dados LER DADOS ENVIAR EXECUTA HTTP POST (DADOS) HTTP RESPONSE (RESPOSTA) RESPOSTA APAGAR

LIGADO POR WI-FI? SIM

NÃO

TERMINA TAREFA TIMER TERMINA

ENVIA DADOS GPS ENVIA DADOS WI-FI

ENVIA DADOS GSM

ENVIA DADOS BLUETOOTH

ENVIA DADOS BATERIA INICIO

DADOS

DADOS ENVIADOS

2.5.1 Segurança dos Dados Enviados

Como foi abordado no estado da arte, a maioria das aplicações de sensing não implementam mecanismos de segurança, de privacidade e de integridade dos dados. Por consequência, é principalmente posta em causa a privacidade dos utilizadores.

Quando abordada no contexto das plataformas móveis, esta questão tem um impacto muito superior, não podendo de forma alguma ser desprezada. Por outro lado, é importante para o projeto garantir a integridade dos dados, de modo a que não sejam adulterados ou fabricados por terceiros. A solução para este problema reside na implementação de um mecanismo que utiliza criptografia para garantir a proteção dos dados. A criptografia consiste no estudo de princípios e técnicas, pelas quais a informação pode ser transformada da sua forma original para uma forma ilegível, de modo que apenas o recetor autorizado da mensagem tenha acesso à informação original.

Nos dias atuais, em que grande parte dos dados são digitais, o processo de criptografia é basicamente conseguido através de algoritmos que cifram os dados a partir de uma determinada chave ou par de chaves, dependendo do sistema criptográfico adotado. Deste modo, o primeiro passo é a identificação do algoritmo ou do método criptográfico que dê resposta aos desafios.  Cifras e Chaves

Uma cifra é um algoritmo criptográfico que consiste numa função matemática injetiva, que transforma texto limpo num criptograma. No passado, os detalhes das cifras eram secretos, sendo nesse princípio que residia a sua segurança. Contudo, na criptografia moderna, não é possível manter a segurança de uma cifra ocultando o seu funcionamento. A qualidade de uma cifra, distingue-se pelo tempo que permanece inquebrável, sendo o seu funcionamento do conhecimento geral.

No que diz respeito às chaves que utiliza, uma cifra pode ser:

• Simétrica: As chaves para cifrar e decifrar a mensagem são iguais. Os interlocutores partilham a mesma chave, que tem de ser previamente definida e mantida secreta. • Assimétrica: As chaves para cifrar e decifrar são diferentes, sendo uma chave pública e

outra privada. A chave privada tem de ser mantida secreta, apenas o recetor da mensagem deve conhece-la. Por exemplo, a entidade A utiliza a chave pública da entidade B para cifrar uma mensagem; ao receber a mensagem a entidade B utiliza a sua chave privada para decifrar. Desta forma, um intruso pode conhecer a chave pública, sem que isso comprometa a segurança da cifra, pois apenas o recetor conhece a chave para decifrar.

 Solução Implementada

Optou-se pela implementação de um algoritmo baseado em chaves simétricas. Esta solução permite garantir a segurança, a privacidade e a integridade dos dados. Sendo uma solução mais simples e com menor impacto na performance da aplicação do que uma solução baseada em chaves assimétricas.

Desta forma, foi utilizado o algoritmo de encriptação por blocos Advanced Encryption Stan-

dard (AES), também conhecido por Rijndael. Este algoritmo é utilizado como padrão pelo

governo dos Estados Unidos. O tamanho da chave deste algoritmo pode ser de 128, 192, ou 256 bits. A utilização de chaves de 192 e 256 bits é recomendada para informações altamente secretas.

Sendo o AES uma cifra por blocos, pode ser utilizada em diferentes modos de funcionamento. Dependendo do modo de funcionamento, varia a segurança, a eficiência, a ocorrência e tolerância a erros e o throughput.

O modo escolhido foi o CBC (Cipher Block Chaining), pois permite uma segurança mais elevada. O primeiro bloco é combinado com um vetor de inicialização que pode ser aleatório, sendo que o vetor de inicialização não necessita de ser secreto, mas tem de ser utilizado na decifragem. Os padrões do texto são mascarados pela operação XOR. Mesmo que o texto original seja igual, o criptograma resultante é sempre diferente, o que impede a ocorrência de ataques por code book e por repetição.

Em relação ao tamanho da chave utilizou-se AES-128, pois a utilização de AES-256 necessita de 4 iterações adicionais para misturar os restantes bits da chave, tornando o algoritmo mais lento, pois requer mais processamento. A utilização de AES-128 é adequado para o tipo de informação que se pretende proteger.

TEXTO LIMPO Partição (Padding) Cifragem

Chave da Cifra

Vetor de Inicialização

Criptograma (Blocos)