CPG: sincronização entre diferentes dispositivos
APRESENTAÇÃO GRUPO DCA DE SEGURANÇA
02 de outubro de 2015 – Campinas - SP
Universidade Estadual de Campinas - UNICAMP Faculdade de Engenharia Elétrica e de Computação – FEEC
Vitor Hugo Galhardo Moia Marco Aurélio Amaral Henriques {vhgmoia, marco}@dca.fee.unicamp.br
Agenda
• Cloud Privacy Guard (CPG) – Definição e objetivos – Características – Exigências para utilização – Requisitos atendidos – Funcionamento (demonstração)
• Sincronização entre diferentes dispositivos – Problemas – Solução – Etapas do processo – Casos de uso no CPG
• Estado atual do projeto • Próximos passos
2
CPG – Definição e objetivos
• Definição: – Ferramenta criptográfica em desenvolvimento para
melhorar a segurança e privacidade nas nuvens.
• Objetivos: – Dar mais controle do processo ao usuário.
– Ser mais fácil de utilizar. • Utiliza o mesmo conceito “Drag and Drop” usado em nuvens
populares para simplificar a interface com o usuário (similar ao Dropbox, OneDrive, Drive etc.)
– Permitir acesso aos dados por meio de diferentes dispositivos.
3
CPG – Características
• CPG pode ser integrado a vários CSPs disponíveis (Google Drive, Microsoft OneDrive, Dropbox etc.).
• Os usuários precisam criar e gerenciar apenas um segredo. – Usado para proteger suas chaves e para se autenticar na aplicação.
• Classificado como nível 3 de sigilo – Os dados são cifrados localmente antes de serem enviados para a
nuvem. – Usuários são os únicos a ter acesso a seus dados, uma vez que só eles
possuem as chaves criptográficas. – Obs. Se o usuário perder as chaves não há como recuperá-las: acesso
aos arquivos é perdido.
• Além de cifrar o conteúdo de um dado, o CPG também cifrar seu nome.
• Permite o usuário acessar seus dados de vários dispositivos. • O usuário pode habilitar a autenticação por dois fatores.
4
CPG – Exigência para utilização
• O usuário deverá possuir: – Uma conta previamente criada e configurada em
um provedor de nuvem;
– O aplicativo cliente deste provedor instalado e configurado em seu computador;
– Um certificado pessoal ICP-Brasil ou ICPEdu.
• O usuário também deverá manter o horário de seu dispositivo atualizado. – Caso contrário, poderão haver problemas na
sincronização entre diferentes dispositivos.
5
CPG – Requisitos atendidos
• O CPG atende uma série de requisitos: – Controle do ciclo de vida das chaves
criptográficas;
– Deduplicação segura;
– Separação de senhas;
– Alto nível de sigilo;
– Cifragem dos atributos de arquivos;
– Assinatura de códigos fonte e executável;
– Autenticação multi-fator;
– Maior usabilidade.
6
CPG – Funcionamento (demonstração)
7
CPG Cloud Privacy Guard
Sincronização entre diferentes dispositivos
• Necessidade de manter todos os arquivos sincronizados entre dispositivos diferentes.
– Um arquivo armazenado no dispositivo 1, deve estar disponível no dispositivo 2, 3,..., n.
– Qualquer alteração no arquivo em qualquer dispositivo deve ser refletida nos demais dispositivos.
– Se o arquivo for deletado de um dispositivo, o mesmo deve acontecer nos outros.
• O CPG realiza esta sincronização de forma transparente ao usuário.
8
Atuação do CPG
Cloud
Dispositivo 1
Dispositivo 2 Dispositivo 3
Sincronização Problemas
• Manter dois dispositivos sincronizados não é uma tarefa trivial. – Exigência de um processamento que se eleva a
medida que o número de arquivos crescem. • Deve-se calcular as diferenças entre os arquivos de um lugar
para outro.
• A sincronização é dificuldade ainda mais no CPG que lida com arquivos criptografados. – A comparação entre os arquivos é feita entre arquivos
em claro e arquivos cifrados. – O nome dos arquivos também são diferentes (CPG
cifra o nome dos mesmos).
10
Sincronização Solução
• Arquivo de estados – Alternativa adotada pelo CPG para auxiliá-lo na tarefa
de sincronização.
– Arquivo no formato XML.
– Armazena diversas informações sobre os arquivos.
– Cada pasta possuirá sem próprio arquivo de estados. Ele é armazenado na nuvem e localmente. • Localmente → pasta interna da aplicação, em uma estrutura
de níveis semelhante a utilizada pelo usuário na organização de seus dados.
• Nuvem → armazenado nas pastas na qual eles correspondem, porém de forma criptografada.
11
Arquivo de estados informações
• Atributo do arquivos de estados – dataUltimaModificação (date) data da última modificação do arquivo de
estados.
• Elementos de uma entrada de arquivo: – nomeArquivo (string) → nome em claro do arquivo – path (string) → caminho do arquivo (a partir da pasta da aplicação). – ultimaModificacao (date) → data da última modificação do arquivo em claro, no
formato: EEE MMM d HH:mm:ss zzz yyyy (Ex.: Tue Sep 22 14:18:13 BRT 2015) – ultimaModificacaoArqEncrypt (date) → data da última modificação do arquivo
criptografado, no mesmo formato utilizado no campo ultimaModificacao. – Diretorio (boolean) → Indica se determinado arquivo é um diretório ou não.
• Atributos: – pathArqConfig (string) → caminho onde se encontra o arquivo de estado
pertinente ao diretório sendo registrado. Se o registro pertencer a um arquivo, ele ficará vazio.
– nomeArquivoEncrypt (string)→ nome do arquivo em formato criptografado. Máximo de 30 caracteres.
– pathArquivoEncrypt (string) → caminho do arquivo criptografado (a partir da pasta da nuvem).
12
Arquivo de estados informações
• Atributos de um elemento de uma entrada de arquivo:
– id (int)→ número que identifica o arquivo. Sem utilidade no momento. Começa no 0 e é incrementado a cada nova entrada de arquivo.
– DataInsercaoRegistro (string)→ data de cadastramento do arquivo no arquivo de estados (É necessário???).
– UltimoDispositivoMod (string)→ nome (ou identificador) do dispositivo que realizou a inserção ou modificação do registro pertinente a esta entrada.
13
Arquivo de estados Versão antiga
14
____
_________
_________
_________
_________
Status.xml
____
_________
_________
_________
_________
Status.xml
____
_________
_________
_________
_________
Status.xml
...
Status.xml.encrypted
t56as
Dsajkl9(032a1
Qweqw231a2
Çlkpoii!90çd2f
Llopipkkaçlkfs
N123<mdsads
fdsfdsfsdfsdfs
Status.xml.encrypted
t56as
Dsajkl9(032a1
Qweqw231a2
Çlkpoii!90çd2f
Llopipkkaçlkfs
N123<mdsads
fdsfdsfsdfsdfs
Status.xml.encrypted
Atuação do CPG
t56as
Dsajkl9(032a1
Qweqw231a2
Çlkpoii!90çd2f
Llopipkkaçlkfs
N123<mdsads
fdsfdsfsdfsdfs
Status.xml.encrypted
t56as
Dsajkl9(032a1
Qweqw231a2
Çlkpoii!90çd2f
Llopipkkaçlkfs
N123<mdsads
fdsfdsfsdfsdfs
Cloud
pa2 pa1 paN
pn2 pn1 pnN
pnNuvem
____
_________
_________
_________
_________
Status.xml
____
_________
_________
_________
_________
Status.xml
Status.xml.encrypted
t56as
Dsajkl9(032a1
Qweqw231a2
Çlkpoii!90çd2f
Llopipkkaçlkfs
N123<mdsads
fdsfdsfsdfsdfs
Status.xml.encrypted
Atuação do CPG
t56as
Dsajkl9(032a1
Qweqw231a2
Çlkpoii!90çd2f
Llopipkkaçlkfs
N123<mdsads
fdsfdsfsdfsdfs
Status.xml.encrypted
t56as
Dsajkl9(032a1
Qweqw231a2
Çlkpoii!90çd2f
Llopipkkaçlkfs
N123<mdsads
fdsfdsfsdfsdfs
Cloud
1 7
2 8
3 9
4 10
CPG sendo utilizado por
dois dispositivos diferentes
pa2 pa1
pn2 pn1
pnNuvem
5 6
Sincronização Etapas do processo
• A sincronização no CPG é realizada em duas etapas: – Completa
• Todos os arquivos locais e da nuvem são verificados, onde são procurados por diferenças entre eles (arquivos novos, arquivos que faltam (excluídos) e arquivos modificados).
• Executada toda vez que o CPG inicia e de tempos em tempos (a definir).
• Vantagem: – Mais confiável – A aplicação pode ser fechada que quando for iniciada será capaz
de tratar novas atualizações.
• Desvantagem: – Requer mais processamento. Todos os arquivos são verificados.
17
Sincronização Etapas do processo
• A sincronização no CPG é realizada em duas etapas: – Parcial
• São criados dois threads especializados em coletar eventos que possam ocorrer nas pastas da aplicação local e na pasta da nuvem. – O S.O gera eventos específicos (criação de um dado, modificação ou
exclusão) que são coletados pelos threads e passados para o CPG.
• Executada após a verificação completa. Os threads ficam aguardando eventos gerados pelo S.O. enquanto o thread principal permanece “dormindo” e “acorda” quando algum evento ocorreu ou o tempo da verificação completa foi atingido.
• Vantagem: – Mais rápida: não precisa verificar todos os dados regularmente.
• Desvantagem: – Menos confiável. Eventos podem não ser repassados para o CPG.
– Não funciona enquanto o sistema estiver parado/fechado.
18
Sincronização Casos de uso do CPG
1. Sincronizar registros do arquivo de estados local com os atuais arquivos presentes na pasta da aplicação.
2. Sincronizar registros do arquivo de estados da nuvem com os atuais arquivos presentes na pasta da nuvem.
3. Comparar os arquivos de estados local e da nuvem. As informações mais recentes devem prevalecer.
4. Atualizar as pastas com os arquivos mais recentes.
5. Caso de uso: verificação completa da aplicação
6. Caso de uso: verificação parcial da aplicação
7. Caso de uso: aplicação é iniciada e não existem arquivos criptografados na nuvem e nem o arquivo de estados, mas existem arquivos locais na pasta da aplicação.
8. Caso de uso: aplicação é iniciada e existem arquivos na nuvem, assim como o arquivo de estados da nuvem, mas não existem arquivos locais na pasta da aplicação
9. Caso de uso: aplicação é iniciada e não existem arquivos na nuvem, na pasta da aplicação e nem mesmo os arquivos de estados local e da nuvem.
19
Sincronização Casos de uso do CPG
10. Caso de uso: aplicação é iniciada e existem arquivos na nuvem e localmente, assim como os respectivos arquivos de estados.
11. Caso de uso: Evento de inserção de arquivos/diretórios.
12. Caso de uso: Evento de deleção de arquivos/diretórios.
13. Caso de uso: Evento de modificação de arquivos/diretórios.
14. Caso de uso: É encontrado um arquivo ou diretório na pasta da nuvem que não foi guardado pela aplicação, e por esta razão, não se encontra no arquivo de estados.
15. Modificação de um mesmo arquivo em dois dispositivos diferentes antes de ambos estarem sincronizados
16. Deleção de arquivo já sincronizado em um dispositivo e alteração do mesmo em outro dispositivo antes da atualização
17. Renomear arquivos e diretórios
18. Travar arquivo de estados da nuvem para atualização
19. Liberar arquivo de estados da nuvem para permitir atualização
20
Estado atual do projeto
• Elaboração e revisão dos casos de uso relacionados ao sincronismo entre dispositivos. – Propor e implementar uma solução para os casos de uso 18 e 19.
• Implementação destes casos de uso no CPG.
21
Próximos passos
• Proceder com o desenvolvimento do CPG. – Implementar novos casos de uso relacionados ao sincronismos
entre dispositivos; – Realizar uma bateria de testes a fim de comprovar que o CPG
cumpre corretamente com o especificado nos casos de uso; – Implementar o compartilhamento de dados entre usuários; – Propor algum meio simples para que os usuários possam
verificar a autenticidade da aplicação sendo instalada em suas máquinas. • Pode-se apenas disponibilizar o código-fonte e o executável assinados.
• Começar a escrita da dissertação a partir do esqueleto proposto.
22
Obrigado!
Perguntas