Você está na página 1de 53

UM ESTUDO SOBRE O USO DA TECNOLOGIA BLOCKCHAIN EM

PLATAFORMAS DE ARMAZENAMENTO COMO SERVIÇO
Por
MARCELA PEREIRA DE OLIVEIRA
Trabalho de Graduação

Universidade Federal de Pernambuco

RECIFE/2016.1

Universidade Federal de Pernambuco
Centro de Informática
Graduação em Sistemas de Informação

MARCELA PEREIRA DE OLIVEIRA

"UM ESTUDO SOBRE O USO DA TECNOLOGIA BLOCKCHAIN EM PLATAFORMAS
DE ARMAZENAMENTO COMO SERVIÇO"

Trabalho apresentado ao curso de Graduação em Sistemas
de Informação do Centro de Informática da Universidade Federal de Pernambuco como requisito parcial para obtenção
do grau de Bacharel em Sistemas de Informação.

Orientador: Vinícius Cardoso Garcia

RECIFE, 2016.1

2
Trabalho de conclusão de curso apresentado por Marcela Pereira de Oliveira à graduação em
Sistemas de Informação do Centro de Informática da Universidade Federal de Pernambuco,
sob o título UM ESTUDO SOBRE O USO DA TECNOLOGIA BLOCKCHAIN EM PLATAFORMAS DE ARMAZENAMENTO COMO SERVIÇO, orientada pelo Prof. Vinícius
Cardoso Garcia e aprovada pela banca examinadora formada pelos professores:

———————————————————————–
Prof. Vinicius Cardoso Garcia
Centro de Informática/UFPE
———————————————————————–
Prof. Ruy José Guerra Barretto de Queiroz
Centro de Informática/UFPE

RECIFE
2016.1

Dedico esse trabalho a todos os nãos recebidos, eles me
fizeram e me fazem chegar além.
Em primeiro lugar, agradeço aos meus tios (Carminha Miranda e Carlos Miranda) por
me oferecem um lar e me apoiarem e acolherem todo esse tempo. Sem vocês eu não seria metade
do que sou hoje. Em segundo lugar, agradeço a mainha (Risolene Pereira), por, a sua maneira,
sempre acreditar e torcer por mim.
Agradeço também aos meus primos, nega (Patricia Miranda), calico (Carlos Miranda)
e biana (Fabiana Miranda) por serem verdadeiros irmãos e dividir parte de uma vida comigo e
sempre acharem que sou uma nerdinha e torcerem por mim.
Agradeço a minha segunda família, tia Dalva Martinho, danny (Danielle Martinho) e gi
(Giselle Martinho) por serem tão gentis e me ensinarem valores os quais me fazem ser cada vez
melhor. Eles foram muito úteis ao longo do curso, para não dizer para toda a vida.
Agradeço ao professor Vinicius Cardoso por todos esses anos de aprendizado e por
ter acreditado no meu trabalho, seja como aluna, monitora ou orientanda. Aprendi muito e
você serve de inspiração. Também agradeço aos professores Carla Silva, Bernadete Lóscio,
Kiev Gama, Henrique Rebêlo, Giordano Ribeiro e Simone Santos por todos os ensinamentos
realizados ao longo do curso.
Agradeço aos amigos que fizeram parte da jornada do curso, isabear (Isabel Amaral), karlinha (Karla Silva), cadu (Carlos Eduardo), bebê (Marcos Antônio) e rafinha (Rafael Beckman).
Vocês tornaram os anos mais divertidos e ensinaram o valor de cooperação, companherismo e
dedicação.
Agradeço a minha família do NTI, chefa (Suzanna Dantas), chefo (Bruno Freitas), aninha
(Ana Alves), gru (Renato Mendes), kinjou-san (Marlos Ribeiro) e master (Raphael Barros),
por além de serem chefes maravilhosos, acreditarem no meu trabalho. Agradeço também a
minha dupla do biscoito (Jacinto Reis) por ser um grande amigo e a chiribi (Chrystian Soares)
por todos os papos filosóficos. E por último e não menos importante, agradeço a tac (Tarcisio
Coutinho) por simplesmente tudo. Não poderia deixar de agradecer a toda equipe dos Avengers,
gera (Geraldo Júnior) e a equipe de suporte, e aos demais funcionários e bolsistas que tornaram a
vivência e convivência no NTI um grande aprendizado.
E por fim, agradeço aos meus queridos amigos do CIn, seu beto (Roberto Mariano) e
su (Suilan Dias), por dividir momentos de alegria e fazer com que o CIn fosse um lugar não
somente de estudos, mas de amizade e companherismo. Agradeço também a dona Inácia (Inácia
Bezerra), seu Edson (José Edson), seu Wellington (Wellington Fernando) e gi (Giselly Karine)
por serem tão gentis e amáveis. Sem vocês o CIn perderia um pouco do seu brilho.
Gratidão ao infinito e além!

Das Wichtigste ist, daß man nicht aufhört zu fragen. Neugierde hat ihren
eigenen Existenzgrund.
—ALBERT EINSTEIN

5
Resumo

Computação em nuvem vem revolucionando o mundo pela facilidade com que os usuários possuem em utilizar recursos computacionais, seja memória, armazenamento, aplicações,
servidores e serviços, de acordo com sua demanda. Apesar de inicialmente disponibilizar três
serviços em nuvem, IaaS, PaaS e SaaS, a necessidade em oferecer serviços mais específicos fez
o número de modelos de negócio em nuvem expandir.
Desses, STaaS vem ganhando destaque pela possibilidade do usuário poder armazenar,
atualizar, remover e acessar seus dados de qualquer lugar do mundo, através da internet. O
modelo, da mesma forma, vem sendo cogitado para ajudar no armazenamento dos dados
provindos de dispositivos interconectados pelo IoT.
A preocupação com a segurança dos dados armazenados nesse serviço é crucial, e para
melhorar esse importante aspecto, a tecnologia blockchain vem sendo vista como uma importante
adição aos serviços em nuvem por proporcionar descentralização, retirando a necessidade de
uma autoridade central (provedor) para autenticar ou controlar os dados que são armazenados.
De forma que o presente trabalho tem como objetivo descobrir o porquê a tecnologia
vem sendo utilizada em serviços de armazenamento em nuvem, avaliar as aplicações que
já fazem uso da tecnologia e destacar as vantagens e desvantagens do emprego da mesma.
Dentre a análise, foi possível observar que há melhoria em relação a segurança dos serviços de
armazenamento, provida, principalmente pelo conjunto de técnicas utilizadas em blockchain. Há
também benefícios quanto a eficiência, qualidade do serviço oferecido e menos vulnerabilidades.
A principal contribuição do trabalho é fomentar a utilização de blockchain em serviços de
armazenamento em nuvem.
Palavras-chave: Engenharia de Software, Computação em Nuvem, STaaS, Blockchain,
Segurança, Serviços em Nuvem.

7
Abstract

Cloud computing is changing radically the world for the easy way which users have to
use computer resources according to yours demand, as such as memory, storage, applications,
servers and services. Although, cloud computing initially provides three types of cloud services, IaaS, PaaS and SaaS, the need to provide more specific services made the number of cloud
business models expand.
One of these services, STaaS, has been gaining attention for the possibility that an user
has to store, update, remove, and access your data from anywhere in the world through the
internet. The model, likewise, is being considered to help the storage of data coming from
interconnected devices of IoT.
Concern for the safety of stored data in this service is crucial, and to improve this
important aspect, the technology blockchain has been seen as an important addition to cloud
services by providing decentralization, and removing the need for a central authority (provider)
to authenticate and control the data that has been stored.
In order that, the present study aims to find out why the technology has been used in
cloud storage services, evaluate the applications that already use the technology and highlight
the advantages and disadvantages of the use of blockchain. Among the analysis, it has been
observed that there is improvement on the safety of storage services, provided mainly by the
set of techniques used in blockchain. There are also benefits in efficiency, quality of service
and lower numbers of vulnerabilities. The main contribution of this work is promote the use of
blockchain in cloud storage services.
Keywords: Software Engineering, Cloud Computing, STaaS, Blockchain, Security, Cloud
Services.

9
Lista de Figuras

2.1

Infraestrutura em camadas de computação em nuvem. Adaptada de [19]. . . . .

21

3.1

Problemas de segurança e sua relação com a infraestrutura de CC. Extraída de [30] 27

4.1
4.2
4.3
4.4
4.5
4.6

Estrutura do blockchain. Extraída de [2] . . . . . . . . . . . . . . . . . . . . .
Exemplo de timestamp utilizando TSA como autoridade central. Extraída de [17].
Exemplo de PoW com hash parcial. Extraída de [15]. . . . . . . . . . . . . . .
Etapas executadas no PoW. Extraída de [18]. . . . . . . . . . . . . . . . . . .
Exemplo de uma árvore de Merkle. Adaptada de [2]. . . . . . . . . . . . . . .
Função hash SHA-256 simplificada. Extraída de [33]. . . . . . . . . . . . . . .

32
33
34
35
35
37

11
Lista de Tabelas

3.1

4.1
4.2

Tipos de ataques possíveis e sua relação com computação em nuvem - Adaptada
de [30, 58] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

Estrutura do bloco. Adaptada de [2] . . . . . . . . . . . . . . . . . . . . . . .
Estrutura do cabeçalho. Adaptada de [2] . . . . . . . . . . . . . . . . . . . . .

32
33

13
Lista de Acrônimos

API

Application Program Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Amazon S3 Amazon Simple Storage Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
ASIC

Application-Specific Integrated Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

AWS

Amazon Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

BaaS

Backend as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

CC

Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

CPU

Central Processing Unit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

CRM

Customer Relationship Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

DaaS

Data as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

DAO

Decentralized Autonomous Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Dapps

Decentralized Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

DDoS

Distributed Denial-of-Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

DNS

Domain Name System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

DoS

Denial-of-Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

EOA

Externally Owned Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

EVM

Ethereum Virtual Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

HTTP

Hypertext Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

IaaS

Infrastructure as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

IP

Internet Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

IoT

Internet of Things . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

LDAP

Lightweight Directory Access Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

NIST

National Institute of Standards Technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

P2P

Peer-to-Peer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

PaaS

Platform as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

PoW

Proof-of-Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

QoS

Quality of Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

SaaS

Software as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

SECaaS

Security as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

SCP

Stellar Consensus Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

SHA

Secure Hash Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

SO

Sistema Operacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

SQL

Structured Query Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

SJCX

Storjcoin X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

STaaS

Storage as a Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

TCP

Transmission Control Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

TSA

Time Stamp Authority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

TI

Tecnologia da Informação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

15
Sumário

1

2

3

4

Introdução

17

1.1

Contexto e Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

1.2

Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

1.3

Escopo Não Contemplado . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

1.4

Estrutura do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

Computação em Nuvem

19

2.1

Conceito . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

2.2

Infraestrutura de Computação em Nuvem . . . . . . . . . . . . . . . . . . . .

20

2.3

Modelos de Implantação em Nuvem . . . . . . . . . . . . . . . . . . . . . . .

21

2.4

Modelos de Negócio em Nuvem . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.5

Armazenamento em Serviços em Nuvem . . . . . . . . . . . . . . . . . . . . .

23

Segurança em Nuvem

25

3.1

Conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

3.2

Segurança no Âmbito de Computação em Nuvem . . . . . . . . . . . . . . . .

26

3.3

Tipos de Ataques em Computação em Nuvem . . . . . . . . . . . . . . . . . .

27

3.4

Segurança em Armazenamento em Nuvem como Serviço . . . . . . . . . . . .

29

Blockchain

31

4.1

Conceitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

4.1.1

Estrutura do bloco . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

4.1.2

Servidor Timestamp . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

4.1.3

Proof-of-work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

4.1.4

Árvores de Merkle . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

4.1.5

Funções Hash Criptográficas . . . . . . . . . . . . . . . . . . . . . . .

36

Ataques ao Blockchain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

4.2
5

Aplicações de Armazenamento em Nuvem com Blockchain

39

5.1

Ethereum Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40

5.1.1

Como funciona blockchain no Ethereum? . . . . . . . . . . . . . . . .

40

5.1.2

Aplicações desenvolvidas no Ethereum . . . . . . . . . . . . . . . . .

41

Sia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

5.2.1

Como funciona Blockchain no Sia? . . . . . . . . . . . . . . . . . . .

42

5.2.2

Aplicações que utilizam Sia . . . . . . . . . . . . . . . . . . . . . . .

42

Storj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

5.3.1

43

5.2

5.3

Como funciona blockchain no Storj? . . . . . . . . . . . . . . . . . . .

16

5.4

5.5
6

5.3.2 Aplicações que utilizam Storj
Análise . . . . . . . . . . . . . . . .
5.4.1 Ethereum . . . . . . . . . . .
5.4.2 Sia . . . . . . . . . . . . . .
5.4.3 Storj . . . . . . . . . . . . . .
Considerações Finais . . . . . . . . .

Conclusão

Referências

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

44
44
44
44
45
45
47
49

17

1
Introdução

1.1

Contexto e Motivação

Cloud Computing (CC) - Computação em Nuvem, tornou-se muito popular a partir de
2007, por passar a oferecer serviços virtualizados como infraestrutura e armazenamento em
nuvem até então não disponíveis. De acordo com National Institute of Standards Technology
(NIST) [28], CC refere-se a um modelo que permite acesso a rede de maneira ubíqua, conveniente
e sob-demanda a um grupo de recursos computacionais configuráveis (computação, memória,
rede, servidores, armazenamento, aplicações e serviços) que pode ser rapidamente mantido ou
liberado com o mínimo de esforço gerencial ou de interação com o provedor do serviço.
Um dos modelos oferecidos pela CC e que vem apresentando um aumento de demanda
expressivo [48] é o Storage as a Service (STaaS) - armazenamento como serviço. STaaS é um
serviço onde um provedor disponibiliza armazenamento virtualizado, permitindo o acesso aos
dados de qualquer lugar, tornando-o mais acessível financeiramente, além das já conhecidas
características que serviços em nuvem oferecem [56]. A saber: agilidade, interface para aplicação, confiabilidade, escalabilidade, elasticidade, virtualização, utilização em grande escala e
segurança [8, 4, 25].
O design estrutural e características da computação em nuvem oferecem por padrão
segurança, como centralização, redundância, alta disponibilidade e segmentação de dados e
processo [58]. Entretanto, ela ainda é um assunto que necessita de atenção [12] tanto por parte
do cliente quanto do provedor de serviço. Muitos estudos têm sido realizados buscando uma
alternativa para mitigar o risco de uma falha de segurança, como é o caso da utilização de
blockchain para aprimorar a segurança do STaaS [34, 51, 53, 54].
Blockchain é uma tecnologia utilizada na criptomoeda Bitcoin, sendo seu conceito
introduzido em 2008 por Nakamoto [32]. Ela permite a descentralização de autenticação, sem a
necessidade de uma autoridade central, fazendo com que cada transação seja verificada pelos
usuários que estão conectados a rede e que emprestam recursos computacionais para que a
plataforma funcione. A construção de cada bloco de transação é realizada de forma que seja
criado um encadeamento de transações, de maneira cronológica.
Por melhorar o nível de segurança de aplicações, a tecnologia tem potencial para ser

18

CAPÍTULO 1. INTRODUÇÃO

utilizada em qualquer área em que seja necessário registrar, certificar e transferir alguma transação
ou propriedade [32], como sistemas de votação, smart contracts, computação em nuvem, registro
de propriedade intelectual, crowdfunding, Internet of Things (IoT) - internet das coisas, entre
outros [34].
Sendo assim, blockchain pode oferecer uma melhoria significativa em segurança para
alguns dos problemas conhecidos em computação em nuvem, especificamente no contexto de
armazenamento como serviço, como questões relacionadas ao acesso ao dado, sua modificação e
exposição.
1.2

Objetivos
Como objetivos deste trabalho têm-se:   

1.3

Analisar por quê a tecnologia de blockchain pode ser utilizada para sistemas de
armazenamento de dados como serviço (STaaS);
Verificar quais aplicações STaaS utilizam tecnologia blockchain e seus similares;
Avaliar vantagens e desvantagens da tecnologia quando utilizada no contexto de
STaaS.

Escopo Não Contemplado

Não faz parte do escopo deste trabalho implementar a tecnologia ou propor um framework
de como implementar o blockchain no contexto de armazenamento de dados como serviço.
Também não faz parte analisar quais as possíveis melhorias em segurança ou outro aspecto,
quando a técnica é utilizada em outro modelo de negócio de computação em nuvem, que não o
STaaS.
1.4

Estrutura do Trabalho

Este trabalho está dividido em 6 (seis) capítulos. O capítulo 2 (dois) aborda conteúdo
teórico sobre computação em nuvem, com definição de conceito e explanação sobre os modelos
de negócio, dando ênfase ao modelo STaaS.
O capítulo 3 (três) trata da segurança no contexto de computação em nuvem de forma
geral, e aborda as principais preocupações relacionadas ao armazenamento de dados como
serviço. O capítulo 4 (quatro) discute sobre a tecnologia blockchain e como ela pode melhorar
os aspectos de segurança em STaaS.
No penúltimo capítulo encontra-se a análise das aplicações que fazem uso do blockchain,
trazendo os principais benefícios e problemas. E o último capítulo conclui o trabalho, trazendo
as principais contribuições para a área e possíveis trabalhos futuros.

19

2

Computação em Nuvem

2.1

Conceito

CC é um modelo computacional que surgiu a partir da junção de vários paradigmas
da computação. Cada um deu sua contribuição para que, ao final, os usuários pudessem ter
acesso, via internet, a qualquer conteúdo, independente da infraestrutura em que o mesmo esteja
hospedado [8]. Os paradigmas envolvidos são: grid computing, Peer-to-Peer (P2P) computing,
virtualização e utility computing [8, 50]. Dentre eles, o mais importante e que, de fato, permite a
criação do CC é a virtualização.    

Grid computing refere-se a um conjunto de computadores, ligados através da rede,
que compartilham recursos para, em geral, resolver determinado problema. Os
recursos podem ser: processamento, memória e armazenamento.
P2P computing trata-se de uma arquitetura distribuída onde partes de uma tarefa,
processos, ou mesmo arquivos, são partilhados entres os participantes da rede.
Virtualização consiste no processo de criar versões virtuais, seja de sistemas operacionais, recursos de redes, dispositivos de armazenamento ou plataformas de hardware.
A virtualizacao permite que um computador efetue diversas tarefas em paralelo.
Utility computing é um modelo de serviço onde provedores disponibilizam recursos
computacionais, sejam eles infraestrutura, recursos ou aplicações, de maneira que os
consumidores pagam pela sua utilização.

Entretanto, para que uma infraestrutura seja considerada em nuvem, ela deve possuir
certas características, que se tornam possíveis devido as tecnologias supracitadas. As características essenciais de uma infraestrutura em nuvem são: serviço sob-demanda, acesso via internet,
conjunto de recursos, rápida elasticidade e capacidade de medir o serviço [28]. 

Serviço sob-demanda trata-se da utilização de recursos computacionais de acordo
com a necessidade do cliente, como rede, armazenamento, tempo de servidor, sem a
interferência humana para disponibilizá-los;

20

CAPÍTULO 2. COMPUTAÇÃO EM NUVEM    

Acesso via internet é a característica dada ao serviço que é viabilizado e acessado
pela rede, sendo seu acesso irrestrito a plataformas, como celulares, tablets, laptops
ou estações de trabalho;
Conjunto de recursos - Resources pooling refere-se a um conjunto de recursos que
é oferecido a múltiplos clientes utilizando o modelo multi-tenancy. Entretanto as
características dos recursos viabilizados são diferentes para cada cliente, bem como
sua oferta. Assim os recursos podem ser disponibilizados ou liberados de acordo
com a demanda de cada cliente;
Rápida elasticidade é a propriedade em que um recurso pode ser elasticamente
consumido ou liberado, em alguns casos de forma automática, propiciando sensação
de ilimitado;
Capacidade de medir o serviço remete a capacidade em monitorar, controlar e relatar o consumo de determinado recurso facilitando assim a cobrança e a transparência
do serviço oferecido, tanto pelos provedores quanto pelos consumidores.

A ilusão de infinito recurso computacional é proporcionada pela oferta de uma infraestrutura (rede, armazenamento, computação, memória, servidores, aplicações, entre outros) de
forma dinâmica, Quality of Service (QoS) - qualidade do serviço assegurada quanto ao ambiente
computacional e serviços de software configuráveis [52]. O usuário, passa então a acessar o
serviço de maneira remota, bastando apenas ter acesso a rede web. 

QoS refere-se a medição da taxa de transmissão, taxa de erros e outras características
da internet permitindo a priorização do tráfego da rede, aumentando ou diminuindo a
disponibilidade da largura de banda da internet quando necessário.

Por oferecer serviços como um bem utilitário, CC mudou radicalmente como as pessoas utilizam recursos computacionais, permitindo que um usuário consuma uma determinada
infraestrutura de Tecnologia da Informação (TI) de acordo com sua demanda. A impressão
que os serviços em nuvem apresentam recursos infinitos e possuem disponibilidade 24/7 vem
provocando um crescimento em seu uso ao longo dos anos, e hoje serve de facilitador para
empresas disponibilizarem suas aplicações mais rapidamente, migrar dados corporativos para a
nuvem e/ou até mesmo utilizarem aplicações prontas. As razões para essa adoção variam desde
diminuir o dinheiro investido inicialmente até não possuir dinheiro suficiente para investir em
infraestrutura de TI ou diminuir gastos com recursos computacionais [3].
2.2

Infraestrutura de Computação em Nuvem

As características supracitadas só são possíveis com a criação de 3 camadas de aspectos
e responsabilidades únicas, apresentando comunicação e dependência entre os níveis adjacentes.

2.3. MODELOS DE IMPLANTAÇÃO EM NUVEM

21

Ela foi proposta pela NIST [19], como demonstrado na figura 2.1 e serve como arquitetura de
referência para disponibilização de serviços em nuvem.

Figura 2.1: Infraestrutura em camadas de computação em nuvem. Adaptada de [19].   

2.3

A camada de recursos físicos (physical resource layer) inclui todos os recursos
computacionais (sejam eles dispositivos, rede, armazenamento e outros componentes
inerentes à infraestrutura). Também faz parte dessa camada, os recursos físicos
relacionados ao ambiente, como energia, refrigeração, entre outros.
Chamada de camada de abstração de recursos e controle (resource abstraction and
control layer), o nível intermediário possui componentes para acessar os recursos
físicos através da utilização de softwares. Como exemplo, tem-se os hypervisors,
as máquinas virtuais, o armazenamento virtual de dados e outros que asseguram a
eficiência, segurança e utilização confiável.
Os usuários utilizam os serviços em nuvem disponibilizados na camada de serviço
(service layer), onde os provedores definem e disponibilizam pelo menos um dos três
principais modelos de serviço em nuvem. A saber: Infrastructure as a Service (IaaS) Infraestrutura como Serviço, Platform as a Service (PaaS) - Plataforma como Serviço,
e Software as a Service (SaaS) - Software como Serviço.

Modelos de Implantação em Nuvem

Ao pensar em utilizar serviços em computação em nuvem deve ser considerado o modelo
de implantação a ser usado, pois o mesmo pode trazer benefícios ou não devido a peculiaridades
inerentes a cada tipo. São eles: nuvem pública, nuvem privada, nuvem híbrida e nuvem
comunitária.

22

CAPÍTULO 2. COMPUTAÇÃO EM NUVEM    

2.4

Nuvem pública - os recursos nela oferecidos tem como alvo o público em geral.
Ela traz como benefício a não necessidade de grande volume de capital inicial para
sua utilização, porém não dispõe de muito controle quanto aos dados trafegados,
segurança e rede;
Nuvem privada - ou nuvem interna, é formada quando uma empresa concede seu
serviços de maneira virtual, porém a infraestrutura utilizada para disponibilização
desses serviços encontra-se na própria instituição. Dessa maneira, há um alto controle
sobre segurança, rede e performance;
Nuvem híbrida - é a agregação da nuvem pública com a nuvem privada, tendo
uma parte dos serviços sendo executados em uma nuvem e a outra parte na outra.
Ela oferece maior flexibilidade, apresentando um maior controle e segurança, como
também maior elasticidade;
Nuvem comunitária - a infraestrutura em nuvem é destinada a um grupo em particular que possui interesses em comum, podendo ser administrada por uma ou mais
organizações.

Modelos de Negócio em Nuvem

Considerada o núcleo de CC, os modelos de negócio em nuvem segregam os tipos de
recursos que podem ser disponibilizados em nuvem, facilitando a escolha, e ao mesmo tempo se
adequando a uma necessidade específica.  

IaaS fornece processamento, armazenamento, rede e outros recursos computacionais,
permitindo assim que os usuários implantem qualquer tipo de software, desde de
Sistema Operacional (SO) até aplicações. Entre os provedores pode-se destacar a
Amazon Web Services (AWS)1 , a Microsoft Azure2 , o Google Compute Engine3 , o
Rackspace Open Cloud4 e IBM SmartCloud Enterprise5 [44].
PaaS disponibiliza ambiente pré-configurado para implantação de aplicações sem a
necessidade de realizar download ou instalar softwares. Entretanto, o usuário fica
restrito a linguagem de programação disponível pelo serviço. Como exemplos têm-se:
Engine Yard, Red Hat OpenShift, Google App Engine6 , Heroku7 e AppFog8 [45].

1 https://aws.amazon.com/
2 https://azure.microsoft.com
3 https://cloud.google.com/compute/
4 https://www.rackspace.com/cloud
5 http://www.ibm.com/cloud-computing/
6 https://www.engineyard.com/
7 https://www.heroku.com/
8 https://www.ctl.io/appfog/

2.5. ARMAZENAMENTO EM SERVIÇOS EM NUVEM 

23

SaaS oferece utilização de aplicações de forma out of box que são acessados via
internet, sendo a mesma hospedada numa infraestrutura em nuvem. Dentre os
provedores do serviço, a Salesforce.com9 tem presença marcante por disponibilizar a
aplicação de Customer Relationship Management (CRM) - Gestão de Relacionamento
com o Cliente. Entre outros provedores pode-se citar: Google Apps for Business10 ,
Office 36511 , Clarizen12 e McAfee13 [46].

Porém, devido a necessidade de utilização de recursos específicos, como ocorre em
aplicações móveis, que possuem uma limitação quanto ao uso de bateria e memória; ou para
aplicações que precisam armazenar informações em banco de dados; o número de modelos de
negócio em nuvem expandiu. Hoje é possível encontrar os seguintes serviços: STaaS, Security as
a Service (SECaaS) - Segurança como serviço, Data as a Service (DaaS) - Dados como serviço,
Backend as a Service (BaaS) - Backend como serviço, entre outros [1].
2.5

Armazenamento em Serviços em Nuvem

Dentre esses, o modelo de STaaS vem se destacando por oferecer serviço de criação,
armazenamento e gerenciamento de dados, proporcionando acesso aos dados ou documentos,
através da web, de qualquer parte do mundo. Entre os provedores que oferecem esse tipo de
serviço destacam-se: Amazon Simple Storage Service (Amazon S3)14 , Google Cloud Storage 15 ,
AT&T Synaptic16 , Dropbox 17 e Box 18 . Além de proporcionar serviço para o público em
geral e para empresas, o serviço vem servindo como apoio para a IoT, onde é necessário o
armazenamento e compartilhamento de um volume grande de dados provinientes de dispositivos
interconectados [36]. O serviço vem sendo cogitado também por causa do aumento do uso de
smartphones, laptops e tablets para acessar dados de empresas, sendo necessária a sincronização
e consolidação dos dados [42].
Uma das principais vantagens na utilização desse serviço, principalmente do ponto de
vista das empresas, é a redução com gastos com hardware de armazenamento. Outra vantagem,
também relacionada a custos, é a diminuição com despesas em relação a pessoal com expertise
em armazenamento [40]. Mais um benefício da utilização do modelo, é a possibilidade de backup
e recuperação dos dados, principalmente para os casos de recuperação de desastres, tornando
esses processos mais simples e de baixo risco [49].
9 https://www.salesforce.com
10 https://apps.google.com/
11 https://www.microsoftstore.com
12 http://www.clarizen.com/
13 http://www.mcafee.com/
14 http://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html
15 https://cloud.google.com/storage
16 https://www.synaptic.att.com/clouduser
17 https://www.dropbox.com/business
18 https://www.box.com/business

24

CAPÍTULO 2. COMPUTAÇÃO EM NUVEM

Um outro benefício é a utilização de armazenamento a longo prazo e, também a promoção da continuidade do negócio, assim como sua disponibilidade [56]. A terceirização do
armazenamento, faz com que a empresa possa focar em seu negócio, particularmente para
aquelas que não têm TI como foco ou possuem um pequeno ou médio empreendimento.
Pelo fato de cada vez mais clientes utilizarem o serviço e também com o aumento da
preocupação em relação a segurança da informação, o conteúdo do dado armazenado é muito
importante. A importância é dada pelo fato que tanto os dados quanto os processos de negócio
são considerados estratégicos para a manutenção das empresas no mercado, como também a
privacidade da informação guardada.
Sendo assim, os dados devem ser protegidos e medidas de segurança devem ser adotadas para evitar que eles possam ser alterados, danificados ou acessados sem permissão. A
preocupação com segurança passa ser então um fator crítico para que as empresas adotem ou
não uma solução de armazenamento em nuvem, principalmente no que concerne a privacidade,
confiabilidade, performance, perda de dados e descontinuidade do serviço [42].

25

3

Segurança em Nuvem

Devido a concepção da sua estrutura, em camadas e com o isolamento de aplicações
proporcionado pelas máquinas virtuais, computação em nuvem possibilita mais segurança
quando comparado com a infraestrutura tradicional, como segmentação de dados e processos,
centralização da segurança e redundância, e alta disponibilidade [58]. Porém, sua própria
organização, também, traz problemas quanto a integridade, confidencialidade, autenticidade e
disponibilidade de dados e comunicações, ocasionados pelo compartilhamento tanto de dados
quanto de aplicações em sua infraestrutura [9, 30]. Essas adversidades são causadas por questões
de retenção e destruição dos dados e por definições de limites, nem sempre muito claros quando
aplicados ao contexto do modelo de negócio adotado.
3.1

Conceitos

Em relação a serviços em nuvem é importante distinguir quais aspectos de segurança são
importantes e como os mesmos podem interferir no sucesso e qualidade do serviço oferecido. Por
isso, é essencial conhecer quais os pilares que sustentam a segurança em software, os principais
são: confidencialidade, integridade e disponibilidade.   

Confidencialidade trata-se da prevenção à exposição da informação, seja ela realizada de maneira intencional ou não;
Integridade refere-se ao acesso que pessoas ou processos possuem em alterar um
dado, sendo assim, pessoas ou processos não autorizados não podem realizar modificações em dados, bem como pessoas ou processos autorizadas não podem modificar
arquivos não autorizados;
Disponibilidade é um conceito que assegura que o serviço estará disponível quando
solicitado pelo usuário.

Eles formam a tríade da segurança, e são princípios básicos para qualquer software
assegurar o mínimo de garantia. Entretanto, outros fatores também possuem influência em
aspectos relacionados à proteção de uma aplicação, são eles: autenticação, autorização, auditoria
e responsabilização.

26

CAPÍTULO 3. SEGURANÇA EM NUVEM  

Autenticação é verificação se um usuário é, de fato, quem afirma ser;
Autorização refere-se aos direitos ou privilégios que um indivíduo ou processo tem
para acessar informações ou recursos computacionais; 

Auditoria trata-se do processo de verificar a segurança de um sistema; 

Responsabilização é determinar ações ou comportamentos provindos de um usuário.

Apesar de relacionar segurança ao atendimento de todos os aspectos, em aplicações reais
é utópico atender a todas as características, de modo que a proteção de serviços em nuvem busca
minimizar ou eliminar as possíveis vulnerabilidades. Salientando que o tipo de implantação de
CC tem grande influência em quanto o modelo é seguro, de maneira que serviços disponíveis em
nuvens privadas tendem a possuir uma maior seguridade, pois replicam as medidas de proteção
utilizadas na infraestrutura tradicional [21], embora também herdem suas falhas.
As vulnerabilidades vão depender do tipo de serviço oferecido, a maneira como são
disponibilizados e suas idiossincrasias. Sendo assim, pode-se identificar vulnerabilidades quanto
ao acesso, ao processo de virtualização, relacionadas a aplicações web, acesso físico, controle
e privacidade, verificação dos dados, integridade, confidencialidade, perda e roubo de dados e
relacionada a autenticação [43].
3.2

Segurança no Âmbito de Computação em Nuvem

Três aspectos influenciam o nível de segurança dos serviços em computação em nuvem,
são eles: vulnerabilidades, ameaças e ataques [30]. De maneira geral, todas as camadas de CC
podem ser comprometidas em virtude da complexidade com que sua infraestrutura é montada.
A diversidade dos riscos quanto a proteção da infraestrutura da computação em nuvem podem
ser resumidos de acordo com figura3.1. A tríade de segurança, confidencialidade, integridade
e disponibilidade, são as características que provocam mais preocupação, tanto em relação ao
provedor de serviços quanto ao usuário.   

Vulnerabilidade é uma brecha ou falha na segurança que pode ser utilizada por um
agente externo para ganhar acesso à rede ou a recurso;
Ameaças é um potencial evento (intencional ou não) que pode comprometer os
recursos;
Ataques são formados pela exploração das vulnerabilidades.

Quanto a infraestrutura da computação em nuvem, o processo de virtualização sofre
vulnerabilidades tanto em relação ao acesso aos SOs hospedeiros (guests), onde através deles e
possível controlar o SO principal, quanto ao hypervisor, onde seu acesso pode gerar um ataque

3.3. TIPOS DE ATAQUES EM COMPUTAÇÃO EM NUVEM

27

Figura 3.1: Problemas de segurança e sua relação com a infraestrutura de CC. Extraída de [30]

por todas as máquinas virtuais. Há também falhas no protocolo da internet, como o Hypertext
Transfer Protocol (HTTP) e o TCP/IP.
Outras brechas são o acesso a interface de gerenciamento dos serviços, devido ao
grande número de usuários e também quanto a criptografia utilizada. Além de outros pontos de
fragilidade como os navegadores e Application Program Interface (API)s, devido aos protocolos
de segurança utilizados, e também as já conhecidas injeções, sejam elas Structured Query
Language (SQL), SO e/ou Lightweight Directory Access Protocol (LDAP) que acessam os
componentes das aplicações [30].
As vulnerabilidades apresentadas podem comprometer apenas um tipo de serviço em
nuvem, como é o caso do compartilhamento de infraestrutura para dados e aplicações que
acontece no IaaS ou pode inviabilizar os três tipos de serviços oferecidos, como exemplo
a perda ou vazamento de dados ocorridos por uma falha na autentificação ou autorização da
aplicação [30, 43]. A interferência que essas fragilidades possuem em relação aos outros modelos
de serviços em nuvem vai depender da estrutura virtual que o suporta, citando caso análogo ao
que ocorre com o STaaS, onde sua estrutura deriva do IaaS.
3.3

Tipos de Ataques em Computação em Nuvem

Como visto, computação em nuvem traz riscos inerentes a sua arquitetura em camadas, a
complexidade de suas camadas tornam as configurações de segurança um trabalho não trivial, aumentando assim o risco de fragilidade no sistema. Através da exploração dessas vulnerabilidades
pode-se criar vários tipos de ataques a computação em nuvem, os mais comuns são: logon abuse,
eavesdropping, Man-in-the-middle, negação de serviço (Denial-of-Service (DoS)), sequestro de
sessão e ataques de fragmentação.

28

CAPÍTULO 3. SEGURANÇA EM NUVEM

Na tabela 3.1 é possível ver a relação dos níveis de abstração de CC, sua estrutura e os
tipos de ataques.
Nível

Estrutura

Aplicação

SaaS

Virtual

Físico

Ataque
Sequestro de sessão
Exposição de rede

Sequestro de sessão
Análise de tráfego da rede
PaaS e IaaS Exposição de rede
Distributed Denial-of-Service (DDoS)
Interrupção de comunicação

Datacenter

Ataques na rede
DDoS
Modificação de hardware
Desastres naturais

Tabela 3.1: Tipos de ataques possíveis e sua relação com computação em nuvem - Adaptada de
[30, 58]

Abaixo se encontram as descrições dos tipos de ataques:      

Logon abuse é dado quando um usuário acessa serviços ou funcionalidades de
segurança que normalmente seriam restritas a ele;
Uso inapropriado do sistema (innapropriate system use) refere-se ao mal uso da
rede empresarial para outros propósitos, que não o próprio negócio. Por exemplo, o
acesso a sites de conteúdo pornográfico;
Eavesdropping é a interceptação da rede sem autorização, em geral é o primeiro
passo para ataques como sequestro de sessão e outros;
Man-in-the-middle ocorre quando uma rede não possui suficiente proteção (tipo
textitacfssl) causando o acesso aos dados trocados entre duas partes. Assim permitindo que um intruso tenha acesso a comunicação realizada entre data centers, por
exemplo.
Negação de serviço é um ataque onde um recurso computacional é utilizado ao
máximo até que o excesso de sua execução danifique o sistema. Quando relacionado a CC seria o excesso de requisições realizado para uma máquina virtual,
sobrecarregando-a e causando uma recusa a novos pedidos de acesso, assim afetando
a disponibilidade do serviço;
Sessão hijacking (session hijacking) é realizada entre um cliente seguro e a rede
do servidor, podendo para isso utilizar IP spoofing, Transmission Control Protocol (TCP) sequence number e envenamento Domain Name System (DNS). Nesse

3.4. SEGURANÇA EM ARMAZENAMENTO EM NUVEM COMO SERVIÇO

29

ataque, o usuário pode ser redirecionado a uma máquina virtual ou serviço malicioso,
ocasionando a mudança ou bloqueio de funcionalidades antes disponíveis; 

3.4

Ataques de fragmentação utilizam várias fragmentações de Internet Protocol (IP)
para disfarçar pacotes TCP de dispositivos de filtro do alvo.

Segurança em Armazenamento em Nuvem como Serviço

No que concerne o modelo STaaS, as vulnerabilidades e ataques são iguais a IaaS, pois o
mesmo e considerado uma extensão ou forma desse padrão. Sendo as principais preocupações
quanto a segurança relacionadas à confiabilidade e integridade dos dados que são armazenados
na estrutura em nuvem.
Nesse contexto, surge a tecnologia blockchain, que vem sendo considerado como novo
paradigma computacional disruptivo, o qual permite um encadeamento de transações, através da
utilização de criptografia, proporcionando a descentralização da autenticação da transação, bem
como proporcionando um ambiente seguro para tráfego de informações.

30

CAPÍTULO 3. SEGURANÇA EM NUVEM

31

4
Blockchain

Blockchain, cadeia de blocos em tradução livre, é uma estrutura de dados ordenada que
forma uma lista de blocos de transações encadeadas de maneira inversa, ou seja, cada bloco faz
referência ao bloco anterior (chamado pai). A estrutura, concebida para resistir a ataques de rede,
pode ser armazenada em arquivos ou banco de dados simples [2].
Blockchain vem sendo vista como uma nova forma de negócio ou economia, porque
possibilita a eliminação do intermediário e a troca de transações de maneira descentralizada,
viabilizando assim aplicações em escala global, transparentes, auditáveis e seguras [16, 47].
Descentralização trata-se das decisões tomadas pela rede (grupo de usuários) para manter sua
consistência (através do Proof-of-Work (PoW)), de maneira que uma mudança na rede precisa ser
acordada pela maioria de seus participantes, fazendo com que uma decisão não seja monopolizada
por um determinado grupo [15].
A necessidade de aplicações globais e descentralizadas vem surgindo pela quantidade de
dados gerados pelos diferentes serviços, sejam esses de tráfego, saúde, governamentais, logístico,
marketing, eletricidade e segurança, e a desconfiança em relação aos provedores que armazenam
esses dados [39], principalmente pelo recente histórico de vazamento de informações por esses
serviços.
Embora descentralização, no contexto estudado, esteja atrelada a utilização de blockchain,
outros protocolos podem fornecer descentralização de aplicações, principalmente bancária, como
é o caso do Ripple1 , que possui um registro de consenso e uma moeda nativa chamada XRP
(também chamada ripples). Ripple permite a criação de uma rede global e descentralizada de
computadores para realização de pagamentos de maneira rápida, com baixo custo e de forma
segura [38].
Outro exemplo é o Stellar2 , que implementa o protocolo Stellar Consensus Protocol (SCP), baseado no acordo bizantino, o qual procura alcançar um entendimento entre todos os
participantes de uma rede distribuída, visando, assim, garantir baixa latência da rede, confiabilidade, controle descentralizado e segurança [26].
1 https://ripple.com/
2 https://www.stellar.org/

32
4.1

CAPÍTULO 4. BLOCKCHAIN
Conceitos

Assim como CC, blockchain também é formado por um conjunto de técnicas que permite
a criação de um modelo seguro de transações descentralizadas, livre de intermediários. As
tecnologias que possibilitam o blockchain são: servidor timestamp, PoW, árvores de Merkle e
funções hashs criptográficas.

4.1.1

Estrutura do bloco

O bloco é a estrutura fundamental da cadeia, nele estão contidas as transações que
serão incluídas no blockchain, sendo divido em três partes: cabeçalho, contador de transações e
transação (tabela 4.1). O cabeçalho, por sua vez, possui três blocos de metadados: o primeiro faz
referência ao hash do bloco anterior; o segundo agrega os dados do timestamp, difficulty e nonce;
e o último bloco é a raiz da árvore de Merkle. A tabela 4.2 descreve a estrutura do cabeçalho e a
figura 4.1 mostra a estrutura do blockchain.
Campo

Descrição

Cabeçalho
Contador de transações
Transação

Formado por um conjunto de metadados
Número de transações armazenadas
Transação armazenada no bloco

Tabela 4.1: Estrutura do bloco. Adaptada de [2]

Figura 4.1: Estrutura do blockchain. Extraída de [2]

4.1. CONCEITOS

33

Campo

Descrição

Hash do bloco anterior
Timestamp
Difficulty
Nonce
Árvore de Merkle

Referência ao hash do bloco anterior (pai) da cadeia
Momento aproximado de criação do bloco (segundos em Unix Epoch)
Algoritmo de dificuldade PoW do alvo
Contador utilizado no algoritmo PoW
Hash da raiz da árvore de Merkle do bloco de transação
Tabela 4.2: Estrutura do cabeçalho. Adaptada de [2]

4.1.2

Servidor Timestamp

Um servidor timestamp adiciona a data e hora a um determinado dado no momento que
esse foi criado por um computador, certificando que, de fato, ele existiu em certo momento. Para
tal, é necessário que uma autoridade, chamada Time Stamp Authority (TSA), emita e verifique
esse timestamp. Porém, antes de tal processo, o dado deve ser criptografado através de uma
função hash, para assim atestar o conteúdo do dado [5].
O procedimento ocorre da seguinte maneira: para o dado criado, é gerado um hash que
é enviado ao TSA, esse hash é concatenado com o timestamp; a partir dessa junção é gerado
outro hash digitalmente certificado com a chave privada do TSA, e o resultado representa um
timestamp seguro que é enviado ao criador do dado [17], como mostrado na figura 4.2.
No caso do blockchain, este serve como certificador da data de criação do dado, não
havendo necessidade de uma autoridade central. Além disso, proporciona integridade ao dado,
visto que cada bloco possui o timestamp anterior em seu hash, formando assim uma cadeia que
dificulta a alteração do timestamp. Após a confirmação do timestamp pela rede, a dificuldade para
modificá-lo torna-se quase impraticável, aumentando assim a confidencialidade do dado [32].

Figura 4.2: Exemplo de timestamp utilizando TSA como autoridade central. Extraída de [17].

34

CAPÍTULO 4. BLOCKCHAIN

4.1.3 Proof-of-work
PoW é um princípio, inicialmente proposto por Dwork e Naor [13], onde um usuário
deve computar uma função de moderada a difícil para acessar um recurso, como exemplo,
aumento do processamento executado na Central Processing Unit (CPU) - Unidade Central de
Processamento. A ideia concebida tinha como alvo diminuir a quantidade de spam por email,
entretanto, ela é utilizada em vários contextos, tais como: combate a ataques DoS, esgotamento de
conexão ou abuso de serviços, avaliação de popularidade de um site, em situações de sobrecarga,
como moeda para aplicações P2P e grid e ainda na realização de micropagamentos [20]. PoW
pode ser representado de acordo com a figura 4.3.

Figura 4.3: Exemplo de PoW com hash parcial. Extraída de [15].

De maneira geral, PoW utiliza hash puzzles, quebra-cabeças de funções de dispersão em
tradução livre, para efetuar a prova de trabalho, sendo o hash reverse puzzle o mais utilizado [18].
Os seguintes passos, de maneira simplificada, são executados no PoW que utiliza hash reverse
puzzle e são representados na figura 4.4:
1. Servidor apresenta um puzzle ao cliente;
2. Cliente encontra solução x, através do calculo do hash p = H(x||s||r);
3. Servidor verifica se os últimos l bits em p são zero;
4. Servidor verifica se o cliente utilizou um seed válido;
5. Servidor envia serviço ou token ao cliente.
Nesse esquema o custo computacional do servidor é bem menor que o do cliente, sendo
essa assimetria, onde o trabalho necessário para calcular a função é bem menor que o de verificar
o resultado, uma característica chave do PoW [18, 20]. Dessa maneira, um servidor, para
certificar que a informação só será acessada após resolução do problema, pode colocar um
desafio e assim identificar os clientes que estão dispostos a pagar o custo computacional para
acessá-lo [15].

4.1. CONCEITOS

35

Figura 4.4: Etapas executadas no PoW. Extraída de [18].

No contexto do blockchain, é utilizado o nonce para variar a saída do cálculo do PoW,
dificultando, assim, o trabalho executado pelo cliente para descobrir o hash original e, consequentemente, aumentando a proteção da infraestrutura distribuída.
4.1.4

Árvores de Merkle

Árvores de Merkle são árvores binárias completas com ponteiros hash propostas por
Merkle [22] com o intuito de produzir assinaturas digitais de uso único (one-time). Ela foi
concebida de forma que os blocos de dados ficam agrupados em pares e o hash de cada um
é armazenado em seus nós-pai. Os nós-pai são então agrupados em pares e seus hashes são
guardados um nível acima, como observado na figura 4.5. O processo continua até que o nó raiz
seja alcançado [33].

Figura 4.5: Exemplo de uma árvore de Merkle. Adaptada de [2].

De maneira geral, a árvore de Merkle é utilizada para resumir e verificar a integridade de
um grande volume de dados. Em blockchain ela é empregada para resumir todas as transações
em um bloco, mantendo, assim, o histórico de todas as transações já incluídas nele [2]. Como
uma cópia do blockchain é armazenado localmente, e esse é constantemente atualizado com a
adição de novos blocos advindos da rede, o tamanho do arquivo pode aumentar e acabar por

36

CAPÍTULO 4. BLOCKCHAIN

consumir muito espaço de disco. Ao utilizar a árvore de Merkle no blockchain, é necessário
somente armazenar a raiz da árvore que contém o resumo das transações, como visto na figura
4.5, diminuindo significativamente o espaço do arquivo local [32].
4.1.5

Funções Hash Criptográficas

Funções hash referem-se a funções que comprimem determinado dado de tamanho
aleatório, seja ele uma string, arquivos binários ou pacotes TCP, em uma string de tamanho fixo.
Ela tem como objetivos a privacidade, autenticidade, integridade e não-repúdio da informação
transitada.
Uma das vantagens em utilizar funções hashes está na diminuição dos custos com
armazenamento, visto que o hash gerado é, em geral, menor que sua entrada [15]. Dentre
suas várias formas de aplicações pode-se citar proteção de senhas, formação de assinaturas
digitais, construção de blocos em protocolos de autenticação e estruturação de algoritmos
criptográficos [35].
Para que uma função hash seja utilizada em criptografia ela deve atender aos seguintes requisitos: resistência à pré-imagem, resistência à segunda pré-imagem e resistência à colisão [41].
Uma função hash criptográfica H deve atender às seguintes características [29]:
1. H pode ser aplicada a um dado de qualquer tamanho;
2. H sempre produz uma saída de tamanho fixo;
3. Dada uma entrada qualquer (x) é fácil computar H(x);
4. Dado H(x) é computacionalmente impraticável encontrar x;
5. É computacionalmente impraticável encontrar x 6= x0 de modo que H(x) = H(x0 ).
A quarta característica é chamada de resistência à pré-imagem ou propriedade de mãoúnica, ou seja, uma função hash possui a característica de ser não-reversível, onde é difícil3
encontrar a mensagem x que gerou um hash. O requisito de resistência à segunda pré-imagem é
listado na quinta característica e garante que uma função hash é única, onde dado duas entradas
diferentes os hashes resultantes serão diferentes.
Complementando os requisitos de uma função hash criptográfica, a resistência à colisão,
refere-se a propriedade que dado H, é computacionalmente impraticável encontrar um par
(x, y) de modo que H(x) = H(y) [41]. Computacionalmente impraticável refere-se ao esforço
computacional gasto para resolver problemas de custo de tempo superior a um polinômio do
tamanho da entrada.
Blockchain utiliza função hash SHA-256 como sua ferramenta básica de criptografia
para verificar as transações e calcular PoW. Secure Hash Algorithm (SHA) é um tipo de hash
que transforma mensagens menores que 264 bits em um hash de 256-bits.
3 Requer

mais tempo/custo que qualquer atacante hipotético pode investir.

4.2. ATAQUES AO BLOCKCHAIN

37

Sendo assim, ela utiliza a estrutura iterativa de Merkle–Damgård4 [10] para transformar
uma função de compressão de tamanho fixo e resistente à colisão em uma função hash que aceita
valores de mensagens aleatórios [33]. A transformação pode ser melhor visualizada através da
figura 4.6. Os passos, simplificados, para que ocorra essa modificação são:
1. Mensagem de entrada é ajustada para se tornar um múltiplo de 512;
2. A entrada da função hash é divida em blocos;
3. Cada bloco de 512-bits é processado na Merkle–Damgård;
4. A construção é dada de forma que cada bloco junto com a entrada do bloco anterior
passe para a função de compressão;
5. O saída do último bloco é o resultado da transformação.

Figura 4.6: Função hash SHA-256 simplificada. Extraída de [33].

De maneira resumida, blockchain permite a criação de uma arquitetura distribuída, onde
cada nó executa e armazena uma transação encadeada em blocos, criptografada através de função
hash. Cada bloco, adicionado um por vez, faz referência ao bloco anterior que é verificado
através do PoW pela rede de usuários conectados a rede. Dessa forma, é mantido um consenso
por toda a rede, visto que qualquer tentativa de modificação em um bloco quebra toda a sequência
de encadeamento.
4.2

Ataques ao Blockchain

Apesar de oferecer proteção contra ataques a rede, a tecnologia não é imune a vulnerabilidades e pode sofrer ataques que comprometem todo o aspecto de segurança a qual se propõe.
Os principais ataques ao blockchain são [15, 33]: 51% e gasto duplo (double-spend). 

4 Método

51% ocorre quando mais de 50% da taxa de hash (atividade computacional) da rede
é tomado pelo atacante, podendo ele assim, modificar, remover e evitar que novas
transações sejam realizadas;
utilizado para construir funções hash resistentes à colisão.

38

CAPÍTULO 4. BLOCKCHAIN 

Gasto duplo ocorre quando duas diferentes transações tentam gastar o mesmo fundo
monetário, ou seja, um atacante tenta gastar o mesmo dinheiro mais de uma vez;

Embora as vulnerabilidades sejam reconhecidas, elas são mitigadas na concepção do
blockchain bitcoin, como é o caso da necessidade de 6 (seis) confirmações pela rede de uma
transação, ou evitar que um usuário ou grupo de usuários tenha muito controle computacional [6].

39

5

Aplicações de Armazenamento em Nuvem com Blockchain

A utilização de blockchain em computação em nuvem é uma prática recente, e vem
sendo vista como uma nova camada da infraestrutura em nuvem baseada em criptografia para
validação de transações e registro de transições de estado. Ela traz um novo paradigma chamado Decentralized Applications (Dapps) - aplicações descentralizadas, que segue uma nova
arquitetura de camadas denominada web 3.0 [11, 55].
Web 3.0 possui 3 (três) componentes: um avançado navegador como cliente; blockchain
como recurso compartilhado; e uma rede virtual de computadores que executam programas de
forma descentralizada que interage com o blockchain e verifica as transações [31]. A principal
finalidade da web 3.0 é proporcionar maior segurança, descentralização e navegação de maneira
pseudo anônima.
De maneira geral, os benefícios do emprego de blockchain em aplicações são [31]: 

Redução de custos; 

Transparência, pois proporciona a informação correta para a pessoa adequada;  

Privacidade, pois oferece aos consumidores e as empresas controle com maior
granularidade;
Menor risco, pois proporciona melhor visibilidade, menos exposição e menos fraudes; 

Eficiência, devido ao processamento mais rápido; 

Qualidade, pois apresenta menos erros ou maior satisfação na utilização.

A quantidade de aplicações de armazenamento em nuvem que utilizam blockchain ainda
é pequena e somente 3 (três) sistemas [24] foram encontrados até a data de publicação desse
trabalho. A seguir é realizada uma breve descrição das aplicações: Ethereum1 , Sia2 e Storj3 ; e
como se dá o funcionamento do blockchain nas mesmas.
1 https://www.ethereum.org/
2 https://sia.tech/
3 https://storj.io/

40
CAPÍTULO 5. APLICAÇÕES DE ARMAZENAMENTO EM NUVEM COM
BLOCKCHAIN
5.1 Ethereum Project
Ethereum é uma plataforma blockchain de código aberto4 , fundada a partir de 2014
por Vitalik Buterin, Gavin Wood e Jeffrey Wilcke, onde transações baseadas em estado de
máquina podem ser desenvolvidas, ou seja, qualquer usuário pode desenvolver ou usar aplicações
descentralizadas que são executadas sob a tecnologia blockchain. Ela não se limita a moedas
criptográficas, e é melhor direcionada para aplicações que automatizam a interação entre pares e
facilitam a coordenação de grupos de ações na rede5 .
O principal objetivo da plataforma está em facilitar transações consensuais, através de
contratos, entre indivíduos que não teriam motivos para confiar um no outro, ou seja, sem a participação de uma autoridade central para validar a transação, proporcionando assim transparência,
segurança e garantia dos possíveis resultados provindos de qualquer iteração [54].
A plataforma segue o conceito de Decentralized Autonomous Organization (DAO)6 organizações autônomas descentralizadas, em tradução livre, proposto e implementado pela
Ethereum Foundation. DAO refere-se a uma entidade virtual autônoma que depende de usuários
para realizar certas tarefas computacionais. No caso de Ethereum, o DAO é representado pelo
smart contract que reside no blockchain.
5.1.1

Como funciona blockchain no Ethereum?

O Blockchain Ethereum é programável, permitindo aos usuários criarem suas próprias
operações, de qualquer complexidade, diferente do blockchain bitcoin que vem com um conjunto
de operações pré-definidas; a sua unidade básica é uma conta, tornando distinto do blockchain
bitcoin que tem como unidade básica uma lista de transações. A conta pode ser de dois tipos:
Externally Owned Accounts (EOA), controlada por chaves privadas; e Contract Accounts, que
é controlada por seu código de controle e só pode ser ativada por uma EOA. Assim como o
Bitcoin, os usuários pagam uma taxa para manter a segurança da rede e também pelo recurso que
seu programa consome, seja armazenamento ou consumo de CPU. A taxa é cobrada em Ether,
moeda nativa da plataforma.
A plataforma tem sua própria máquina virtual, chamada de Ethereum Virtual Machine
(EVM), onde são executados os complexos algoritmos, além de fornecer a possibilidade de
desenvolver programas em JavaScript e Python. Cada nó roda em uma EVM, permitindo
descentralização, e mantendo assim o consenso no blockchain, além de proporcionar tolerância a
falha, assegurando zero downtime, integridade do dado armazenado e resistência a censura.
Diferente do Blockchain Bitcoin, a plataforma adota problemas matemáticos que utilizam
memória computacional, pois asseguram que se o problema requer tanto memória quanto CPU
para ser resolvido, o hardware do computador comum pode ser utilizado e não hardware
4 https://github.com/ethereum/
5 http://www.ethdocs.org/en/latest/introduction/what-is-ethereum.html
6 https://daohub.org/

5.2. SIA

41

especializado, como o Application-Specific Integrated Circuit (ASIC). Ethereum, passa assim
a ser uma plataforma Proof-of-Work ASIC-resistant com maior descentralização da segurança,
assegurando que usuários com hardware especializado não tomem controle da rede.

5.1.2

Aplicações desenvolvidas no Ethereum

Até o presente momento, Ethereum já proporcionou a criação das seguintes aplicações:
Augur7 , plataforma para realizar predições de mercado através de uma rede descentralizada; Provenance8 , plataforma para aumentar a transparência e auditabilidade de fornecedores; Slock.it9 ,
plataforma para venda e aluguel de qualquer bem sem a necessidade de um intermediário e
WeiFund10 , plataforma de crowdfunding descentralizado.
Como visto acima, nenhuma das aplicações oferece serviço de armazenamento, porém a
ferramenta fez parte da análise pelo seu potencial em criar diferentes aplicações, incluse uma
que ofereça armazenamento.

5.2 Sia
Sia é uma plataforma de código aberto11 que vem sendo desenvolvida desde 2014, com
uma versão beta lançada desde Junho de 2015. Como diferencial, ao invés de utilizar armazenamento de um provedor central, a plataforma adota o compartilhamento do armazenamento entre
os peers. A plataforma oferece o armazenamento de arquivo de forma que o usuário não perde
controle sobre o mesmo assim que o envia a aplicação; provendo redundância e criptografia, e
depois enviando o arquivo para a rede de hosts, que são incapazes de manipular os dados, violar
sua privacidade ou impedir que o usuário recupere o arquivo original [27].
Como proteção para o host, a plataforma oferece contrato, onde ele pode anunciar seu
grau de confiança, preço e penalidades por perder o arquivo, entretanto Sia não disponibiliza
resguardo contra ataques do tipo DoS, cabendo aos hosts oferecer essa segurança. Para os clientes,
como defesa contra a indisponibilidade de um host, a plataforma concede a possibilidade de usar
erasure codes, códigos de regeneração, que permitem que uma rede de armazenamento de dados
possa se auto-regenerar quando um nó apresentar falha [37].
No Sia os dados são subdivididos em n partes criptografadas armazenadas em diferentes
hosts, diminuindo também a latência de recuperação dos dados, pois o download pode ser
realizado em paralelo e através dos hosts mais próximos do cliente.
7 https://www.augur.net/
8 https://www.provenance.org/
9 https://slock.it/index.html
10 http://weifund.io/
11 https://github.com/NebulousLabs/Sia

42
CAPÍTULO 5. APLICAÇÕES DE ARMAZENAMENTO EM NUVEM COM
BLOCKCHAIN
5.2.1 Como funciona Blockchain no Sia?
Uma altcoin chamada Siacoin é adotada na plataforma, ela é utilizada nos smart contracts,
contratos que não requerem interpretação ou intervenção humana para ser concluído [15], que
asseguram que o host só será pago se armazenar o arquivo. Alternative coin ou altcoin é
uma criptomoeada derivada do bitcoin que possui diferenças na sua implementação, como
exemplo tem-se Litecoin, Peercoin, Namecoin, Auroracoin, cada uma com um nicho de aplicação
específico [14].
De maneira simplificada, Sia oferece armazenamento descentralizado baseado na criptografia de smart contracts, esses são responsáveis por compelir um acordo entre hosts e clientes.
Após concordar com o armazenamento do arquivo, o host deve regularmente submeter o armazenamento a uma prova (storage proof ), que consome um segmento aleatório do arquivo para
verificar se o mesmo e válido ou não. Como incentivo, o host é compensado por armazenar o
arquivo [51].
5.2.2

Aplicações que utilizam Sia

Até o presente momento, somente 1 (uma) aplicação utiliza Sia: Crypti12 , plataforma
para criação de aplicações descentralizadas.
5.3 Storj
Storj é uma plataforma de código livre13 que oferece armazenamento de dados descentralizado e criptografia end-to-end para proteger os dados. Ela foi desenvolvida a partir de 2014,
e oferece cerca de 1500 Terabytes de armazenamento [24]. De maneira geral, a plataforma
opera da seguinte maneira: o arquivo é adicionado à rede e dividido em vários pedaços onde
são inclusos os erasure codes e ocorre a encriptação da informação para que sejam gerados os
shards, que são então, distribuídos na rede.
Shards são pedaços do arquivo criptografado, de tamanho múltiplo do byte (como 8 ou
32 MB), que são distribuídos na rede para garantir que ninguém, a não ser o proprietário do
arquivo possua sua cópia completa. Os shards permitem que seja difícil adivinhar o tamanho do
arquivo armazenado como também possibilita o gerenciamento de arquivos grandes [53].
Uma das principais características da plataforma é sua preocupação com a segurança da
informação que transita na rede, sendo sua arquitetura desenvolvida para evitar os ataques do
tipo [24]: 

Google Attacks - Ataques Google - ataque promovido por grandes corporações
ou entidades que possuem grande volume de poder computacional ou espaço de
armazenamento;

12 https://crypti.me/
13 https://github.com/Storj/

5.3. STORJ     

5.3.1

43

Sybil Redundancy Attacks - Ataque de redundância Sybil - ataque em que a ameaça explora a rede fingindo ter cópias redundantes do mesmo shard;
Improper Distribution - Distribuição imprópria - a ameaça tenta diminuir a confiabilidade da rede apagando o dado e suas cópias ao mesmo tempo;
Cheating Client Node - Nó de cliente trapaceiro - o cliente hospeda o arquivo, mas
não quer pagar por ele ou intencionalmente rejeita as auditorias a fim de não efetuar
o pagamento;
Hostage byte - Byte refém - um cliente transfere o dado, mas mantem a última parte
do dado como refém, exigindo alto pagamento para esse ser liberado;
Honest Geppeto Attack - Ataque Geppeto Honesto - um cliente oferece um grande
volume de armazenamento por certo período de tempo, mas depois desiste da ideia e
tenta derrubar a rede.

Como funciona blockchain no Storj?

A moeda utilizada na plataforma é o Storjcoin X (SJCX) que permite a compra e o aluguel
de armazenamento e tem como base o blockchain bitcoin para suas transações, sua altcoin é a
Florincoin, mas será feita transição para o blockchain bitcoin, segundo os próprios criadores.
Diferente do blockchain bitcoin, a plataforma não guarda nenhum arquivo no blockchain, mas
sim seus metadados, junto com hash do arquivo, a localização das cópias dos shards na rede e a
árvore de Merkle.
Storj utiliza duas aplicações para melhorar a segurança do dado, a aplicação web Storj14
para armazenamento do arquivo e o Storj Share15 para aluguel de disco-rígido. Para provar
que o arquivo não foi modificado e está disponível, a plataforma utiliza dois métodos de prova:
Proof-of-Storage via auditoria Merkle e Proof-of-storage via auditoria pré-geradas.
Proof-of-storage via auditoria pré-geradas é uma forma de dificultar a corrupção da
rede de usuários através de um desafio de hash onde o cliente cria uma série de seeds que são
adicionados ao arquivo. A partir daí, é gerado um hash, depois uma árvore de Merkle é construída
com esse hash e sua raiz é armazenada no blockchain. Assim, a árvore de Merkle é publicada
sem as folhas e periodicamente é realizada a checagem se os hashes são correspondentes.
Além dos métodos supracitados, Storj também fazem uso dos erasure codes, garantindo
assim disponibilidade do arquivo e redundância. Devido a forma como são utilizados os erasure
codes em Storj, a redundância se aplica a camada de rede e não a camada física.
14 https://app.storj.io/
15 https://storj.io/share.html

44
CAPÍTULO 5. APLICAÇÕES DE ARMAZENAMENTO EM NUVEM COM
BLOCKCHAIN
5.3.2 Aplicações que utilizam Storj
Nenhuma aplicação que utilize Storj foi encontrada até a publicação desse trabalho.
5.4

Análise
Os seguintes aspectos serão analisados a partir da descrição das aplicações supracitadas: 

Blockchain: Tipo de blockchain utilizado 

Público alvo: Qual o principal público da plataforma? 

Armazenamento em nuvem: Plataforma oferece serviço de armazenamento? 

API: Possui API? 

Segurança: Quais aspectos de segurança são oferecidos? 

Ataques: Quais os ataques que são evitados?

5.4.1 Ethereum 

Blockchain: Ether. 

Público alvo: Desenvolvedores. 

Armazenamento em nuvem: Não.   

API: Sim, para desenvolvimento de Dapps JavaScript e JSON.
Segurança: Tolerância a falha, zero downtime, integridade do dado armazenado e
resistência a censura da rede.
Ataques: Ataques ASIC e 51%.

5.4.2 Sia 

Blockchain: Siacoin. 

Público alvo: Público em geral. 

Armazenamento em nuvem: Sim.   

API: Sim.
Segurança: Redundância do dado, tolerância a falha e integridade do dado.
Ataques: Somente aqueles evitados pelo blockchain, e não oferece segurança contra
ataques DoS.

5.5. CONSIDERAÇÕES FINAIS
5.4.3

Storj 

Blockchain: Florincoin. 

Público alvo: Público em geral. 

Armazenamento em nuvem: Sim.   

5.5

45

API: Sim.
Segurança: Integridade, confiabilidade, redundância e tolerância a falhas.
Ataques: Ataque Google, ataque de redundância Sybil, distribuição imprópria, nó
de cliente trapaceiro, byte refém, ataque Geppeto honesto, além do mais comum em
criptomoedas, o 51%.

Considerações Finais

Como visto acima, o número de aplicações que utilizam blockchain para armazenamento
em nuvem ainda é pequeno, essa área está em ebulição e muita novidade surgiu em 2016; as
três iniciaram seu desenvolvimento em 2014, e após atingirem certa maturidade e sanarem
problemas quanto a segurança as mesmas foram lançadas e já possuem um número considerável
de usuários [7, 23, 57], embora Sia e Storj ainda encontram-se em estágio de teste beta.
Talvez por falta de documentação mais específica, somente a Storj, em seu whitepaper
descreve quais aspectos de proteção quanto a ataques a plataforma está preparada para enfrentar,
Ethereum e Sia, em seus whitepapers não fornecem nenhuma informação a respeito, podendo-se
considerar que a segurança dada é aquela proporcionada pela utilização de blockchain. Todas as
três asseguram que o emprego da tecnologia blockchain aumenta a privacidade, confiabilidade,
integridade do dado e eliminam totalmente a necessidade de uma autoridade central (provedor)
para validar as transações.
O principal objetivo, tanto de Sia quanto de Storj, é ser referência em serviço de armazenamento em nuvem, onde qualquer informação pode ser armazenada de maneira descentralizada
e com segurança. Esse objetivo tem em comum o próprio paradigma da Web 3.0 em disponibilizar
serviços de forma global, sem uma autoridade central controladora.
Por consequência, foi possível avaliar que blockchain aumenta a confiabilidade, devido ao
uso do PoW e a função hash criptográfica, permitindo que os dados armazenados nos blocos só
possam ser acessados por seus respectivos donos. A tecnologia também aumenta a performance
do armazenamento já que por distribuir n pedaços dos dados entre os nós, possibilita que a
recuperação do dado seja mais rápida, pois esse é realizado pelos nós mais próximo do usuário.
Há também maior segurança quanto a perda de dado, já que, como visto no Storj e
Sia, é possível adicionar códigos de recuperação aos blocos, que permitem que a rede se autoregenere, caso um nó seja perdido. Outro fator, que influencia o armazenamento do dado

46
CAPÍTULO 5. APLICAÇÕES DE ARMAZENAMENTO EM NUVEM COM
BLOCKCHAIN
é a descontinuidade do serviço, no caso de blockchain, garantido também pelos códigos de
recuperação.
Em relação às características essenciais de computação em nuvem, blockchain colabora com a infraestrutura no sentido de adicionar uma camada de criptografia, aumentando
assim a segurança dos serviços, principalmente em relação a ataques na rede, diminuindo as
vulnerabilidades inerentes da arquitetura em nuvem.
O fato da combinação de computação em nuvem com blockchain ser recente tornam
as plataformas ainda desconhecidas para o público em geral, porém tem muito potencial para
conquistar muitos usuários, principalmente aqueles que já possuem certa familiaridade com
blockchain. Agora eles enxergam a possibilidade de diminuir o vínculo com provedores de
serviços em nuvem, que devido a especificidades, acabam por fazer com que o usuário utilize
um único provedor devido a não integração entre os provedores.
Uma ressalva quanto à própria análise, é que devido ao escopo do trabalho, bem como
tempo de análise, não foi possível utilizar as plataformas, ou seja, não foi executado nenhum
procedimento, como instalação dos softwares disponibilizados para uso, ou testes, para verificar
se as funcionalidades declaradas por elas, de fato, estavam presentes. Sendo assim, a análise foi
realizada baseada na documentação disponível tanto no site quanto nas publicações realizadas
pelas próprias plataformas, diminuindo assim a possibilidade de uma análise aprofundada quanto
às vulnerabilidades que o emprego de blockchain pode trazer ao serviço de armazenamento em
nuvem ou os requisitos de segurança que ela traz.

47

6
Conclusão

O presente trabalhou estudou o porquê a tecnologia de blockchain vem sendo adotada
em serviços de armazenamento em nuvem. Nele foram verificados, que blockchain vem sendo
considerada um novo paradigma para a construção de aplicações globais, sem a necessidade
de uma autoridade central para validar as informações contidas nas transações. Também ficou
claro que há aumento da segurança quanto a confidencialidade, integridade e disponibilidade
do dado, proporcionado pelo conjunto de técnicas aplicadas em blockchain, de forma que os
usuários passar a ter maior controle sobre o arquivo armazenado na rede.
As principais vantagens na utilização de blockchain é o maior controle sobre o arquivo,
recuperação mais rápida da informação, pois as plataformas aplicam mecanismos para assegurar
a redundância dos dados entre os nós da rede, além de garantir a confiabilidade da rede, não
permitindo ataques que possam comprometer as informações armazenadas.
Infelizmente, apesar das três plataformas serem de código livre, as informações quanto a
segurança contra ataques oferecida pelos serviços ainda não é muito clara, o que pode dificultar
a aderência aos serviços, pois, para o usuário comum é bem mais fácil utilizar uma plataforma
como Google, Amazon ou Dropbox, que possuem mais tempo de mercado e já possuem políticas
de segurança, embora casos de vazamento de informações já tenham sido reportados.
Como trabalho futuro pode-se estudar a implementação de blockchain para outros tipos
de serviços em nuvem, como IaaS e PaaS, já que a tecnologia melhora a segurança da rede e
tem-se como exemplo o Ethereum como principal plataforma para criação de Dapps. Também é
possível testar e validar as aplicações avaliadas, no sentido de instalar, se cadastrar e utilizar as
plataformas e verificar se as funcionalidades declaradas estão sendo aplicadas.
Outra possibilidade, é com o conhecimento adquirido melhorar a implementação do
blockchain bitcoin, a fim de resolver os principais problemas de segurança reportados nas
plataformas que já utilizam a tecnologia.

48

CAPÍTULO 6. CONCLUSÃO

49
Referências

[1] AJMERA, R.; GAUTAM, R. Cloud Offerings: a systematic review. International Journal
of Computer Science and Information Technologies, [S.l.], v.5, n.3, p.4095–4103, 2014.
[2] ANTONOPOULOS, A. M. Mastering Bitcoin: unlocking digital cryptocurrencies. [S.l.]:
"O’Reilly Media, Inc.", 2014.
[3] ARMBRUST, M. et al. Above the Clouds: a berkeley view of cloud computing. [S.l.]:
EECS Department, University of California, Berkeley, 2009. (UCB/EECS-2009-28).
[4] ARMBRUST, M. et al. A view of cloud computing. Communications of the ACM, [S.l.],
v.53, n.4, p.50–58, 2010.
[5] BARKER, E. Recommendation for Digital Signature Timeliness. NIST Special
Publication, [S.l.], v.800, p.102, 2009.
[6] BRADBURY, D. The problem with Bitcoin. Computer Fraud & Security, [S.l.], v.2013,
n.11, p.5–8, 2013.
[7] BUNTINX, J. Number of Ethereum Nodes Grows Exponentially. Online; acessado em
Julho-2016, http://bitcoinist.net/number-of-ethereum-nodes-grows-exponentially/.
[8] BUYYA, R. et al. Cloud computing and emerging IT platforms: vision, hype, and reality for
delivering computing as the 5th utility. Future Generation computer systems, [S.l.], v.25,
n.6, p.599–616, 2009.
[9] CARROLL, M.; VAN DER MERWE, A.; KOTZE, P. Secure cloud computing: benefits,
risks and controls. In: INFORMATION SECURITY SOUTH AFRICA (ISSA), 2011.
Anais. . . [S.l.: s.n.], 2011. p.1–9.
[10] CORON, J.-S. et al. Merkle-Damgård revisited: how to construct a hash function. In:
ANNUAL INTERNATIONAL CRYPTOLOGY CONFERENCE. Anais. . . [S.l.: s.n.], 2005.
p.430–448.
[11] DAVID JOHNSTON SAM ONAT YILMAZ, J. K. N. B. F. H. R. G. S. W.; MASON, S.
The General Theory of Decentralized Applications, Dapps. Online; acessado em
Julho-2016, https://github.com/DavidJohnstonCEO/DecentralizedApplications.
[12] DURAO, F. et al. A systematic review on cloud computing. The Journal of
Supercomputing, [S.l.], v.68, n.3, p.1321–1346, 2014.
[13] DWORK, C.; NAOR, M. Pricing via processing or combatting junk mail. In: ANNUAL
INTERNATIONAL CRYPTOLOGY CONFERENCE. Anais. . . [S.l.: s.n.], 1992. p.139–147.
[14] FRANCO, P. Alt (ernative) Coins. Understanding Bitcoin: Cryptography,
Engineering, and Economics, [S.l.], p.171–181.
[15] FRANCO, P. Understanding Bitcoin: cryptography, engineering and economics. [S.l.]:
John Wiley & Sons, 2014.
[16] GAULT, M. BlockCloud: re-inventing cloud with blockchains. Online; acessado em
Junho-2016, https://guardtime.com/blog/blockcloud-re-inventing-cloud-with-blockchains.

50

REFERÊNCIAS

[17] GIPP, B.; MEUSCHKE, N.; GERNANDT, A. Decentralized Trusted Timestamping using
the Crypto Currency Bitcoin. arXiv preprint arXiv:1502.04015, [S.l.], 2015.
[18] GREEN, J. et al. Reconstructing Hash Reversal based Proof of Work Schemes. In: LEET.
Anais. . . [S.l.: s.n.], 2011.
[19] HOGAN, M. et al. Nist cloud computing standards roadmap. NIST Special Publication,
[S.l.], v.35, 2011.
[20] KOEPPE, F.; SCHNEIDER, J. Do you get what you pay for? using proof-of-work
functions to verify performance assertions in the cloud. In: CLOUD COMPUTING
TECHNOLOGY AND SCIENCE (CLOUDCOM), 2010 IEEE SECOND INTERNATIONAL
CONFERENCE ON. Anais. . . [S.l.: s.n.], 2010. p.687–692.
[21] KRUTZ, R. L.; VINES, R. D. Cloud security: a comprehensive guide to secure cloud
computing. [S.l.]: Wiley Publishing, 2010.
[22] LAMPORT, L. Constructing digital signatures from a one-way function. [S.l.]:
Technical Report CSL-98, SRI International Palo Alto, 1979.
[23] LOMBARDO, H. Blockchain Storage Platform Sia Improves Platform Stability,
Upload Speed in New Release. Online; acessado em Junho-2016,
http://allcoinsnews.com/2016/01/18/sia-improves-platform-stability-upload-speed-in-newrelease/.
[24] MALTESE, M. E. G. Blockchain-based Decentralized Cloud Storage: storj and
competitors. Online; acessado em Junho-2016, http://cointelegraph.com/news/blockchaindecentralized-cloud-storage-storj-and-competitors.
[25] MARSTON, S. et al. Cloud computing—The business perspective. Decision support
systems, [S.l.], v.51, n.1, p.176–189, 2011.
[26] MAZIERES, D. The stellar consensus protocol: a federated model for internet-level
consensus. Draft, Stellar Development Foundation, 15th May, available at:
https://www. stellar. org/papers/stellarconsensus-protocol. pdf (accessed 23rd May,
2015), [S.l.], 2015.
[27] MCCOMBIE, C. Cloud Storage Meets Blockchain: siacoin takes on amazon, google &
microsoft. Online; acessado em Junho-2016, http://cointelegraph.com/news/cloud-storagemeets-bitcoin-blockchain-siacoin-takes-on-amazon-google-microsoft.
[28] MELL, P.; GRANCE, T. The NIST definition of cloud computing. Communications of
the ACM, [S.l.], v.53, n.6, p.50, 2010.
[29] MERKLE, R. C. A certified digital signature. In: CONFERENCE ON THE THEORY
AND APPLICATION OF CRYPTOLOGY. Anais. . . [S.l.: s.n.], 1989. p.218–238.
[30] MODI, C. et al. A survey on security issues and solutions at different layers of Cloud
computing. The Journal of Supercomputing, [S.l.], v.63, n.2, p.561–592, 2013.
[31] MOUGAYAR, W.; BUTERIN, V. The Business Blockchain: promise, practice, and
application of the next internet technology. [S.l.]: Wiley, 2016.

REFERÊNCIAS

51

[32] NAKAMOTO, S. Bitcoin: a peer-to-peer electronic cash system. 2008.
[33] NARAYANAN, A. et al. Bitcoin and cryptocurrency technologies. [S.l.]: Princeton
University Press, 2016.
[34] PILKINGTON, M. Blockchain Technology: principles and applications. Research
Handbook on Digital Transformations, edited by F. Xavier Olleros and Majlinda
Zhegu. Edward Elgar, [S.l.], 2016.
[35] PRENEEL, B. Cryptographic hash functions. European Transactions on
Telecommunications, [S.l.], v.5, n.4, p.431–448, 1994.
[36] RAO, B. et al. Cloud computing for Internet of Things & sensing based applications. In:
SENSING TECHNOLOGY (ICST), 2012 SIXTH INTERNATIONAL CONFERENCE ON.
Anais. . . [S.l.: s.n.], 2012. p.374–380.
[37] RASHMI, K. V.; SHAH, N. B.; KUMAR, P. V. Optimal exact-regenerating codes for
distributed storage at the MSR and MBR points via a product-matrix construction. IEEE
Transactions on Information Theory, [S.l.], v.57, n.8, p.5227–5239, 2011.
[38] SCHWARTZ, D.; YOUNGS, N.; BRITTO, A. The Ripple protocol consensus algorithm.
Ripple Labs Inc White Paper, [S.l.], p.5, 2014.
[39] SHRIER, D.; WU, W.; PENTLAND, A. Blockchain & Infrastructure (Identity, Data
Security). connection.mit.edu, [S.l.], 2016.
[40] SINGH, A.; SRIVATSA, M.; LIU, L. Search-as-a-service: outsourced search over
outsourced storage. ACM Trans. Web, New York, NY, USA, v.3, n.4, p.13:1–13:33,
Sept. 2009.
[41] SOBTI, R.; GEETHA, G. Cryptographic hash functions: a review. IJCSI International
Journal of Computer Science Issues, [S.l.], v.9, n.2, p.461–479, 2012.
[42] SRINIVASAN, S. Security, Trust, and Regulatory Aspects of Cloud Computing in
Business Environments. [S.l.]: IGI Global, 2014.
[43] SUBASHINI, S.; KAVITHA, V. A survey on security issues in service delivery models of
cloud computing. Journal of network and computer applications, [S.l.], v.34, n.1, p.1–11,
2011.
[44] SULLIVAN, D. IaaS Providers List: comparison and guide. Online; acessado em
Junho-2016, http://www.tomsitpro.com/articles/iaas-providers,1-1560.html.
[45] SULLIVAN, D. PaaS Providers List: comparison and guide. Online; acessado em
Junho-2016, http://www.tomsitpro.com/articles/paas-providers,1-1517.html.
[46] SULLIVAN, D. SaaS Providers List: comparison and guide. Online; acessado em
Junho-2016, http://www.tomsitpro.com/articles/saas-providers,1-1554.html.
[47] SWAN, M. Blockchain: blueprint for a new economy. [S.l.]: "O’Reilly Media, Inc.", 2015.
[48] TIWARI, R. Storage as a Service Market (STaaS) to see 37% CAGR to 2019. Online;
acessado em Junho-2016, http://www.prnewswire.com/news-releases/storage-as-a-servicemarket-staas-to-see-37-cagr-to-2019-291631681.html.

52

REFERÊNCIAS

[49] VAHIE, V. 99 Problems but the cloud ain’t one: storage as a service. Online; acessado
em Junho-2016,
http://www.itproportal.com/2015/02/16/99-problems-cloud-aint-one-storage-service/.
[50] VELTE, T.; VELTE, A.; ELSENPETER, R. Cloud computing, a practical approach.
[S.l.]: McGraw-Hill, Inc., 2009.
[51] VORICK, D.; CHAMPINE, L. Sia: simple decentralized storage. [S.l.]: Technical Report,
Sia, 2014. URL: http://www. siacoin. com/whitepaper. pdf, 2014.
[52] WANG, L. et al. Cloud computing: a perspective study. New Generation Computing,
[S.l.], v.28, n.2, p.137–146, 2010.
[53] WILKINSON, S. et al. Storj A Peer-to-Peer Cloud Storage Network. 2014.
[54] WOOD, G. Ethereum: a secure decentralised generalised transaction ledger. Ethereum
Project Yellow Paper, [S.l.], 2014.
[55] WOOD, G. Less-techy: what is web 3.0. Online; acessado em Junho-2016,
http://gavwood.com/web3lt.html.
[56] WU, J. et al. Cloud storage as the infrastructure of cloud computing. In: INTELLIGENT
COMPUTING AND COGNITIVE INFORMATICS (ICICCI), 2010 INTERNATIONAL
CONFERENCE ON. Anais. . . [S.l.: s.n.], 2010. p.380–383.
[57] YOUNG, J. Storj Network Passes 1 Petabyte Storage Space. Online; acessado em
Junho-2016, https://bitcoinmagazine.com/articles/storj-network-passes-petabyte-storagespace-1442875577.
[58] ZISSIS, D.; LEKKAS, D. Addressing cloud computing security issues. Future
Generation computer systems, [S.l.], v.28, n.3, p.583–592, 2012.