Escolar Documentos
Profissional Documentos
Cultura Documentos
Crypt Fs
Crypt Fs
Federal de Santa Catarina
Centro Tecnológico
Departamento de Informática e Estatística
INE 5355 – Sistemas Operacionais
INE 5412 – Sistemas Operacionais I
Criptografia em Sistemas de Arquivos
Carlos Eduardo de Campos
Jucemar Luis Monteiro
Rodrigo Valceli Raimundo
Florianópolis, Novembro de 2008
Sumário
1 Introdução...........................................................................................................................3
2 Fairly Secure File System – FSFS......................................................................................4
3 TrueCrypt ............................................................................................................................8
3.1 INTRODUÇÃO ........................................................................................................................8
3.2 CRIAÇÃO DOS VOLUMES ...................................................................................................9
3.3 CRIPTOGRAFIA ....................................................................................................................10
3.4 PROBLEMAS DE SEGURANÇA .........................................................................................11
3.4.1 Swap e Hibernação ..........................................................................................................11
3.4.2 Journaling e Wear Leveling .............................................................................................12
3.5 CONSIDERAÇÕES ................................................................................................................13
4 Criptografia no NTFS........................................................................................................14
4.1 Componentes utilizados pelo EFS............................................................................................16
4.2 Como os arquivos são criptografados e descodificados...........................................................17
1 Introdução
1. Somente o dono dos dados tem acesso aos arquivos criptografados, caso
ele queira compartilhar os dados, ele deverá fornecer a senha para descriptografar
os arquivos. Nesse mecanismo todos que sabem a senha tem o mesmo status do
dono dos arquivos. Há um grande risco caso algum usuário troque a senha, ele
passará a ser o único dono dos arquivos, o que é inadmissível.
2. Quando o arquivo é descriptado, partes do arquivo podem ficar em locais
desprotegidos (área de swap, arquivos temporários, etc). Para manter um alto nível
de segurança em uma máquina é necessário criptografar todo o sistema de
arquivos, mas há diretórios que são compartilhados por vários usuários, logo todos
os usuários que utilizam esses diretórios devem saber a chave.
A figura 1 mostra como chaves, senhas e outros valores são combinados.
O driver de encriptação opera no nível mais baixo da pilha do sistema de arquivos e
age como um driver de um dispositivo. Todos os dados que são enviados para esse bloco
do dispositivo virtual são criptografados e passados para o hardware onde são
armazenados. Quando o kernel requer um bloco de dados do dispositivo virtual, o driver
pega um bloco encriptado do hardware, decriptografa ele e retorna os dados para o
kernel.
O driver de encriptação trabalha com blocos, ele não conhece arquivos, diretórios e
como o sistema de arquivos implementa eles. Entretanto o FSFS pode somente operar
sobre uma partição inteira, não sobre pastas ou arquivos individualmente, ele requer que
o usuário conheça antes quanto espaço vai reservar para o sistema de arquivo
criptografado. Assim pode haver algum espaço não usado ou espaço reservado é
insuficiente. Esse sistema faz encriptação transparente para o resto do sistema
operacional e algum sistema de arquivos pode ser usado para armazenar os dados. Nem
o kernel, nem qualquer outra aplicação precisa ser modificada para fazer uso do driver de
encriptação.
As chaves, senhas e configurações de dados são armazenados em vários locais do
sistema. Os dados secretos em um arquivo são encriptados usando uma chave
criptografica secreta (SEK). Somente o dono do arquivo encriptado sabe a chave. A SEK é
gerada quando o dono dos arquivos cria uma nova partição de arquivos criptografada, ao
mesmo tempo que a chave do dono(OK) e chave de acesso (PK) são geradas, ambas
somente o dono sabe. O dono pode mais tarde usar a OK para provar que ele é
realmente o dono dos arquivos.
Os primeiros bytes do arquivos são usados como cabeçalho, onde as chaves e
dados de configuração, como o nome do arquivo de criptografia, são armazenado. O
cabeçalho contêm o SEK, o PK e a os valores da tabela de segurança de OK. Essas
chaves são criptografadas usando Secret Shared Key (SSK). O arquivo pode ser lido
somente pelo proprietário e o programa de setup, que executa com permissão de root.
O SSK é dado a todos os usuários que tem permissão para acessar os arquivos
criptografados. O usuário guarda o SSK no seu User Key File (UKF) e protege ele com um
User Password (UP).Quando um usuário quer trabalhar com um dado criptografado, ele
usa a SSK no FSFS. O driver então usa o SSK para descriptografar o cabeçalho do
arquivo, receber o SEK e habilitar a decriptografia do arquivo para o usuário.
Para dar a diferentes usuários diferentes tipos de acessos, o ID do usuário e níveis
de acesso para cada usuário são armazenados em suas chaves de arquivos (UKF). Para
proteger o ID e níveis de acesso, eles são criptografados usando a chave de permissão
PK. Para acessar os dados secretos, um usuário deve entrar com ID/nível de acesso
Para fazer isso o driver intercepta todos as chamadas de sistema que podem iniciar
ou transferir dados de ou para o dispositivo de bloco. A chamada original é trocada por
um código que checa se uma partição encriptada é invocada na chamada e se o dono do
processo tem os níveis de privilégio suficiente. Se não um erro retorna, caso contrário, a
chamada de sistema original é executada.
O FSFS modifica as chamadas de sistema para open(), link(), del(), chmod() e
chdir(). Essa modificação é feita com um modulo no kernel do linux que substitui a
chamada original para o próprio código. O FSFS tem 5 direitos de acesso:
● Read: O usuário pode ler arquivos encriptados, navegar nas pastas e listar
arquivos.
● Write: Os arquivos podem ser escritos, criados e deletados.
● Introduce: Depois de criar um novo sistema de arquivo encriptado, o dono e
somente ele pode emitir chaves para outro usuário acessarem os dados.
Esses direitos descritos são garantidos somente para processos da seção (ou
grupo de processos) de que o usuário autentica no driver. Isso permite ao usuário
trabalhar com programas que precisam acessar dados encriptados em um terminal sem
ter que dar para cada processo individualmente direito de acesso.
3 TrueCrypt
Autor do capítulo: Rodrigo Valceli Raimundo
3.1 INTRODUÇÃO
Seu trabalho é realizado acima e abaixo do sistema de arquivos nativo do SO.
Acima, porque o TrueCrypt funciona através da criação de discos virtuais que são
hospedados por qualquer FS nativo. Abaixo, porque o TrueCrypt expõe essa imagem
como um disco real, o qual o usuário pode usar para criar partições de seu FS preferido.
Atuar nestas duas camadas permite ao TrueCrypt:
● estar presente nas principais plataformas (Linux, MacOS, Windows) e
ser portável para virtualmente qualquer uma ;
● ser o único sistema de criptografia com "negação plausível", já que é
possível esconder um volume dentro de outro .
Entretanto com o TrueCrypt não é possível realizar algumas como:
● compartilhar arquivos criptografados num sistema multiusuário
● criptografar arquivos do mesmo volume com chaves/senhas distintas
Estas duas últimas funções não fazem parte da filosofia ao qual o TrueCrypt se
propõe.
Abaixo, o esquema geral do TrueCrypt:
3.2 CRIAÇÃO DOS VOLUMES
Um volume para o TC é geralmente um grande arquivo contido no FS hospedeiro,
embora dependendo da plataforma ele seja capaz de operar em um nível mais baixo,
independente de um FS.
Durante o processo de criação de um volume o usuário precisa decidir qual será
seu tamanho, o algoritmo de criptografia e de checksum, além de uma senha de
segurança. Em seguida o TC cria o arquivo com o tamanho necessário e o preenche por
completo com dados aleatórios, algo extremamente importante para garantir a segurança
do conteúdo do volume e de prováveis volumes ocultos. Um par de chaves aleatórias é
gerado e guardado de maneira criptografada no cabeçalho do volume utilizando a senha
fornecida pelo usuário. Todo conteúdo do volume será acessado através dessas duas
chaves e estas chaves só podem ser decodificadas com a senha estipulada.
A criação de volumes ocultos é parecida, porém sua metodologia não é de todo o
interesse para um trabalho sobre SO.
3.3 CRIPTOGRAFIA
3.4 PROBLEMAS DE SEGURANÇA
O TC é um sistema seguro, porém existem outros fatores que podem levar ao seu
comprometimento e são nesses fatores que o SO mais impacta, vejamos eles:
3.4.1 Swap e Hibernação
A memória swap é inimiga mortal da segurança de um computador. Caso um
computador ou disco seja tomado por terceiros, a análise da memória swap pode revelar
senhas, chaves e muitas outras informações importantes que estavam em memória
principal e foram relocadas para memória secundária. Tal perigo é ainda pior quando se
trata de hibernação, já que TODA a memória principal foi transferida para memória
secundária.
Um exemplo do problema:
3.4.2 Journaling e Wear Leveling
O recurso de journaling do sistema nativo pode ser perigoso para o TC, porém
muito menos do que o problema com swap e hibernação citados anteriormente.
Dificilmente conseguese comprometer o volume por causa do journal, no entando rastros
das atividades do FS deixadas no journal podem revelar a um atacante que esteja em
pose do volume criptografado informações como as regiões aonde os arquivos se
encontram e quando eles forma acessados.
O recurso de wear leveling presente principalmente nos dispositivos SSD implica
em alguns problemas de segurança para o TC, isto porque ao reescrever um bloco lógico
o mesmo não será remapeado ao bloco físico o qual estava anteriormente, deixam várias
versões do mesmo bloco no dispositivo. Isto é especialmente perigoso quando se trata do
cabeçalho do volume. Mesmo ao se trocar a senha de um volume, apenas o cabeçalho é
modificado, qualquer versão anterior do cabeçalho com uma senha conhecida por um
atacante pode ser usada para decifrar o volume inteiro.
3.5 CONSIDERAÇÕES
'O NTFS é um sistema de arquivos proprietário da Microsoft que usa uma arvoreB
como estrutura de dados, sua primeira implementação veio no Windows NT, ou seja,
antes mesmo do Windows 95.
A idéia por traz deste sistemas de arquivo é o gerenciamento de múltiplos usuários.
a Tabela de Arquivo Mestre (MFT). é o “coração” de um volume NTFS. Todos os dados de
cada volume estarão contidos nela. Quando formatamos um disco para esse sistema, o
programa de formatação cria um conjunto de arquivos de Metadados. Estes contêm
informações sobre o sistema e sua estrutura ao longo de sua utilização. Nesse momento,
também é criada a MTF.
MFT
MFT 2
Arquivo de LOG
Arquivo de Volume
Tabela de definição de atributo
Diretório Principal
Unidade de alocação BITMAP
Arquivo de BOOT
Arquivo de cluster defeituoso
...
Arquivos de Usuário
...
Esquema de implementação da Master File Table em volume NTFS. Cada campo
contendo arquivos de Metadados, guarda informações importantes do sistema.
Esses dados inicias, além de todos os arquivos de usuários que surgirão ao longo
do tempo, estão distribuídos na MFT sob a forma de Registros de Arquivo. Essa forma de
organização dita mais uma vantagem do NTFS. É que, o agrupamento dos dados em uma
estrutura única em comum permite sua administração de forma centralizada. Assim
sendo, implementandose um sistema de segurança à própria MFT (o que é feito), a
confiabilidade no sistema e em seus componentes, em sua totalidade, já estará
assegurada, visto que conseqüentemente eles também estarão protegidos por estarem
contidos em tal estrutura.
o Windows (NT/2000/XP) fornece proteção a diversos objetos do sistema dentre os quais
podemos citar arquivos, diretórios, impressoras, entre outros. Tais objetos são protegidos
através de Descritores de Segurança que controlam quem tem e que tipo de acesso a
eles. No caso de arquivos de dados, tais descritores compõem um atributo a mais nos
seus registros da MFT, o qual pode ser observado na estrutura de um registro de arquivo.
Para fornecer proteção o SO observa o nome do usuário, usado para entrada no sistema,
e o combina com o descritor de segurança de cada objeto. Quando na tentativa de acesso
a algo no sistema, essa combinação dirá se o que se pretende manipular poderá ou não
ser utilizado pelo usuário em questão
No caso de criptografia, temos o recurso de Encriptação (EFS – Encription File
System), que devido ao grande impacto que causou, quando no lançamento do Windows
2000, merece muita importância. Tal mecanismo permite que arquivos sejam
criptografados e armazenados em volumes sob a administração do NTFS. O EFS se
baseia em chaves privadas para transformar as informações em códigos que somente ele
entende. Os usuários que tiverem o acesso, ou melhor dizendo, o direito a essas chaves,
terão acesso livre aos dados. Do contrário, isso não será possível. Esse recurso
acrescenta uma segurança ainda maior aos dados e veio compor mais uma interessante
característica ao sistema de arquivos em questão.
O Windows usa um Certificado Digital q é associado à conta do usuário, quando o
usuário se loga, ele automaticamente carrega o certificado apropriado. A senha e
username não tem nada com isso, o usuário teria que exportar o certificado para acessá
lo em outro lugar ou exportálo antes de formatar e importado ele na sua nova conta após
a reinstalação!
O EFS usa por default o algoritmo DESX com chave de 128 bits, mas pode ser
configurado pra usar o 3DES com chave de 168 bits ou AES com chave de 128, 192 e 256
bits. No default, usa o algoritmo DEX com 128 bits é uma chave grande o suficiente pra
resistir a ataques de força bruta por um longo tempo.
Componentes utilizados pelo EFS
O EFS utiliza os seguintes componentes para desempenhar as suas funções:
• EFS service: O serviço EFS se comunica com o dispositivo EFS através da porta
local procedure call (LPC). O EFS service e a Microsoft Cryptographic Application
Programming Interface (CryptoAPI) se comunicam, com o EFS service recebendo
as chaves de encriptação dos arquivos da CryptoAPI. Ele usa essas chaves para
gerar campos de dados descriptografados (DDFs) e campos de recuperação de
dados (DRFs). A chave criptografica de arquivo (FEK) é utilizada para os dados
dos arquivos. O EFS service passa a FEK, DRF, e DDF para o dispositivo EFS
através do EFS File System RunTime Library (FSRTL).
• EFS driver: O EFS driver requer FEK’s, DDF’s e DRF’s do EFS service. Ele então
retransmite ao EFS FSRTL.
• EFS File System RunTime Library (FSRTL): O EFS FSRTL existe no EFS driver, e
opera com o EFS driver como um componente. Arquivos de controle de chamada
do NTFS são utilizadas como mecanismo de comunicação entre os dois. O EFS
FSRTL leva a cabo um conjunto de funções do sistema de arquivos que incluem
criptografia, desencriptar, e recuperar dados quando o arquivo é lido a partir do
disco ou escritas no disco.
• Criptografia Microsoft Application Programming Interface (CryptoAPI): CryptoAPI é
utilizada pelo EFS para funções criptográficas. CryptoAPI suporta criptografia,
descriptografia, hashing, assinaturas digitais e verificação dos mesmos, chave de
gestão, armazenamento seguro, e operações de chave estrangeira
Como os arquivos são criptografados e descodificada
Como mencionado anteriormente, o EFS utiliza chaves públicas e criptografia de
chave simétrica para assegurar que o conteúdo das pastas e arquivos. Os algoritmos de
criptografia utilizam chave pública assimétrica para criptogravar / descriptografar. O que
isto significa é que as teclas utilizadas para encriptar e desencriptar os dados são
diferentes, porque uma chave privada e uma chave pública é utilizada. A chave privada é
mantida pelo proprietário da chave. A chave pública pode ser utilizada na rede.
Quando os dados são criptografados, o EFS gera uma única FEK para criptografar
o arquivo. De seguida, criptografa o FEK utilizando a chave pública do certificado do
utilizador. O EFS usa o FEK para garantir que a criptografia ocorra rapidamente. A chave
privada do utilizador é utilizada para descriptografar o FEK.
O processo descrito a seguir ocorre quando um usuário criptografa um arquivo:
• O arquivo é aberto pelo EFS service.
• Os fluxos de dados do arquivo são copiados para um arquivo temporário de texto
plano localizado no diretório temporário do sistema
• EFS gera a única FEK.
• A FEK é utilizada para criptografar o arquivo seja através DesX ou 3DES.
• O DDF é criado. O DDF contem o FEK criptografado por meio da chave pública do
usuário.
• Quando um agente de recuperação é definido por meio de política de grupo, os
campos da recuperação dos dados (DRFs) é criado.
• Os dados criptografados, DDF, e DRF são armazenadas no arquivo.
• O arquivo temporário de texto plano localizado no diretório temporário do sistema é
apagado.
O processo descrito a seguir ocorre quando um arquivo é descodificada:
• NTFS identifica como sendo os arquivos criptografados e, em seguida, apresentar
um requerimento para a decriptografia através do EFS driver.
• O EFS driver obtém os DDF’s e envia para o EFS service.
• O EFS service obtém a chave privada do utilizador. Ele usa essa chave para
descriptografar a DDF.
• Depois que o EFS service descodificou o DDF e obteve o FEK, ele o envia para o
EFS driver.
• O EFS driver utiliza o FEK recebido do EFS service para descriptografar os dados
no arquivo.
• O EFS driver passa os dados decodificados dados para NTFS.
.
Referencias:
http://www.securityfocus.com/infocus/1673
http://www.techfaq.com/encryptingfilesystem.shtml
MEIOS DE ARMAZENAMENTO, apostila de Marcos Cesar Kossoski
(www.apostilando.com)
http://www.guiadohardware.net/comunidade/descriptografararquivo/267315/
http://www.petri.co.il/how_does_efs_work.htm
http://www.microsoft.com/technet/prodtechnol/winxppro/deploy/cryptfs.mspx
http://www.ntfs.com/internalsencryptedfiles.htm
http://www.harddiskhome.com/portuguese/NTFS.html
Sistemas Operacionais: projeto e implementação/ Andrew S. Tanenbaum e Albert S. Woodhull;
tradução Edson Furmankiewicz – 2ª edição – Porto Alegre: Bookman, 2000.
File System Encryption with Integred User Management, Stefan Ludwig – Coporate Technology –
Siemens AG – Munich , Prof. Dr. Winfried Kalfa – Operating Systems Group – Chemnitz
University of Technology.