Dissertação

{en_GB=Static Analysis of information flow for Python / Case study: Verification of the back-end of an e-voting system} {} EVALUATED

{pt=Com a evolução da tecnologia, o desenvolvimento de software aumentou significativamente e, como consequência, a necessidade de programadores de software nunca foi tão elevada. À medida que essa necessidade aumenta também aumenta a probabilidade da segurança do software produzido passar para segundo plano. Num mundo onde uma maior dependência no software implica mais métodos que os atacantes podem usar, a afirmação anterior é uma declaração muito perigosa. Uma das linguagens de programação mais usada é Python. Python é amplamente usado para implementar o lado do servidor de aplicações, pois várias estruturas estabelecidas foram criadas para esta linguagem, bem como um grande número de bibliotecas de terceiros para o programador usar. Python é considerada uma linguagem dinâmica, o que significa que algumas operações que poderiam ser realizadas antes da execução agora o são em tempo de execução. Para realizar uma análise automática do código que fornece fortes garantias de segurança, propomos uma ferramenta baseada no fluxo de informações capaz de analisar e detetar fluxos ilegais em termos de confidencialidade e integridade, exigindo apenas que o programador anote o seu código e que forneça os níveis de segurança que julgar necessários. O principal caso de teste deste trabalho será a análise de um sistema de votação eletrónica. Como o voto eletrónico depende da tecnologia, isso implica que este sistema herda também todas as suas falhas e problemas de segurança. A votação eletrónica é o caso de teste perfeito, pois é altamente dependente das propriedades que analisamos, tanto a confidencialidade quanto a integridade., en=With the evolution of technology, software development has highly increased and as so, the need for software developers has never been higher. As that need increases, so does the probability that security of the produced software takes a toll in terms of priority. And in a world where more dependance on software also translates into more methods attackers can use, that is a very dangerous statement. One of the most used programming languages is Python. Python is widely used to implement the server-side applications as several established frameworks have been created for it as well as a high number of third party libraries for the programmer to use. Python is considered a dynamic language, which means that some operations that could be performed before execution are now done so at run-time. In order to perform an automatic analysis on the code that provides strong security guarantees, we introduce a tool based on information flow that is capable of detecting illegal leaks in terms of both confidentiality and integrity, while only requiring the programmer to type annotate its code as well as providing the security levels that he deems necessary. The main test case of this work will be the analysis of an Electronic voting system, also known as e-voting. Since e-voting relies on technology, it consequently results in it inheriting all its flaws and problems security-wise. E-voting is the perfect test case since it highly emphasizes on the properties that we analyze, both confidentiality and integrity.}
{pt=Análise Python, Análise Estatica, Information Flow, en=Information flow, static analysis, Python analysis}

Outubro 14, 2020, 14:30

Orientação

ORIENTADOR

Jan Gunnar Cederquist

Departamento de Engenharia Informática (DEI)

Professor Auxiliar

ORIENTADOR

Ana Gualdina Almeida Matos

Departamento de Engenharia Informática (DEI)

Professor Auxiliar