Você está na página 1de 18

Universidade 

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

Os   sistemas   de   arquivos   com   freqüência   contêm   informações   extremamente 


valiosas para seus usuários. Proteger essas informações contra o uso não­autorizado é, 
portanto, uma  questão  importante   para   todos os sistemas de  arquivos.    Este   relatório 
aborda   aspectos  de   funcionamento   de   alguns  sistemas   modernos  de   criptografia   para 
sistemas de arquivos.
2 Fairly Secure File System – FSFS
Autor do capítulo: Jucemar Luis Monteiro

Existe   diversos   projetos   de   criptografia   para   sistemas   unix   que   oferecem 


criptografia transparente para arquivos ou sistemas de arquivos, mas essas soluções tem 
alguns problemas:

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.

O FSFS consiste  de  dois  componentes principais: Um  dispositivo   de  driver   que 


opera no kernel, o bloco de dados criptografados antes de ser escrito no disco, e um 
programa   setup   no   espaço   do   usuário   que   prove   uma   interface   para   o   driver   de 
encriptação. Ele é usado para  comunicação com o kernel, incluindo a  transmissão de 
chaves   criptográficas,   diferentes   tags   de   acesso,   criar   novo   arquivo   criptografado   e 
gerenciamento de acesso.

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.

Para   implementar   um   sistema   de   arquivos   com   controle   flexível   de   acesso   e 


gerenciamento de acesso dos usuários aos dados, O FSFS usa várias chaves e senhas. 
Elas são usadas para autenticação, permissão e revogação de acesso para o usuário e 
proteção contra diferentes ataques.

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 

encriptado.   O  driver  descriptografa   esse   par  usando   a   PK  armazenada   no   cabeçalho. 


Somente se o ID decriptografado é igual ao usuário, o acesso é permitido. Usuários não 
podem   acessar   o   cabeçalho   do   arquivo   e   todo   acesso   aos   arquivos   encriptados   é 
controlado por um driver de encriptação.

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.

● Export:  O   direito   de   leitura   não   permite   a   cópia   de   dados   de   um   local 


encriptado   para   outro   local,   possivelmente   não   encriptado.   Sem   a   tag   export   o 
usuário pode somente ler arquivos do sistema criptografado e gravar nele, esse 
direito serve para o usuário ler um arquivo no sistema criptografado e poder gravá­
lo em outro local. 

● 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.

● Admin:  Esse   direito   em   combinação   com   “introduce”,   permite   ao   usuário 


emitir chaves contendo alguns direito (read,write,export,introduce), exceto “admin”.

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 

O   TrueCrypt   é   um   software   para   criptografia   de   disco   (e   por   consequencia   de 


sistemas de arquivos) bastante popular, eficiente e seguro. 

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: 

● prover   um   mecanismo   transparente   de   criptografia   já   que   as 


aplicações não precisam saber que estão em um volume criptografado ;

● estar presente nas principais plataformas (Linux, MacOS, Windows) e 
ser portável para virtualmente qualquer uma ;

● ser   relocável,   no   sentido   que   o   volume   criptografado   por   ser 


transportado para qualquer outro sistema ;

● 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 multi­usuá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 

Como   o   TC   é   destinado   a   sistemas   pessoais   monousuário   a   "montagem"   do 


volume pode se dar a qualquer momento, desde que requisitada pelo usuário. A senha é 
usada apenas uma vez e não fica armazenada na memória. As chaves, porém ficam e 
esse problema será abordado adiante. 

Todo   algoritmo   de   criptografia   exige   um   modo   de   operação.   Tal   modo   é   tão 


importante para a segurança dos dados quanto o próprio algoritmo, no TrueCrypt o único 
modo disponível é o XTS, junto com os algoritmos AES­256, Twofish e Serpent. O modo 
XTS é o único modo de operação reconhecido pela IEEE (IEEE 1619) para criptografia de 
dispositivos de bloco. Usar o XTS é um compromisso entre permitir o acesso aleatório aos 
blocos, porém com propagação de ruído, ou seja é possível criptografar blocos com o 
mesmo conteúdo sem que o resultado final seja o mesmo, já que a posição que eles se 
encontram no disco é usada como ruído. 

Outro   diferencial   do   TC   é   a   criptografia   em   cascata   que   permite   utilizar   AES   + 


Serpent e AES + Twofish + Serpent, um após o outro no processo de criptografia. 
O diagrama abaixo ajuda a entender um pouco melhor o esquema:

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: 

­   Um   atacante   consegue   roubar   um   laptop   contendo   informações   secretas 


criptografadas. O laptop possuia um arquivo/partição de hibernação. O atacante consegue 
obter a chave de decodificação da memória que ofi despejada o arquivo de hibernação e 
compromete o sistema. 

O  recomendável   para   tais  casos  é   desabilitar  a  hibernação   e  a   memória   swap, 


alguns sistemas como o OpenBSD criptografam a memória swap por padrão. 

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 consegue­se 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 

Todas   as   capacidades   técnicas   e   científicas   para   criptografia   de   sistemas   de 


arquivos   em   nível   de   disco   já   estão   disponíveis   e   implementadas   de   maneira   muito 
eficiente.   Uma   das   deficiências   dos   esquemas   atuais   é   o   baixo   acoplamento   com   o 
sistema como um todo. Ser uma extensão tem suas vantagens, porém uma ferramenta 
tão   forte   quanto   o   TC   poderia   ser   acoplada   de   maneira   muito   mais   sofisticada   aos 
sistemas atuais, permitindo a interligação com subsistemas já existentes como o próprio 
subsistema de autenticação fornecido pelo SO.
4 Criptografia no NTFS
Autor do capítulo: Carlos Eduardo de Campos

'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, implementando­se 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 Run­Time 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 Run­Time 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.tech­faq.com/encrypting­file­system.shtml
MEIOS DE ARMAZENAMENTO, apostila de Marcos Cesar Kossoski
(www.apostilando.com)
http://www.guiadohardware.net/comunidade/descriptografar­arquivo/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/internals­encrypted­files.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.

Você também pode gostar