インタビューで分散コンピューティングについてこの質問をされました。
インタビュアー:
「サムはクライアントのコンピューターで特定のコードを実行して出力を取得しました。しかし、クライアントがコードを変更したため、コードは別の出力を返しました。
ここで、Samは、コードが変更されたか、戻り値が変更されたかを検出できるかどうかを知りたいと考えています。これは可能ですか?」
クライアントが自分のコンピューター上にあるので、コードを変更するのを防ぐことは不可能だと思いました。または私は間違っていますか?そうでない場合は、コードが変更されたかどうかを検出したり、クライアントがコードを操作して出力するのを困難にするために何かをしたりできますか?
クライアントがコードを操作するかどうかは実際には問題ではありません。実際に重要なのは、サーバーがコードから受け取る結果だけです。結局のところ、クライアントはコードをまったく実行していない可能性があり、ハードコードされた応答を返すだけかもしれません。
したがって、質問は次のようになります。サーバーはクライアントから送信された回答を信頼できますか?
一般的な答えは:いいえ。
より複雑な答えは次のとおりです。それはあなたが何をしたいかによります。たぶん、あなたがしていることは、クライアントが何かをしたことを数学的に証明しなければならない、プルーフ・オブ・ワークの概念に従順です。たぶん、特定のデータが特定の他のデータから派生したことを数学的に証明し、クライアントのデータを検証可能にする署名プロセスを含めることができます。たぶん、サーバーは2つの異なるクライアントに同じ作業を実行するように要求するか、互いに検証できる作業のセクションを重複させることができます。これにより、攻撃者は2つ(またはそれ以上)のクライアントを一度に操作する必要があり、クライアントの応答は個別に信頼できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加