Buscar

cryptfs

Prévia do material em texto

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çãoencriptada é 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íveise   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 parao 
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.
	1 Introdução
	2 Fairly Secure File System – FSFS
	3 TrueCrypt 
	3.1 INTRODUÇÃO 
	3.2 CRIAÇÃO DOS VOLUMES 
	3.3 CRIPTOGRAFIA 
	3.4 PROBLEMAS DE SEGURANÇA 
	3.4.1 Swap e Hibernação 
	3.4.2 Journaling e Wear Leveling 
	3.5 CONSIDERAÇÕES 
	4 Criptografia no NTFS
	Como os arquivos são criptografados e descodificada

Continue navegando