Possibilidade de perda de dados devido a criptografia em um disco flash?

2

Gostaria de perguntar sobre o potencial de perda de dados devido ao nivelamento de desgaste em uma partição criptografada de um dispositivo USB / disco SSD.

Vamos considerar este cenário: Eu crio uma partição TrueCrypt em uma unidade flash (stick / disco) e coloco lá dados confidenciais. Uma partição ntfs / ext4 não criptografada diferente do mesmo disco é usada para a troca regular de arquivos.

Quando visualizo as partições de disco (por exemplo, parted, fdisk ... etc), a partição criptografada parece não ser usada sem um sistema de arquivos. O sistema de arquivos aparece apenas após a descriptografia. A partição criptografada deve se parecer com uma confusão aleatória de setores livres, uma vez escrita, quando não montada.

Então, o problema - como o próprio disco (seu mecanismo de nivelamento de desgaste) informa setores livres dos usados? se eu entendi o nivelamento de desgaste corretamente, ele remapeia os setores físicos para os lógicos com base no número de gravações. Se eu copiar novamente um arquivo grande na minha partição normal, os setores físicos livres da partição criptografada serão remapeados para setores lógicos pertencentes à partição normal devido ao baixo número de gravações e usados para manter o novo arquivo.

Eu pesquisei este tópico um pouco, mas não encontrei um número significativo de posts em que as pessoas estivessem reclamando sobre isso.

Onde minhas suposições estão erradas?

    
por user2433984 21.08.2013 / 21:41

1 resposta

1

O próprio disco não tem noção do que um filesytem pode ser. O disco sabe quais blocos internos são usados e quais não são por meio de alguns metadados que nunca saem do disco, e o SO não tem conhecimento deles.

Você está confundindo duas noções distintas de "setores livres", que ocorrem em máquinas distintas em níveis distintos. O próprio disco funciona em vários "blocos" internos; Usando esses blocos, o disco mantém uma visão lógica do espaço em disco como uma longa seqüência de bytes (convencionalmente dividida em sucessivos setores ). O disco irá dividir internamente o espaço em disco sobre os blocos, com alguma redundância, reordenamento, cópias dinâmicas e outros algoritmos inteligentes que juntos visam o desgaste espalhado de modo a fazer com que as falhas ocorram com menos frequência; este é o "nivelamento de desgaste".

O SO só vê os setores, que não são necessariamente do mesmo tamanho que os blocos (na verdade, os blocos do Flash tendem a estar no tamanho 16 a 64 kB, enquanto os setores são tradicionalmente 512 bytes) e o nivelamento de desgaste está oculto para o sistema operacional. O SO usa alguns setores para codificar as estruturas do sistema de arquivos, e essas estruturas marcam outros setores como "livres" ou "em uso". Do ponto de vista do sistema operacional, um setor é "gratuito" se não contiver mais nada de interessante (por exemplo, ele fazia parte de um arquivo que foi excluído desde então); Considerando que, do ponto de vista do disco, um bloco é "livre" se nunca foi gravado, ou se o algoritmo de nivelamento de desgaste já copiou seu conteúdo para outros blocos, e o bloco pode ser reutilizado internamente.

Se um setor foi gravado, os dados o transformaram em um bloco SSD; se o arquivo correspondente for excluído, o setor é "livre" do ponto de vista do sistema operacional (o sistema operacional permitirá gravar nesse setor o conteúdo de outro arquivo), mas para o SSD isso ainda é um dado que deve ser preservado - e preservar isso.

Um recurso esclarecedor (ou não) a ser considerado é o comando TRIM . Este é um comando SATA pelo qual o sistema operacional pode informar ao disco que um determinado intervalo de setores é considerado "livre" (pelo sistema operacional), permitindo que o disco não preserve seu conteúdo até que seja escrito para. Quando o SO TRIM tem alguns setores, ler os setores diretamente (do dispositivo, ignorando a camada do sistema de arquivos) pode, teoricamente, retornar bytes de dados variados, dependendo de como o disco gerencia as coisas internamente. "TRIM" é a única maneira pela qual "setores livres" do sistema de arquivos e "blocos não utilizados" do meio físico, podem realmente se relacionar entre si. Eles são outras noções totalmente independentes.

    
por 21.08.2013 / 22:03

Tags