Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Funções Hash: Aplicações e Conceitos Fundamentais em Ciência da Computação, Trabalhos de Matemática para Computação

MATEMÁTICA PARA COMPUTAÇÃO do PIM

Tipologia: Trabalhos

2023

Compartilhado em 16/11/2023

alexandre-gonzaga-15
alexandre-gonzaga-15 🇧🇷

1 documento

1 / 8

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
2.2 MATEMÁTICA PARA COMPUTAÇÃO
É notável na sociedade atual a imensa importância atribuída aos
sistemas computacionais e as tecnologias da informação e comunicação. E é
através destes que profissionais como cientistas e engenheiros de computação,
programadores, analistas de sistemas, têm ocupado posição de destaque. Para isso,
todos esses profissionais devem ter como base disciplinas como lógica, algoritmos,
estrutura de dados, matemática discreta, geometria, estatística, etc. Portanto, é clara
a constatação de que todas estas disciplinas, todas fundamentadas na matemática
descoberta ao longo dos séculos anteriores, são peças-chave para a concepção e
desenvolvimento de quaisquer sistemas, como também para ganhos de eficiência,
produtividade e na velocidade da discriminação das informações que podem salvar
vidas.
Isto posto, Barbosa (2022) expõe o argumento no qual faz-se
necessário entendermos que, de forma a desempenhar tais funções, o profissional
de segurança da informação deverá ser apto a sugerir soluções algorítmicas que
atendam a situações variadas e a implementar essas soluções com o emprego de
teorias, métodos, técnicas, ferramentas e equipamentos adequados. Não obstante,
Machado (2013) arrisca afirmar que o conceito matemático mais abundante no
mundo da Tecnologia da Informação seja o de “função”. Para isso o autor justifica:
Da escola sica, aprendemos que uma função nada mais é
do que uma lei que determina a relação entre os elementos
de dois conjuntos. No mundo da programação, o conceito é o
mesmo, com a diferença de que os conjuntos geralmente não
são apenas numéricos e que as funções possuem várias
instruções e aceitam vários parâmetros. Uma função que
recebe uma string e a retorna ao contrário é uma regra que
determina a relação do conjunto de caracteres para com ele
mesmo.
2.2.1 FUNÇÃO HASH
A função hash é uma técnica matemática que permite transformar
um conjunto de dados em um valor único de comprimento fixo, conhecido como
pf3
pf4
pf5
pf8

Pré-visualização parcial do texto

Baixe Funções Hash: Aplicações e Conceitos Fundamentais em Ciência da Computação e outras Trabalhos em PDF para Matemática para Computação, somente na Docsity!

2.2 MATEMÁTICA PARA COMPUTAÇÃO

É notável na sociedade atual a imensa importância atribuída aos

sistemas computacionais e as tecnologias da informação e comunicação. E é

através destes que profissionais como cientistas e engenheiros de computação,

programadores, analistas de sistemas, têm ocupado posição de destaque. Para isso,

todos esses profissionais devem ter como base disciplinas como lógica, algoritmos,

estrutura de dados, matemática discreta, geometria, estatística, etc. Portanto, é clara

a constatação de que todas estas disciplinas, todas fundamentadas na matemática

descoberta ao longo dos séculos anteriores, são peças-chave para a concepção e

desenvolvimento de quaisquer sistemas, como também para ganhos de eficiência,

produtividade e na velocidade da discriminação das informações que podem salvar

vidas.

Isto posto, Barbosa (2022) expõe o argumento no qual faz-se

necessário entendermos que, de forma a desempenhar tais funções, o profissional

de segurança da informação deverá ser apto a sugerir soluções algorítmicas que

atendam a situações variadas e a implementar essas soluções com o emprego de

teorias, métodos, técnicas, ferramentas e equipamentos adequados. Não obstante,

Machado (2013) arrisca afirmar que o conceito matemático mais abundante no

mundo da Tecnologia da Informação seja o de “função”. Para isso o autor justifica:

Da escola básica, aprendemos que uma função nada mais é

do que uma lei que determina a relação entre os elementos

de dois conjuntos. No mundo da programação, o conceito é o

mesmo, com a diferença de que os conjuntos geralmente não

são apenas numéricos e que as funções possuem várias

instruções e aceitam vários parâmetros. Uma função que

recebe uma string e a retorna ao contrário é uma regra que

determina a relação do conjunto de caracteres para com ele

mesmo.

2.2.1 FUNÇÃO HASH

A função hash é uma técnica matemática que permite transformar

um conjunto de dados em um valor único de comprimento fixo, conhecido como

hash ou hash code. Nas palavras de Roberts (1998) hashing é usado

extensivamente em aplicativos e merece reconhecimento como uma das invenções

mais inteligentes da ciência da computação. Essa técnica é amplamente utilizada na

área de segurança da informação para garantir a integridade dos dados e evitar

fraudes. No contexto da doação de sangue, a função hash pode ser utilizada para

unificar as diferentes bases de dados existentes, de forma a criar um único registro

de doadores e facilitar o processo de identificação e convocação de doadores em

situações de emergência.

Para utilizar a função hash, é necessário definir uma fórmula

matemática que transforme os dados em um valor único. Essa fórmula deve ser

complexa o suficiente para evitar que duas entradas diferentes gerem o mesmo

hash, mas ao mesmo tempo deve ser simples o suficiente para ser facilmente

calculada. Uma vez que os dados são transformados em hashes, é possível

compará-los rapidamente para verificar se são iguais, sem precisar comparar os

dados originais. Isso torna o processo de busca e identificação de doadores mais

eficiente e ágil.

O dicionário online de Cambrige traz a palavra “picadinho” como

uma das traduções para o termo hash. E essa é uma das ideias que devem ser

Fonte: Youtube (Tópico 11 - Funções de Hash - YouTube)

Na figura, uma função hash H (representada pela ferramenta

moinho) recebe como argumento uma mensagem M de qualquer tamanho e retorna

um valor hash h de tamanho fixo. De forma representativa temos que:

Como tratado anteriormente, as funções Hash são conhecidas por

resumirem o dado. Da representação do exemplificada acima, temos que a saída ℎ é

também chamada resumo da mensagem ou bloco de dados original M.

Não obstante, como uma das aplicações do hash code pode ser na

verificação da integridade da mensagem, é possível fazer uma demonstração ainda

mais sucinta de uma função de hash por meio de uma operação lógica simples como

o XOR bit a bit de um bloco de bits. Dessa forma, partindo de valores iniciais de

comprimento variável, ao realizarmos a operação, obteremos um valor final que será

o resumo da mensagem. Portanto, utilizaremos a seguinte expressão:

Como hipótese, consideremos o bloco de 8 bits 11100011 como

representação de uma mensagem enviada de Alice para Beto, ilustrada na figura a

seguir:

Figura 4: Ilustração representativa de uma troca de mensagens

Fonte: Itaú (2023) - Adaptada

Na operação XOR (também denominada ou exclusivo em algumas

literaturas) é sempre exibido um bit 1 quando as entradas não forem iguais, o que

ocorre quando uma das duas entradas for exclusivamente verdade. A seguir é

possível verificar a tabela verdade:

Nesse exemplo, tomaremos como parâmetro a utilização de blocos

de 4 bits para a operação XOR. Logo:

Portanto, para que Beto possa verificar a integridade da mensagem

recebida, um aplicativo poderia ser utilizado de forma a calcular o resultado da

operação XOR bit a bit na mensagem recebida e realizar a comparação com

resultado da mensagem enviada por Alice. Se ambos os resultados forem iguais, a

integridade da mensagem foi mantida.

Os exemplos apresentados, apesar de muitíssimos simplificados,

permitem expor a ideia por trás dos algorítimos de hash. Em uma situação real, a

função implementada é bem mais complexa, de forma a compreender alguns

requisitos e trazer benefícios. DevMedia (2023) traz a seguinte aplicação de uma

função hash utilizando o algorítmo MD5 na linguagem de programação java:

Código completo da classe na linguagem java

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

public class Criptografia {

0 XOR 0 = 0

0 XOR 1 = 1

1 XOR 0 = 1

1 XOR 1 = 0

ao índice de livros.

Ao longo de todo o levantamento teórico, nota-se algumas

propriedades em comum nas funções hash utilizadas no meio computacional, sendo

elas:

 Facilidade de Implementação: O hash deve fácil de ser implementado, facil

computacionalmente falando. Não deve utilizar muitos recursos. Deve ser

barato em termos de recursos para um sistema computacional, de forma a

não haver prejuízos no processo como um todo.

 Unidirecionalidade: A função hash deve ser unidirecional, ou seja, através do

resumo não é possível retornar aos dados originais.

 Determinismo: O hash possui a propriedade denominada determinística, que

explica que o hash sempre será o mesmo para o mesmo dado de entrada. E

uma mudança nos dados de entrada, por mínima que seja, resultará em um

resultado totalmente diferente. Alterações devem gerar alteração: Mudanças

nos dados que são entrada na função hash devem gerar resultados

diferentes. Não deve ser possível alterar quaisquer dados de entrada sem

modificar seu resultado após passar pela função hash.

 Ausência de colisão: Uma boa função hash não deve apresentar mesmos

resultados para dados de entrada distindos. O conceito de colisão é um

cenário onde dois conjuntos de dados de entrada possam gerar um mesmo

hash. Esse é um caso que deve ser evitado, ou suas ocorreências devem ser

mínimamente possíveis. Em todos os algorítmos pesquisados, o cenário onda

colisões acontecem é matematicamente improvável (uma chance

ridiculamente pequena de acontecer).

2.2.2 EXEMPLO DE APLICAÇÃO

Um exemplo prático de como a função hash pode ser aplicada no

contexto da doação de sangue é na identificação dos doadores. Cada doador pode

ter uma chave única gerada por meio da função hash, que seria utilizada para

unificar as informações em todas as bases de dados do sistema de doação. Dessa

forma, seria possível garantir a integridade e a segurança das informações, além de

facilitar o processo de cadastro e triagem dos doadores.

Outra aplicação da função hash seria na identificação de doadores

compatíveis com pacientes com necessidades específicas de transfusão sanguínea.

Por meio da análise das informações geradas pela função hash, seria possível

identificar rapidamente os doadores compatíveis e agilizar o processo de doação e

transfusão de sangue.