web-dev-qa-db-ja.com

IoTでブロックチェーンを利用するために、低計算パワーデバイスと高計算パワーデバイスを同等にすることができるメモリハードハッシュアルゴリズムはどれですか?

最近、IBMとMicrosoftは、ビットコインのブロックチェーンをモノのインターネット(IoT)開発に利用することに関心( IBM postMicrosoft post )を示しました。近い将来、道路状況や交通データを相互にオーバーレイするスマートカーに実装されるブロックチェーン技術を想定します。ビットコインのブロックチェーンは、SHA256のProof-of-Workに基づいているか、ハッシュされたときにターゲットを超える証拠を見つけます。これは、二重支出の攻撃に取り組むのに役立ちます。

上記の将来のスマートカーの例では、正直なノードの大部分は低計算パワーデバイス(おそらくRaspberry Piのような)になるため、実装されたマイニングアルゴリズムが使用できない場合、敵対者は二重支出攻撃を簡単に実行できるデバイスのマイニング機能をボトルネックにする。

質問では、「 モバイルデバイスで極端に遅くなることなく、コンピューターでパスワードハッシュが安全であることを確認するにはどうすればよいですか? "Mr.nslは、セキュリティと速度のバランスを取ることができるパスワードハッシュアルゴリズムを探しています高速CPUおよび低速のモバイルデバイス用。高速なCPU/GPUの計算能力を利用して、低計算デバイスのネットワークを超える利点を追い越すことができるアルゴリズムを探しています。したがって、この問題に対処する方法は2つあります。

  1. 低コンピューティングデバイスと高速コンピューティングデバイス間(ラップトップとRaspberry Pi間など)である程度の公平性/バランスを提供できるハッシュ関数を利用します。
  2. ネットワーク内のピアに接続している間、ノードは他のバージョンを送信し、バージョンが同じである場合、ノードはverack(接続確認)メッセージの交換を続行します。したがって、おそらくこれらのデバイスは、インストールされているクライアントのバージョンとともに、計算能力を送信する必要があります。したがって、要求側のピアがあまりにも多くの計算能力を持っている場合、他のノードは彼に接続しません。

したがって、質問、

  1. 作業証明の解決が自分の計算速度に直接影響することを理解していますが、暗号の人は、仮定1を満たすことができるメモリハードハッシュアルゴリズムを提案できます。つまり、Raspberry Pi(現在、 512 MBのRAM)、8 GBの平均的なコンピューターがネットワークを追い越して二重支出攻撃を実行しないようにするには、

  2. また、ノードとのハンドシェイク中に物理的にreal計算能力を送信することは可能ですか?

ありがとう

4
Nur

メモリ制限のあるアルゴリズムはaltcoinコミュニティ(ビットコインに似たアイデアに基づく「代替」暗号化コイン)で議論されていますが、「ローエンド」の汎用コンピュータ(RasPiなど)と高エンドの汎用コンピューターですが、これらは、計算能力(ワットあたりの計算能力)を何桁も超える特別な目的のハードウェアを防ぐために使用されます。ハッシュ化にはチップスペースがあまり必要ないという考え方です。1つのケースに何度もコピー/貼り付けするだけで、多数のハッシュを並列で計算するチップを構築します。一方、メモリdoesにはスペースが必要で、メガバイトのメモリには多くのスペースが必要です(現在のプロセッサのダイの画像を見てください。ダイスペースの膨大な量は、計算ではなくキャッシュによって占められていますエンジン)。ビットコインの場合、専用ビットコインマイニングチップ(FPGAマイナー以降ASICマイナー)は、汎用マシンよりも優れているため、約2年前に「世界を席巻」しました。 DogeCoinは、sukosevatoによってすでに言及されているScryptアルゴリズムを使用します。

RasPiメモリ(0.5GB)と愛好家のPC(32GB)の比率は、これらのデバイス間のCPUパワーの違いよりも大きい可能性が高いため、メモリ制限を行っても、RasPiが追いつくのに役立ちません。実際、nの計算能力とn倍のメモリを備えたデバイスを、より小さなデバイスのメモリの倍にして、nより小さなデバイスの。

つまり、要約すると、高速な(ゲーム)PCにPi(まだ多くの計算能力がある)よりも大きな利点を与えないCPUおよびメモリ操作に基づくハッシュアルゴリズムを見つけることができないと思います。

2番目の質問に対処するため、sukosevatoは正解です。実際よりも計算能力が低いと主張しているデバイスを防ぐ方法はありません。遅いデバイスであるかのように振る舞う高速のデバイスは、それが体系的に利用されている場合に捕捉できます。デバイスのハッシュ速度がわかっている場合、特定の時間間隔で正常にマイニングされたコインの数がわかります。困難の少ないハッシュを解決する必要があり、実際に小さなデバイスで見つけることができるよりも多くのソリューションを送信することによって「小さなデバイスのボーナス」を利用する場合、ネットワークはあなたを禁止しようとする可能性があります。

低すぎる計算能力を主張するデバイスを防ぐために私が見る唯一の合理的な方法は、増加した計算能力を示すことを、それを隠すよりも有利にすることです。悲しいかな、これは次のように直接変換されます。高速のデバイスは、フルスピードのアドバンテージを利益に変換できなければなりません。

2
Michael Karcher

私はビットコインにあまり慣れていないので、それがIoTにどのように関連しているかはわかりません。私が知っているメモリハードハッシュ関数の最良の例は Scrypt です。

2つ目の質問にはある程度回答できます。ランダムなバイト文字列をノードに簡単に送信し、特定の時間枠内で可能な限り頻繁にハッシュするように指示することができます。このようにして、ノードのパフォーマンスの下限を設定できます。彼らがそれをハッシュすることができた頻度が高いほど、それはより速くなります。ただし、非常に高速なノードが単に100.000回ハッシュするのを止めて、残りの期間は何もせずに、より遅いノードのように動作することはありません。したがって、実際の計算能力の下限は可能ですが、高速のコンピュータは常に低速であると偽ることができるため、上限はそうではありません。

1
sukosevato