3

マルチユーザー システムがあるとします。

  • 中央機関 (C) は仮想財 (Zk) を作成し、独自の所有権に発行できます。
  • 財 (Zk) の所有者 (Xi) は、別のユーザー (Xj) に所有権を譲渡できます。
  • ユーザー (Xi) は商品 (Zk) を所有していると主張でき、これは検証可能でなければなりません。

たとえば、次のようになります。

  1. C は、Z1 と Z2 という 2 つの仮想商品を作成します。(そしてZ3を作成したことはありません)
  2. C は Z1 の所有権をユーザー X1 に譲渡します
  3. X1 は Z1 の所有権を X2 に譲渡します

次の主張は真であるとテストする必要があります。

  • X2 が Z1 を所有していると主張する
  • C は Z2 を所有していると主張する

次の主張は、false をテストする必要があります。

  • X2 は Z2 を所有していると主張する (所有者ではない)
  • X2 は Z3 を所有していると主張する (存在しない)
  • X1 は Z1 を所有していると主張しています (前の所有者)

質問は次のとおりです。

  • そのようなシステムのアーキテクチャのスケッチは何ですか?
  • どのような暗号化方式 (デジタル署名、PKI など) をどのような方法で使用していますか?
  • どのような鍵が作成され、誰に与えられますか?
  • C が適切な Zk を作成するために使用するアルゴリズムは何ですか?
  • Xi と Xj が所有権を譲渡するために使用するアルゴリズムは何ですか?
  • Xi が Zk を所有するという主張を生成するために使用するアルゴリズムは?
  • Xj が Zk を所有しているという主張を検証するために、Xi はどのアルゴリズムを使用しますか?
4

2 に答える 2

1

問題は、古典的な暗号化プリミティブからの一種です。他の回答で詳細に述べられているように、公開鍵暗号を使用する必要があります。以下は私が考えることができる手順です:

商品の所有権、たとえば商品IDとユーザーの公開鍵のバインドは、すべての商品が一意に所有されていることを確認するために、権限CAによって追跡される必要があります。

  • 商品が最初にユーザーによって作成された場合、ユーザーはその公開鍵と商品IDをCAに提出して承認を受ける必要があります。(商品自体が不変の場合は、地図作成ハッシュ値を商品IDとして使用して、商品と商品IDの一意のバインドを強制できます。それ以外の場合は、商品と商品IDの間のバインドを追跡するための追加のスキームを導入する必要がありますが、これについては説明しません。ここ)
  • 所有権を証明するには、CAに依存する必要があります。ユーザーは公開鍵と商品IDタプルをCAに投稿します。CAはtrueまたはfalseを返します。
  • 所有権を譲渡するために、所有者は商品ID、彼の公開鍵、および新しい所有者の公開鍵にCAへの署名を生成します。CAはデータベースをチェックして更新し、新しい所有者にも通知する場合があります。
  • 所有権の証明へのCAの関与を最小限に抑えるための解決策のひとつは、CAが時間指定の「所有権チケット」(商品IDの署名、所有者の公開鍵、無効な日付)を発行できるようにすることです。これにより、CAはすべての所有権検証プロセスに関与する必要がなくなります。商品の所有者は、有効期限が切れる前にチケットを更新します。また、商品は無効日を過ぎた後にのみ譲渡可能です。

CAの主な役割は、2人のユーザーが同じ商品を請求できないことを保証することです。これを「二重請求」と呼びます。分散型の方法で「二重請求」の脆弱性を取り除くことは非常に困難です。非常によく似た質問に対処しようとするビットコインという非常に興味深いプロジェクトがあります。これは、CAを廃止するための新しいソリューションを提供します。あなたが興味を持っているなら、デザインペーパーは本質的な考えをカバーしています

于 2012-06-06T18:21:38.057 に答える
1

デジタル署名は、送信者によって生成されたメッセージが実際にその送信者によって生成されたことを確認するために使用されます。この場合、デジタル署名を使用して、製品の作成者が実際に中央機関であることを確認できます。この場合、製品には常に CA が秘密鍵を使用して生成したデジタル署名が含まれているため、誰でも検証のために CA の公開鍵を使用できます。

転移、ここが難しいところです。どの当事者が検証を行う予定ですか。それはCAになるのでしょうか、それとも当事者2がアイテムを購入する前に当事者1が真の(そして正当な)所有者であることを知るためですか、それともその両方ですか?

OK、あなたのコメントに基づいています。答えは、常に CA を混在させることだと思います。この場合、使用時まで所有者のシステムで AES のような対称アルゴリズムを介して暗号化された仮想アイテムを基本的に常に保持できます。仮想商品を復号化するためのキーは、所有者のシステムに (長期的に) 保存されることはなく、要求されたときに CA によって渡されます。これで、CA は現在の有効なユーザーのキーを保持できます。これらのキーがどのように保存または計算されるかについては、後で説明します。

ユーザー Xj の場合、アイテム Z1 がユーザー Xi に本当に属していることを確認するのは、所有者のユーザー ID とアイテムの暗号化されたコピーで構成されるメッセージに CA が CA 秘密鍵で署名するのと同じくらい簡単です。ユーザー名がメッセージに含まれているため、ユーザー Xj が CA の公開鍵を使用して署名を検証すると、ユーザー Xj はその署名が有効であり、ユーザー Xi によって所有されていることを認識します。

鍵の設定: CA は明らかに非対称鍵ペア (秘密鍵と公開鍵) を持つ必要があります。また、各ユーザーは非対称キー ペアを持っている必要があります。CA はその公開鍵をそのユーザーと共有し、各ユーザーは自分の公開鍵を CA と共有します (これは何らかの形式のアカウント設定の一部である可能性があります)。ユーザーは、メッセージに公開鍵を追加するユーザーの秘密鍵を使用して暗号化および署名された一意のユーザー ID を暗号化することにより、CA にログインします。CA は、提供された公開鍵を使用して復号化します (これらはすべて、SSL セットアップ内で処理するか、本質的には一意の ID をより適切に保護するための暗号化の第 2 層で処理できます)。購入が発生すると、CA はキーを作成できます。たとえば、ユーザーの一意の ID、仮想アイテムのシリアル番号、および CA の HASH を実行することによってキーを作成できます。■ 対称アルゴリズムの入力キーとして使用する PRIVATE キー。CA は、この新しい計算されたキーを使用してアイテムを暗号化し、(CA) 非公開非対称キーを使用して署名します。新しく暗号化されたアイテムがユーザーのシステムに送信されます。CA はキーを計算する方法を知っているため、キーを保存する必要はありません。CA の秘密キーは、ハッシュとその他のものを取得しているため保護されており、アイテムはユーザーごとに一意に暗号化されています。

有効なアイテムを復号化するために、ユーザーはすでにログインしており、CA はこれがこのアイテムの有効な所有者であることを既に認識しているため、キーを計算し、ライブ復号化のためにユーザーに SSL ダウンすることができます。ただし、このキーはマシンに保存されることはありません。

アイテムを所有していないユーザーが有効なユーザーのアイテムのコピーを使用しようとすると、次の 2 つのいずれかが発生します。非所有者のユーザーがログインし、アイテムの間違ったキーが計算され、アイテムがCA は、ユーザーが実際にはアイテムを所有していないという自動認識を実行し、そこからすべてのアカウントからアイテムをロックし、有効なユーザーのアカウントに誰かがそのアイテムを使用しようとしていることを知らせます。

譲渡: 有効なユーザーがログインし、アイテムを別のユーザーに譲渡したいと述べます。この時点で、アイテムは所有者 1 との関連付けが解除され、所有者 2 に再度関連付けられます。CA がすべてのキー生成を所有しているため、所有者 1 はアイテムを復号化できなくなります。実際、転送の時点で、ソフトウェアは所有者 1 のローカル システム上のコピーを単純に削除できます。

長くなって申し訳ありませんが、この種の問題は通常発生します。

于 2012-06-05T14:57:41.010 に答える