3.2 Funcionamento
O funcionamento da Intel Trusted Execution Technology (TXT) é baseado em um modelo de proteção que fornece, essencialmente, duas partições nas quais as aplicações são executadas. Essas partições são [5]:
  • Partição Padrão: Provê um ambiente de execução idêntico ao que hoje é o ambiente da arquitetura IA-32. A vantagem de se manter um ambiente como esse é que permite a compatibilidade com aplicações legadas, que não precisam ser modificadas para se adequarem à nova plataforma. Outra vantagem é que aplicações futuras que não necessitem de um modelo de segurança tão restritivo, podem ser executadas nessas partições. A desvantagem dessa partição é que mantém as vulnerabilidades herdadas da plataforma IA-32.
  • Partição Protegida: Fornece um ambiente paralelo e co- existente, no qual os softwares que necessitam da segurança baseada em recursos de hardware, disponibilizados pela TXT, devem ser executados. Nessas partições, as aplicações são executadas de forma isolada e independente, assim sendo, não é possível que sejam monitoradas ou alteradas por outras aplicações que sejam executadas na partição padrão ou em outras partições protegidas. A partição protegida requer um processador compatível com a TXT, um chipset compatível e um gerenciador de domínios, para garantir a separação dos domínios.
graphic
Figura 4: Arquitetura do Modelo de Proteção da TXT [9].
Uma aplicação pode ser escrita para ser executada dentro da partição protegida, mas também, pode ser escrita para fazer uso das duas partições. A parte do código que lida com a interface humana e manipula as entradas e saídas podem ficar na partição padrão, enquanto os serviços que manipulam informações seguras e sensíveis ficam na partição protegida, na qual as informações manipuladas ficam inacessíveis para as demais aplicações que estejam em outras partições. O gerenciador de domínios permite que os softwares que estejam na partição protegida sejam executados em páginas de memória que estejam protegidas e não podem ser vistas ou modificadas por aplicações não autorizadas.
3.2.1 Partição Protegida
- Inicializando uma Partição Protegida
A TXT (Trusted Execution Technology) suporta a inicialização de uma partição protegida sem a necessidade de reiniciar toda a plataforma. De fato, para iniciar uma partição protegida, basta que um componente de software apropriado, que esteja consciente da existência da TXT, faça um pedido de inicialização. Como resposta a esse pedido, uma parte da memória é alocada para a partição protegida e marcada como protegida. O gerenciador de domínios é carregado no espaço de memória designado e registrado pelo módulo de código autenticado (AC). O processo de inicialização da partição protegida ocorre em etapas, para que o processador e o chipset reconheçam e participem da inicialização, para que todos os participantes inicializem o mesmo ambiente e para que não haja interferências durante o processo. As etapas são:
1) Um software qualquer executa a nova instrução SENTER, o que dá início ao processo de inicialização. Essa nova instrução desencadeia uma seqüência de "apertos de mão", hand-shakes. Após essa seqüência inicial de "apertos de mão", o processador e o chipset estão prontos para serem introduzidos no ambiente protegido.
2) O processador carrega um módulo de código autenticado (AC) na memória privada interna, autentica-o, registra a sua identidade em um registrador chamado PCR (Plataform Configuration Register) do TPM e, depois, o invoca. O AC faz a verificação de que não há nenhum hardware mal configurado, ativa a proteção da memória para o Gerenciador de Domínio proposto, grava a identidade do gerenciador de domínio em um PCR do TPM, depois transfere o controle da execução para o gerenciador de domínio.
- Saindo de uma Partição Protegida
Quando uma partição protegida não é mais necessária, a TXT suporta a destruição desse ambiente protegido, o que é realizado em etapas, também. As etapas são:
1) O gerenciador de domínios é responsável por limpar a partição protegida, de modo que nenhum segredo seja mantido na memória ou nos registradores. Esse procedimento inclui a re-selagem dos segredos para armazená- lo em um armazenamento persistente e eliminar o conteúdo das páginas de memória protegidas.
2) O gerenciador de domínios invoca uma nova instrução de SEXIT para sair. Essa instrução se desdobra em uma seqüência de "apertos de mão", hand- shakes, e depois sai do ambiente protegido.
- Proteções a eventos especiais
A maior parte dos eventos de sistema, tais como exceções e interrupções, são tratados através de ligações estabelecidas com as partições e podem ser servidos dentro da partição protegida ou podem ser desviados para o gerenciador de domínios, dependendo do tipo do evento.
No entanto, alguns eventos de sistema anormais podem provocar a transferência do controle desses eventos para agentes que estejam fora da partição protegida, o que pode ser potencialmente perigoso e uma fonte de ataques. No entanto, os processadores e chipsets com TXT possuem recursos de hardware que permitem identificar tais eventos e, assim, não permitir a exposição dos segredos armazenados na partição protegida.
Um exemplo que pode ser citado é que uma determinada condição do sistema force a reconfiguração do gerenciador de domínios sem antes permiti-lo remover os segredos da memória. A proteção em hardware da TXT garante que seguindo uma reconfiguração antecipada, o espaço de memória que possa conter segredos é limpo antes que outro software não confiável possa acessá-lo.
3.2.2 Atestação e Confiança
- Encriptando e decriptando segredos
A TXT permite que informações secretas, segredos, sejam encriptados e decriptados com o apoio do dispositivo do TMP v.1.2. Esse fato permite que os segredos gerados em um domínio não estejam disponíveis para outro. A base dessa proteção reside na Storage Root Key (SRK), Chave Raiz de Armazenagem, um par de chaves pública/privada. A chave privada SRK nunca deixa o TPM e tudo que é encriptado com a chave SRK pública, só pode ser decriptado com a chave SRK privada correspondente, um exemplo de criptografia assimétrica. Como a chave privada nunca deixa o TPM, somente esse TPM pode decriptar os dados encriptados pela chave SRK pública correspondente. O TPM provê uma operação de SEAL, que permite que dados e uma lista de PCRs sejam encriptados em um arquivo binário, usando a chave de armazenagem do TPM. Esse arquivo criptografado pode ser armazenado em qualquer lugar. Uma operação correspondente de UNSEAL, decripta os dados armazenados no arquivo binário, porém não os expõe. Os dados só são expostos, quando os valores dos PCRs armazenados estiverem de acordo com os valores corrente dos PCRs. Essa operação permite que um gerenciador de domínios encripte os dados com os valores correntes dos PCRs, representando o ambiente protegido atual e só os decripte caso um gerenciador de domínios idêntico esteja sendo executado.
No entanto, normalmente um gerenciador de domínios gera a sua própria chave de criptografia de volumes, para ser usada no software, e armazena essa chave selada, encriptada, pelo TPM. A chave criptográfica de volume é usada para criptografar todos os segredos manipulados por esse gerenciador de domínios e pode ser usada para encriptar segredos das aplicações que estejam executando nessa partição protegida. Nessa caso, usa-se a criptografia simétrica.
- Confiança Inicial
Se um segredo conhecido por somente um usuário é selado em um ambiente que o usuário escolha confiar, e se esse segredo pode ser revelado novamente, o usuário sabe que o mesmo ambiente confiável está sendo executado no momento. Um método similar usa um segredo compartilhado com um agente remoto, permitindo que o agente remoto saiba que o mesmo ambiente confiável está sendo executado. No entanto, esse processo de autenticação não resolve o problema da confiabilidade inicial, ou seja, antes que o segredo compartilhado exista.
A TXT dá suporte a um mecanismo opcional de verificação, chamado de Atestação (Attestation). A atestação permite que o usuário, ou opcionalmente o agente remoto, meça o ambiente que está sendo executado no momento, usando os mecanismos de medida e de reportagem providos pelo TPM. Baseado nesses resultados reportados, o usuário ou o agente remoto escolhe se deve confiar ou não no ambiente de plataforma executado no momento.
Para um agente remoto, o processo de atestação envolve métodos padrões de criptografia. O agente remoto gera um valor aleatório, chamado desafio, e manda para o sistema a ser testado. Nesse sistema, o TPM cria um registro que contém o desafio e os valores correntes dos PCRs, que representam o ambiente do gerenciador de domínios que está sendo executado no momento. O TPM assina esse registro com a sua chave privada e o retorna para o agente remoto, junto com a chave pública do TPM e as credenciais. O agente remoto deve analisar as credenciais para determinar o que a chave pública faz e se de fato representa um TPM real, depois usa a chave pública para verificar a assinatura no registro e extrair os dados armazenados no registro. Os dados extraídos podem ser comparados com uma lista contendo diversos valores, para determinar se os valores enviados representam um ambiente válido para o agente remoto.
No entanto, atestar que uma máquina local tem um ambiente confiável é um desafio maior. Para solucionar esse problema existem três formas imediatas:
1) Assumir que o sistema em sua configuração inicial é confiável.
2) Usar um dispositivo portátil capaz de fazer cálculos criptográficos, como se fosse um agente remoto, e retorne um resultado de que o sistema é confiável ou não.
3) O usuário pode fazer um pedido a um agente remoto que ateste o ambiente local.