Você está na página 1de 10

Revisão Final

Tópicos abordados:
● Conceituando Hash.
● P2P, DHT, BitTorrent, Tor e Deep Web
● Conceito de Bitcoin, criptomoeda, blockchain, mineração, Prova de
Trabalho.
● Segurança e Investimento em Bitcoin.
● Computação em Nuvem e Virtualização

Introdução:
O presente texto aborda alguns tópicos da disciplina Tópicos Avançados em
Engenharia de Computação I. Deve-se destacar que o texto obedece a ênfase dada
pelo professor Marcos Simplício nesta oferta da disciplina. A maioria dos tópicos
abordados nesta revisão está baseada na consulta realizada junto aos alunos para
levantamento de dúvidas. O primeiro tópico, Conceituando Hash, visa apresentar os
fundamentos necessário para o entendimento do uso de funções e tabelas hash no
decorrer da disciplina. O segundo tópico aborda P2P, DHT, BitTorrent, Tor e Deep
Web focando a arquitetura da rede ponto a ponto, funcionalidades e recursos para o
tráfego de conteúdos em uma rede ponto a ponto. O terceiro tópico revisa conceitos
de Bitcoin, Criptomoeda, Blockchain, Mineração e Prova de Trabalho para esclarecer
dúvidas apontadas pelos alunos nesses conceitos. Em seguida, abordam-se algumas
questões relacionadas ao tópico Segurança e Investimento em Bitcoin. Por último, o
tópico Computação em Nuvem e Virtualização é tratado com a apresentação dos
modelos de serviço e tipos de virtualização. Para cada tópico da revisão, uma
recomendação de leitura é feita, pois todos os trechos desta revisão estão baseados
nos textos-base da disciplina. Logo, a recomendação de leitura visa dar contexto aos
trechos transcritos nesta revisão.
_________________________________________________________
Conceituando Hash.
Recomendação de leitura: Material de apoio - Revisitando
conhecimentos - Uma explicação bem completa – Hashing por Paulo
Feofiloff/IME-USP.
___________________________________________________________________
Uma função hash mapeia dados com tamanho qualquer em valores de tamanho fixo
através de funções hash. Os valores mapeados podem ser chamados de códigos ou
valores de hash, sendo usados para indexar o que se chama de tabela hash. Assim,
temos o conceito de hash ou endereçamento de armazenamento de dispersão. De
forma mais direta, seja T uma tabela e um registro x com uma chave (símbolo) e
dado. Precisaremos implementar: Insert (T, x), Delete (T, x) e Search(T, x). Tabela

1
hash será utilizada onde as operações mencionados ocorrem em O(1). Como?
Suponha que todas as chaves (keys) são números naturais (grandes) num intervalo
0...m-1. As chaves são distintas e podemos definir um vetor T[0..m-1] tal que se (x∈
T) E (key[x] = i), então T[i] = x; caso contrário T[i] = NULL. Logo, as operações
(inserção, busca, exclusão) levam O(1). Funcionam apropriadamente quando o
intervalo das chaves é pequeno. Exemplo: Considere chaves que são inteiros de 32-
bit. A tabela de endereçamento direto terá 232 > 4 bilhões de entradas. Se memória
não for um problema, o tempo para inicializar os elementos em NULL pode ser
proibitivo. Uma alternativa viável é a Transformação de Chave ou Hashing que
consiste em mapear chaves em um intervalo menor 0…m-1, porém colisões irão
ocorrer.

Colisões Chaining

A solução para colisão é chamada Chaining que insere elementos atribuídos ao

mesmo slot em uma lista ligada. Teremos a inserção em O(1), se o elemento não está

em T; exclusão em O(1), se a lista é duplamente ligada e o elemento é dado. Logo,

teremos o pior caso quando toda chave está atribuída ao mesmo slot. A escolha de

uma função hash adequada se torna fundamental para distribuir as chaves

uniformemente nas entradas de T. Técnicas heurísticas podem ser utilizadas como

método da divisão e da Multiplicação. No método da divisão, usamos a função h(k)

= k mod m, onde todas as chaves são valores inteiros. A entrada da tabela é dada

pelo valor do resto da divisão da chave k pela quantidade de slots m. Exemplo: Sejam

m=12 e k=100, temos h(100)=100 mod 12 = 4. No método da multiplicação, temos

h(k) = ⎣ m (kA - ⎣kA⎦) ⎦ com 0<A<1 constante e não deve estar próximo de 0 ou 1.

2
Assim, h(k) é a parte fracionária de kA, podemos escolher m=2p para p um valor

inteiro. Suponha uma representação (palavra) da máquina com w bits e k representa

uma única palavra. Temos A=s/2w para s inteiro com 0<s<2w e k.s=r1*2w + r0. O

valor h(k) é dado pelos p bits mais significativos em r0

_________________________________________________________________
P2P, DHT, BitTorrent, Tor e Deep Web
Recomendação de leitura: Texto-base - Segurança em redes P2P:
princípios, tecnologias e desafios | Marinho P. Barcellos e Luciano P.
Gaspary
___________________________________________________________________
A computação ou rede ponto a ponto (Peer-to-Peer ou P2P) é uma arquitetura de

computação distribuída uma vez que particiona tarefas ou cargas de trabalho na rede.

Os pares de nós são participantes igualmente privilegiados para obter serviços quanto

para fornecer serviços, formando uma rede ponto a ponto de nós. Assim, os pares

(peers) fornecem parte de seus recursos (poder de processamento, espaço para

armazenamento, ou largura de banda da rede) de forma direta aos demais

participantes da rede. Isso elimina a demanda por um servidor centralizado e

responsável por coordenar os nós da rede. Logo, os pares assumem o papel de

fornecedores e consumidores de recursos, em contraste com o modelo cliente-

servidor tradicional em que o consumo e o fornecimento de recursos são divididos.

Há três vantagen no uso do modelo P2P. A primeira vantagem está na escalabilidade

da rede, tratando eficientemente grupos pequenos e grupos grandes de participantes.

A segunda vantagem é a confibilidade já que se torna possível depender do seu

funcionamento. Isso se justifica pela ausência de um ponto central de falhas,

permitindo resistir a ataques como negação de serviço. A terceira vantagem é a

autonomia dada aos participantes que podem entrar e sair da rede sem gerar

problemas nos serviços, além de decidirem sobre participar ou não da rede sem

3
depender de entidades externas. A Distributed Hahs Tables (DHT) é uma tabela de

roteamento distribuída para encontrar um objeto de forma eficiente. Para isso, deve

existir a correspondência entre chaves, ou seja, o nó requisitor na rede deve conhecer

a chave do objeto procurado. No contexto da rede P2P, BitTorrent se caracteriza

como um protocolo de comunicação para compartilhamento de arquivos numa rede

P2P. Esse protocolo tira proveito da arquitetura P2P ser descentralizada para

viabilizar a distribuição de dados através da rede. Logo, entre os serviços de

compartilhamento disponíveis na internet, o BitTorrent se caracteriza como um

sistema P2P (peer-to-peer) com desempenho eficiente, rápido e estável tanto para

arquivos pequenos quanto arquivos com milhares de megabytes. Assim, facilita o

compartilhamento de qualquer tipo de arquivo como vídeos, músicas e softwares. Tor

é uma abreviação para The Onion Router para se referir ao software que permite

comunicação anônima na rede de computadors. Trata-se de um software de código

aberto e gratuito que garante o anonimato aos usuários pelo direcionamento do

tráfego da Internet via uma rede voluntária e gratuita de sobreposição com milhares

de nós. Um computador utilizando Tor lança mão de retrasmissores (relays) que

permitem esconder seu IP, trafegando na internet com o IP do chamado relay de

saída (último relay). A existência de vários relays (retrasmissores) permite anonimizar

sua conexão, uma vez que não se torna possível ligar o conteúdio transmitido ao

endereço de IP original. Há três camadas de criptografia na rede Tor que garantem o

anonimato até para os relays que participam da rede. O relay guarda sabe que

determinado IP usou a rede Tor, mas não o conteúdo. O relay intermediário não tem

acesso ao conteúdo, quem enviou e o destino. O relay de saída envia o pacote

transmitido para a internet e, para isso, conhece o destino e o conteúdo (caso

criptografia origem-destino não seja empregada, uma prática pouco usual na internet),

4
mas não tem acesso à origem. Esses procedimentos de transmissão e anonimato

caracterizam o chamado roteamento cebola empregado pelo Tor, ou seja, uso de

camadas de criptografia sobrepostas. Isso não caracteriza comunicações anônimas,

mas um processo de separação na identificação do roteamento. Deep web é

constituída por páginas web não indexadas, ou seja, não catalogadas pelos motores

de busca tradicionais (Google, Bing, DuckDuckGo, etc.). O conteúdo da deep web

também inclui sites pagos, bancos de dados privados e a chamada dark web. Os

termos deep web e dark web não retratam o mesmo conceito. Enquanto a deep web

contém conteúdo legal e legítimo (publicações pagas, bancos de dados, revistas

acadêmicas, pesquisas, etc.), a dark web contém atividades ilegais como mercados

negros de cartões de crédito roubados, venda de informações pessoais, armas de

fogo, malware, prostituição, tráfico sexual e drogas.

__________________________________________________________________
Conceito de Bitcoin, Criptomoeda, Blockchain, Mineração, Prova de
Trabalho.
Recomendação de leitura: Texto-base - Como o bitcoin funciona? |
Bitcoin.org, Texto-base - Whitepaper do bitcoin em português | Lucas
Bassoto
___________________________________________________________________
Criptomoeda é um meio de troca digital, criptografado e descentralizado, ou seja,

não há uma autoridade central para gerenciar a criptomoeda, mas sim uma

distribuição de tarefas entre usuários de criptomoedas na Internet. Bitcoin foi o

primeiro tipo de criptomoeda lançada em janeiro de 2009. Bitcoin é uma criptomoeda

uma vez que aplica criptografia para a segurança das transações. Apresenta como

vantagem a promessa de baixas taxas nas transações quando comparada aos meios

tradicionais para transações online. Também oferece como promessa de vantagem a

inexistência de uma autoridade central como ocorre nas moedas tradicionais (dólar,

5
real, euro, etc.), ou seja, o bitcoin é operado por uma autoridade descentralizada. Os

saldos no bitcoin são mantidos por um livro público acessível e transparente a todos,

mas com cada registro devidamente criptografado. Bitcoin e criptomoedas em geral

se baseiam neste livros que caracterizam uma tecnologia chamada blockchain.

Assim, Blockchain é um livro de registro de contabilidade público compartilhado,

onde todas as transações confirmadas são incluídas em cadeia de blocos. Isso

permite que carteiras de Bitcoin estabeleçam saldos disponíveis e mantenham

controle das transações, usando criptografia para assegurar a integridade e ordem

cronológica da cadeia de blocos. Mineração consiste na realização de cálculos para

confirmar as transações da rede Bitcoin para garantir a segurança, usando

computadores na execução de cálculos matemáticos que confirmem tais transações.

Aqueles atuando na mineração de Bitcoin podem recebem novas moedas criadas em

cada bloclo ou taxas por transações confirmadas. Os conceitos servidor de

carimbo de tempo e prova de trabalho são apresentados como tratados no artigo

Whitepaper do bitcoin. Nas transações com bitcoin, um servidor de carimbo de

tempo é uma forma de determinar que, num certo período de tempo, os nós da rede

verificam o recebimento da transação. Um servidor de carimbos de tempo acessa

a função hash de um bloco de itens, onde tais itens serão carimbados com a data e

a hora, divulgando amplamente a função hash. O Carimbo de tempo inclui o carimbo

de tempo anterior em sua função hash, formando uma espécie de cadeia ou corrente,

com cada carimbo de tempo adicional reforçando os anteriores. Nesse contexto, o

sistema de prova de trabalho escanea o valor que foi adicionado à função hash. O

trabalho médio nesse processo é exponencial no número de zero bits requeridos e

pode ser verificado executando um único hash. A prova de trabalho também trata a

representação com uma maioria tomando as decisões, onde temos um-Computador-

6
um-voto, onde a maior cadeia de blocos representa a decisão tomada pela maioria,

uma vez que contém a prova-de-trabalho com maior esforço investido.

__________________________________________________________________

Segurança e investimento em bitcoin


Recomendação de leitura: Texto-base - Como o bitcoin funciona? |
Bitcoin.org, Texto-base - Whitepaper do bitcoin em português | Lucas
Bassoto
__________________________________________________________________
Bitcoin é diferente das transações ou investimetnos com moeda corrente, pois há

detalhes relevantes que devem ser considerados. Segurança é um aspecto

importante a ser considerado, pois o Bitcoin facilita tal transferência de valores para

qualquer lugar. Há níveis de segurança consideráveis no uso correto do Bitcoin.

Seguem algumas recomendação de segurança. Você deve estar atento a qualquer

serviço designado para a armazenar o seu dinheiro online. Muitas carteiras de troca

virtuais sofreram falhas de segurança no passado e a maioria dos serviços ainda não

proporcionam seguro e segurança necessária para serem utilizados para guardar a

moeda como os bancos fazem. Por consequência, você pode querer utilizar outros

tipos de carteiras Bitcoin para guardar sua moeda. Senão, você deve escolher estes

serviços cautelosamente. Além disso, o uso da autenticação de dois fatores é

recomendado. Uma carteira de Bitcoin é como uma carteira com dinheiro. Em geral,

é uma boa prática deixar uma quantidade pequena de bitcoin em seu computador,

celular ou servidor para uso diário e deixar o restante dos seus fundos em um

ambiente seguro. Faça um backup completo de sua carteira. Uma única cópia de

segurança das chaves privadas dos seus endereços Bitcoin visíveis pode dificultar a

recuperação dos seus fundos. Além disso, criptografe os backups armazenados

online. Também é recomendao assinar transação offline, um processo executado com

dois computadores compartilhando algumas partes da mesma carteira. O primeiro

7
fica desconectado da internet, sendo o único com a carteira completa e capaz de

assinar transações. O segundo computador fica conectado à internet, criando

transações não assinadas. Carteiras de hardware são uma opção que fornece melhor

equilíbrio entre alta segurança e facilidade de uso. Tratam-se de pequenos

dispositivos projetados como uma carteira, onde nenhum software pode ser instalado

nela. Deta forma, torna-se altamente segura contra vulnerabilidades de computadores

e ladrões on-line. Cuidado ao pensar em bitcoin ou criptomoedas como investimento

financeiro, pois o valor de um bitcoin pode imprevisívelmente valorizar ou desvalorizar

em um pequeno intervalo de tempo. A sua origem recente no cenário econômico e as

incertezas dos mercados são aspectos para se considerar o bitcoin como um

investimento volátil. Logo, não se recomenda investir economias em bitcoin por ser

um ativo de alto risco.

__________________________________________________________________
Computação em Nuvem e Virtualização
Recomendação de leitura: Texto-base - Aprimorando a elasticidade de
aplicações de banco de dados utilizando virtualização em nível de
sistema operacional | Israel Campos de Oliveira
__________________________________________________________________
A computação em nuvem se trata de uma abstração que oculta à complexidade de

infraestrutura computacional, onde parte desta infraestrutura é fornecida como um

serviço. Destacamos os três modelos de serviços da computação em nuvem. O

primeiro é Software como um Serviço (SaaS) que fornece sistemas de software

específicos e disponíveis através da Internet. O SaaS abstrai para, o usuário a

infraestrutura subjacente, incluindo rede, servidores, sistemas operacionais,

armazenamento e características específicas da aplicação, exceto configurações. A

Plataforma como um Serviço (PaaS) fornece a infraestrutura de alto nível de

integração para implementar e testar aplicações, onde o usuário também não controla

8
a infraestrutura subjacente (rede, servidores, sistemas operacionais,

armazenamento), porém controla aplicações implantadas bem como configurações

das aplicações hospedadas nesta infraestrutura. Assim, PaaS fornece um sistema

operacional, linguagens de programação e ambientes de desenvolvimento para as

aplicações, auxiliando a implementação de sistemas de software, já que contém

ferramentas de desenvolvimento e colaboração entre desenvolvedores. infraestrutura

como um Serviço (IaaS) fornece a infraestrutura necessária para oferta de PaaS e

SaaS, tornando acessível recursos como servidores, rede, armazenamento e outros

recursos de computação para um ambiente sob demanda. Logo, IaaS apresenta

interface a para administração da infraestrutura, Application Programming Interface

(API) para interação com hosts, switches, balanceadores, roteadores e o suporte para

a adição de novos equipamentos de forma simples e transparente. Considerando a

Virtualização, temos o conceito de Virtual Machine Monitor (VMM) que é um

componente de software responsável por criar, isolar e preservar o estado da

máquina virtual, coordenando o acesso aos recursos do sistema com as máquinas

virtuais. VMM mantém o controle sobre os recursos compartilhados como,

processadores, dispositivos de entrada e saída, memória e armazenamento. VMM

escalona al máquina virtual quei executa a cada momento uma tarefa, semelhante

ao escalonador de processos do sistema operacional. Considerando as arquiteturas

de virtualização, temos a Virtualização Total interpretada como uma emulação de

hardware para prover uma máquina virtual com emulação completa do hardware

subjacente. Neste caso, um sistema operacional não modificado é executado

utilizando um VMM para receber e traduzir as instruções em tempo real para as

máquinas virtuais. A paravirtualização cria a possibilidade de modificar a interface

entre o VMM e os sistemas convidados, oferecendo a estes um hardware virtual que

9
é similar mas não idêntico ao hardware real. Nesse caso, o sistema operacional da

máquina virtual sabe que opera em um ambiente virtualizado, tendo o seu código

modificado, removendo todas as instruções que poderiam fazer acesso direto aos

recursos físicos e que venham a comprometer a integridade das máquinas virtuais,

substituindo-as por chamadas explícitas ao VMM. Na Virtualização Assistida por

Hardware ou Virtualização Nativa, utiliza-se suporte de hardware para virtualização

para auxiliar na redução do impacto da camada de virtualização. Esta arquitetura

habilita a execução paralela de múltiplos sistemas operacionais, executando num

mesmo processador e realizando acessos ao hardware, sem a necessidade de

emular um processador.

10

Você também pode gostar