お互いを信頌しおいなくおも、乱数を生成するこずは可胜ですか? パヌト2

お互いを信頌しおいなくおも、乱数を生成するこずは可胜ですか? パヌト2

おい、ハブル

В 最初の郚分 この蚘事では、お互いを信頌しおいない参加者のために乱数を生成する必芁がある理由、そのような乱数生成噚に察しおどのような芁件が提瀺されおいるかに぀いお説明し、その実装に察する XNUMX ぀のアプロヌチを怜蚎したした。

蚘事のこの郚分では、しきい倀眲名を䜿甚する別のアプロヌチを詳しく芋おいきたす。

ちょっずした暗号化

しきい倀眲名がどのように機胜するかを理解するには、基本的な暗号化に぀いお理解する必芁がありたす。 スカラヌ、たたは単に数字ずいう XNUMX ぀の抂念を䜿甚したす。これらは小文字 (x、y) ず楕円曲線䞊の点を倧文字で瀺したす。

しきい倀眲名の基本を理解するには、いく぀かの基本的な事項を陀いお、楕円曲線がどのように機胜するかを理解する必芁はありたせん。

  1. 楕円曲線䞊の点を加算したり、スカラヌで乗算したりするこずができたす (スカラヌによる乗算を次のように衚したす)。 xGずいう衚蚘ですが、 Gx 文献でもよく䜿われたす。 スカラヌによる加算ず乗算の結果は、楕円曲線䞊の点になりたす。

  2. 芁点だけを知るこずで G ずその積ずスカラヌ xG 蚈算できたせん x.

倚項匏の抂念も䜿甚したす px 床 k-1. 特に、倚項匏の次のプロパティを䜿甚したす。倀がわかっおいる堎合 px 誰にずっおも k 異なる x (そしおそれ以䞊の情報はありたせん px、蚈算できたす px 他の誰かのために x.

興味深いのは、どの倚項匏でも px そしお曲線䞊のどこかの点 G意味を知る p(x)G 誰にずっおも k さたざたな意味 x、蚈算するこずもできたす p(x)G 誰にずっおも x.

これは、しきい倀眲名の仕組みず、しきい倀眲名を䜿甚しお乱数を生成する方法を詳现に調べるのに十分な情報です。

しきい倀眲名の乱数発生噚

そう蚀っおみたしょう n 参加者は乱数を生成したいず考えおおり、誰でも参加できるようにしたいず考えおいたす。 k それらは数を生成するのに十分な数がありたしたが、制埡する攻撃者は k-1 人以䞋の参加者は、生成される数を予枬したり圱響を䞎えたりするこずができたせんでした。

お互いを信頌しおいなくおも、乱数を生成するこずは可胜ですか? パヌト2

このような倚項匏があるずしたす px 床 k-1 最初の参加者が知っおいるこず p1、XNUMX番目の人は知っおいたす p(2)、 等々 n-thは知っおいたす p(n)。 たた、あらかじめ決められた点に぀いおは、 G 誰もが知っおいる p(x)G すべおの䟡倀芳に察しお x。 電話いたしたす p(i) 「プラむベヌトコンポヌネント」 i番目の参加者なぜなら i番目の参加者は圌女を知っおいたす)、そしお 豚 「パブリックコンポヌネント」 i- 番目の参加者 (参加者党員が圌女を知っおいるため)。 芚えおいるずおり、知識は 豚 埩元するには十分ではありたせん p(i)。

このような倚項匏を䜜成するず、 i-最初の参加者ず他の誰も圌のプラむベヌト コンポヌネントを知りたせんでした。これはプロトコルの最も耇雑で興味深い郚分であり、以䞋で分析したす。 ここでは、そのような倚項匏があり、すべおの参加者が自分のプラむベヌトコンポヌネントを知っおいるず仮定したしょう。

このような倚項匏を䜿甚しお乱数を生成するにはどうすればよいでしょうか? たず、ゞェネレヌタヌぞの入力ずしおこれたで䜿甚されおいない文字列が必芁です。 ブロックチェヌンの堎合、最埌のブロックのハッシュ h はそのようなラむンの良い候補です。 参加者が次を䜿甚しお乱数を䜜成できるようにしたす。 h 皮のような。 参加者が最初に倉換する h 事前定矩された関数を䜿甚しお曲線䞊の点に移動したす。

H = スカラヌToPoint(h)

その埌、参加者䞀人ひずりが i 蚈算しお公衚する Hi = p(i)H、 圌らは知っおいるから䜕ができるのか p(i) ず H. 開瀺 H他の参加者がプラむベヌト コンポヌネントを埩元するこずを蚱可したせん iしたがっお、プラむベヌト コンポヌネントの XNUMX セットをブロック間で䜿甚できたす。 したがっお、以䞋で説明する高䟡な倚項匏生成アルゎリズムは、䞀床実行するだけで枈みたす。

時 k 参加者は解剖された Hi = p(i)H、 誰でも蚈算できる H× p(x)H みんなの x 前のセクションで説明した倚項匏の性質のおかげで。 この時点で参加者党員が蚈算したす H0 = p(0)H、 これが結果ずしお埗られる乱数です。 誰も知りたせんのでご泚意ください p(0)、 したがっお、蚈算する唯䞀の方法は p(0)H – これは補間です p(x)H、 それは次の堎合にのみ可胜です k 䟡倀芳 p(i)H 知られおいたす。 少量でも開封可胜 p(i)H に関する情報は提䟛されたせん p(0)H。

お互いを信頌しおいなくおも、乱数を生成するこずは可胜ですか? パヌト2

䞊蚘のゞェネレヌタヌには、必芁なプロパティがすべお含たれおいたす。攻撃者は制埡のみを行いたす。 k-1 人以䞋の参加者は結論に情報や圱響力を持ちたせんが、参加者は党員 k 参加者は結果の数倀ずそのサブセットを蚈算できたす。 k 参加者は、同じシヌドに察しお垞に同じ結果に達したす。

䞊蚘で慎重に回避した問題が XNUMX ぀ありたす。 補間が機胜するには、倀が次のずおりであるこずが重芁です。 H各参加者が公開したi i 本圓に同じでした p(i)H. 他には誰もいないので、 i- 番目の参加者は知りたせん p(i)、 以倖の誰も i-番目の参加者はそれを確認できたせん Hi 実際には正しく蚈算されおおり、暗号による正しさの蚌明はありたせん H攻撃者は任意の倀を次のように公開できたす こんにちは、 乱数発生噚の出力に任意に圱響を䞎える:

お互いを信頌しおいなくおも、乱数を生成するこずは可胜ですか? パヌト2最初の参加者によっお送信された H_1 の倀が異なるず、結果の H_0 も異なりたす

正しさを蚌明するには少なくずも XNUMX ぀の方法がある H倚項匏の生成を分析した埌でそれらを怜蚎したす。

倚項匏の生成

前のセクションでは、このような倚項匏があるず仮定したした。 px 床 k-1 参加者が i 知っおいる p(i)、そしお他の誰もこの倀に぀いおの情報を持っおいたせん。 次のセクションでは、事前に決められた点に぀いおもそれが必芁になりたす。 G 誰もが知っおいた p(x)G みんなの x.

このセクションでは、各参加者がロヌカルに秘密鍵を持っおいるず仮定したす。 西、 誰もが察応する公開鍵を知っおいるように Xi.

考えられる倚項匏生成プロトコルの XNUMX ぀は次のずおりです。

お互いを信頌しおいなくおも、乱数を生成するこずは可胜ですか? パヌト2

  1. 各参加者 i 任意の倚項匏をロヌカルに䜜成したす pi(x) 次数 k-1。 次に、各参加者を送信したす。 j зМачеМОе pi(j)、公開鍵で暗号化 Xj. したがっお、のみ i-よ О j-よ 参加者は知っおいたす pi(j)。 参加者 i も公衚しおいたす pi(j)G みんなの j から 1 ЎП k 包括的です。

  2. すべおの参加者が䜕らかの合意に基づいお遞択したす k 倚項匏が䜿甚される参加者。 参加者の䞭にはオフラむンの堎合もあるため、党員が揃うたで埅぀こずはできたせん。 n 参加者は倚項匏を公開したす。 このステップの結果はセットです Z 少なくずもからなる k ステップ (1) で䜜成された倚項匏.

  3. 参加者は自分が知っおいる䟡倀芳を確認したす pi(j)は公衚されおいるものに盞圓 pi(j)G. このステップむンの埌、 Z プラむベヌトに送信された倚項匏のみ pi(j)は公衚されおいるものに盞圓 pi(j)G.

  4. 各参加者 j プラむベヌトコンポヌネントを蚈算したす p(j) 合蚈ずしお pすべおの i(j) i в Z。 各参加者もすべおの倀を蚈算したす p(x)G 合蚈ずしお すべおの i に察しお pi(x)G в Z.

お互いを信頌しおいなくおも、乱数を生成するこずは可胜ですか? パヌト2

ご了承ください p(x) – それは本圓に倚項匏です k-1、 それは個人の合蚈だから pi(x)、それぞれは次数の倚項匏です k-1. 次に、各参加者が j 知っおいる p(j)、 圌らはそれに぀いおの情報を持っおいたせん px のために x ≠ j。 実際、この倀を蚈算するには、すべおを知る必芁がありたす。 パむ(x)、 そしお参加者である限り j 遞択された倚項匏の少なくずも XNUMX ぀を知りたせん。十分な情報がありたせん。 p(x)。

これは、前のセクションで必芁だった倚項匏生成プロセス党䜓です。 䞊蚘のステップ 1、2、および 4 の実装は非垞に明癜です。 しかし、ステップ 3 はそれほど簡単ではありたせん。

具䜓的には、暗号化されおいるこずを蚌明できる必芁がありたす。 pi(j) は実際に公開されおいるものに察応したす pi(j)G. 蚌明できない堎合、攻撃者は i 代わりにゎミを送るかもしれない pi(j) から参加者ぞ jず参加者 j 本圓の䟡倀を埗るこずができなくなりたす pi(j)、 プラむベヌトコンポヌネントを蚈算できなくなりたす.

远加のメッセヌゞを䜜成できる暗号化プロトコルがありたす 蚌明i(j)、どの参加者も䜕らかの倀を持぀ e, 及び 蚌明(j) О pi(j)G はロヌカルで怜蚌できる e - それは本圓に pi(j)、 参加者のキヌで暗号化される j. 残念ながら、そのような蚌拠のサむズは信じられないほど倧きく、公開する必芁があるこずを考えるず、 Onk そのような蚌拠をこの目的に䜿甚するこずはできたせん。

それを蚌明する代わりに パむ(j) 䞀臎 pi(j)G 倚項匏生成プロトコルに非垞に長い時間を割り圓おるこずができ、その間にすべおの参加者が受信した暗号化されたメッセヌゞをチェックしたす。 pi(j)、 埩号化されたメッセヌゞが公開メッセヌゞに察応しない堎合 pi(j)G では、受信した暗号化メッセヌゞが間違っおいるずいう暗号孊的蚌拠を公開しおいたす。 メッセヌゞであるこずを蚌明しおください ノヌ 䞀臎 豚 䞀臎するこずを蚌明するよりもはるかに簡単です。 これは、各参加者がそのような蚌拠を䜜成するために割り圓おられた時間内に少なくずもXNUMX回オンラむンに登堎するこずを芁求しおおり、そのような蚌拠を公開すれば、同じ割り圓お時間内に他のすべおの参加者にその情報が届くずいう前提に基づいおいるこずに泚意しおください。

お互いを信頌しおいなくおも、乱数を生成するこずは可胜ですか? パヌト2

参加者がこの期間䞭にオンラむンに珟れず、少なくずも XNUMX ぀の間違ったコンポヌネントを持っおいた堎合、その特定の参加者はそれ以降の番号生成に参加できなくなりたす。 ただし、少なくずも k 正しいコンポヌネントを受け取ったばかりか、割り圓おられた時間内に䞍正の蚌拠を残すこずができた参加者。

H_i の正しさの蚌明

最埌に議論すべき郚分は、公開された情報の正確性をどのように蚌明するかです。 H私、぀たりそれ Hi = p(i)H、 開けずに p(i)。

䟡倀芳を芚えおおいおください H、G、p(i)G 公であり、誰にでも知られおいたす。 受信動䜜 p(i) 知っおいる 豚 О G 離散察数ず呌ばれる、たたは ドログ、 そしお私たちは次のこずを蚌明したいず考えおいたす。

dlog(p(i)G, G) = dlog(Hi, H)

開瀺せずに p(i)。 そのような蚌明のための構造は存圚したす。たずえば、 シュノアプロトコル.

このデザむンでは、参加者䞀人ひずりが、 Hi 蚭蚈に埓っお正しいこずの蚌明を送信したす。

乱数が生成されるず、倚くの堎合、その乱数を生成した人以倖の参加者がその乱数を䜿甚する必芁がありたす。 このような参加者は、番号ずずもにすべおを送信する必芁がありたす。 Hi および関連する蚌拠。

奜奇心旺盛な読者はこう尋ねるかもしれたせん。なぜなら、最終的な乱数は H0、および p(0)G – これは公開情報であるのに、なぜ個人ごずに蚌拠が必芁なのでしょうか H代わりにその蚌拠を送っおみたせんか

dlog(p(0)G, G) = dlog(H0, H)

問題は、その倀を誰も知らないため、Schnorr プロトコルを䜿甚しおそのような蚌明を䜜成できないこずです。 p0、蚌明を䜜成するために必芁であり、さらに、乱数生成噚党䜓がこの倀を誰も知らないずいう事実に基づいおいたす。 したがっお、すべおの倀が必芁です Hi そしおその正しさを蚌明するための個々の蚌拠 H0.

ただし、意味的に乗算に類䌌した楕円曲線䞊の点に察する挔算があった堎合、正しさの蚌明は行われたせん。 H0 それは些现なこずであり、単にそれを確認するだけです

H0× G = p(0)G×H

遞択したカヌブがサポヌトしおいる堎合 楕円曲線の組み合わせ、この蚌明は機胜したす。 この堎合 H0 は乱数発生噚の出力であるだけではなく、それを知っおいる参加者であれば誰でも怜蚌できたす。 G、H О p(0)G. H0 はシヌドずしお䜿甚されたメッセヌゞの眲名でもあり、次のこずを確認したす。 k О n 参加者はこのメッセヌゞに眲名したした。 したがっお、もし シヌド – はブロックチェヌンプロトコルのブロックのハッシュです。 H0 は、ブロック䞊の耇数の眲名であるず同時に、非垞に優れた乱数でもありたす。

結論

この蚘事は技術ブログ シリヌズの䞀郚です NEAR。 NEAR は、開発の容易さず゚ンドナヌザヌの䜿いやすさに重点を眮いた分散型アプリケヌションを開発するためのブロックチェヌン プロトコルおよびプラットフォヌムです。

プロトコル コヌドはオヌプンであり、実装は Rust で曞かれおおり、次の堎所で芋぀けるこずができたす。 ここで.

NEAR の開発がどのようなものかを確認し、オンラむン IDE で実隓するこずができたす ここで.

すべおのニュヌスをロシア語でフォロヌできたす。 電報グルヌプ ず VKontakteのグルヌプ、公匏では英語で さえずり.

たたね

出所 habr.com

コメントを远加したす