Publication
Auditing the quality of cryptographic material in virtual machines
dc.contributor.advisor | Inácio, Pedro Ricardo Morais | |
dc.contributor.author | Fernandes, Diogo Alexandre Baptista | |
dc.date.accessioned | 2015-07-24T09:30:45Z | |
dc.date.available | 2015-07-24T09:30:45Z | |
dc.date.issued | 2013 | |
dc.date.submitted | 2013-10 | |
dc.description.abstract | Cloud computing is, nowadays, a mainstream technology spiraling across the industry. Its clear advantages propelled this model to grow at a fast pace, attracting attentions from both the enterprise and academic worlds along the way. This computing model offloads on-premises Information Technologies (IT) and data to outsourced servers housed on data centers and hosted by some cloud or service provider. Those sets of servers form the cloud, and deliver, through the Internet, a broad vertical set of capabilities for end users and enterprise customers in the form of networking, processing or storage. Ultimately, the purpose of cloud computing is to provide anything-as-a-service in an interoperable, elastic and scalable, and on-demand manner, as a completely autonomous and self-provisioned pay-as-you-go measured service. In essence, cloud computing lowers the overall costs and speeds up the deployment of services, allowing costumers to be abstracted from the underlying details, but granting them the ability to focus on increasing business productivity. Cloud providers offer a large variety of services based on three main service delivery models: Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS), and Software-as-a-Service (SaaS). These are the result of the combination of innovative software and virtualization technologies with the well-known client-server paradigm. IaaS hands out platforms to develop cloud applications, while SaaS provides costumers with pre-built software packages. IaaS offerings, on the other hand, range from simple virtual servers to complex distributed virtual data centers, capable of running complete operating systems (or guests) and virtual subnets on top of hypervisors. Hypervisors manage the Virtual Machines (VMs), monitoring and mediating their creation, edition, deletion, migration, snapshotting, and restoration. Hypervisors also provide overlying VMs with emulated and virtualized hardware, thanks to the Central Processing Units (CPUs) support for virtualization, making co-resident guests running as if installed on real hardware. However, this new computing technology poses several security issues, over which cloud computing is quite often discussed and questioned. VMs belonging to different customers may run side-by-side on the same physical server, and this setup may be exploited via cross-VM attacks like side-channels and covert-channels. Because the virtualized layer abstracts the underlying hardware, operating systems kernels of guests may not behave as they would normally do because of their development assumptions, which normally state that the system will be installed on real hardware. This is particularly important for the generation of random material in Linux operating systems. The Linux Random Number Generator (RNG) relies on noise sources to output quality random material through the /dev/random or the /dev/urandom devices. The latter maintains a Pseudo-Random Number Generator (PRNG) state, but the former relies completely on entropic inputs gathered from kernel events, which are triggered by noise sources like kernel interrupts, mouse movements, keystroke timings, disk head seeks, or disk reads and writes. As a consequence of the virtualization, those kernel events may not be as heterogeneous and frequent for guests as they would normally be for host operating systems. Guests may be deprived of an otherwise more diverse set of entropic inputs due to the lesser number of distinct and available events. the scarceness to the /dev/random device, that might output weaker random material on a slower basis. Additionally, because VMs can run concurrently while sharing the same underlying hardware, it is possible to consider the hypothesis of material generated independently on each VM to be correlated. There is also the possibility for this correlation to be seen on snapshotted and restored guests. This dissertation is focused on the Linux RNG, investigating the outputs of the /dev/random device while the operating system is running inside a VM. As mentioned above, those outputs can be fewer and of less quality on IaaS cloud environments then on normal host circumstances. To investigate this subject, the work presented in this dissertation was structured in two main parts. First, an in-depth study of the concepts related with cloud computing and its security is presented. Second, the discussion then moves into the topic of randomness, describing the approaches used for generating random numbers, so as to introduce the Linux RNG later on, and the problem virtualization poses to it. A particular method was adopted for testing the /dev/random device over several cloud computing testbeds. All tests that were performed followed this method to examine the throughput efficiency of the generator and the quality of its outputs in terms of randomness. It is empirically shown that the Linux RNG is reasonably slow in making entropy available for /dev/random on multiple cloud computing scenarios. On the other hand, no correlation is found between the timings of the generation of random numbers in guests and hosts, and between co-resident guests. To show the impact of the slowness of the generator, a case study of the GNU Privacy Guard (GPG) is presented, showing that it takes a perhaps great amount of time to generate cryptographic keys when using the /dev/random device on VMs. Nonetheless, the randomness characterizing the random numbers outputted by the device are of high quality and independently generated on each guest. This means that cryptographic material generated on operating systems encapsulated by VMs should be of high quality as well, though generated more slowly, when the inherent source for generating random numbers is the /dev/random device of the Linux RNG. | por |
dc.description.abstract | A computação na nuvem é, hoje em dia, uma tecnologia já bastante integrada na indústria. As vantagens associadas a este modelo pavimentaram o caminho para a tecnologia crescer a um ritmo rápido, entretanto atraindo atenções dos mundos empresariais e académicos. Este modelo de computação migra as tecnologias de informação e os dados localizadas nas instalações dos clientes para servidores de terceiros hospedados por algum fornecedor de computação na nuvem ou de serviços. Tais conjuntos de servidores formam a nuvem, e fornecem um conjunto de capacidades úteis em forma de rede, processamento, e armazenamento, através da Internet para o utilizador final e clientes empresariais. O derradeiro propósito da computação na nuvem é de fornecer qualquer coisa como um serviço de forma interoperável, elástica e escalável, capaz de o fazer em tempo-real e autonomamente. Estes serviços são auto-provisionados e seguem o modelo de negócio de pagamento por utilização. Na sua essência, a computação na nuvem baixa os custos gerais and acelera o desenvolvimento de serviços, abstraindo os clientes dos detalhes subjacentes, mas concedendo-lhes a capacidade de aumentar a produtividade de negócio. Os fornecedores de computação na nuvem oferecem uma grande variedade de serviços baseados em três modelos principais de implementação de serviços: Infraestrutura-como-um-Serviço (laaS), Plataforma-como-um-Serviço (PaaS), e Software-como-um-Serviço (SaaS). Estes são o resultado da combinação de tecnologias inovadoras de virtualização com o paradigma bem conhecido cliente-servidor. PaaS fornece plataformas para desenvolver aplicações de computação na nuvem, enquanto que SaaS fornece pacotes de software já desenvolvidos. Por outro lado, laaS fornece desde servidores simples virtuais a complexos e grandes centros de dados virtuais capazes de correr sistemas operativos (ou hóspedes) e sub-redes virtuais por cima de hipervi sores. Os hipervisores gerem as máquinas virtuais, monitorizam-nas e mediam a sua criação, edição, destruição, migração, cópia, e restauro. Os hipervisores também oferecem às máquinas virtuais hardware emulado e virtualizado, graças ao suporte para virtualização das unidades de processamento central, resultando em hóspedes co-residentes com outros hóspedes, mas fazendo com que eles sejam processados como se tivessem instalados sobre a máquina anfitriã. No entanto, esta tecnologia nova de computação traz vários problemas de segurança, devido aos quais a computação na nuvem é várias vezes discutida e questionada. Máquinas virtuais que pertençam a clientes diferentes podem ser executadas lado-a-lado no mesmo servidor físico, e esta configuração pode ser explorada via ataques como canais-parale los e canais-escondidos. A camada de virtualização abstrai o hardware subjacente, e então o kernel de sistemas operativos hospedados pode não funcionar como funcionariam normalmente devido às suas assunções de desenvolvimento sobre o hardware. Isto é particularmente importante para a geração de material aleatório em sistemas operativos Linux. O gerador de números aleatórios do Linux depende de fontes de ruído para produzir material aleatório de qualidade através das interfaces / dev /randome / dev/urandom. Este último mantém um estado de gerador de números pseudo-aleatórios, mas o primeiro depende completamente das entradas entrópicas reunidas a partir de eventos do kernel e que são despoletadas por interrupções do kernel, por movimentos do rato, pelos momentos do pressionamento das teclas, pela procura em discos rígidos através das suas cabeças, ou de leituras e escritas em discos. Como consequência da virtualização, estes eventos poderão não ser tão heterogéneos e frequentes como seriam para sistemas operativos sobre os anfitriões. Os hóspedes podem ser privados de um conjunto maior e mais diversificado de entropia por causa do número total de eventos distintos disponíveis. Isto pode resultar em níveis baixos na piscina de entropia do Linux, consequentemente propa· gando a escassez para a interface /dev/random, que poderá produzir material aleatório mais fraco e menos rapidamente. Adicionalmente, por causa das máquinas virtuais correrem co-residentemente enquanto partilham o mesmo hardware, é possível considerar a hipótese de que o material aleatório gerado independentemente em cada máquinas virtual poderá estar correlacionado. Ainda existe também a possibilidade de ver esta correlação em hóspedes copiados e restaurados mais tarde. Esta dissertação foca-se no gerador de números aleatórios do Linux, investigando as saídas da interface /dev/random enquanto o sistema operativo é executado dentro de uma máqui nas virtual. Como mencionado em cima, essas saídas poderão ser em menor quantidade e de baixa qualidade em ambientes de computação na nuvem laaS, quando comparados para circuns tâncias normais de anfitriões. Para investigar isto, o trabalho apresentado nesta dissertação estruturou-se em duas partes. Primeiro, um estudo aprofundado dos conceitos relacionados com a computação na nuvem e a sua segurança é apresentado. O fluxo de discussão passa depois para o tópico da aleatoriedade, descrevendo as abordagens utilizadas para gerar núme ros aleatórios, de forma a introduzir o gerador de números aleatórios do Linux. Um método particular é adotado para testar esta interface em vários ambientes de teste de computação na nuvem. Este método foi seguido para levar a cabo todos os testes de análise à eficiência do gerador e à qualidade dos números aleatórios produzidos. Empiricamente é demostrado que o gerador de números aleatórios do Linux é razoavelmente lento ao disponibilizar entropia à interface /dev/random em múltiplos cenários de computação na nuvem. Nenhuma correlação é encontrada entre os carimbos de tempo da geração de números aleatórios entre hóspedes e anfitriões, e também entre hóspedes co·residentes. É apresentado o caso de estudo do GNU Privacy Guard (GPG) de forma a mostrar o impacto da lentidão do gerador, mostrando o tempo que leva para gerar chaves criptográficas quando é utilizada a interface / dev /random em máqui nas virtuais. No entanto, a aleatoriedade que carateriza os números aleatórios produzidos pela interface são de alta qualidade e independentemente gerados em cada hóspede. Isto significa que o material criptográfico gerado em sistemas operativos encapsulados por máquinas virtu· ais deverão ser de alta qualidade também, embora sejam gerados mais lentamente, quando a fonte de aleatoriedade é a interface /dev/random do gerador de números aleatórios do Linux. | |
dc.identifier.tid | 201289865 | |
dc.identifier.uri | http://hdl.handle.net/10400.6/3774 | |
dc.language.iso | eng | por |
dc.subject | Computação em nuvem - Segurança | por |
dc.subject | Computação em nuvem - Testes estatísticos | por |
dc.subject | Linux - Sistema operativo | por |
dc.subject | Gerador de números aleatórios - Linux | por |
dc.subject | Maquina virtual - Aleatoriedade | por |
dc.subject | Virtualização - Cliente-servidor | por |
dc.title | Auditing the quality of cryptographic material in virtual machines | por |
dc.type | master thesis | |
dspace.entity.type | Publication | |
rcaap.rights | openAccess | por |
rcaap.type | masterThesis | por |
thesis.degree.discipline | Engenharia Informática | por |
thesis.degree.level | Mestre | por |
thesis.degree.name | Dissertação apresentada à Universidade da Beira Interior para a obtenção do grau de mestre em Engenharia Informática | por |