web-dev-qa-db-ja.com

ユーザーのSMBIOS UUIDをどのくらい保護する必要がありますか?

サーバーは数百台のコンピューターからデータを受信します。どのコンピューターが何を送信したかを追跡する一環として、ハードウェアのフィンガープリントを作成し、その結果をデータベースに保存します。

今日、そのために使用する最も賢明なソースはSMBIOS UUIDです。これらの128ビットの数値はマザーボードの製造元によって設定され、一意であると想定されていますが、それほど予測できないわけではありません。たとえば、最後の部分にはオンボードNICのMACアドレスが含まれていることが多く、そのいくつかのビットはメーカー固有です。

私は正確なUUIDを知ることで多くを得ることができないので、ハッシュを使用して問題ありません。それはすでにいくらかのプライバシーを導入するでしょう。ただし、(追加の測定を行わなくても)ハッシュはすばやく計算でき、これらのUUIDは実際には128ビットのエントロピーを提供しないので、ハッシュをUUIDまで追跡することは可能だと思います。

サーバーが危険にさらされる場合に備えて、上記を防ぐためにより高価なハッシュ関数を導入する価値はありますか?ソルトをハードウェアに格納できず、データはすでにハッシュされているはずなので(実際のUUIDを伝えないため)、ソルトを使用できないと思います。サーバーでは、同じソースからのデータをグループ化できるはずです。特定の会社または個人に属していることを知っているかもしれない、あるコンピューターのUUIDを知ることはどれほど役立つでしょうか?

使用される派生IDは、システムの再インストール後も存続する必要があるため、純粋にソフトウェアベースの代替では機能しません。カスタムハードウェア(ハードウェアキー/ドングルなど)を導入することはできません。私が持っている他のアイデア、それらがどれほど優れているかはわかりません:

  • 1人のユーザーが同じハッシュに2回以上遭遇する可能性がまだ低いように、意図的にハッシュを短くします(そのため、システムを区別することができます)。適切な長さを確認し、実際のUUIDの代わりに、可能性のあるUUIDのかなり制限されたセットを確立できる場合の改善の長さ
  • ハッシュに少し余分なハードウェアを追加しますが、変更する可能性が高くなりますが、ソースのエントロピーは多少増加します
7
Thijs van Dien
  1. 少なくともアプリケーション固有のソルト(アプリでハードコード化)を追加できるため、小規模なデータベース専用のRainbowテーブルを構築しても価値はありません。
  2. より遅いハッシュ関数を使用できます(アプリの起動ごとに1回だけハッシュを事前計算します)。
  3. 可能であれば、アプリケーションにエントロピーを追加すると、非常に役立ちます。
  4. 可能な限り、ハッシュを識別可能な情報に関連付けたり、関連付けを難しくしたりしないでください。たとえば、ユーザーのパスワードにUIDハッシュを復号化するように要求します。 (より多くの提案のために、私たちはあなたがそれを必要とするものについてもっと知る必要があります)

ハッシュを短くすると役立つ場合がありますが、他の場合には有害になる可能性があります。私見は、UIDがIPや名前/会社などの他の情報に関連付けられている状況ではあまり機能しません。

1
Peter Harmann