Universidade Estadual de Maringá
Centro de Tecnologia
Departamento de Informática
Removedor de Dados
Américo Fernando Tendolo Burgo
TFCTFC-0101-05
Maringá - Paraná
Brasil
i
Universidade Estadual de Maringá
Centro de Tecnologia
Departamento de Informática
Removedor de Dados
Américo Fernando Tendolo Burgo
TFCTFC-0101-05
Trabalho Final de Curso apresentado ao Curso de
Informática, do Centro de Tecnologia, da Universidade
Estadual de Maringá.
Orientador: Prof. MSc. Osvaldo Alves dos Santos
Maringá - Paraná
2005
ii
Américo Fernando Tendolo Burgo
Removedor de Dados
Este exemplar corresponde à redação final da monografia aprovada como requisito parcial
para obtenção do grau de Bacharel em Informática, da Universidade Estadual de Maringá,
pela Banca Examinadora formada pelos seguintes membros:
________________________________________
Orientador: Prof. MSc. Osvaldo Alves dos Santos
Departamento de Informática, CTC, DIN
________________________________________
Dr. Ronaldo Augusto de Lara Gonçalves
Departamento de Informática, CTC, DIN
________________________________________
MsC. Flávio Arnaldo Braga da Silva
Departamento de Informática, CTC, DIN
Maringá, Novembro de 2005
iii
Universidade Estadual de Maringá
Departamento de Informática
Avenida Colombo 5790, Maringá-PR
CEP 87020-900
Tel: (44) 32614324 Fax: (44) 32635874
iv
Agradecimentos
Agradeço primeiramente à minha mãe e ao meu pai que, mesmo com todas as dificuldades
e limitações, não pouparam esforços para me educar e oferecer as condições necessárias
para que eu estudasse.
Aos meus professores que sempre me deram apoio e motivação na busca de
conhecimentos.
E, em especial, à minha namorada e amigos pela compreensão e incentivo, durante o
período da elaboração desta monografia.
v
Resumo
Sabe-se que quando um arquivo é excluído de um disquete ou de um disco rígido, na
realidade ele não é removido definitivamente, o sistema operacional simplesmente remove
o arquivo da tabela de endereços do disco e libera o espaço para poder ser ocupado
posteriormente por outros dados. A simples remoção do arquivo da tabela de endereços
permite que esse arquivo, aparentemente inacessível, possa ser, posteriormente,
recuperado, por meio de programas e serviços especializados. Esse fato torna os sistemas
vulneráveis, reduzindo a privacidade das informações. Neste trabalho propomos a
elaboração de uma ferramenta que realmente elimine as informações do arquivo
propriamente dito, realizando diversas sobrescrições sobre esse arquivo e demais
procedimentos que garantam a eliminação de qualquer vestígio do arquivo.
vi
Abstract
It is known that when a file is excluded from a floppy disk or a local disk, in fact it is not
definitely removed, the operational system simply removes the file from the address list of
the disk and frees the space, so that it can be used later by other data. The simple removal
of the file from the address list allows that this file, apparently inaccessible, can be later
recovered, by means of specialized programs and services. This fact makes the systems
vulnerable, reducing information privacy. In this work, we propose the elaboration of a
tool that effectively eliminates the information of the file itself, realizing many
subscriptions in this file and others procedures that guarantee the elimination of any
vestige of the file.
vii
Índice
1 INTRODUÇÃO
1
2 FUNDAMENTAÇÃO TEÓRICA
3
3 GRAVAÇÃO E RECUPERAÇÃO DE ARQUIVOS
7
3.1 Introdução
3.2 Princípios da gravação magnética
3.3 Recuperação de arquivos
7
7
8
4 MÉTODOS USADOS PARA REMOÇÃO DOS DADOS
11
4.1 Introdução
4.2 Método Gutmann
4.3 Método - DoD 522.22M
4.4 Outros métodos para remover dados de mídias magnéticas
11
11
13
14
5 SISTEMA REMOVEDOR DE DADOS
15
6 CONCLUSÃO
23
REFERÊNCIAS BIBLIOGRÁFICAS
24
BIBLIOGRAFIA
25
APÊNDICE A
26
viii
Lista de Ilustrações
Fig. 2.1 – Demonstração do Slack Space ........................................................................ 4
Tabela 2.1 – Tabela comparativa entre a destruição de documento e de um arquivo de
dados ..................................................................................................................
6
Fig. 4.1 – 2,7 RLL, FM e MFM protocolos de escrita para seqüência de byte
"10001111". RLL é uma melhora significativa em comparação ao MFM
por reduzir a quantidade de espaço necessário para guardar a mesma
quantidade de bits ........................................................................................... 12
Tabela 4.1 – Relação entre Coercivity e a mídia ............................................................
14
Fig. 5.1 – Janela responsável pela seleção dos arquivos que serão removidos..
15
Fig. 5.2 – Seleção do método de remoção....................................................................... 16
Fig. 5.3 – Listagem dos métodos de remoção personalizados......................................... 16
Fig. 5.4 – Tela de cadastro dos novos métodos de remoção...........................................
17
Fig. 5.5 – Log da remoção dos arquivos.......................................................................... 18
1
Capítulo 1
Introdução
Devido o surgimento dos primeiros computadores, houve uma maior atenção para a
questão da segurança das informações. De início, esta preocupação era ainda muito
rudimentar, porém com o passar do tempo, este processo mudou, pois os computadores
mudaram a forma como as pessoas se comunicam e conduzem seus negócios.
Atualmente nos encontramos em um complexo e, de certo modo, eficiente mundo da
informação. Entretanto, como sendo complexo, mostra-se, também com o decorrer do
tempo e a evolução das tecnologias, altamente inseguro. As preocupações, com segurança
da informação, tornam-se cada vez mais primordiais, que levam empresas, executivos e
inclusive pessoas físicas a obterem conhecimentos, no mínimo, de conceitos básicos de
segurança da informação.
Com o decorrer do tempo, foram criados mecanismos e técnicas de referências gerais para
instruções e precauções básicas no ambiente tecnológico, com a evolução dessas atitudes
criaram-se, por meio de órgãos e instituições públicas normas mais específicas, a fim de
padronizar o sistema de informação em geral.
Hoje, mais e mais quantidades de informações confidenciais são criadas de forma digital e
armazenadas em computadores. A enorme quantidade de dados pessoais, que incluem
dados bancários, números de cartões de crédito, aplicações comerciais, financeiras e
industriais, são armazenados em discos rígidos. Seria impossível enumerar todos os
documentos e dados que circunstancialmente poderiam ser deixados para trás, no disco
rígido, com a possibilidade de recuperação por criminosos ou rivais.
A característica principal de todos esses documentos é que eles contêm dados
confidenciais. Entretanto, a informação não somente tem que ser armazenada de acordo
com regras especialmente desenvolvidas, mas que seja destruída também de acordo com
regras estritas para fornecer a confiabilidade que os dados confidenciais foram realmente
removidos.
2
Geralmente, os computadores sofrem atualizações físicas mais de uma vez em seu período
de uso. Muito frequentemente essas atualizações efetuam a troca do disco rígido antigo por
um novo com maior capacidade de armazenamento; as informações do disco antigo são
transferidas para o novo disco, porém o disco antigo, ainda, possui os dados armazenados.
Essa falta de cuidado com os dados resulta na não eliminação de informações
confidenciais. A melhor solução é a completa destruição dos dados no disco antigo, após
eles terem sido transferidos para o disco novo.
Destruir não é apenas apagar, é necessário destruir realmente os dados para que eles não
possam ser recuperados.
3
Capítulo 2
Fundamentação Teórica
Existe uma grande diferença em apagar um arquivo com auxílio de um sistema operacional
e a destruição do arquivo com auxílio de um programa especializado.
Sistemas operacionais, como o Windows, não removem realmente o arquivo do disco
rígido. Quando excluímos um arquivo do computador, ele não é removido de verdade. O
sistema operacional, simplesmente, o remove da lista de arquivos do disco e libera o
espaço para, posteriormente, ser ocupado por outros dados. Em outras palavras, o sistema
operacional não "zera", isto é, não "limpa" o espaço que o arquivo ocupava anteriormente.
O sistema operacional faz isso para economizar tempo. Imagine um arquivo grande, que
ocupe vários setores do disco. Para realmente apagar esse arquivo do disco, o sistema
operacional teria de preencher com um determinado caractere padrão todos os setores
ocupados por esse arquivo. Isso poderia tomar muito tempo. Em vez de fazer isso, ele
simplesmente remove o nome do arquivo do diretório onde ele se encontra e marca que os
setores antes ocupados pelo arquivo estão agora disponíveis.
Isso significa que é possível recuperar um arquivo apagado, já que os dados do arquivo
apagado não foram removidos de verdade do disco. É assim que os programas de
recuperação de arquivos apagados funcionam.
Esse fato gera uma questão de segurança importante: caso tenha arquivos realmente
confidenciais, que não podem ser descobertos de maneira alguma, apagá-los do disco
simplesmente pressionando a tecla Del e depois removendo o conteúdo da Lixeira não
impedirá que eles sejam recuperados, usando utilitários avançados de recuperação de
dados.
O Windows utiliza tamanhos fixos de blocos para guardar os dados. Às vezes, o bloco não
é totalmente utilizado, pois os dados gravados nele não ocupam toda sua capacidade. O
espaço que sobra no bloco é chamado de Slack Space, abaixo uma representação visual.
4
Bloco
Fig. 2.1 - Demonstração do Slack Space.
Usando este conceito, se um bloco está sendo usado para guardar dados e somente uma
parte dele foi sobrescrita com dados novos o seu slack space, ainda possui informações dos
dados anteriores e pode ser recuperada.
Ainda no conceito de blocos, têm-se os espaços não alocados que podem ser definidos
como blocos não-alocados pelo sistema operacional ou pela FAT. O espaço não-alocado
possui basicamente arquivos excluídos que ainda não foram sobrescritos e dessa forma as
informações podem ser recuperadas.
A remoção de arquivos do Linux é mais real, porém ainda com a ajuda de programas é
possível recuperar as informações.
A formatação de um disco não é diferente. Quando um disco é formatado, os dados que
antes estavam presentes não são apagados, permitindo que um utilitário avançado de
recuperação de dados consiga recuperar arquivos mesmo depois de ter formatado o disco
rígido. Muitos que têm um disco rígido com arquivos confidenciais o formatam, pensando
estar, assim, removendo qualquer possibilidade de recuperação dos arquivos. Isso, no
entanto, está bem longe de ser verdade.
Quando se formata um disco, somente "zera" o diretório-raiz e a Tabela de Alocação de
Arquivos (FAT), que contem a lista de blocos ocupados do disco. Repare que, ao formatar
um disco rígido, aparece a mensagem "Verificando x%". O disco rígido nesse momento
não está sendo formatado; o comando de formatação está apenas fazendo um teste na
5
superfície magnética do disco para ver se há erros e, caso haja erros na superfície do disco,
essa área é marcada como defeituosa (os famosos bad blocks ou blocos defeituosos).
A destruição real da informação em um disco rígido só é possível, usando programas
desenvolvidos especialmente para isso, contendo algoritmos especializados na remoção
dos dados.
Padrões nacionais de algoritmos de destruição de dados.
•
American: U.S. Standard, DoD 5220.22-M;
•
American: NAVSO P-5239-26 (RLL);
•
American: NAVSO P-5239-26 (MFM);
•
German: VSITR;
•
Russian: GOST P50739-95.
Além dos algoritmos de padrões nacionais, existem os algoritmos de especialistas na
segurança das informações dentre eles:
•
Peter Gutmann algorithm – dados sobrescritos com 35 passos;
•
Bruce Schneier algorithm – dados sobrescritos com 7 passos.
Abaixo uma tabela que demonstra por meio de uma analogia com documentos reais a
remoção dos dados digitais.
6
Tabela 2.1 – Tabela comparativa entre a destruição de documento e de um arquivo de dados.
Documentos Reais
Dados
Desprotegido
Nenhuma medida de segurança adotada.
Todos os dados do seu disco podem ser lidos e acessados por
outras pessoas.
Amassado
Exclusão da Tabela de Alocação de Arquivos
Excluindo a Tabela de Alocação de Arquivos do disco rígido,
faz-se parecer que os dados contidos foram removidos, mas
eles apenas estão escondidos, outras pessoas podem
reconstruir a Tabela de Alocação de Arquivos e acessar seus
dados novamente sem muito esforço.
Excluir o arquivo
Rasgado
Se o arquivo for excluído, ele não ficará disponível para
acesso, mas ele ainda conterá os dados salvos em fragmentos
do seu disco rígido. Há programas que reconstroem o arquivo
em um curto espaço de tempo tornando-o acessível
novamente.
Picotado
Algoritmo de remoção simples
Removendo seus arquivos com um algoritmo simples de
remoção de dados ele ainda poderá ser acessado novamente
através da sua reconstrução o que levará uma grande
quantidade de tempo.
Cremado
Algoritmo de remoção especializado
A remoção de arquivos por meio de um algoritmo de
remoção, especializado, garante que ele não poderá ser
recuperado, pois é lógico e fisicamente impossível.
7
Capítulo 3
Gravação e recuperação de arquivos
3.1 Introdução
Antes da exposição dos principais métodos de remoção, é importante sabermos como é
feita a gravação e recuperação dos dados, uma vez que os métodos de remoção são
desenvolvidos, justamente, para impedir a recuperação dos dados.
3.2 Princípios da gravação magnética
As cabeças de leitura e gravação são partes essenciais nos dispositivos de armazenagem
magnética. Enquanto eles aparentam ser simples componentes, seu design e fabricação
requerem o que há de mais avançado em dispositivos de modelagem, materiais, processos
de deposição a vácuo, gravação de feixes de íons (raios de partículas de átomos que
possuem carga elétrica). Em geral, as cabeças de gravação atuam de acordo com certos
princípios da gravação magnética que são diretamente baseadas em 4 princípios
magnéticos.
A) Uma corrente elétrica produz um campo magnético.
B) Alguns materiais são facilmente magnetizados, quando colocados em um campo
magnético fraco, e quando esse campo é desativado, eles retornam rapidamente a seu
estado desmagnetizado. Esses materiais são chamados de Soft Magnetic Materials.
C) Em alguns Soft Magnetic Materials, a resistência elétrica muda quando o material é
magnetizado. A resistência volta ao valor original quando o campo magnético é desligado.
Esse efeito tem o nome de resistência magnética.
D) Certos materiais são magnetizados com muita dificuldade (precisam de um campo
magnético muito forte), mas são magnetizados, e após o campo magnético ser desligado,
8
eles ainda guardam a magnetização. Esses materiais são chamados de Hard Magnetic
Materials.
Esses quatro princípios são explorados no desenvolvimento e fabricação das cabeças de
leitura e gravação e no seu funcionamento.
Aplicações em armazenamento de dados:
Cabeças de escrita – as cabeças quando usadas para escrever bits de informação em discos
magnéticos, se utilizam dos princípios “A” e “B” para produzir e controlar um campo
magnético muito forte.
Cabeças de leitura – as cabeças de leitura dependem dos princípios “A”, “B” e “C”, e são
sensíveis aos resíduos do campo magnético dos dados guardados magnetizados (“D”).
Mídia de Armazenamento: a mídia de armazenamento magnético é constantemente
magnetizada na direção norte ou sul, dependendo da cabeça de escrita, essa mídia de
armazenamento utiliza o princípio “D”.
3.3 Recuperação de arquivos
Quando excluímos um arquivo, o sistema operacional Windows, simplesmente, troca a
primeira letra do nome do arquivo pelo símbolo de sublinhado. Quando visualizamos um
diretório, o sistema ignora qualquer nome de arquivo que comece com sublinhado, não
mostrando, portanto, os arquivos que foram "excluídos". Além disso, o sistema marca os
setores que o arquivo ocupava como livre na FAT, que é a tabela onde está listada a área
que cada arquivo ocupa no disco. Assim, desde que nenhum outro arquivo tenha sido
gravado na mesma área em que o arquivo apagado ocupava (o que faz com que os dados
antigos sejam automaticamente apagados para que os novos dados sejam gravados), é
possível recuperá-lo, simplesmente trocando o primeiro caractere do nome do arquivo de
sublinhado para o seu caractere original, bem como re-marcar na FAT a área que o arquivo
ocupa.
9
No mercado, há vários utilitários para a recuperação de arquivos apagados, sendo o mais
famoso o Norton UnErase, parte integrante do Norton Utilities e do Norton System Works
(www.symantec.com.br).
Da mesma forma que ocorre com arquivos, durante a formatação do disco rígido, os
setores do disco não são sobrescritos com um caractere padrão. Mesmo comandos como o
Format c:/u somente verificam se não há erros na superfície do disco, e a única coisa que
fazem é recriar somente a FAT. Isto é, para ganhar tempo, todos os comandos de
formatação de disco do sistema operacional em vez de preencherem com um caractere
padrão todos os setores do disco rígido durante a formatação, simplesmente apagam a
tabela que informa o espaço ocupado pelos arquivos. Com isso, podem-se recuperar todos
os arquivos do disco rígido, mesmo tendo formatado o disco ou alterado a sua Tabela de
Alocação de Arquivos, por meio do comando Fdisk. Desde que, é claro, a área ocupada
pelo arquivo (ou arquivos) que se deseja recuperar já não tenha sido sobreposta por novos
arquivos.
Para esse tipo de recuperação de dados, é preciso de programas mais avançados, sendo os
dois mais conhecidos o Lost & Found da PowerQuest (www.powerquest.com.br) e o Easy
Recovery, da OnTrack (www.ontrack.com). Para executar esse tipo de programa, é
necessário instalar um outro disco rígido em sua máquina, que é onde os arquivos
recuperados serão gravados. Por isso, esse disco rígido terá de ter um espaço disponível
pouco maior do que o espaço ocupado pelos arquivos que se deseja recuperar (por
exemplo: se há 500 MB de arquivos a serem recuperados, deverá ter um pouco mais do
que isso disponível no disco rígido extra que será usado na recuperação).
Logo, se o dado é removido por meio de um método de remoção elaborado fica mais difícil
sua recuperação, mas não impossível. Uma das maneiras mais eficazes para recuperar esse
tipo de dado é através do microscópio magnético (MFM - Magnetic force microscopy), que
é formado por uma ponta muito fina ligada a um braço mecânico e essa ponta ao passar
pela superfície do disco gera um campo magnético e devido às variações desse campo, é
possível fazer a leitura dos dados. Um grande avanço do microscópio magnético sobre as
técnicas anteriores, é que ele necessita apenas de uma pequena amostra de um disco para
conseguir recuperar os dados, e faz isso de forma muito rápida.
10
Por causa do advento do microscópio magnético, a remoção real dos dados tem se tornado
uma tarefa cada vez mais difícil. O problema está no fato de que quando o dado é gravado
no disco, a cabeça de leitura/gravação muda à maioria das polaridades do setor magnético,
mas não de todos os setores magnéticos que deveria. Esse problema ocorre por causa da
ineficiência dos drives de escrever os dados no exato local, onde foram gravados
anteriormente e também as variações do campo magnético da mídia com o passar do
tempo.
Em termos convencionais, quando o “1” é gravado no disco a cabeça de leitura/gravação
grava o “1”, e quando o “0” é gravado a cabeça de leitura/gravação grava o “0”, mas isso
fica apenas restrito à teoria, na pratica é diferente. Quando o “0” é sobrescrito pelo “1” na
verdade é gravado “0.95” e quando o “1” é sobrescrito por outro “1” temos “1,05”. Quando
é feita a leitura desses dados pela cabeça de leitura/gravação, ela despreza essa parte
decimal dos dados. Mas, quando esses dados são analisados por um microscópio
magnético, ele consegue detectar através dessas variações os dados que foram gravados
anteriormente a esse estado atual. Essas variações, na gravação, formam um verdadeiro
histórico dos dados presentes no disco rígido.
11
Capítulo 4
Métodos usados para remoção dos dados
4.1 Introdução
Neste capítulo, serão demonstrados os principais métodos de remoção de arquivos. Por
meio desses métodos, os arquivos podem ser realmente removidos com segurança.
4.2 Método Gutmann
Esse método foi desenvolvido pelo pesquisador Peter Gutmann, do Departamento de
Ciência da Computação da Universidade de Auckland/Nova Zelândia. Tem como sua área
de interesse a segurança dos dados. É autor de alguns trabalhos monumentais na área de
segurança criptográfica e quebrou vários esquemas de cifragem inseguros da Microsoft.
Para remover o dado de uma mídia é preciso sobrescrevê-lo várias vezes, usando padrões
alternados para que o campo magnético oscile o mais rápido possível e não deixe nenhum
vestígio magnético do dado que se deseja remover.
Infelizmente, há uma complicação para remover os vestígios magnéticos do dado, pois os
fabricantes atuais de drives usam freqüências de gravação cada vez maiores para atingir
uma maior capacidade de gravação, e justamente essa freqüência de gravação dos dados
que determina o quanto será eficiente a sobrescrição dos mesmos e para sobrescrever os
dados, necessita-se de freqüência bem baixa de gravação para que atinja o setor magnético
do disco o mais profundo possível, assim, eliminam-se as evidências do dado que se deseja
remover.
Por causa dessa alta freqüência usada pelos fabricantes, o máximo que se pode fazer é usar
a menor freqüência possível de se atingir no drive para sobrescrever o dado, mas mesmo
assim essa freqüência ainda é alta para se atingir uma profundidade magnética de gravação
satisfatória. Para conseguir a menor freqüência possível de gravação, é preciso determinar
quais dados produzem essa freqüência.
12
Usando uma seqüência grande de 0’s, dificulta-se a recuperação dos dados, mas se essa
seqüência for muito longa, provoca-se erros de leitura, e para evitar esses erros, nos drives,
usa-se um protocolo para gravação dos dados, pois há vários protocolos de gravação como:
•
RRL (Run-Length Limits): método de modulação usado por discos rígidos para
decodificar dados binários (0’s e 1’s) em informações magnéticas. A modulação RLL é
referida como RLL (x,y), onde x é o comprimento do percurso e y é o limite do
percurso. Por exemplo, na modulação RLL(2,7), o espaço mínimo entre inversões do
sinal é de 2 espaços, enquanto o espaço máximo entre inversões do sinal é de 7
espaços.
Fig. 4.1 – 2,7 RLL, FM e MFM protocolos de escrita para seqüência de byte "10001111".
RLL é uma melhora significativa em comparação ao MFM por reduzir a quantidade de
espaço necessário para guardar a mesma quantidade de bits.
•
MFM (Modified Frequency Modulated – “Freqüência Modificada Modulada”): o
método MFM é usado em disquetes e foi usado nos primeiros discos rígidos (padrão
ST-506). No caso dos discos rígidos, este método foi logo modificado por outro
chamado RLL.
•
PRML (Partial Response, Maximum Likelihood – “Resposta Parcial, Máxima
Coincidência”): circuito usado na leitura da superfície magnética de discos rígidos e
ajudar na demodulação dos dados lidos. Antes do uso deste tipo de circuito, o circuito
controlador lia somente os picos dos sinais lidos da superfície magnética. O problema é
13
que ruídos eram interpretados como picos, e sinais fracos não eram detectados. O
circuito PRML lê o sinal em vários pontos (não somente o pico do sinal) e, com isso,
detecta mais apuradamente onde está o pico do sinal, mesmo que este seja fraco, ou
seja, apenas um ruído.
•
EPRML (Extended Partial Response, Maximum Likelihood – “Resposta Parcial,
Máxima Coincidência Estendida”): versão melhorada do circuito PRML que é
atualmente usada nos discos rígidos. Para entender o que é este circuito, veja o termo
PRML.
Desde a invenção dos drives, esses protocolos foram se modificando e usando os mais
diversos parâmetros, como no caso dos primeiros drives eram usados os seguintes
parâmetros (1,3). Hoje, os drives já usam parâmetros como (1,7) e (2,7). Devido todas
essas diferenças na forma como os dados são gravados, Peter Gutmann elaborou um
esquema com 35 etapas para sobrescrever um dado, após essas 35 etapas o dado pode ser
considerado realmente removido.
As primeiras quatro etapas do método são realizadas sobresrevendo o dado de forma
aleatória: da quinta até a trigésima primeira etapa são usadas variações dos métodos (1,7) e
(2,7) para sobresrever os dados, e a partir da trigésima segunda etapa até a ultima etapa são
usados novamente dados aleatórios para sobresrever o dado.
4.3 Método - DoD 522.22M
O DoD 522.22M é um documento do governo dos Estados Unidos com recomendações de
segurança para várias áreas, inclusive a remoção de dados dos dispositivos de
armazenagem dos computadores, foi publicado em janeiro de 1995.
O método usado pelo DoD 522.22M, para remover os dados de discos, consiste em
sobrescrever esse dado com uma seqüência alternada de 0´s e 1´s e para finalizar utiliza-se
um algoritmo aleatório para gerar dados que são usados para sobrescrever novamente os
dados.
14
Para remover dados de disquetes, é necessário sobrescrever todos os locais endereçáveis do
disquete com um caractere padrão.
A recomendação para mídias que contenham dados altamente secretos é ser destruída por
umas das seguintes formas: incineradas, pulverizadas ou desintegradas. Pois, apenas dessa
forma, pode-se garantir com 100% de segurança que os dados não poderão ser
recuperados.
4.4 Outros métodos para remover dados de mídias magnéticas
Os métodos anteriores demonstravam meios de remover os dados sem a ajuda de
equipamentos desmagnetizadores. Um desmagnetizador é extremamente efetivo na
limpeza de um disco magnético, e com o uso desse equipamento é possível retornar um
disco magnético a seu estado inicial.
Para efetuar a desmagnetização de um disco, é preciso saber qual a potência necessária do campo
magnético para anular a magnetização presente no disco, a esse valor chamamos de coercivity.
Abaixo tabela com os meios de armazenamentos mais comuns e o valor de coercivity
necessário para inviabilizar a recuperação de qualquer dado.
Tabela 4.1 – Relação entre Coercivity e a mídia.
Mídia
Coercivity
Disquete 5.25" 360K
300 Oe
Disquete 5.25" 1.2M
675 Oe
Disquete 3.5" 720K
300 Oe
Disquete 3.5" 1.44M
700 Oe
Disquete 3.5" 2.88M
750 Oe
Disquete 3.5" 21M
750 Oe
HD´s anteriores a 1990
900-1400 Oe
HD´s posteriores a 1990
1400-2200 Oe
1 Fita Magnética 1/2"
300 Oe
15
Capítulo 5
Sistema Removedor de Dados
Foi desenvolvido um sistema removedor de dados para ambiente Windows baseado nos
seguintes métodos de remoção: Método Gutmann, Método DoD 522.22M e Método
Simples.
O programa desenvolvido possui em sua tela principal um “Windows Explorer”, através
dele você pode selecionar os arquivos que deseja remover definitivamente.
Fig. 5.1 – Janela responsável pela seleção dos arquivos que serão removidos.
Após selecionar os arquivos que desejamos remover é preciso então escolher o método de
remoção a ser utilizado, ele pode ser selecionado como mostra a fig. 5.2.
16
Fig. 5.2 – Seleção do método de remoção.
A fig. 5.2 demonstra a opção de escolher entre os métodos de remoção: Gutmman, DOD,
Simples e Personalizado. Através do método personalizado podemos definir nosso próprio
método de remoção. Abaixo a tela de listagem dos métodos personalizados.
Fig. 5.3 – Listagem dos métodos de remoção personalizados.
O cadastro de novos métodos de remoção é uma forma útil de sempre mantermos o
removedor de dados atualizado, pois conforme forem sendo apresentados novos métodos
de remoção podemos acrescentá-los aos já pré-definidos no programa. Outra opção é
também cadastrar nossos próprios métodos de remoção com o numero de passos que
desejamos.
17
Fig. 5.4 – Tela de cadastro dos novos métodos de remoção.
Podemos observar na Fig. 5.4 que temos três opções para o cadastro de cada passo do novo
método de remoção. As opções são as seguintes:
•
Aleatório: podemos cadastrar um passo de remoção para que ele sobrescreva o
arquivo de forma aleatória quantas vezes definirmos.
•
1 byte: através desse passo na remoção o arquivo é sobrescrito com o byte que
escolhermos.
•
3 bytes: através desse passo na remoção o arquivo é sobrescrito com a mescla dos 3
bytes que escolhermos.
Após escolhermos os arquivos que serão removidos e o método de remoção que usaremos
neles podemos pressionar o botão “REMOVER”, dessa forma dá-se inicio ao processo de
remoção dos arquivos e ao final da remoção temos a tela com o log de todo o processo de
remoção aplicado a cada arquivo.
18
Fig. 5.5 – Log da remoção dos arquivos.
Observamos na tela de log do processo de remoção dos arquivos que ela nos informa quais
arquivos puderam realmente ser removidos, e os arquivos que por algum problema não
puderam ser removidos e seu motivo.
Após a demonstração de como o sistema removedor de dados pode ser utilizado vamos
agora mostrar como é seu funcionamento interno.
Por meio da utilização dos métodos de remoção, foi possível remover definitivamente os
arquivos do disco, impedindo sua futura recuperação. Como precisamos trabalhar sempre
com arquivos a serem removidos, foi criada uma estrutura “Arquivo” para facilitar sua
manipulação. Essa estrutura possui um HANDLE para o arquivo e seu tamanho, foi
preciso também um buffer e o tamanho do mesmo para servir de auxiliar na sobrescrição
do arquivo. A partir dessa estrutura, podemos manipular o arquivo de forma limpa e clara.
A função mais importante do removedor de dados é o “sobrescrever”, nessa função é feita
a sobrescrição do arquivo.
19
Temos como entrada da função sobrescrever um ponteiro para a estrutura “Arquivo” que
contêm todas as informações do arquivo a ser sobrescrito. A variável blocos indica a
quantidade de vezes que utilizaremos o buffer para sobrescrever o arquivo, e a variável
mod recebe o resto da divisão do tamanho do arquivo pelo tamanho do buffer e esse resto
da divisão será os bytes finais do arquivo que serão sobrescritos com o buffer. É através da
função “WriteFile( File->HArquivo, File->Buffer, mod, &nescritas, NULL )” que ocorre a
sobrescrição do arquivo.
Por causa das variações de cada método para remoção dos dados, foram criadas outras
funções para alterar principalmente o buffer do “Arquivo”, pois justamente esse buffer que
sobrescreverá o arquivo original, após o buffer ser alterado é então chamada à função
“Sobrescrever”.
Funções para sobrescrever o buffer:
•
Sobrescrever_byte: altera o buffer todo para o byte que está sendo passado como
parâmetro na função, e logo após alterar o buffer chama a função “Sobrescrever”
para sobrescrever o arquivo com os dados do buffer.
•
Sobrescrever_bytes: altera o buffer de forma alternada para os bytes passados como
parâmetros na função, e logo após alterar o buffer chama a função “Sobrescrever”
para sobrescrever o arquivo com os dados do buffer.
•
Sobrescrever_Aleatório: recebe como parâmetro o número de vezes que o arquivo
será sobrescrito com um byte aleatório e o arquivo em si que será sobrescrito.
Essas 3 funções (Sobrescrever_Aleatório, Sobrescrever_byte, Sobrescrever_bytes) foram
utilizadas para alterar o buffer, e o buffer posteriormente, é utilizado para sobrescrever o
arquivo. Agora iremos demonstrar como cada método utiliza essas funções.
Método “Simples”: utiliza apenas a função “Sobrescrever_Aleatório” com um passo esse
método é bastante rápido, mas não é totalmente seguro para prevenir uma futura
recuperação do arquivo.
20
Ex: Sobrescrever_Aleatório (1, e Arquivo);
Método DoD 522.22M: consiste em sobrescrever um dado com uma seqüência alternada
de 0´s e 1´s com um algoritmo aleatório, possui cinco passos.
Ex:
Sobrescrever_Aleatório( 1, e Arq );
Sobrescrever_byte( (~1) e 0xFF, e Arq );
Sobrescrever_Aleatório( 1, e Arq );
Sobrescrever_byte( (~4) e 0xFF, e Arq );
Sobrescrever_Aleatório( 1, e Arq );
Método Gutmann: esse método utiliza os seguintes passos para remover um arquivo.
Passos
Buffer
1
Aleatório
2
Aleatório
3
Aleatório
4
Aleatório
5
Byte: 0x55
6
Byte: 0xAA
7
Bytes: 0x92 0x49 0x24
8
Bytes: 0x49 0x24 0x92
9
Bytes: 0x24 0x92 0x49
10
Byte: 0x00
11
Byte: 0x11
12
Byte: 0x22
13
Byte: 0x33
14
Byte: 0x44
15
Byte: 0x55
16
Byte: 0x66
17
Byte: 0x77
18
Byte: 0x88
19
Byte: 0x99
21
20
Byte: 0xAA
21
Byte: 0xBB
22
Byte: 0xCC
23
Byte: 0xDD
24
Byte: 0xEE
25
Byte: 0xFF
26
Bytes: 0x92 0x49 0x24
27
Bytes: 0x49 0x24 0x92
28
Bytes: 0x24 0x92 0x49
29
Bytes: 0x6D 0xB6 0xDB
30
Bytes: 0xB6 0xDB 0x6D
31
Bytes: 0xDB 0x6D 0xB6
32
Aleatório
33
Aleatório
34
Aleatório
35
Aleatório
As chamadas das funções do método Gutmann ficaram da seguinte forma:
EX:
Sobrescrever_Aleatório( 4, &Arq);
Sobrescrever_byte( 0x55, &Arq );
Sobrescrever_byte(0xAA, &Arq );
Sobrescrever_bytes( 0x92, 0x49, 0x24, &Arq );
Sobrescrever_bytes( 0x49, 0x24, 0x92, &Arq );
Sobrescrever_bytes(0x24, 0x92, 0x49, &Arq );
Sobrescrever_byte( 0x00, &Arq );
Sobrescrever_byte( 0x11, &Arq );
Sobrescrever_byte( 0x22, e Arq );
Sobrescrever_byte( 0x33, e Arq );
Sobrescrever_byte( 0x44, e Arq );
Sobrescrever_byte( 0x55, e Arq );
Sobrescrever_byte( 0x66, e Arq );
22
Sobrescrever_byte( 0x77, e Arq );
Sobrescrever_byte( 0x88, e Arq );
Sobrescrever_byte( 0x99, e Arq );
Sobrescrever_byte( 0xAA, &Arq );
Sobrescrever_byte( 0xBB, &Arq );
Sobrescrever_byte( 0xCC, &Arq );
Sobrescrever_byte( 0xDD, &Arq );
Sobrescrever_byte( 0xEE, &Arq );
Sobrescrever_byte( 0xFF, &Arq );
Sobrescrever_bytes( 0x92, 0x49, 0x24, &Arq );
Sobrescrever_bytes( 0x49, 0x24, 0x92, &Arq );
Sobrescrever_bytes( 0x24, 0x92, 0x49, &Arq );
Sobrescrever_bytes( 0x6D, 0xB6, 0xDB, &Arq );
Sobrescrever_bytes( 0xB6, 0xDB, 0x6D, &Arq );
Sobrescrever_bytes( 0xDB, 0x6D, 0xB6, &Arq );
Sobrescrever_Aleatório( 4, &Arq );
23
Capítulo 6
Conclusão
Constatamos que por causa de uma opção por velocidade do sistema operacional
Windows, no momento de remover um arquivo, ele simplesmente o remove apenas
logicamente, deixando todo o arquivo ainda intacto, apenas disponibilizando seu espaço
para a gravação de outros dados posteriormente. Por causa dessa opção do sistema
operacional, foi desenvolvido um estudo para encontrar meios de remover um arquivo de
forma definitiva.
Através dos estudos, foram encontradas varias formas de remoção de arquivos, inclusive
alguns padrões de remoção de dados estudados e desenvolvidos por nações e por alguns
especialistas no assunto.
Foi desenvolvido um sistema removedor de dados com a utilização dos padrões de
remoção estudados e que teoricamente garantem a eliminação de todas as evidências de um
arquivo, consequentemente impossibilitando sua futura recuperação.
24
Referências Bibliográficas
Department of Defense. National Industrial Security program operating
manual. Disponível em: <http://www.dss.mil/isec/nispom.html>.
Acesso em 10 de junho 2005.
HOLLEY, J. Computer forensics. Info Security Magazine, Washington, DC,
p.56,Sept. 2000.
MACE, P. The Paul Mace guide to data recovery. New York: Brady, 1988.
p. 43.
SLUSARCZUK, M. et al. Emergency destruction of information storing media.
Institute for Defense Analyses, Dec.1987.
TAKEDA, T.; TAGAMI, K.; WATANABE, T. Overwrite temperature dependence for
magnetic recording. Journal of Applied Physics, Argonne, Illinois, v.63, n.8,
p. 3438, Apr. 1988.
25
Bibliografia
DEAN, S. Disk and file shredders: a comparison. Disponível em:
<http://www.fortunecity.com/skyscraper/true/882/Comparison_Shredders.htm>.
Acesso em 24 de julho 2005.
GUTMANN, P. Secure deletion of data from magnetic and solid-state
memory.
Disponível em: http://www.cs.auckland.ac.nz/~pgut001/pubs/securedel.html.
Acesso em 13 de junho 2005
HOW MANY TIMES ERASED DOED DO YOU WANT?, David Hayes, posting to
comp.periphs.scsi newsgroup, 24 July 1991, message-ID
[email protected].
KOMANDO, K. Limpe o disco rígido antes de descartar seu computador: será
que os dados realmente desaparecem? Disponível em:
<http://www.microsoft.com/brasil/pequenasempresas/issues/tecknology/protect/ha
rddrive.mspx>. Acesso em 08 de Agosto de 2005.
LIN, T. et al. Effects of current and frequency on write, read, ande rase widths for
thin-film inductive and magnetoresistive heads. IEEE Transactions on
Magnetics, Psicataway, New Jersey, v.25, n. 1, p. 710, Jan. 1989.
HOLLEY, J. Computer forensics. Info Security Magazine, Washington, DC,
p.56,Sept. 2000.
MAGNETIC TAPE DEGAUSSER. NSA/CSS Specification L14-4-A, 31.
Oct. 1985.
RUGAR, D. et al. Magnetic force microscopy: general principles and application to
longitudinal recording media. Journal of Applied Physics, Argonne, Illinois, v.68,
n.3, p.1169, Aug. 1990.
26
Apêndice A
Código Fonte
//--------------------------------------------------------------------------#include <vcl.h>
#include <winbase.h>
#include <math.h>
#include <windows.h>
#pragma hdrstop
#include "principal.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
//--------------------------------------------------------------------------typedef unsigned char byte;
typedef struct {
HANDLE HArquivo;
size_t Tamanho_Arquivo;
byte *Buffer;
size_t Tamanho_Buffer;
} Arquivo;
static void
Sobrescrever(Arquivo *File)
{
DWORD blocos = 0, mod = 0;
DWORD nescritas = 0;
LONG size_high = 0;
blocos = File->Tamanho_Arquivo / File->Tamanho_Buffer;
mod = File->Tamanho_Arquivo % File->Tamanho_Buffer;
SetFilePointer( File->HArquivo, 0, e size_high, FILE_BEGIN );
while( blocos-- ) {
if( !WriteFile(File->HArquivo, File->Buffer, File->Tamanho_Buffer, e nescritas,
NULL) )
break;
}
if( mod )
WriteFile( File->HArquivo, File->Buffer, mod, e nescritas, NULL );
FlushFileBuffers( File->HArquivo );
SetFilePointer( File->HArquivo, 0, e size_high, FILE_BEGIN );
}
27
static void
Sobrescrever_Aleatório( int num_passes, Arquivo *File )
{
int i = 0;
int n;
unsigned char bytes_aleatórios[256]=
{
0x33,0x73,0x3b,0x26,0x63,0x23,0x6b,0x76,0x3e,0x7e,0x36,0x2b,0x6e,0x2e,0x66,0x7b,0
xd3,0x93,0xdb,0x06,0x43,0x03,0x4b,0x96,0xde,0x9e,0xd6,0x0b,0x4e,0x0e,0x46,0x9b,0x
57,0x17,0x5f,0x82,0xc7,0x87,0xcf,0x12,0x5a,0x1a,0x52,0x8f,0xca,0x8a,0xc2,0x1f,0xd9,
0x99,0xd1,0x00,0x49,0x09,0x41,0x90,0xd8,0x98,0xd0,0x01,0x48,0x08,0x40,0x91,0x3d,0
x7d,0x35,0x24,0x6d,0x2d,0x65,0x74,0x3c,0x7c,0x34,0x25,0x6c,0x2c,0x64,0x75,0xdd,0x
9d,0xd5,0x04,0x4d,0x0d,0x45,0x94,0xdc,0x9c,0xd4,0x05,0x4c,0x0c,0x44,0x95,0x59,0x1
9,0x51,0x80,0xc9,0x89,0xc1,0x10,0x58,0x18,0x50,0x81,0xc8,0x88,0xc0,0x11,0xd7,0x97,
0xdf,0x02,0x47,0x07,0x4f,0x92,0xda,0x9a,0xd2,0x0f,0x4a,0x0a,0x42,0x9f,0x53,0x13,0x5
b,0x86,0xc3,0x83,0xcb,0x16,0x5e,0x1e,0x56,0x8b,0xce,0x8e,0xc6,0x1b,0xb3,0xf3,0xbb,
0xa6,0xe3,0xa3,0xeb,0xf6,0xbe,0xfe,0xb6,0xab,0xee,0xae,0xe6,0xfb,0x37,0x77,0x3f,0x2
2,0x67,0x27,0x6f,0x72,0x3a,0x7a,0x32,0x2f,0x6a,0x2a,0x62,0x7f,0xb9,0xf9,0xb1,0xa0,0
xe9,0xa9,0xe1,0xf0,0xb8,0xf8,0xb0,0xa1,0xe8,0xa8,0xe0,0xf1,0x5d,0x1d,0x55,0x84,0xcd
,0x8d,0xc5,0x14,0x5c,0x1c,0x54,0x85,0xcc,0x8c,0xc4,0x15,0xbd,0xfd,0xb5,0xa4,0xed,0x
ad,0xe5,0xf4,0xbc,0xfc,0xb4,0xa5,0xec,0xac,0xe4,0xf5,0x39,0x79,0x31,0x20,0x69,0x29,
0x61,0x70,0x38,0x78,0x30,0x21,0x68,0x28,0x60,0x71,0xb7,0xf7,0xbf,0xa2,0xe7,0xa7,0x
ef,0xf2,0xba,0xfa,0xb2,0xaf,0xea,0xaa,0xe2,0xff};
randomize;
for( i = 0; i < num_passes; i++ ) {
n = 1 + random(255);
memset( File->Buffer, bytes_aleatórios[n], File->Tamanho_Buffer );
Sobrescrever( File );
}
}
static void
Sobrescrever_byte( int byte, Arquivo *File )
{
memset( File->Buffer, byte, File->Tamanho_Buffer );
Sobrescrever( File );
}
static void
Sobrescrever_bytes( int byte1, int byte2, int byte3, Arquivo *File )
{
size_t i = 0;
memset( File->Buffer, byte1, File->Tamanho_Buffer );
for(i = 1; i < File->Tamanho_Buffer; i += 3 ) {
File->Buffer[i] = byte2;
File->Buffer[i+1] = byte3;
28
}
Sobrescrever( File );
}
TForm1 *Form1;
//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (FileListBox1->ItemIndex > 0) {
Arquivo Arq = {0};
//LONG size_high = 0;
Arq.Tamanho_Buffer = 4096;
// carrego no buffer
Arq.Buffer = (byte *)malloc(Arq.Tamanho_Buffer);
// crio o handle do arquivo
Arq.HArquivo = CreateFile(FileListBox1->FileName.c_str(),GENERIC_WRITE,
FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, 0, NULL );
//tamanho do arquivo
Arq.Tamanho_Arquivo = GetFileSize( Arq.HArquivo, NULL );
switch ( RadioGroup1->ItemIndex ){
// SIMPLES
case 0 :
Sobrescrever_Aleatório( 1, &Arq );
break;
// Gutmman
case 1 :
Sobrescrever_Aleatório( 4, &Arq);
Sobrescrever_byte( 0x55, &Arq );
Sobrescrever_byte(0xAA, &Arq );
Sobrescrever_bytes( 0x92, 0x49, 0x24, &Arq );
Sobrescrever_bytes( 0x49, 0x24, 0x92, &Arq );
Sobrescrever_bytes(0x24, 0x92, 0x49, &Arq );
Sobrescrever_byte( 0x00, &Arq );
29
Sobrescrever_byte( 0x11, &Arq );
Sobrescrever_byte( 0x22, &Arq );
Sobrescrever_byte( 0x33, &Arq );
Sobrescrever_byte( 0x44, &Arq );
Sobrescrever_byte( 0x55, &Arq );
Sobrescrever_byte( 0x66, &Arq );
Sobrescrever_byte( 0x77, &Arq );
Sobrescrever_byte( 0x88, &Arq );
Sobrescrever_byte( 0x99, &Arq );
Sobrescrever_byte( 0xAA, &Arq );
Sobrescrever_byte( 0xBB, &Arq );
Sobrescrever_byte( 0xCC, &Arq );
Sobrescrever_byte( 0xDD, &Arq );
Sobrescrever_byte( 0xEE, &Arq );
Sobrescrever_byte( 0xFF, &Arq );
Sobrescrever_bytes( 0x92, 0x49, 0x24, &Arq );
Sobrescrever_bytes( 0x49, 0x24, 0x92, &Arq );
Sobrescrever_bytes( 0x24, 0x92, 0x49, &Arq );
Sobrescrever_bytes( 0x6D, 0xB6, 0xDB, &Arq );
Sobrescrever_bytes( 0xB6, 0xDB, 0x6D, &Arq );
Sobrescrever_bytes( 0xDB, 0x6D, 0xB6, &Arq );
Sobrescrever_Aleatório( 4, &Arq );
break;
// DOD
case 2:
Sobrescrever_Aleatório( 1, &Arq );
Sobrescrever_byte( (~1) e 0xFF, &Arq );
Sobrescrever_Aleatório( 1, &Arq );
Sobrescrever_byte( (~4) e 0xFF, &Arq );
Sobrescrever_Aleatório( 1, &Arq );
break;
}
/* Seto o tamanho do arquivo para 0, dessa forma os clusters alocados anteriormente
pelo arquivo não poder ser mais associados a ele*/
//SetFilePointer( Arq.HArquivo, 0, &size_high, FILE_BEGIN );
//SetEndOfFile( Arq.HArquivo );
CloseHandle( Arq.HArquivo );
memset( Arq.Buffer, 0, Arq.Tamanho_Buffer );
free( Arq.Buffer);
}
}
//---------------------------------------------------------------------------
Download

Removedor de Dados