• Nenhum resultado encontrado

Desenvolvimento do Protótipo

4.2 Módulo de Encriptação de Dados

4.2.3 Desenvolvimento do Protótipo

4.2.3.1 Tecnologias Utilizadas

Para implementação de um protótipo do módulo de encriptação da IPBrick cloud foram utili- zadas as seguintes tecnologias:

• Ambiente de Desenvolvimento - VM com guest OS IPBrick v6.1 (Debian GNU/Linux 7.5 wheezy).

• Pacote de Instalação - ecryptfs-utils (99-1+deb7u1). • Linguagens Front-End - JavaScript, HTML, CSS. • Gerenciador de Base de Dados - PostgreSQL. • Linguagens Back-End - PHP, Linux Shell Scripting. 4.2.3.2 Desenvolvimento do Front-End

Considera-se como fazendo parte deste nível de desenvolvimento, todos os procedimentos necessários à implementação das interfaces gráficas, sendo estas o meio de interação único entre o cliente e o módulo de encriptação da IPBrick cloud. No estudo do design das páginas, teve-se em conta a integração do front-end a desenvolver com a interface web de administração da IPBrick

cloud já existente, e que engloba um vasto número de módulos relacionados com configurações necessárias aos vários tipos de aplicações existentes na IPBrick cloud. Por esse motivo, o design de todas as páginas correspondentes ao módulo de encriptação dos dados deve ser idêntico ao da Figura4.6que representa a página principal da interface web de administração da IPBrick cloud.

Figura 4.6: Página principal da interface web de administração da IPBrick cloud.

O módulo de encriptação deve estar acessível num dos menus disponíveis do lado esquerdo da interface de administração da IPBrick cloud (Figura4.7). A página inicial indica o estado em que se encontra a encriptação dos dados (Figura 4.8). A partir da página inicial do módulo de encriptação é possível modificar o estado atual, ativando ou desativando a encriptação dos dados.

4.2 Módulo de Encriptação de Dados 57

Figura 4.7: Acesso ao módulo de encriptação do menu da interface de administração.

Figura 4.8: Resultado da implementação da página principal do módulo de encriptação de dados. É possível visualizar o estado "Off" correspondendo ao estado inativo.

Na página de alteração do estado atual do módulo de encriptação da IPBrick cloud para o modo ativo (Figura4.10), é estabelecida a interação necessária com utilizador para execução do protocolo de gestão de chaves do cliente, através de um formulário em que é pedido a inserção de uma password segura e a seleção do modo de encriptação. Existem dois modos de encriptação que diferem no destino da password do cliente após ativação da encriptação como foi possível observar no protocolo de gestão de chaves criptográficas (Figura4.5). Selecionando o modo "Safe", será feito um backup da password do cliente e o sistema permanecerá completamente automático. O modo "Extremely Safe" garante ao utilizador que a sua password não é guardada no sistema (me- canismo recomendado pela CSA), pelo que o mesmo terá que a inserir sempre que ocorra algum rebootinesperado da VM na cloud. Na Figura4.9 é possível observar um texto informativo que surge imediatamente antes do formulário de alteração do estado inativo do módulo de encriptação, com o intuito de dar conhecimento ao cliente dos diferentes modos de encriptação disponíveis. Para incremento da segurança, não existem estratégias de recuperação da password. O protótipo também não suporta a funcionalidade de alteração da password do cliente, assunto que é abordado no capítulo 6 como trabalho futuro.

Figura 4.9: Implementação da página informativa que faz a distinção entre os modos "Safe" e "Extremely Safe".

Figura 4.10: Resultado da implementação da página de alteração do estado do módulo de encrip- tação da IPBrick cloud para o modo ativo.

Após alteração do estado inativo, a página principal apresentará o estado "On" (Figura4.11), indicando que o módulo de encriptação da IPBrick cloud se encontra ativo. Durante esse estado, todo os dados do cliente gerados são armazenados no disco virtual no formato encriptando sendo que o cliente tem acesso permanente aos dados em texto claro até que exista alteração do estado ativo do módulo de encriptação.

Figura 4.11: Resultado da implementação da página principal do módulo de encriptação agora com o estado do módulo ativo, "On".

4.2 Módulo de Encriptação de Dados 59

A partir do estado ativo é possível desativar manualmente o módulo de encriptação ou o pró- prio pode ser desativado caso o modo escolhido tenha sido o "Extremely Safe" e o sistema sofra um reboot inesperado. A desativação manual (Figura4.12), é desaconselhada ao utilizador, uma vez que o mesmo deixa de conseguir aceder em texto claro, aos dados encriptados no disco virtual armazenados até então, podendo colocar em causa a disponibilidade das aplicações da IPBrick cloud, e os novos dados produzidos não ficarão armazenados na partição do disco virtual, no for- mato encriptado. Em caso de reboot, o sistema reconhece o acontecimento e avisa o cliente da necessidade de introduzir novamente a sua password (Figura4.13), através do envio de um e-mail executando um comando Linux próprio na CLI, e de um aviso exposto na página de alteração do estado atual do módulo de encriptação.

Figura 4.12: Resultado da implementação da página de alteração do estado ativo. É transmitido um aviso ao cliente sobre as consequências que podem causar uma possível desativação.

Figura 4.13: Ilustração de um aviso que é lançado sempre que o módulo de encriptação se encontre em "Extremely Safe Mode" e o sistema tenha sido alvo de um reboot.

As ativações e desativações do módulo de encriptação bem como as configurações adjacentes, não são procedimentos realizados em run-time. De facto, só existem alterações no funcionamento das aplicações da IPBrick cloud quando se executa uma funcionalidade presente numa das páginas da interface de administração cujo nome é Apply Configurations e que permite aplicar todas as configurações feitas até então.

4.2.3.3 Desenvolvimento do Middle-End

No âmbito da clarificação do sistema de comunicação da implementação do módulo de en- criptação, é importante fazer uma referência às base de dados. Para auxílio na aplicação das configurações no back-end do módulo de encriptação, é utilizada uma base de dados, por outras palavras, a ligação entre o front-end e o back-end é feita a partir de uma tabela própria para o módulo de encriptação, criada na base de dados local da VM.

Administrador Altera_estado EncriptaçãoMódulo Ativo Modo Force_Disable Nome ID Morada 1 1 Password

Figura 4.14: Modelo entidade-associação na origem da criação da tabela de auxílio ao módulo de encriptação na base de dados local da VM.

4.2 Módulo de Encriptação de Dados 61

A entidade "Administrador" corresponde ao cliente da IPBrick SA. Essa entidade já foi pre- viamente definida nas base de dados locais da IPBrick cloud, pelo que as atenções recaem apenas na entidade "Módulo de Encriptação". Esta última possui um tuplo "Ativo" que deverá consistir numa variável booleana na tabela criada para o propósito. O "Modo" é o tuplo que designa o modo de encriptação escolhido pelo cliente e deverá consistir numa variável binária em que "0" define o modo de encriptação "Safe" e "1" define o modo de encriptação "Extremely Safe". O tuplo "Force_Disable" indica se o módulo de encriptação foi ou não manualmente desativado pelo que deverá também ele consistir numa variável booleana na tabela da base de dados. O tuplo "Pas- sword" guarda temporariamente a password do cliente se o mesmo escolher o modo "Extremely Safe" e guarda permanentemente a password do cliente de forma ofuscada se o mesmo escolher o modo "Safe".

Refira-se que as variáveis relativas aos tuplos descritos anteriormente são consideradas como sendo variáveis de estado ou flags e por isso, a tabela criada requer só uma entrada para leitura e atualização dos valores.

4.2.3.4 Desenvolvimento do Back-End

A partir da parametrização feita pelo cliente nas páginas do módulo de encriptação dos dados da IPBrick cloud implementada na interface web de administração, e da incorporação dos valores dos parâmetros na tabela da base de dados criada para esse efeito, torna-se possível executar todos os procedimentos ao nível do back-end para ativação propriamente dita da encriptação. Considera-se como fazendo parte deste nível de desenvolvimento, todos os procedimentos que levam à implementação dos dois mecanismos seguintes:

• Automatização do protocolo de gestão de chaves do cliente. • Automatização do mounting da eCryptfs no sistema.

Os mecanismos foram implementados recorrendo a scripts System V para início, interrupção e reinício de aplicações nos sistemas operativos Linux. Apresenta-se um exemplo da estrutura de um script System V usado nos ficheiros desenvolvidos para o desenvolvimento efetuado no back- end:

1 # ## BEGIN INIT INFO

2 # P r o v i d e s : e C r y p t f s 3 # R e q u i r e d − S t a r t : $ n e t w o r k $ r e m o t e _ f s $ s y s l o g 4 # R e q u i r e d −S t o p : $ n e t w o r k $ r e m o t e _ f s $ s y s l o g 5 # S h o u l d − S t a r t : f i r s t b o o t 6 # S h o u l d −S t o p : f i r s t b o o t 7 # D e f a u l t − S t a r t : 2 3 4 5 8 # D e f a u l t −S t o p : 0 1 6 9 # S h o r t −D e s c r i p t i o n : f i l e f o r e C r y p t f s mount

11 # ! / u s r / l o c a l / b i n / s h 12 13 s t a r t ( ) { 14 15 # Mecanismos a u t o m a t i z a d o s 16 17 } 18 19 s t o p ( ) { 20 21 # D e s a t i v a c a o do modulo de e n c r i p t a c a o 22 23 } 24 25 # ## main l o g i c ### 26 c a s e " $1 " i n 27 s t a r t ) 28 s t a r t 29 ; ; 30 s t o p ) 31 s t o p 32 ; ; 33 r e s t a r t | r e l o a d | c o n d r e s t a r t ) 34 s t o p 35 s t a r t 36 ; ; 37 ∗ ) 38 39

40 e c h o " Usage : / e t c / i n i t . d / $ {NAME} { s t a r t | s t o p | r e s t a r t | f o r c e −r e l o a d } " >&2

41 e x i t 1

42 ; ;

43 e s a c 44 e x i t 0

Lista de Código 4.1: Esqueleto do script System V usado para a implementação do back-end. O código apresentado em4.1 começa com um cabeçalho (linhas 1-10). Esse cabeçalho per- mite definir qual a ordem de início e de paragem de cada serviço instalado no sistema operativo IPBrick aquando de um arranque e de um cessar da VM, respetivamente. Esta funcionalidade é relevante caso o cliente faça a seleção do modo de encriptação "Safe" no módulo de encriptação da interface web de administração da IPBrick cloud, em que o sistema deve permanecer comple- tamente automático e sendo assim, os dados do cliente devem ficar imediatamente disponíveis aquando de um arranque e indisponíveis apenas quando todos os serviços estiverem encerrados, aquando de um cessamento da atividade da VM.

Em "start()" é implementado o protocolo de gestão de chaves do cliente partindo como pa- râmetro de entrada, o valor correspondente à password do cliente guardado na tabela da base de dados associada ao módulo de encriptação. Após ser gerado o output que define a passphrase da

4.2 Módulo de Encriptação de Dados 63

eCryptfs, a password do cliente é eliminada da base de dados caso o mesmo tenha selecionado o modo "Extremely Safe". Com a passphrase gerada, é possível montar a eCryptfs nos diretó- rios que se pretendem seguros. Esses diretórios correspondem aos repositórios típicos dos dados produzidos pelo cliente do uso das várias aplicações da IPBrick cloud, sendo eles: os diretórios "/home" e o diretório "/var/lib/postgres" correspondente à base de dados local. A cifra de encrip- tação a selecionar é a AES no modo CBC e o tamanho da chave secreta simétrica é de 256 bits. O seguinte comando traduz um exemplo de como foi implementado o código para o acionamento da proteção num dos diretórios através da eCryptfs, na função "start()":

1 $ mount − t e c r y p t f s / home / / home / −o key = p a s s p h r a s e : $ p a s s p h r a s e , e c r y p t f s _ c i p h e r = a e s , e c r y p t f s _ k e y _ b y t e s = 3 2 , e c r y p t f s _ p a s s t h r o u g h =y , e c r y p t f s _ e n a b l e _ f i l e n a m e _ c r y p t o =y

Lista de Código 4.2: Excerto do código utilizado na função "start()".

Na lista de código 4.2, a variável bash "$passphrase" contém o valor que provém do resultado da execução do protocolo de gestão de chaves do cliente. Nos restantes parâmetros indica-se a cifra e o tamanho da chave secreta simétrica. Indica-se também em "ecryptfs_passtrough" que os ficheiros que já se encontrarem no diretório, não devem ser encriptados. A definição do último parâmetro de entrada do comando, faz com que exista encriptação dos nomes dos ficheiros. Como foi dito anteriormente, a passphrase da eCryptfs não fica armazenada no sistema. No sistema per- manece apenas a chave secreta simétrica gerada pelo protocolo interno da eCryptfs, isto, enquanto o módulo de encriptação se mantiver ativo. Em "stop()" (lista de código 4.1), procede-se à de- sativação da encriptação que por outras palavras consiste em desmontar a eCryptfs dos diretórios protegidos. Um excerto de código para desmontar a eCryptfs de um dado diretório pode ser ob- servado na lista de código4.3.

1 $ umount − t / home

Lista de Código 4.3: Excerto do código utilizado na função "stop()".