私はこの特定のコンピューティング/暗号/データベースの問題について何年も考えてきましたが、すでに解決策があるかどうか知りたいだけです。正直なところ、この問題がどの分野に属しているかはわかりません。
一言で言えば、人物Aはデータのリストを持ち、別の人物(B)はこのリストの各アイテムにスコアを与え、これらすべてのスコアを合計してリスト全体の総合スコアを提供するアルゴリズムを持っています。データが非常に安全に保たれるように(できれば人物Aを離れないように)、データリストでアルゴリズムを実行して、人物Bがアルゴリズムが適切に実行され、改ざんされていないことを確認するにはどうすればよいでしょうか。
ここに例があります:アンナとボブは大きな村に住んでいます。アンナは自分のコンピューターに、村で行ったすべての良いことと悪いことのリストを持っています。ボブは、そのようなリストの非常に単純なスコアリングアルゴリズムを作成しました。これは、リストの各項目で実行され、スコアを与え、これらすべての数値を加算して、アンナに最終スコアを与えます。このスコアにより、ボブはアンナが村のコミュニティにとってどれほど有益であり、ボブの意見に固有のものであるかを知ることができます。(これは実際に私が作りたいシステムなので、これは単なる例ではありません)
しかし、アンナはボブに彼女のリストを与えることを望んでいません。ボブはそこに潜在的に恥ずかしい情報にアクセスできるからです(誰もが自分のクローゼットにスケルトンを持っています)。ただし、ボブは嘘をついてボブにスコアが非常に高いのでボブが彼女を助ける可能性が高いと伝えるため、ボブは自分でアルゴリズムを実行することをアンナに信頼していません。
私がすでに考えたいくつかの解決策がありますが、すべて問題があります:
A.ランダムな人物を見つけてデータを取得し、アルゴリズムを実行してスコアを送り返しますが、このランダムな人物がアンナを知らず、アンナを助けたり、データのコピーを作成したりして、後で試すのは難しい場合があります。それをたどってアンナを脅迫します。
B.アンナにアルゴリズムを実行させますが、たとえば、イベントを1と評価する代わりに、チェックコードをスコアにエンコードして1.0000000000797と評価します。これにより、ボブが後でこれをチェックコードとして使用して、指定されているかどうかを確認できます。スコアは正しいです。ただし、このチェックはボナによって誤用され、アンナが何をしたかを示すこともできます。また、アンナがボブのアルゴリズムを実行するにはフルアクセスが必要であることを考えると、このようなシステムはリバースエンジニアリングが簡単で、アンナが正しいチェックコードで誤ったスコアを出すことができると想像できます。
C.村は、そのようなデータとアルゴリズムを取得して一緒に実行するための安全なサーバーを作成します。ただし、AnnaとBobはどちらも、これを実行するのに十分なほど信頼しておらず、データのコピーを作成したり、スコアを変更したりすることはありません。また、私はこれがP2Pシステムであることを望みます。