4. OBLIGATION DE CONSULTATION ET D’ACCOMMODEMENT AUPRÈS DES
4.2 Opinion de la Régie
De forma a complementar o estudo analítico do tempo de execução dos algoritmos, foi realizado um estudo empírico a fim de comparar o tempo de execução do algoritmo Sel com o tempo de execução da mesma solução, utilizando o relacionamento entre as entidades sem o uso da criptografia. Para esta análise foi escolhido apenas o algoritmo Sel, pois os outros dois apresentaram o comportamento mais previsível.
O estudo consistiu em implementar um sistema, baseado no esquema de relacionamento privado, para, em seguida, simular o comportamento de vários usuários acessando este siste- ma e medir o tempo de resposta para cada requisição.
O experimento foi executado em um notebook dell, modelo xps l502x, equipado com o processador intel core i7-2630QM e 6GB de memória RAM. Para o desenvolvimento da apli- cação de teste foi utilizada a linguagem de programação Java 1.6.0_05, o SGBD Postgresql 9.0, o esquema de criptografia RSA com chaves de 2048 bits e o servidor de aplicações Apa- che Tomcat 6.0.
O modelo de dados do experimento foi composto pelas entidades representadas no dia- grama de entidade relacionamento da Figura 18, que simula um modelo de dados simplificado de uma clínica médica. O esquema de relacionamento privado foi utilizado sobre o relaciona- mento “Realiza” entre “Paciente” e “Consulta”. As entidades Profissional e Funcionário não foram implementadas.
Para implementar o relacionamento privado “Realiza”, foram criadas mais duas entida- des: “PacienteKey”, que armazena o par de chaves criptográficas de cada paciente e “Pacien- teCache”, que armazena o cache encriptado das consultas de cada paciente. Em uma imple- mentação real, a chave privada do paciente não deve ser armazenada no banco de dados, isto só foi feito para permitir a automatização dos testes. O relacionamento “Realiza” foi mantido para que pudesse ser feita a comparação entre as duas soluções. O modelo final pode ser ob- servado na Figura 19.
Figura 18: Diagrama de entidade relacionamento do sistema de teste
Após o desenvolvimento da aplicação de teste, foram implementados os geradores de car- ga, responsável por preencher as tabelas do banco de dados. Com os geradores, foram popula- dos três bancos de dados, um com 50.000, um com 250.000 e um com 1.000.000 pacientes. Cada paciente teve todos os seus dados preenchidos com valores aleatórios escolhidos dentro de um conjunto de valores válidos. Para cada paciente foram criadas entre 2 e 12 consultas, cujos atributos também foram preenchidos com valores aleatórios.
Cada caso de teste consiste em passar o código identificador de um paciente para o siste- ma, que busca o paciente e exibe todos os dados do paciente e de todas as suas consultas no formato XML. O conjunto de teste, contendo os códigos dos pacientes foi gerado aleatoria- mente. O experimento foi realizado ora via cache encriptado ora via relacionamento sem crip- tografia, com ambos utilizando o mesmo conjunto de teste.
Figura 19: Diagrama de entidade relacionamento do sistema de teste com as entidades do es- quema de relacionamento privado
O primeiro experimento foi realizado com o conjunto com 50.000 pacientes, através da ferramenta Jmeter24
, simulando 50 usuários acessando o sistema ao mesmo tempo, cada um realizando 80 requisições, totalizando 4.000 amostras.
Tabela 2: Avaliação de desempenho do esquema de relacionamento privado
Tipo de Acesso Tempo Médio de Resposta (ms) Desvio Padrão
Relacionamento em texto puro 12103 5604
Relacionamento privado 8895 4337
Fonte: O Autor
O primeiro resultado obtido, apresentado na Tabela 2, foi, de certa forma surpreendente, pois esperava-se que o acesso ao prontuário através do relacionamento privado tivesse um tempo de resposta mais alto, visto que envolve uma operação de criptografia e esta adiciona um tempo ao processamento.
A partir deste resultado, foi necessário aprofundar a investigação em relação às duas for- mas de acesso e, através do estudo do plano de consulta do SGBD, foi descoberta a origem do problema. Através do relacionamento de texto puro, o SGBD estava fazendo uma varredura sequencial (Seq Scan) na tabela “consulta” para localizar as consultas cuja chave estrangeira “paciente_id” atendia ao critério determinado, enquanto que, através do relacionamento priva- do, que mantém um cache das chaves primárias da tabela consulta, estava sendo realizada uma varredura indexada (Index scan). Após a descoberta do problema, foram criados índices na chave estrangeira “paciente_id” da tabela “consulta” e assim os dois tipos de acesso passa- ram a ter o mesmo tratamento do SGBD.
Após isolar a variável do SGBD, o experimento foi refeito, agora utilizando as três bases de dados. Os demais parâmetros não tiveram alteração. A Tabela 3 apresenta os resultados ob- tidos neste segundo experimento. É possível observar que, de fato, a criptografia adiciona uma sobrecarga ao processamento das requisições. A maior sobrecarga aconteceu no experi- mento que utilizou o banco de dados de 50.000 pacientes, no qual se observou que em média, o tempo de processamento de uma requisição através do relacionamento privado chegou a uti-
24 JMeter é uma ferramenta desenvolvida para realização de testes de desempenho em aplicações da Web. Com ela, é possí- vel simular diversos tipos de cargas e comportamentos (JMETER, [S.d.]).
lizar 78,14% do tempo de CPU com os métodos de segurança. A menor sobrecarga aconteceu no experimento que utilizou o banco de dados de 1.000.000 pacientes, no qual 54,76% do tempo de CPU foi utilizado para processar os métodos de segurança. Analisando o trade-off entre a segurança e desempenho, Ferguson et al.(2010) afirmam que não se importariam em utilizar 90% do tempo de CPU em um sistema de segurança confiável se a alternativa fosse um sistema rápido, porém inseguro.
Tabela 3: Avaliação de desempenho do esquema de relacionamento privado(com índices de árvore B nas chaves estrangeiras)
Tipo de Acesso Quantidade de
Pacientes
Tempo Médio de Resposta (ms)
Desvio Padrão
Relacionamento em texto puro 50000 1303 783
Relacionamento privado 50000 5961 2871
Relacionamento em texto puro 250000 2039 968
Relacionamento privado 250000 6148 3134
Relacionamento em texto puro 1000000 2955 1501
Relacionamento privado 1000000 6533 2791
Fonte: O Autor