0

機密IDデータの小さなブロックをハッシュすることを検討していましたが、難読化された後は、データブロック全体の完全な一意性を維持する必要があります。

そこで、公に知られている入力データ(たとえば、128ビットのゼロ)を暗号化して、難読化するデータをキー/パスワードとして使用し、それを破棄して、元のデータを保護するというアイデアを思いつきました。これまでに発見されています。

ハッシュアルゴリズムについてはすでに知っていますが、私の問題は、実際の入力を取得できないようにしながら、完全な一意性(一般的には入力から出力への1:1マッピング)を維持する必要があることです。プロセス中に情報が失われるため、ハッシュはこの機能を提供できません。

「暗号化」されたデータを取得する必要はありません。それ以降はID番号としてのみ使用されます。

実際のGUID/UUIDは、識別子ごとに手動で識別子を制御する必要があるため、ここでは適切ではありません。IDは、不明または任意に生成されたデータにすることはできません。


編集:これらの識別子が何でできているかを正確に明確にするために:

  • (暗号化されていない) 64ビットタイムスタンプ
  • ID生成カウンター(ファイルタイプごとに1カウント)
  • ランダムデータ(複数の暗号化されたキーを非類似にするため)
  • MACアドレス(または、それが利用できない場合は、トップビット+ランダムな数字を設定します)
  • その他のPC固有の情報(レジストリから)

全体で合計192ビットになるはずですが、暗号化されたセクションのコンテンツサイズは異なる可能性があります(これは決して最終的な仕様ではありません)。


与えられた:

  • 静的IV値
  • 任意の128ビットキー
  • 静的な128ビットの入力

同じ入力とIV値が与えられた場合、AESキーは1:1 key<---->outputマッピングになるような方法で処理されますか?

4

1 に答える 1

4

いいえ。AESは、抽象的には、キーを使用してランダムに選択する順列のファミリーです。これらの順列の1つ(つまり、特定のAESキーでの暗号化)では、順列は全単射であるため、衝突は発生しません。

ただし、2つの異なる順列(つまり、異なるAESキーでの暗号化、つまり、所有しているもの)の場合、衝突が発生しないという保証はありません。確かに、誕生日のパラドックスのために、衝突の可能性はおそらくあなたが思っているよりも高いでしょう。

IDが短い(1024ビット未満)場合は、RSA暗号化を実行するだけで、必要な情報を得ることができます。秘密鍵を忘れるだけです。

于 2012-07-16T21:11:01.663 に答える