Por que o 'head -c 2 / dev / hwrng' não funciona?

4

Eu tenho um Atmel 97SC3201 no meu computador e configure o seguinte no kernel:

  • CONFIG_HW_RANDOM_TPM
  • CONFIG_TCG_TPM
  • CONFIG_TCG_ATMEL

/dev tem tpm0 e hwrng , mas a execução desse comando retorna o seguinte:

head -c 2 /dev/hwrng

saída:

head: error reading ‘/dev/hwrng’: Input/output error

Em dmesg , estas mensagens aparecem:

tpm_atmel tpm_atmel: A TPM error (2048) occurred attempting get random

tentativas adicionais geram estas mensagens:

tpm_atmel tpm_atmel: A TPM error (6) occurred attempting get random

Alguma idéia de por que isso falha ou melhor, como fazê-lo funcionar?

    
por sam 25.05.2013 / 20:04

2 respostas

4

Esse RNG é parte de um Trusted Platform Module . A menos que seu computador faça parte de um pedido de uma grande organização, o TPM é desativado por padrão, pois pode tornar seu computador não inicializável se configurado incorretamente e porque pode tornar seu computador mais rastreável¹.

Se você quiser usar o RNG, terá que habilitá-lo no BIOS. O wiki do Thinkpad contém instruções detalhadas para um Thinkpad, que ainda pode ajudar com adaptações se você tiver outro modelo. Não tenho certeza se é suficiente ativar o TPM no BIOS ou se você também precisa inicializá-lo do Linux no momento da inicialização. Se você precisar de suporte ao Linux, instale o TrouSerS (a maioria das distribuições deve ter um pacote para ele).

Você pode usar outras coisas do TPM, principalmente inicialização segura (para que até mesmo alguém com acesso root à sua máquina não consiga infectar o carregador de inicialização para plantar um rootkit²). Você precisa do Trusted Grub para inicialização segura.

Note que o Linux tem um bom gerador de números pseudo-aleatórios de qualidade criptográfica, e é bom em coletar entropia para distribuir o PRNG. Portanto, o benefício de um RNG de hardware é muito limitado.

¹ Mais precisamente, um TPM confere ao seu computador uma identidade difícil de falsificar e que você não pode negar facilmente. Essa seria uma grande preocupação com a privacidade, mas na verdade é muito menos um problema do que a percepção popular. O software que usa o TPM corretamente não envia a identidade do seu computador para partes remotas, mas usa uma chave específica do aplicativo que não é rastreável ao TPM - então é como ter uma conta com terceiros, não mais. O software que usa o TPM incorretamente pode expor sua privacidade, mas também qualquer navegador de software é famoso por revelar muitas coisas sobre você. A navegação na web todos os dias expõe muito mais do que você arrisca de um TPM.
² Mas note que existem outros locais para plantar um rootkit. Um TPM só pode realmente fornecer proteção se você bloquear o sistema tanto que é difícil instalar qualquer software extra.

    
por 26.05.2013 / 08:52
0

Estas são as etapas do site thinkwiki para ativar o TPM.

Usando o TPM no Linux

excerto do Subsistema de segurança incorporado no site do ThinkWiki

  • Esta seção é muito incompleta, mas aqui estão algumas dicas para você começar: Compile um kernel 2.6.23 ou posterior com o driver para o chip tpm em seu modelo do ThinkPad ativado;
  • Você precisa ativar CONFIG_SECURITY para obter securityfs e CONFIG_KEYS para usar o suporte a TPM eCryptfs;
  • Você precisa ativar o tpm_bios para acessar o log TCPA;
  • Certifique-se de montar o sistema de arquivos securityfs no /sys/kernel/security para acessar os dados do tpm_bios (o log TCPA);
  • Você deve usar o dm-crypt para ter uma partição de permuta criptografada com uma chave efêmera;
  • O log do TCPA pode ser encontrado no diretório securityfs e pode ajudá-lo a entender como o BIOS e os carregadores de inicialização estão usando os PCRs. O primeiro número para cada evento no log é o número de registros de PCR que foram estendidos por esse evento;
  • Você precisa de uma versão atualizada da pilha de software TrouSerS para usar o TPM para qualquer outra coisa que não seja ler o log do TPCA;
  • Você precisa de um espaço de usuário atualizado do eCryptfs (com o suporte do TPM compilado) para usar o TPM para armazenar chaves do sistema de arquivos;
  • Usar o TPM como um token PKCS11 é possível, mas não tenho ideia de como é seguro, já que isso requer um SRK nulo (conhecido);
  • O
  • trusted-grub pode ser usado para brincar com os PCRs antes que o Linux seja carregado, e para verificar o kernel do Linux e estender um PCR com esses dados;
  • Os PCRs podem ser lidos por meio do sysfs, no arquivo /sys/bus/platform/devices/tpm*/pcrs do driver do TPM para seu chip TPM;
  • TrouSerS 0.3.1 tpm_getpubek parece não funcionar muito bem, ele obtém os atributos PUBEK errados do chip NSC TPM em um T43 (mas os dados chave em si estão corretos). Compare com sys/bus/platform/devices/tpm*/pubek para verificar o seu.
por 26.05.2013 / 00:49