web-dev-qa-db-ja.com

`head -c 2 / dev / hwrng`が機能しないのはなぜですか?

コンピューターにAtmel97SC3201があり、カーネルに次のように設定しています。

  • CONFIG_HW_RANDOM_TPM
  • CONFIG_TCG_TPM
  • CONFIG_TCG_ATMEL

/devtpm0およびhwrngですが、このコマンドを実行すると、次のようになります。

head -c 2 /dev/hwrng

出力:

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

dmesgに次のメッセージが表示されます。

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

追加の試行により、次のメッセージが生成されます。

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

これが失敗する理由、またはそれ以上のアイデア、それを機能させる方法はありますか?

4
sam

このRNGは、 トラステッドプラットフォームモジュール の一部として提供されます。コンピューターが大規模な組織の注文の一部である場合を除き、TPMはデフォルトで無効になっています。これは、構成を誤るとコンピューターが起動できなくなり、コンピューターの追跡が容易になるためです¹。

RNGを使用する場合は、BIOSで有効にする必要があります。 Thinkpad wiki には、Thinkpadの詳細な手順があります。これは、別のモデルがある場合でも、適応に役立つ可能性があります。 BIOSでTPMを有効にするだけで十分かどうか、または起動時にLinuxからTPMを初期化する必要があるかどうかはわかりません。 Linuxのサポートが必要な場合は、 TrouSerS をインストールします(ほとんどのディストリビューションにはパッケージが必要です)。

TPMの他のもの、主にセキュアブートを使用できます(マシンへのルートアクセス権を持つ人でさえ、ブートローダーに感染してルートキット²を植えることができないようにするため)。セキュアブートには Trusted Grub が必要です。

Linuxには、優れた暗号品質の疑似乱数ジェネレーターが組み込まれており、そのPRNGをシードするためのエントロピーの収集に優れていることに注意してください。したがって、ハードウェアRNGのメリットは非常に限られています。

¹ より正確には、TPMは、簡単に否定できない、なりすましにくいIDをコンピューターに提供します。これはプライバシーに関する大きな懸念事項ですが、実際には、一般的に認識されているよりもはるかに問題は少ないです。 TPMを正しく使用するソフトウェアは、コンピュータのIDをリモートパーティに送信しませんが、TPMに追跡できないアプリケーション固有のキーを使用します。つまり、サードパーティのアカウントを持っているようなものではありません。 TPMを誤って使用するソフトウェアはプライバシーを公開する可能性がありますが、どのソフトウェアも公開する可能性があります。ブラウザは、ユーザーに関する多くのことを明らかにすることで有名です。毎日のWebブラウジングは、TPMによるリスクよりもはるかに多くのことを明らかにします。
² ただし、ルートキットを植える場所は他にもあることに注意してください。 TPMは、システムをロックダウンして余分なソフトウェアをインストールするのが難しい場合にのみ、実際に保護を提供できます。

これらは、TPMを有効にするためのthinkwikiサイトからの手順です。

LinuxでのTPMの使用

ThinkWiki Webサイトの Embedded Security Subsystem からの抜粋

  • このセクションは非常に不完全ですが、開始するためのいくつかの指針があります。ThinkPadモデルのtpmチップのドライバーを有効にして2.6.23以降のカーネルをコンパイルします。
  • Securityfsを取得するにはCONFIG_SECURITYを有効にし、eCryptfsTPMサポートを使用するにはCONFIG_KEYSを有効にする必要があります。
  • TCPAログにアクセスするには、tpm_biosを有効にする必要があります。
  • Tpm_biosデータ(TCPAログ)にアクセスするには、securityfsファイルシステムを/sys/kernel/securityにマウントしてください。
  • エフェメラルキーで暗号化されたスワップパーティションを作成するには、dm-cryptを使用する必要があります。
  • TCPAログはsecurityfsディレクトリにあり、BIOSとブートローダーがPCRをどのように使用しているかを理解するのに役立つ場合があります。ログ内の各イベントの最初の番号は、そのイベントによって拡張されたPCRレジスタの番号です。
  • TPCAログの読み取り以外の目的でTPMを使用するには、TrouSerSソフトウェアスタックの最新バージョンが必要です。
  • TPMを使用してファイルシステムキーを格納するには、最新のeCryptfsユーザースペース(TPMサポートがコンパイルされている)が必要です。
  • TPMをPKCS11トークンとして使用することは可能ですが、それがnull(よく知られている)SRKを必要とするため、どれほど安全かはわかりません。
  • trusted-grubを使用して、Linuxがロードされる前にPCRを操作したり、LinuxカーネルをチェックサムしてそのデータでPCRを拡張したりできます。
  • PCRは、TPMチップのTPMドライバーの/sys/bus/platform/devices/tpm*/pcrsファイルの下にあるsysfsから読み取ることができます。
  • TrouSerS 0.3.1 tpm_getpubekはうまく機能していないようですが、T43のNSC TPMチップからPUBEK属性が間違っています(ただし、キーデータ自体は正しいです)。 sys/bus/platform/devices/tpm*/pubekと比較して確認してください。
0
slm