Submissão Autenticada de Ficheiros ao SIGEX Segurança em Sistemas Informáticos José Martins - ei06031@fe.up.pt Marcelo Cerqueira - ei06093@fe.up.pt Grupo 10, T4
Índice Introdução... 3 Problema e Objectivos... 3 Solução... 4 Algoritmos Utilizados... 4 Criptografia... 4 Validação... 6 Teste... 7 Tecnologias... 8 Possíveis ataques... 8 Conclusão... 9 Anexos... 10 Manual de Instruções... 10 Submissão... 10
Introdução Cada vez mais, no meio académico, surge a necessidade de realizar provas em formato electrónico. Quer seja pela própria natureza da disciplina (ex: Programação), quer pela facilidade tanto para alunos como professores que podem até dispor de métodos de correcção automáticos. Para a FEUP é disponibilizado, pelo CICA, o SIGEX (Sistema de Gestão de Exames). Após a requisição de um exame por parte de um docente, o sistema irá fornecer uma chave privada e uma chave pública. A chave privada, será usada pelo professor e permite-lhe submeter os enunciados da prova, recolher todas as provas submetidas pelos alunos e controlar o tempo do exame. A chave pública é usada pelos alunos e permite-lhes aceder à página do exame, onde têm acesso aos enunciados e podem submeter a sua prova. Em termos gerais são estas as funcionalidades do SIGEX, mas existem alguns problemas do foro da segurança que serão detalhados no próximo capítulo. Problema e Objectivos Apesar de todas as funcionalidades deste serviço, actualmente não existe forma de saber se o exame que o professor vai corrigir é o mesmo que o aluno submeteu. O ficheiro pode ser alterado no intervalo de tempo entre a submissão e recolha enquanto está alojado nos servidores do CICA. É também importante referir que na altura do exame o aluno tem os recursos limitados, ou seja, uma forma de assinatura através de uma chave numa pen-drive não é viável. Para colmatar estas falhas de segurança e fazer face às limitações impostas surge o nosso trabalho. A ferramenta desenvolvida tem como objectivo garantir: Integridade dos ficheiros submetidos, ou melhor, permite detectar se a integridade desses mesmos ficheiros foi posta em causa, quer por alteração quer por destruição; Autenticidade das entidades envolvidas, isto é, as entidades são quem dizem ser; Irretractibilidade, ou seja, as entidades envolvidas não podem negar a sua identidade.
Solução Algoritmos Utilizados Para o desenvolvimento da aplicação foi utilizada criptografia baseada em cifragem irreversível (uni-direccional). A ideia chave deste tipo de criptografia é calcular um número (denomindo hash value) que seja característico de um texto ou ficheiro. Uma das principais vantagens é o facto do texto original não ser recuperável após ser aplicado o algoritmo. É bastante utilizado em situações que se pretende criar um canal de comunicação que favoreça autenticação entre as entidades envolvidas e verificação de integridade das mensagens trocadas. As propriedades de um algoritmo irreversível são: Simplicidade - a codificação do texto original é fácil; Não Reversabilidade - é impraticável inverter a sua função; Unicidade - é actualmente, computacionalmente impossível, encontrar dois textos P1 e P2 tal que H(P1) = H(P2); O algoritmo unidireccional utilizado nesta aplicação é o MD5 (Message Digest 5), desenvolvido em 1991 por Ronald Rivest MD4, usado especialmente para verificação de integridade em mensagens em que o o número resultante da aplicação da função tem 128 bits. Um exemplo da hash de uma mensagem calculada através do algoritmo MD5 será: Criptografia Um esquema da criptografia utilizada na aplicação após a submissão na sistema SIGEX está ilustrada na figura seguinte:
O sistema inicialmente calcula um hash value do ficheiro submetido utilizando o algoritmo MD5 e transforma-o num código fixo de 128 bits. Esse ficheiro F é concatenado à palavra-passe PWa do aluno que submeteu o ficheiro e é calculado através do mesmo algoritmo um código P. Esta palavra-chave do aluno é introduzida pelo aluno após a submissão do ficheiro e o respectivo pedido de recepção dos códigos para verificação de adulteração de dados. O código P calculado anteriormente é novamente concatenado a uma palavrapasse do conhecimento do CICA e transformada através do algoritmo MD5 um código Q. Posteriormente, para a validação de ambas as palavra-passe, será calculado um código auxiliar L para esta função como na figura seguinte: L é obtido através do hash da concatenação da palavra-passe do CICA e do aluno. Posteriormente os códigos P, Q e L são enviados para o email que o aluno especificou na altura em que submeteu o ficheiro correspondente ao resultado do exame e após ter feito um pedido de recepção dos códigos para verificação de adulteração de dados.
Validação O aluno, quando suspeita de alteração e adulteração de dados do ficheiro que submeteu anteriormente (através de, por exemplo, uma nota de um exame diferente que a esperada), deve dirigir-se à entidade de disponibilizou o SIGEX (neste caso, o CICA) para proceder à validação e teste dos códigos P, Q e L com o ficheiro submetido. Após a introdução dos códigos (P, Q e L), ficheiro F submetido e a palavrapasse do aluno, é efectuada a primeira validação que corresponde à verificação de alteração dos códigos P e Q, ou seja, são comparados os ficheiros Q e a hash obtida da junção de P com a palavra-passe do CICA. Uma comparação equalitativa positiva valida os códigos introduzidos e o sistema passa à próxima validação, se essa igualdade não for verificada não é possível continuar devido à possibilidade dos códigos terem sido modificados pelo aluno. A segunda validação tem como objectivo a detecção de um erro na introdução das palavras-passe pelo aluno e pelo CICA.
É utilizada uma comparação entre o hash value da concatenação de ambas as palavras-passe e o código L anteriormente enviado para o email do aluno. Se essa igualdade for verificada as palavras-passe inseridas estão correctas, se não for esse o caso as palavras-passe estão incorrectamente inseridas. Teste A fase de teste é o objectivo do projecto, ou seja, verificar a adulteração de dados do ficheiro submetido no SIGEX. Para verificar a adulteração de dados do ficheiro submetido é calculado do mesmo o MD5 e posteriormente utilizado no cálculo do mesmo algoritmo utilizando a sua concatenação com a password inserida pelo aluno. O sistema verifica se o código P será igual a esse valor. Se o teste for positivo então não houve adulteração de dados do ficheiro. Se o teste for negativo então o ficheiro submetido foi modificado, e o aluno poderá reclamar da nota que lhe foi atribuída.
Tecnologias As tecnologias utilizadas para a implementação desta aplicação são: HTML - utilizada para o desenvolvimento das páginas web; PHP - utilizada para o desenvolvimento das páginas web e para a aplicação dos algoritmos de encriptação; Javascript - utilizada para a validação dos e formulários e interacção com a páginas web; CSS - utilizada para definir a apresentação das páginas web; Possíveis ataques O MD5 é um algoritmo de encriptação unidireccional e é usado sobretudo para verificar a integridade de mensagens. Este tipo de algoritmos dificulta, idealmente impossibilita, que, uma vez tendo a hash de uma mensagem, reverter essa hash de forma a obter a mensagem original. Como a nossa aplicação usa este algoritmo várias vezes durante a sua execução, um possível ataque é tentar, através de brute-force, reverter a hash. Neste algoritmo em específico, isso é considerado impraticável, uma vez que teriam de ser testadas 2¹²⁸ entradas. Outro tipo de ataque e ainda baseado no brute-force, é o ataque de aniversário, que, reduz para o número de entradas a testar para 2⁶ ⁴, o que ainda é considerável. Outra forma de conseguir ludibriar o sistema, é o aluno conseguir de alguma forma, conseguir descobrir a palavra-passe do CICA. A segurança desta palavra passe, que estará armazenada num ficheiro, ficará a cargo do CICA. Deverá tentar, através de criptografia ou de outros métodos, manter a palavra-passe protegida de acessos não autorizados. Existe ainda a possibilidade, considerada muito remota, de haver colisões. Ou seja, diferentes ficheiros produzirem a mesma hash, ainda assim teriam de acontecer 4 colisões simultâneas (número de vezes que o algoritmo é aplicado), o que é altamente improvável e só uma infeliz coincidência poderia produzir esse resultado.
Conclusão A aplicação desenvolvida, se aplicada, forma uma mais valia tanto para o aluno, como para o professor e o CICA. O aluno poderá reclamar caso suspeite de uma alteração dos dados. Desta forma impede-se que um sujeito com intenção de prejudicar o aluno, altere o ficheiro submetido, e impede também que o aluno tente melhorar o seu exame depois do prazo de submissão. Estas vantagens poderiam tornar-se realidade com uma simples alteração do sistema actual e que achamos ser de fácil implementação. Isto permitiria evitar situações desagradáveis, tornando o sistema mais seguro e consistente.
Anexos Manual de Instruções Este manual permite mostrar passo-a-passo as funcionalidades da ferramenta desenvolvida. Existem duas operações básicas distintas que é possível fazer: submeter ficheiros de forma segura (Alunos) e verificar a integridade dos ficheiros (CICA). Submissão 1º - Aceder à página da ferramenta; 2º - Escolher o ficheiro que se pretende submeter; 3º - Clicar sobre Receber Notificação caso se pretenda submeter o ficheiro de forma segura; 4º - Preencher o endereço de email onde se pretende receber a notificação; 5º - Preencher os campos da password com uma palavra-passe que deve ser lembrada pelo aluno caso pretenda reclamar uma possível alteração do ficheiro; 6º - Clicar em Submeter ; 7º - O aluno recebe no seu email uma notificação do CICA que deve ser arquivada para uma possível futura reclamação;
Verificação 1º - Se o aluno suspeitar de uma possível fraude de alteração ou destruição parcial do(s) ficheiro(s) que submeteu dirige-se ao CICA; 2º - O responsável do CICA acede à página da Verificação de Adulteração de Dados ; 3º - Escolhe o ficheiro que o professor corrigiu; 4º - Através do email que o aluno deve possuir introduz os valores de P, Q e L; 5º - O aluno introduz a palavra-passe que usou no dia do exame; 6º - Carrega em Submit ; 7º - O sistema irá informar o CICA se existiu ou não adulteração do ficheiro;