Usar TPM no Linux

Este tutorial explica a utilização do TPM (Trusted Plataform Module) e Linux como provedor de serviços criptográficos do OpenSSL.

Nota: Estas instruções foram testadas em um Linux Ubuntu Intrepid 8.10. Os comandos podem variar para outras distribuições.

Instalação e inicialização do TPM

Instale as bibliotecas e softwares necessários

Os seguintes pacotes são necessários para a utilização do TPM:

  • libengine-tpm-openssl
  • tpm-tools
  • trousers

Eles estão disponíveis no repositório do Ubuntu. Na época que este tutorial foi escrito, havia um erro de dependência no arquivo .deb do pacote tpm-tools, corrigido na versão disponível no repositório intrepid-tools. Se você encontrar um erro, tente ativar este repositório para fazer a instalação.

sudo apt-get install libengine-tpm-openssl tpm-tools

Carregue o módulo do kernel correspondente ao seu TPM

No caso do Asus W7S, era o "tpm_tis". Você pode ir por tentativa e erro, ou procurar na internet aquele que corresponde ao seu TPM.

sudo modprobe tpm_tis

Inicie o serviço trousers

Inicie o serviço do sistema trousers

sudo service trousers start

Crie os links simbólicos faltantes

Na época que este tutorial foi escrito, alguns links simbólicos estavam faltando para a correta operação do TPM:

sudo ln -s /usr/lib/libtspi.so.1 /usr/lib/libtspi.so
sudo ln -s /usr/lib/engines/libtpm.so /usr/lib/ssl/engines/libtpm.so

Inicialize as chaves e senhas do TPM

sudo tpm_takeownership

Utilizando o TPM

Gerar chaves RSA

Para gerar uma chave, utilize o comando abaixo. Será gerado um arquivo em disco, que contém um ponteiro para a chave no TPM. Este arquivo NÃO é a chave propriamente dita, mas sim apenas um ponteiro.

sudo create_tpm_key -ap <ARQUIVOPONTEIRODACHAVE>

Utilizar a chave com OpenSSL

Para usar a chave em qualquer operação com o OpenSSL, basta usar os parâmetros "-keyform engine -engine tpm" e apontar o parâmetro "-key" para o arquivo ARQUIVOPONTEIRODACHAVE, como no exemplo abaixo:

openssl req -keyform engine -engine tpm -key <ARQUIVOPONTEIRODACHAVE> -new -x509 -days 365 -out <CERTREQUESTOUT>
Comments