Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Computação Forense e as oportunidades oferecidas pela
Computação em Nuvem
Dener Didoné1, Ruy de Queiróz
1
1 Centro de Informática (CIn) – Universidade Federal de Pernambuco (UFPE)
Cidade Universitária – 50.740-560 – Pernambuco – PE – Brazil
{dd,ruy}@cin.ufpe.br
Abstract. This paper aim to explore the principal opportunities offered by
Cloud Computing to Forensics Computing. Besides, we will discuss the
MapReduce programming model utilization in performing typical forensics
tasks, being delivered in the model as a service, through Cloud Computing,
enjoying the key characteristics provided by cloud.
Resumo. Este artigo visa explorar as principais oportunidades que a
Computação em Nuvem tem a oferecer a Computação Forense. A partir disso,
discutiremos a utilização do modelo de programação MapReduce na
realização de tarefas típicas de perícia, e sua utilização em conjunto com a
Computação em Nuvem, sendo entregue como serviço e usufruindo das
características chaves oferecidas pela nuvem.
1. Introdução
Em um passado não muito distante, a ocorrência de crimes digitais, usando dispositivos
eletrônicos como fim ou como meio para esses atos ilícitos era algo inimaginável. A
ubiqüidade oferecida pela Internet e somada aos avanços tecnológicos recentes, e mais
ainda ao barateamento dessas tecnologias fez com que esse tipo de crime se tornasse
freqüente.
Esse tipo de ilícito demanda de um profissional especializado no levantamento
de evidências digitais, sejam elas utilizadas para fins jurídicos (processos, detenções,
etc) ou fins comerciais, como por exemplo, na dispensa de funcionários por justa causa,
uma vez que este vazou informações confidenciais, que pode ou não seguir depois para
ações jurídicas.
A computação forense é uma disciplina relativamente nova, e crescendo a passos
largos, que surgiu em resposta a esses tipos de crimes, sendo utilizada por profissionais
que buscam a elucidação de casos envolvendo dispositivos digitais (computadores,
notebooks, PDAs, smartphones, etc).
A computação em nuvem surge hoje, em um contexto globalizado e
interconectado com o intuito de minimização de custos, escalabilidade e elasticidade
necessária aos vários ramos comerciais, organizacionais e governamentais que
dependem de TI (Tecnologia da Informação), além de prover armazenamento e poder
computacional “ilimitados”.
É visível a crescente demanda pela solução de crimes digitais, além disso,
Garfinkel (2010) cita como um fator complicante e um dos problemas em vista da
computação forense, ao aumento da capacidade de armazenamento dos dispositivos
digitais, o que significa que normalmente não é tempo para o perito criar uma imagem
do dispositivo para a realizar a perícia, ou até mesmo processar a grande quantidade de
dados.
Como um meio de colaborar com este problema pendente, e visando agregar os
valores intrínsecos que a computação oferece, este artigo propõe estudar as
oportunidades que a computação em nuvem pode oferecer a computação forense na
solução deste problema da quantidade de dados.
Discutiremos as definições de computação forense, computação em nuvem,
abrangendo também programação distribuída, mais especificamente o modelo de
programação MapReduce, que já tem demonstrado eficiência na solução de tarefas
típicas de perícia, e as questões relativas a segurança de uma proposta sugerida.
2. Definições
Apresentaremos brevemente as definições e conhecimentos chaves necessários para o
bom entendimento do artigo, abordando questões como computação forense,
computação em nuvem, computação distribuída, sendo mais especificamente abordado
o modelo de programação MapReduce.
2.1 Computação Forense
A Computação Forense surge da necessidade de solução de casos específicos
envolvendo dispositivos digitais, conseqüentemente executados com o auxílio da
Internet. Essa disciplina possui aproximadamente 40 anos, sedo uma evolução de
técnicas de recuperação de dados.
A computação forense é uma importante ferramenta na solução de crimes
cometidos utilizando o computador (por exemplo o phising) bem como crimes contra
pessoas (por exemplo a pornografia infantil), ou seja, que utilizam o computador como
fim ou como meio para um ato ilícito. O trecho abaixo, extraído de Lee et al. (2001) é
uma complementação ao que já foi dito.
Lee diz que a justiça esta sendo cada vez mais confrontada com esse tipo de
crime, sendo evidente o aumento da necessidade de investigação desses crimes
executados parcialmente ou totalmente com a ajuda da Internet, ou outros dispositivos
eletrônicos. Recursos e procedimentos são necessários para efetivamente se realizar os
quatro procedimentos básicos da perícia: identificação, preservação, análise e
apresentação das evidências. Essas evidências variam desde imagens até dados
criptografados, que podem ser utilizados para os mais diversos tipos de crimes.
O advento da computação, Internet e a disseminação de dispositivos entre a
população fez que com criminosos começassem a utilizar de tecnologia para
perpetuação de crimes, aproveitando-se do suposto anonimato que a Internet
proporciona.
Desde então, perícias em dispositivos eletrônicos (PDA, celulares, tablets,
notebooks, etc) se tornaram freqüentes e necessárias para elucidação desses crimes
eletrônicos. De acordo com o FBI, em 2009 foram examinados 6 mil casos através de 17
estados e mais de 2,300 TB de dados processados, o que equivale a mais ou menos 230
bibliotecas acadêmicas e um esforço que rendeu uma análise média de 9,58 TB de
dados/dia (considerando apenas dias úteis). (Regional Computer Forensics Laboratory
[RCFL], 2009).
A computação forense é uma ciência multidisciplinar que aplica técnicas
investigativas para determinar e análisar evidências, sendo possível em alguns casos até
formular uma hipótese das causas e efeitos das ações executadas no computador. Ela
segue métodos e procedimentos definidos para as etapas de perícia.
2.2 Computação em Nuvem
Ainda mais recente e mais controversa que a computação forense é a computação em
nuvem, que traz uma nova configuração na utilização de tecnologias já conhecidas,
sendo um termo genérico que pode ser definido como a evolução de tecnologias e
processos, compostos de serviços, aplicações, informações e infraestrutura distribuídos,
de modo que estes possam ser arranjados de maneira dinâmica, elástica e rápida, na
medida em que forem consumidos. (Marins, 2009).
A nuvem oferece serviços sob demanda, assim como a energia elétrica, ou o gás,
por exemplo, sendo uma evolução natural da Internet e das tecnologias de virtualização,
arquitetura orientada a serviços e modelo de pagamento “pay-as-you-go, onde paga-se
apenas pelo consumido. Os detalhes são abstraídos do consumidor, que não precisa ter
domínio da infraestrutura presente na nuvem para utilizá-la.
Segundo a definição do National Institute of Standards and Technology (NIST,
2009), a computação em nuvem é um modelo que permite acesso conveniente e sob
demanda utilizando a rede, a uma série de recursos computacionais compartilhados e
configuráveis, onde esses recursos podem ser rápida e facilmente providos ou liberados
com o mínimo de esforço de gerenciamento ou interação do prestador de serviço.
Vaquero et al. (2009) dizem que a definição de computação em nuvem ainda
esta evoluindo, e que a definição é valida apenas para o momento em que foi proferida.
Ele diz que hoje as nuvens são um grande agrupamento facilmente utilizáveis e
acessíveis de recursos virtualizados (como infraestrutura, plataforma e/ou serviços.
Esses recursos podem ser dinamicamente reconfigurados de forma a otimizar a
utilização dos recursos. Esse conjunto de recursos é tipicamente explorado no modelo
de pagamento por demanda, no qual as garantias são fornecidas pelo provedor de
serviço através de acordo a nível de serviço personalizados (Service Level Agreement –
SLA).
Através destas definições podemos notar um denominador comum sobre o que é
cloud, sendo eles escalabilidade, modelo de pagamento por consumo e virtualização.
Conforme ressalta Buyya et al. (2008), todos eses services computacionais precisam ser
altamente confiáveis, escaláveis e autônomos. A qualidade do serviço (Quality of
Service – QoS) pode ser determinada através através dos SLAs.
A visão do NIST (2009) define o modelo de computação em nuvem descrevendo
cinco características essenciais, três modelos de serviços e quatro modelos de
implantação. Tais características já são amplamente conhecidas e encontram-se
especificadas abaixo:
Serviço sob demanda, onde o consumidor pode prover capacidade
computacional (processamento, armazenamento, etc) de maneira automática,
sendo a necessidade de interação humana com o provedor de serviços;
Amplo acesso a rede, pois os recursos estão disponíveis pela da rede e podem ser
acessados e utilizados de forma padronizada, através de plataformas
heterogêneas (thin ou thick clients), bem como outros serviços tradicionais de
software ou baseados em nuvem;
Pooling de recursos, onde os recursos computacionais do provedor são
agrupados para servir a múltiplos usuários usando o modelo de multi-tenancy,
com diferentes recursos físicos e virtuais sendo dinamicamente arranjados e
rearranjados de acordo com a demanda do usuário. Há um certo grau de
independência de localização, no qual o usuário geralmente não possui nenhum
controle ou conhecimento sobre a exata localização dos recursos providos, mas
pode ser capaz de especificar a localização de uma maneira altamente abstrata
(ou seja, país, estado ou data center). Exemplos de recursos incluem
armazenamento, processamento, memória, rede, largura de banda e máquinas
virtuais. Até mesmo nuvens privadas tendem a fornecer um agrupamento de
recursos entre as diferentes partes da mesma organização.
Elasticidade, pois capacidades podem ser rapidamente e elasticamente providas
(até mesmo automaticamente) para uma rápida expansão, ou retração, de forma a
atender a capacidade desejada. Do ponto de vista do usuário, as capacidades
disponíveis aparentam ser “ilimitadas” podendo ser compradas em qualquer
quantidade em qualquer hora.
Medida do consumo, fazendo com que sistemas de nuvem automaticamente
controlem e otimizem a utilização de recursos, entregando uma métrica
apropriada de acordo com o tipo de serviço (armazenagem, processamento, etc).
Recursos podem ser monitorados, controlados e reportados, o que prove
transparência para os usuários e o provedor.
Os serviços oferecidos pela nuvem podem ser classificados em três modelos distintos,
abaixo os definimos segundo NIST (2009) e Vaquero et al. (2009):
Software as a Service – SaaS: software como serviço é uma alternativa a
execução local de aplicações, permitindo sua execução na infraestrutura
fornecida pela nuvem, onde podem ser acessados através de vários dispositivos
(tais como navegadores). Neste modelo o cliente não gerencia ou controla a
infraestrutura que compõem a nuvem (rede, servidores, etc).
Plataform as a Service – PaaS: plataforma como serviço possibilita a
implantação de aplicações criadas ou adquiridas pelo usuário nas infrasestrutura
da nuvem. Neste modelo o cliente também não gerencia ou controla a
infraestrutura que compõem a nuvem (rede, servidores, etc), mas tem controle
sobre as aplicações implementadas e as configuração do ambiente de
hospedagem.
Infrastructure as a Service – IaaS: a infraestrutura como serviço através da
virtualização permite dividir, atribuir e dinamicamente redimensionar
capacidade de armazenamento, rede e processamento, de acordo com a demanda
dos usuários, fornecendo recursos computacionais fundamentais. Neste modelo o
cliente tem controle sobre os sistemas operacionais, armazenamento, aplicações
implementadas e normalmente controle limitado sobre alguns componentes de
rede (por exemplo, firewalls).
Os quatro modelos de implantação são definidos a seguir pelo NIST (2009):
Nuvens públicas: A infraestrutura da nuvem é disponibilizada publicamente e
compartilhada entre diversos usuários usando o modelo “pay-as-you-go”.
Nuvens privadas: Possuem sua infraestrutura operada somente por uma
organização, podendo ser gerenciada pela própria organização ou terceirizada,
havendo possibilidade de existir na forma on premise e off premise.
Nuvens hibridas: É uma composição de duas ou mais nuvens (privadas,
comunidade ou públicas) e permite que nuvens privadas tenham seus recursos
ampliados a partir dos recursos de uma nuvem publica.
Nuvem comunitária: a infraestrutura da nuvem é compartilhada entre várias
organização e suporta uma comunidade específica que compartilha interesses
(por exemplo, requisitos de segurança, políticas, etc). Pode ser gerenciada pelas
organizações ou terceirizada e pode existir nas formas on premise e off premise.
Levando em conta as características, percebemos que a nuvem tem sim algo
novo a oferecer para a computação forense, seja no armazenamento, processamento, ou
seja, poder computacional ou nos modelos de entrega de serviços ou até nas formas de
implantação.
O fator escalabilidade associado ao custo compartilhado que a nuvem
proporciona é atraente para organizações e governos que visam grande poder
computacional na solução de perícias mas não querem investir em infraestrutura.
Tudo isso demonstra a nossa idéia de se disponibilizar Forense como Serviço
(Forensics as a Service – FaaS, que tal?) e iniciar nossas discussões. FaaS pode
representar uma nova oportunidade de se prover recursos computacionais para Forense
agregando todos os valores intrínsecos que a nuvem proporciona, que incluem
processamento e armazenamento “ilimitado” na sua utilização sob-demanda e rápida
elasticidade.
2.3 Computação Distribuída
O uso de computação distribuída na condução de tarefas de perícia é apresentada neste
artigo através da implementação do modelo de programação MapReduce, rodando na
nuvem. Nosso propósito é utilizar o Hadoop, que é uma implementação open source do
modelo de programação MapReduce, desenvolvido pela Apache.
2.3.1 MapReduce
MapReduce é uma paradigma de programação distribuída, desenvolvida pelo Google
para simplificar o desenvolvimento de aplicações escaláveis e de massivamente
paralelas que processem Terabytes de dados em clusters.
Programas escritos nesta linguagem functional são automaticamente
paralelizados e executados nas máquinas presentes no cluster. O sistema é quem toma
conta de detalhes de particionamento dos dados inseridos, agendando a execução dos
programas nas máquinas, tratando os erros e gerenciando a comunicação entre as
máquinas. Isso permite que programadores sem experiência como sistemas paralelos e
distribuídos possam facilmente utilizar os recursos desses grandes sistemas distribuídos.
(Dean & Ghemawat, 2004).
Para utilizar o MapReduce, o usuário especifica uma função de mapeamento que
processa um par (chave/valor) para gerar um conjunto intermediário de pares e reduzi-
los através de uma função de redução que une todos esses valores intermediários.
Muitas tarefas do mundo real podem ser expressas neste modelo, e isso inclui tarefas de
perícia (operações com string, processamento de imagens, analises estatísticas, etc).
(Roussev et al. 2009).
É apresentado abaixo o exemplo canônico, normalmente apresentado nas
literaturas, que conta o número de vezes que uma palavra ocorre em uma entrada (um
documento de texto, como no exemplo).
void map(String name, String document):
// name: document name
// document: document contents
for each word w in document:
EmitIntermediate(w, "1");
void reduce(String word, Iterator partialCounts):
// word: a word
// partialCounts: a list of aggregated partial counts
int result = 0;
for each pc in partialCounts:
result += ParseInt(pc);
Emit(AsString(result));
Neste exemplo, retirado de Dean et al. (2004), cada documento é dividido em
palavras, e cada palavra encontrada é contada inicialmente com o valor inicial 1 pela
função de mapeamento, usando a palavra como chave do resultado. O framework então
coloca os pares com a mesma chave juntos, onde a função reduce soma todos os valores
de entrada para então descobrir o total de ocorrências daquela palavra.
2.3.2 Hadoop
Hadoop foi desenvolvido como uma implementação open source do modelo de
programação MapReduce. Este é um projeto de alto nível da Apache, sendo construído e
utilizado por uma comunidade global de contribuintes, utilizando Java como linguagem
de programação.
Sua arquitetura é composta pelo Hadoop Common, que contem os arquivos base
necessaries para executar o Hadoop e fornecer suporte aos seus subprojetos: sistema de
arquivos distribuidos (Hadoop Distributed File System – HDFS) e o MapReduce.
De acordo com Apache Hadoop – HDFS Architecture Guide (2010), o HDFS é
um sistema de arquivos distribuido projetado para ser executado qualquer hardware,
sendo altamente tolerante a falhas e projetado para ser implantado em hardware de baixo
custo, proporcionando aos dados de aplicações altas taxas de acesso, além de ser
adequado para aplicações que trabalhem com grandes conjuntos de dados.
Embora o Hadoop seja implementado em Java, as aplicações que utilizam
MapReduce não precisam ser necessariamente escritas nessa mesa linguagem. Hadoop
Streaming é a utilidade que permite aos usuários criar e executar programas em qualquer
linguagem (como por exemplo em shell script).
3. Oportunidades em vista
Tenho em vista a demanda pela solução de crimes digitais, acrescida do aumento da
quantidade de armazenamento dos dispositivos eletrônicos, citado por Garfinel (2010), e
vislumbrando a quantidade de dados examinados pelo FBI em 2009, RCFL (2009), que
ultrapassou a marca de 2 mil TeraBytes, podemos ter uma idéia do problema que
estamos enfrentando.
O crescimento vertiginoso que a computação em nuvem vem passando fez com
que em 2010, o gasto com esta tecnologia chegasse a 16 bilhões de dólares, podendo em
2014 atingir a incrível marca de 56 bilhões. (Nichols, 2010)
Tais números demonstram o potencial de utilização desta nova onda tecnológica
que vem sendo considerada como um dos mais importantes acontecimentos da ciência
da computação, na resolução dos desafios da computação forense.
Além disso, é válido que governos comessem a pensar na proposta apresenta
abaixo como solução para um melhor aproveitamento do seu parque tecnológico.
Maiores detalhes vide Kundra (2010) e Paquette et al. (2010).
4. Proposta de utilização
Prevendo a crise da computação forense, Garfinkel (2010) cita o crescimento da
capacidade dos dispositivos de armazenamento como um dos tópicos desafiantes,
complementando que freqüentemente não há tempo suficiente para criar uma imagem
forense de um disco, ou processar todos os dados encontrados.
Uma sessão de brainstorming no CISSE 2008 explorou categorias de pesquisas,
tópicos e problemas na computação forense. Um dos resultados desta discussão foi um
artigo onde Nance et al. (2009) identificaram seis categorias para pesquisas de
computação forense, e entre estas há uma categoria chamada Volume de Dados, onde os
autores citam a paralelização do processamento de dados como uma das possíveis
soluções para o problema.
Conforme citado anteriormente, a quantidade de dispositivos aliados ao
crescimento do espaço de armazenamento e ao barateamento da tecnologia faz com que
Terabytes de dados sejam analisados em casos de cybercrime. O problema é que isso
acabada extrapolando o poder computacional de estações forenses utilizadas nos
laboratórios pelos peritos de hoje.
Uma abordagem interessante utilizando clusters e recurso de larga escala
distribuídos tem demonstrado eficiência na condução de tarefas forenses, como
apresentado por Roussev et al. (2004), onde o grande potencial da utilização de recursos
de cluster são demonstrados em um protótipo através da condução de experimentos que
comprovaram a redução nos tempos de execução das tarefas forenses. Os autores
reforçam também a necessidade de técnicas de análises forenses mais sofisticadas,
podendo estas ser habilitadas pela transição das ferramentas atuais, para ferramentas
distribuídas.
Outro esforço realizado por Tang et al. (2005) criou um framework para
realização de perícia em rede (network forensics) baseado em técnicas distribuídas
fornecendo assim uma plataforma integrada para coleta e armazenamento de evidências
forenses em rede, além de incluir um mecanismo para geração de gráficos de ataques
que ilustram os procedimentos utilizados por hackers. Outro esforço neste sentido é o
ForNet, de Shanmugasundaram et al. (2009), utilizando forense distribuida que visa a
coleta e consulta de evidências de rede.
Uma proposta recente apresentada por Roussev et al. (2009) descreve os
esforços realizados para uma nova implementação do modelo de programação
MapReduce, que supera significativamente os trabalhos anteriores na condução de
tarefas típicas de forense em grandes conjuntos de dados, demonstrando escala linear
para processamento intensivo e até mesmo escalas super lineares para tarefas
envolvendo indexação.
Em seu trabalho Roussev et al. (2009) utiliza uma abordagem para acomodar
mais processamento no mesmo espaço de tempo, suportando a utilização de mais
recursos de hardware, o que permite que mais recursos sejam implantados. O foco de
Roussev é exclusivamente na utilização de recursos computacionais distribuídos para
aprimorar os tempos gastos na condução de investigações forenses.
Além desses estudos, ferramentas comerciais de pericia como o Forensics
Toolkit (FTK) da AccessData, passaram a incluir suporte a processadores multi-core e a
utilizar distribuição de processamento, porém com distribuição ainda limitada.
Uma vez citados os trabalhos relacionados, além das características essenciais e
os benefícios trazidos pela nuvem, e demonstradas as características viáveis e que
permitem a implementação do MapReduce tentaremos não tornar a idéia redundante.
Nosso modelo visa demonstrar o uso de computação em nuvem para fornecer forense
como um serviço (Forensic as a Service – FaaS) através de plataformas flexíveis,
elásticas e dinâmicas bem como poder de armazenamento e processamento “ilimitados”,
em conjunto com o modelo de programação MapReduce na sua implementação open
source, o Hadoop, além de demonstrar que o uso de forense como um serviço se torna
essencial, interessante e acessível a corporações, governos e usuários.
Embora MapReduce não responda a todos os problemas de distribuição de
processamento, por enquanto tem demonstrando grande capacidade na resolução de
problemas relacionados a tarefas forenses, como operações com string, processamento
de imagens, análises estatísticas, etc.
Figure 1. Modelo proposto para entrega de Forense como Serviço
A figura 1 ilustra o cenário da nossa proposta, onde usuários poderão utilizar
quaisquer dispositivos (os mais comuns ainda são os computadores e notebooks) para
acessar servidores através da nuvem e então realizar tarefas de perícia, aproveitando-se
das funções do MapReduce implementadas pelo Hadoop.
Apresentaremos duas opções de implementação do modelo proposto, tanto em
nuvens públicas quanto privadas, nos modelos on-premise e off-premise. A escolha
entre nuvens públicas e privadas diferencia-se no quesito de segurança das informações,
segurança da nuvem e utilização de parque tecnológico próprio.
4.1. Implementação pública a privada
Nossa escolha de implementação pública será dado através do serviço oferecido pela
Amazon Web Services (AWS) o Amazon Elastic Map Reduce, um serviço web que
permite as empresas, pesquisadores, analistas de dados e desenvolvedores processar de
maneira fácil (a um custo razoável) grandes quantidades de dados. Este serviço utiliza o
Hadoop utilizando computação oferecida pelo Amazon Elastic Compute Cloud (Amazon
EC2) e Amazon Simple Storage Service (Amazon S3), de forma off-premise. (Amazon
Web Services [AWS], 2011).
Para execução do seu fluxo de trabalho utilizando o Elastic MapReduce, é
necessário a configuração do tipo e da quantidade de instâncias que serão utilizadas no
processamento, oferecidas através do serviço Elastic Compute Cloud (EC2). A Amazon
oferece quatro tipos de instâncias: padrão (desempenho equilibrado e genérico); alto
poder de memória; alto poder de processamento; e instâncias de alto desempenho
(combinando alto poder de memória com alto poder de processamento e rede interna de
10 Gbps).
Para utilização do MapReduce, além de levantar as instâncias utilizando o EC2,
deve-se utilizar o serviço de armazenamento para as entradas e saídas das suas
computações, para isso utiliza-se o Simple Storage Service (S3). Este serviço é oferecido
através da Internet e prove uma interface simples que pode ser usada para armazenar ou
recuperar quaisquer quantidades de dados, a qualquer momento, independente de onde
você estiver.
Núvens públicas como a da Amazon provém uma estrutura robusta, facilmente
administrável e com muitas opções de escalabilidade, sendo um dos serviços mais
conhecidos e confiáveis de computação em nuvem, porém esbarrando em questões de
segurança, privacidade e questões legais, ainda não solucionadas, que serão discutidas
posteriormente.
A escolha de implementação em nuvens privadas acabam por complementar e
até mesmo amenizar essas questões de segurança ainda recentes no uso de computação
em nuvem.
Uma solução para implementação de núvens privadas é o Eucalyptus (Elastic
Utility Computing Architecture Linking Your Programs To Useful Systems), que é uma
infraestrutura de software de código aberto para implementação de nuvens on-premise
em organizações que já possuem infraestrutura (data center) estabelecida, com isso os
dados sensíveis permanecem seguros pois são instalados atrás dos firewalls das próprias
empresas. (Eucalyptus System, 2009).
A plataforma de gerenciamento do Eucalyptus fornece um sistema para que o
administrador da nuvem possa satisfatoriamente gerenciar e controlar seu sistema.
Existem várias interfaces personalizáveis disponíveis, podendo ser definidas de acordo
com o privilégio de cada usuário (administrador, gerente de projeto, desenvolvedor, etc).
Além disso, existem algumas outras características oferecidas por essa plataforma de
gerenciamento, que inclui a gestão das máquinas virtuais, armazenamento, gestão de
usuários/grupos, definições de acordos a níveis de serviço, entre outros. (Eucalyptus
System, 2009).
Eucalyptus é uma implementação de código aberto, pensada para simplificar o
processo de construir e gerenciar uma nuvem privada para necessidades de quaisquer
tamanho e de acordo com Wardley et al. (2009), as distribuições mais recentes do
Ubuntu incluem o Eucalyptus, como um dos componentes da distribuição chamada de
Ubuntu Enterprise Cloud (UEC), fornecendo compatibilidade com a estrutura da
Amazon (EC2 e S3).
O Hadoop se encaixa e trabalha de maneira simples e fácil no Eucalyptus, e a
partir disso a execução de tarefas no Hadoop através do Eucalyptus passa a ser uma
tarefa simples, que não requer maiores conhecimentos técnicos por parte do perito.
A proposta oferece a utilização do Eucalyptus para criação da nuvem privada,
porém não se limita apenas a essa plataforma de software, outra plataformas podem ser
utilizadas na proposta. Além do Eucalyptus, um outro serviço oferecido pela Amazon,
chamado Virtual Private Cloud (VPC) nos chamou a atenção, e pode vir a ser uma
solução para implementação do modelo proposto. Apesar de não ser uma idéia madura,
a utilização deste serviço se encaixa nos parâmetros da proposta, permitindo que você
conecte uma estrutura já existente juntamente a um conjunto isolado de recursos
oferecidos pela Amazon, permitindo a utilização da computação em nuvem, instâncias
EC2 da Amazon, Armazenamento S3 e MapReduce através da utilização de Virtual
Private Network (VPN).
5. Adoção, uma questão de confiança
A segurança é um dos aspectos chaves para a adoção da computação em nuvem, sendo
amplamente discutida entre as empresas e governos, na busca por padrões que forneçam
segurança das informações e incluam proteção a privacidade. (Kundra, 2010).
Hoje, a decisão em se adotar a computação em nuvem, independente da sua
aplicação, é baseada em riscos, não em tecnologia, uma vez que a computação em
nuvem assume vários níveis de segurança da informação, dependendo do modelo
escolhido.
Esta proposta, e a decisão sobre a adoção da computação em nuvem,
independente do modelo adotado ser publico ou privado envolve questões relacionadas
a segurança, uma vez que resultados da computação serão usados como evidências em
casos de perícia.
Nuvens públicas esbarram em questões legais e de segurança. Segundo
Damoulakis (2010) e com complementação de Iball (2010), as questões mais levantadas
são:
Onde estão meus dados?
Como meus dados estão sendo protegidos?
Quem pode acessar ou visualizar meus dados?
Como as instalações físicas e digitais são seguradas?
Quão freqüentemente são realizadas rotinas de checagem e auditoria de acesso a
áreas restritas pelos administradores do sistema?
Quais são os padrões industriais que o provedor possui?
Além dessas questões, Iball (2010) diz que muitas outras ainda podem ser feitas
e servir de base para sua decisão sobre qual modelo, fornecedor e se vale realmente a
pena aderir a esta tecnologia. Isso faz com que diminuam as chances dos seus dados
serem expostos a riscos desnecessários, e mais, possuir um bom Acordo em Nível de
Serviço (Service Level Agreement – SLA) é um ponto chave para um relacionamento de
longo termo satisfatório com seu provedor de serviços.
O acordo em nível de serviço é responsável por nortear a confiança entre as
partes (consumidor e provedor), e isso é importante, pois são nesses acordos que são
definidos os detalhes cruciais para a implementação da proposta, personalizando todos
os requisitos de segurança. Mais sobre adoção e escolha de provedores são tratadas pela
Cloud Security Aliance - CSA (2009) e Jericho (2009).
Antes de escolher um provedor qualquer e executar suas instâncias, devemos nos
atentar a questões legais, tanto de jurisdição quanto de normas e regulamentações. Por
exemplo, na União Européia a segurança é abrangida pela lei, ou seja, a lei de proteção
de dados Européia estipula que qualquer empresa, como dona dos dados, é totalmente
responsável pela segurança dos seus próprios dados. O Ato de Proteção de Dados do
Reino Unido, de 1998 requer que empresas incorporem requisitos de segurança em
contratos de terceirização com empresas que venham a processar os dados. Isso
demonstra que o ônus vai todo para pequenas e medias empresas, que devem ter
garantias que o provedor de serviços em nuvem forneça os níveis de segurança
apropriados.
Se comparada as nuvens publicas, as nuvens privadas apresentam um beneficio
mais satisfatório, devido as questões relacionadas aos mecanismos de segurança e
jurisdição, amplamente entendidos e aplicados. As nuvens privadas utilizam data
centers já estabelecidos nas empresas, sendo protegidos por um firewall, podendo então
ser gerenciados pela própria organização (o que é mais seguro) ou ter o gerenciamento
terceirizado.
Com nuvens privadas é possível ter o senso de localização quanto aos dados,
onde estão sendo armazenados e executados, quem são responsáveis por eles, quem tem
acesso, além de outras questões de proteção física e digital. Porém, não há
compartilhamento de custos entre diversos usuários.
Confidencialidade, privacidade, integridade e auditabilidade ainda são questões
em aberto, e para garantir que a nuvem possa ser utilizada para entrega de forense como
serviço, devemos levar em conta essas questões nos casos de perícia.
5.1 Software
Modelos tradicionais de software normalmente estão restritos ao uso apenas no
computador onde eles estão sendo executados, devido a isso, muito provedores de
computação em nuvem utilizam ferramentas de código aberto, uma vez que ferramentas
comerciais ainda não possuem uma licença aceitável para se trabalhar em nuvem.
Além disso, as ferramentas forenses atuais não utilizam todo o poder disponível
em ambientes em nuvem, menos ainda no contexto da utilização do modelo de
programação MapReduce, para tanto vale a pena discutir a necessidade de se re-escrever
códigos para implementação efetiva do modelo.
Programação paralela é mais eficiente que programação serial e também pode
ser usada para resolver problemas em grandes conjuntos de dados utilizando recursos
não locais. Quando há um conjunto de computadores interligados em rede, neste caso a
nuvem, nós temos um grande poder computacional nas mãos, podendo fazer uso de
processamento distribuído e programação paralela utilizando MapReduce para
solucionais problemas forenses em grandes quantidades de dados.
Muitas aplicações forenses podem ser especificadas utilizando este modelo, e
exemplos podem ser encontrados no trabalho de Roussev et. al (2009), citando o uso do
wordcounter que calcula o numero de vezes que uma palavra aparece em um texto; pi-
estimator que calcula uma aproximação do valor de PI baseado no método de Monte
Carlo; grep que realiza uma busca no texto; e uma aplicação de bloomfilter, que faz o
hash de um arquivo em blocos de 4 KB utilizando SHA-1 e então os insere em Bloom
filters.
6. Conclusão
Esta proposta visa propor uma solução viável utilizando computação em nuvem para um
dos desafios da computação forense, citado por Garfinkel (2010), onde a grande
capacidade dos dispositivos de armazenamento tem causado problemas, pois
normalmente não há tempo necessário para a criação de imagens forenses, ou para
processar os dados encontrados.
Nós apresentamos os conceitos envolvendo a computação forense e a
computação em nuvem, chegando a um modelo que utilize o modelo de programação
MapReduce distribuído através da nuvem, nas formas publicas ou privadas, fornecendo
então Forense como Serviço (Forensic as a Service – FaaS) como um meio de
solucionar o problema citado anteriormente, de se trabalhar com dispositivos com
grande capacidade de armazenamento.
O uso da computação em nuvem vem se consolidando e mostrando indicações
de que será mais presente na vida cotidiana do que já é, e agora nós precisamos que
padrões de uso, confiabilidade, privacidade e outras questões de segurança discutidas no
texto sejam estabelecidas.
Questões legais ainda caminham vagarosamente, uma vez que ainda existem
crimes não abrangidos pelas leis atuais (brasileiras principalmente), mas devemos
continuar trabalhando para garantir que casos realizados através desta solução
apresentada tenham validade legal em casos de envolvendo a justiça. Esta é apena uma
solução apresentada para o problema da quantidade de dados, é possível que outras
soluções utilizando abordagens diferentes possam surgir, trazendo novos resultados e
utilizando novas tecnologias.
Referencias
Amazon Web Services – AWS (2011). Amazon Elastic MapReduce. Disponível em:
<http://aws.amazon.com/elasticmapreduce/>. Acesso em 6 jan. 2011.
Apache, Hadoop (2010). HDFS Architecture Guide. Disponível em:
<http://hadoop.apache.org/>. Acesso em 11 jan. 2011.
Buyya. Rajkumar, Yeo. Chee Shin, Venugopal. Srikumar (2008). Market-Oriented
Cloud Computing: Vision, Hype, and Reality for Delivering IT Services as
Computing Utilities. 10th IEEE International Conference on High Performance
Computing and Communications, 5-13.
Cloud Security Alliance – CSA (2009). Security Guidance for Critical Areas of Focus
in Cloud Computing V2.1.
Damoulakis, Jim (2010). In Clouds we Trust. IT NOW, 52(2), 11-12.
doi:10.1093/itnow/bwq142.
Dean, J. and Ghemawat, S. (2004) MapReduce: Simplified Data Processing on Large
Clusters. Sixth Symposium on Operating System Design and Implementation – OSDI.
Google Inc.
Eucalyptus System (2009). Eucalyptus Open-Source Cloud Computing Infrastructure -
An Overview. Disponível em: <http://www.eucalyptus.com/
pdf/whitepapers/Eucalyptus_Overview.pdf>. Acesso em 5 fev. 2011.
Garfinkel, Simson L (2010). Digital Forensics Research: The next 10 years. Digital
Forensics Research Workshop (DFRWS).
Iball, John (2010) Don't Cloud Data Security. ITNOW, 52 (2), 14-15. doi:
10.1093/itnow/bwq143.
Jericho Forum (2009). Cloud Cube Model: Selecting Cloud Formations for Secure
Collaboration. Disponível em: <http://www.opengroup.org/jericho/
cloud_cube_model_v1.0.pdf>. Acesso em 6 fev. 2011.
Kundra, Vivek (2010). State of Public Sector Cloud Computing. Washington, DC.
Lee, H.; Palmbach, T.; Miller, M. (2001) Henry Lee's Crime Scene Handbook. London:
Academic Press
Marins, C. E. (2001). Desafios da informática forense no cenário de Cloud Computing.
Proceedings of the Fourth International Conference of Computer Science.
Mell, P.; Grance, T. (2009). The NIST Definition of Cloud Computing. National
Institute of Standards and Technology (NIST), V. 15, Information Technology
Laboratory.
Nance, K.; Hay, B.; Bishop, M. (2009). Digital forensics: defining a research agenda.
42nd
Hawaii International Conference on System Sciences.
Nichols, R. (2010). Cloud Computing by Number what do all the Statistics Mean.
Disponível em: <http://blogs.computerworld.com/16863/cloud_computing_by_the_
numbers_what_do_all_the_statistics_mean>. Acesso em 23 mar. 2011.
Paquette, S., Jaeger, P., Wilson, S. (2010). Identifying the security risks associated with
governmental use of cloud computing. Government Information Quarterly 27.
Regional Computer Forensics Laboratory – RCFL. (2009). Annual Report for Fiscal
Year 2009. U.S. Department of Justice. Federal Bureau of Investigation. Quantico,
VA.
Roussev, V.; Richard III, G. (2004). Breaking the Performance Wall: The Case for
Distributed Digital Forensics. Digital Forensics Research Workshop (DFRWS).
Roussev, V.; Wang, L.; Richard III, G.; Marziale, L. (2009). MMR: A Platform for
Large-Scale Forensic Computing. Fifith Annual IFIP WG 11.9 International
Conference on Digital Forensics.
Shanmugasundaram, K.; Memon, N.; Savant, A.; Bronnimann, H. (2009). ForNet: A
Distributed Forensics Network. 2nd
International Workshop on Mathematical
Methods, Models and Architectures for Computer Networks Security.
Tang, Y.; Daniels, T. (2005). A Simple Framework for Distributed Forensics. 2nd
International Workshop on Security in Distributed Computing Systems (SDCS -
ICDCSW), 163-169.
Vaquero, L; Rodero-Merino, L.; Caceres, J.; Lindner, M. (2009). A Break in the Clouds:
Towards a Cloud Definition. ACM – SIGCOMM, Computer Comunication Review,
39(1), 78-85.
Wardley, S., Goyer, E., Barcet, N. (2009). Ubuntu Enterprise Cloud Architecture.
Disponível em: <http://www.canonical.com/sites/default/files/active/Whitepaper-
UbuntuEnterpriseCloudArchitecture-v1.pdf>. Acesso em 10 jan. 2011.