View
2
Download
0
Category
Preview:
Citation preview
Universidade Federal de Santa CatarinaCentro Tecnológico
Departamento de Informática e EstatísticaINE 5355 – Sistemas OperacionaisINE 5412 – Sistemas Operacionais I
Criptografia em Sistemas de Arquivos
Carlos Eduardo de CamposJucemar Luis Monteiro
Rodrigo Valceli Raimundo
Florianópolis, Novembro de 2008
Sumário1 Introdução...........................................................................................................................32 Fairly Secure File System – FSFS......................................................................................43 TrueCrypt ............................................................................................................................8
3.1 INTRODUÇÃO ........................................................................................................................83.2 CRIAÇÃO DOS VOLUMES ...................................................................................................93.3 CRIPTOGRAFIA ....................................................................................................................103.4 PROBLEMAS DE SEGURANÇA .........................................................................................11
3.4.1 Swap e Hibernação ..........................................................................................................113.4.2 Journaling e Wear Leveling .............................................................................................12
3.5 CONSIDERAÇÕES ................................................................................................................134 Criptografia no NTFS........................................................................................................14
4.1 Componentes utilizados pelo EFS............................................................................................164.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ãoautorizado é,
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 – FSFSAutor 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 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
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 AES256, 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 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
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 NTFSAutor 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.
MFTMFT 2Arquivo de LOGArquivo de VolumeTabela de definição de atributoDiretório PrincipalUnidade de alocação BITMAPArquivo de BOOTArquivo 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 FileSystem), 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/1673http://www.techfaq.com/encryptingfilesystem.shtmlMEIOS 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.htmhttp://www.microsoft.com/technet/prodtechnol/winxppro/deploy/cryptfs.mspxhttp://www.ntfs.com/internalsencryptedfiles.htmhttp://www.harddiskhome.com/portuguese/NTFS.htmlSistemas 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.
Recommended