{"id":95846,"date":"2020-10-04T01:42:23","date_gmt":"2020-10-03T23:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2"},"modified":"2020-10-04T01:42:23","modified_gmt":"2020-10-03T23:42:23","slug":"mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2","title":{"rendered":"Kann man Zufallszahlen generieren, wenn wir uns gegenseitig nicht vertrauen? Teil 2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Kann man Zufallszahlen generieren, wenn wir uns gegenseitig nicht vertrauen? Teil 2\" src=\"\/wp-content\/uploads\/2020\/10\/fc42fe5e99ce4412a0ce99eb63629a42.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Hallo, Habr!<\/p>\n<p>In <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/near\/blog\/521090\/\">dem ersten Teil<\/a><\/noindex> In diesem Artikel haben wir besprochen, warum es notwendig sein kann, Zufallszahlen f\u00fcr Teilnehmer zu generieren, die sich gegenseitig nicht vertrauen, welche Anforderungen an solche Zufallszahlengeneratoren gestellt werden und haben zwei Ans\u00e4tze f\u00fcr deren Implementierung betrachtet.<\/p>\n<p>In diesem Abschnitt des Artikels werden wir einen weiteren Ansatz ausf\u00fchrlich behandeln, der Schwellenwertsignaturen verwendet.<\/p>\n<h3>Ein wenig Kryptographie<\/h3>\n<p>Um zu verstehen, wie Schwellenwertsignaturen funktionieren, muss man ein wenig Grundkenntnisse in Kryptographie haben. Wir verwenden zwei Konzepte: Skalare, oder einfach Zahlen, die wir mit Kleinbuchstaben kennzeichnen (<em>x, y<\/em>) und Punkte auf einer elliptischen Kurve, die wir mit Gro\u00dfbuchstaben kennzeichnen.<\/p>\n<p>Um die Grundlagen der Schwellenwertsignaturen zu verstehen, muss man nicht wissen, wie elliptische Kurven funktionieren, au\u00dfer ein paar grundlegenden Dingen:<\/p>\n<ol>\n<li>\n<p>Punkte auf einer elliptischen Kurve k\u00f6nnen addiert und mit einem Skalar multipliziert werden (die Multiplikation mit einem Skalar kennzeichnen wir als <em>xG<\/em>, obwohl die Notation <em>Gx<\/em> \u0442\u043e\u0436\u0435 \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0435). \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u0441\u043a\u0430\u043b\u044f\u0440 &#8212; \u044d\u0442\u043e \u0442\u043e\u0447\u043a\u0430 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439.<\/p>\n<\/li>\n<li>\n<p>Nur aus dem Punkt <em>G<\/em> und dessen Produkt mit dem Skalar <em>xG<\/em> kann man nicht berechnen <em>x<\/em>.<\/p>\n<\/li>\n<\/ol>\n<p>Wir werden auch das Konzept von Polynomen verwenden <em>p(x)<\/em> Grad <em>k<\/em>-1. Insbesondere werden wir die folgende Eigenschaft von Polynomen nutzen: Wenn wir den Wert kennen <em>p(x) <\/em>f\u00fcr beliebige <em>k <\/em>verschiedene <em>x <\/em>(und keine weiteren Informationen \u00fcber <em>p(x)<\/em>), k\u00f6nnen wir berechnen <em>p(x) <\/em>f\u00fcr eine andere <em>x<\/em>.<\/p>\n<p>Es ist interessant, dass f\u00fcr jedes Polynom <em>p(x)<\/em> und einen bestimmten Punkt auf der Kurve <em>G<\/em>, wenn wir den Wert kennen <em>p(x)G<\/em> f\u00fcr beliebige <em>k<\/em> verschiedene Werte <em>x<\/em>, k\u00f6nnen wir auch berechnen <em>p(x)G<\/em> f\u00fcr jede <em>x<\/em>.<\/p>\n<p>Diese Informationen reichen aus, um in die Details zu gehen, wie Schwellenwertsignaturen funktionieren und wie man sie zur Generierung von Zufallszahlen verwendet.<\/p>\n<h3>Zufallszahlengenerator auf Basis von Schwellenwertsignaturen<\/h3>\n<p>Angenommen, dass <em>n<\/em> Teilnehmer ein zuf\u00e4lliges Zahl generieren m\u00f6chten, und wir wollen, dass die Teilnahme von beliebigen <em>k<\/em> von ihnen ausreicht, um eine Zahl zu generieren, aber dass Angreifer, die kontrollieren <em>k<\/em>-1 oder weniger Teilnehmer, die generierte Zahl nicht vorhersagen oder beeinflussen k\u00f6nnen.<\/p>\n<p><img decoding=\"async\" alt=\"Kann man Zufallszahlen generieren, wenn wir uns gegenseitig nicht vertrauen? Teil 2\" src=\"\/wp-content\/uploads\/2020\/10\/00d54b3b0ca237a1551cdbdc35688099.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Angenommen, es gibt ein solches Polynom <em>p(x)<\/em> Grad <em>k<\/em>-1, dass der erste Teilnehmer wei\u00df <em>p(1)<\/em>, der zweite wei\u00df <em>p(2), <\/em>und so weiter (<em>n<\/em>-ter wei\u00df <em>p(n)<\/em>). Angenommen, es gibt einen bestimmten Punkt, an dem alle wissen <em>G<\/em> f\u00fcr alle Werte <em>p(x)G <\/em>f\u00fcr alle Werte <em>x<\/em>. Wir nennen <em>p(i)<\/em> die \u201eprivate Komponente\u201c <em>i<\/em>des -ten Teilnehmers (weil nur <em>i<\/em>-ter Teilnehmer sie kennt), und <em>p(i)G<\/em> die \u201e\u00f6ffentliche Komponente\u201c <em>i<\/em>des -ten Teilnehmers (weil alle Teilnehmer sie kennen). Wie Sie sich erinnern, reicht das Wissen <em>p(i)G <\/em>nicht aus, um <em>p(i) wiederherzustellen.<\/em><\/p>\n<p>Die Erstellung eines solchen Polynoms, sodass nur der <em>i-te<\/em>Teilnehmer und niemand sonst seine private Komponente kennt \u2013 das ist der schwierigste und interessanteste Teil des Protokolls, den wir im Folgenden behandeln werden. Nehmen wir vorl\u00e4ufig an, wir haben ein solches Polynom, und alle Teilnehmer kennen ihre privaten Komponenten.<\/p>\n<p>Wie k\u00f6nnen wir ein solches Polynom verwenden, um eine Zufallszahl zu generieren? Zun\u00e4chst ben\u00f6tigen wir eine Zeichenkette, die zuvor nicht als Eingabe f\u00fcr den Generator verwendet wurde. Im Fall der Blockchain ist der Hash des letzten Blocks <em>h<\/em> &#8212; \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u0434\u043b\u044f \u0442\u0430\u043a\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438. \u041f\u0443\u0441\u0442\u044c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0445\u043e\u0442\u044f\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f <em>h <\/em>als Seed verwenden. Zun\u00e4chst konvertieren die Teilnehmer <em>h<\/em> in einen Punkt auf der Kurve mithilfe einer vorher definierten Funktion:<\/p>\n<p><em>H = scalarToPoint(h)<\/em><\/p>\n<p>Dann berechnet jeder Teilnehmer <em>i<\/em> und ver\u00f6ffentlicht <em>Hi = p(i)H, <\/em>was sie tun k\u00f6nnen, weil sie wissen<em> p(i) und H. <\/em>Offenlegung<em> H<\/em>und erlaubt es anderen Teilnehmern nicht, die private Komponente wiederherzustellen <em>i<\/em>-en Teilnehmer, weshalb ein Set privater Komponenten von Block zu Block verwendet werden kann. Auf diese Weise muss der teure Algorithmus zur Erstellung des Polynoms, der unten beschrieben ist, nur einmal ausgef\u00fchrt werden.<\/p>\n<p>Wenn <em>k<\/em> Teilnehmer ge\u00f6ffnet <em>Hi = p(i)H, <\/em>alle k\u00f6nnen berechnen<em> H<\/em>x = <em>p(x)H<\/em> f\u00fcr alle <em>x<\/em> dank der Eigenschaft von Polynomen, die wir im vorherigen Abschnitt besprochen haben. An diesem Punkt berechnen alle Teilnehmer <em>H0 = p(0)H, <\/em>und das ist die resultierende Zufallszahl. Es sei darauf hingewiesen, dass niemand wei\u00df<em> p(0), <\/em>und somit ist die einzige M\u00f6glichkeit,<em> p(0)H zu berechnen \u2013 <\/em>das Interpolieren<em> p(x)H, <\/em>was nur m\u00f6glich ist, wenn<em> k <\/em>die Werte<em> p(i)H <\/em>bekannt sind. Das \u00d6ffnen von weniger<em> p(i)H <\/em>gibt keine Informationen \u00fcber<em> p(0)H.<\/em><\/p>\n<p><img decoding=\"async\" alt=\"Kann man Zufallszahlen generieren, wenn wir uns gegenseitig nicht vertrauen? Teil 2\" src=\"\/wp-content\/uploads\/2020\/10\/a91219381018f90f73b0a92976c92c79.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Der obige Generator hat alle Eigenschaften, die wir w\u00fcnschen: Angreifer, die nur \u00fcber <em>k-<\/em>1 Teilnehmer oder weniger kontrollieren, haben keine Informationen und keinen Einfluss auf die Ausgabe, w\u00e4hrend alle <em>k<\/em> Teilnehmer die resultierende Zahl berechnen k\u00f6nnen und jede Teilmenge von <em>k<\/em> Teilnehmern immer das gleiche Ergebnis f\u00fcr denselben Seed erh\u00e4lt.<\/p>\n<p>Es gibt ein Problem, das wir oben sorgf\u00e4ltig umgangen sind. Damit die Interpolation funktioniert, ist es wichtig, dass der Wert<em> H<\/em>i, den jeder Teilnehmer ver\u00f6ffentlicht hat, <em>i<\/em> tats\u00e4chlich gleich <em>p(i)H.<\/em> Da niemand au\u00dfer dem <em>i<\/em>-ten Teilnehmer wei\u00df, <em>p(i), <\/em>kann niemand au\u00dfer <em>i-te<\/em>dem Teilnehmer \u00fcberpr\u00fcfen, ob <em>Hallo <\/em>tats\u00e4chlich korrekt berechnet wurde, und ohne einen kryptografischen Beweis der Korrektheit<em> H<\/em>kann ein Angreifer jeden beliebigen Wert als <em>Hallo, <\/em>ver\u00f6ffentlichen und willk\u00fcrlich Einfluss auf die Ausgabe des Zufallszahlengenerators nehmen.<em>:<\/em><\/p>\n<p><img decoding=\"async\" alt=\"Kann man Zufallszahlen generieren, wenn wir uns gegenseitig nicht vertrauen? Teil 2\" src=\"\/wp-content\/uploads\/2020\/10\/694a86666806c49edb6e44dd9ec26b0f.png\" style=\"display:block;margin: 0 auto;\" \/>Verschiedene Werte H_1, die vom ersten Teilnehmer gesendet werden, f\u00fchren zu unterschiedlichen resultierenden H_0.<\/p>\n<p>Es gibt mindestens zwei M\u00f6glichkeiten, die Korrektheit<em> H<\/em>i zu beweisen, die wir betrachten werden, nachdem wir die Polynomialerzeugung behandelt haben.<\/p>\n<h3>Polynomialerzeugung<\/h3>\n<p>Im vorherigen Abschnitt haben wir vorausgesetzt, dass wir ein solches Polynom <em>p(x)<\/em> Grad <em>k<\/em>-1 haben, dass der Teilnehmer <em>i<\/em> wei\u00df <em>p(i)<\/em>, und niemand sonst Informationen \u00fcber diesen Wert hat. Im n\u00e4chsten Abschnitt wird es auch notwendig sein, dass f\u00fcr einen bestimmten vordefinierten Punkt <em>G<\/em> alle wissen, <em>p(x)G <\/em>f\u00fcr alle<em> x<\/em>.<\/p>\n<p>In diesem Abschnitt werden wir annehmen, dass jeder Teilnehmer lokal einen privaten Schl\u00fcssel hat, <em>xi, <\/em>bekannt ist der entsprechende \u00f6ffentliche Schl\u00fcssel<em> X<\/em>i.<\/p>\n<p>Ein m\u00f6glicher Protokoll zur Generierung von Polynomen ist wie folgt:<\/p>\n<p><img decoding=\"async\" alt=\"Kann man Zufallszahlen generieren, wenn wir uns gegenseitig nicht vertrauen? Teil 2\" src=\"\/wp-content\/uploads\/2020\/10\/ccd8afbc3c88a7f5a03714aeb6593361.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<ol>\n<li>\n<p>Jeder Teilnehmer <em>i<\/em> erstellt lokal ein beliebiges Polynom <em>pi(x) der Ordnung k-1. <\/em>Diese senden dann an jeden Teilnehmer<em> j <\/em>den Wert<em> p<\/em>i(j), verschl\u00fcsselt mit dem \u00f6ffentlichen Schl\u00fcssel <em>Xj. <\/em>Somit wei\u00df nur<em> i-te<\/em>j-<em> <\/em>und<em> teilnehmer wer<\/em>j-<em> <\/em>i(j). Der Teilnehmer<em> p<\/em>ank\u00fcndigt ebenfalls \u00f6ffentlich <em>i<\/em> pi(j)G <em>einschlie\u00dflich. <\/em>f\u00fcr alle<em> j <\/em>ab<em> 1 <\/em>bis zu<em> k <\/em>Alle Teilnehmer verwenden einen Konsens, um auszuw\u00e4hlen<\/p>\n<\/li>\n<li>\n<p>Teilnehmer, deren Polynome verwendet werden. Da einige Teilnehmer offline sein k\u00f6nnen, k\u00f6nnen wir nicht warten, bis alle<em> k <\/em>Teilnehmer ihre Polynome ver\u00f6ffentlicht haben. Das Ergebnis dieses Schrittes ist eine Menge<em> n <\/em>bestehend aus mindestens<em> <\/em><strong><em>Z<\/em><\/strong><em> <\/em>Polynomen, die im Schritt (1) erstellt wurden.<em> k <\/em>Die Teilnehmer stellen sicher, dass die ihnen bekannten Werte<em>.<\/em><\/p>\n<\/li>\n<li>\n<p>i(j) den \u00f6ffentlich angek\u00fcndigten<em> p<\/em>pi(j)G entsprechen. <em>Nach diesem Schritt sollten nur noch Polynome \u00fcbrig bleiben, f\u00fcr die privat \u00fcbertragene <\/em>berechnet seinen privaten Anteil<em> <\/em><strong><em>Z <\/em><\/strong>p(j)<em> p<\/em>pi(j)G entsprechen. <em>Nach diesem Schritt sollten nur noch Polynome \u00fcbrig bleiben, f\u00fcr die privat \u00fcbertragene<\/em><\/p>\n<\/li>\n<li>\n<p>Jeder Teilnehmer<em> j <\/em>als Summe<em> i(j) f\u00fcr alle <\/em>. Jeder Teilnehmer berechnet auch alle Werte<em> p<\/em>pi(x)G f\u00fcr alle i <em>i<\/em> in <strong><em>Z<\/em><\/strong>p(x) \u2013 <em>p(x)G <\/em>. Jeder Teilnehmer berechnet auch alle Werte <em>es ist tats\u00e4chlich ein Polynom der Ordnung <\/em>in<em> <\/em><strong><em>Z<\/em><\/strong><em>.<\/em><\/p>\n<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Kann man Zufallszahlen generieren, wenn wir uns gegenseitig nicht vertrauen? Teil 2\" src=\"\/wp-content\/uploads\/2020\/10\/a7a92dba3b9de7a376c415fc6c330c46.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>nicht mit einem Bindestrich beginnt. In YAML bedeutet dies, dass<em> k-1, <\/em>weil es die Summe der einzelnen<em> i(x), von denen jede ein Polynom der Ordnung ist. <\/em>weil es die Summe der einzelnen<em> p<\/em>i(x), wobei jeder ein Polynom vom Grad <em>k<\/em>-1. Dann beachten Sie, dass w\u00e4hrend jeder Teilnehmer <em>j<\/em> wei\u00df <em>p(j), <\/em>sie keine Informationen \u00fcber <em>p(x)<\/em> f\u00fcr <em>x \u2260 j<\/em>. Tats\u00e4chlich m\u00fcssen sie, um diesen Wert zu berechnen, alle <em>pi(x), <\/em>und solange ein Teilnehmer<em> j <\/em>nicht mindestens einen der gew\u00e4hlten Polynome kennt, haben sie keine ausreichenden Informationen \u00fcber<em> p(x).<\/em><\/p>\n<p>Das ist der gesamte Prozess der Polynomgenerierung, der im vorherigen Abschnitt erforderlich war. Die Schritte 1, 2 und 4 oben haben eine recht offensichtliche Umsetzung. Schritt 3 ist jedoch nicht trivial.<\/p>\n<p>Konkret m\u00fcssen wir beweisen k\u00f6nnen, dass die verschl\u00fcsselten<em> p<\/em>i(j) tats\u00e4chlich mit den ver\u00f6ffentlichten <em>Nach diesem Schritt sollten nur noch Polynome \u00fcbrig bleiben, f\u00fcr die privat \u00fcbertragene <\/em>Wenn wir das nicht beweisen k\u00f6nnen, kann ein Angreifer<em> i <\/em>statt<em> p<\/em>i(j) an den Teilnehmer senden, <em>j<\/em>und der Teilnehmer <em>j <\/em>wird den echten Wert nicht erhalten <em>pi(j), <\/em>und kann seine private Komponente nicht berechnen.<em>.<\/em><\/p>\n<p>Es gibt ein kryptografisches Protokoll, das es erm\u00f6glicht, eine zus\u00e4tzliche Nachricht zu erstellen<em> proof<\/em>i(j), sodass jeder Teilnehmer, der einen Wert hat <em>e, <\/em>und auch<em> proofi(j) <\/em>und<em> p<\/em>i(j)G, kann lokal \u00fcberpr\u00fcfen, dass <em>e<\/em> es tats\u00e4chlich <em>pi(j), <\/em>mit dem Schl\u00fcssel des Teilnehmers<em> j verschl\u00fcsselt ist. <\/em>Leider ist die Gr\u00f6\u00dfe eines solchen Beweises unglaublich gro\u00df, und da es notwendig ist, diese zu ver\u00f6ffentlichen,<em> O(nk) <\/em>wird es nicht m\u00f6glich sein, sie f\u00fcr diesen Zweck zu verwenden.<\/p>\n<p>Anstatt zu beweisen, dass <em>pi(j) <\/em>entspricht<em> p<\/em>i(j)G, k\u00f6nnen wir im Protokoll zur Erzeugung des Polynoms einen sehr gro\u00dfen Zeitraum einplanen, w\u00e4hrend dessen alle Teilnehmer die erhaltenen verschl\u00fcsselten Nachrichten \u00fcberpr\u00fcfen, <em>pi(j), <\/em>und wenn die entschl\u00fcsselte Nachricht nicht mit dem \u00f6ffentlichen<em> p<\/em>i(j)G \u00fcbereinstimmt, ver\u00f6ffentlichen sie den kryptografischen Beweis daf\u00fcr, dass die erhaltene verschl\u00fcsselte Nachricht falsch ist. Es ist viel einfacher zu beweisen, dass die Nachricht <em>nicht <\/em>entspricht <em>pi(G)<\/em> ist als zu beweisen, dass sie \u00fcbereinstimmt. Es ist anzumerken, dass dies erfordert, dass jeder Teilnehmer mindestens einmal im Netzwerk erscheint innerhalb der f\u00fcr die Erstellung solcher Beweise vorgesehenen Zeit und beruht auf der Annahme, dass, wenn sie einen solchen Beweis ver\u00f6ffentlicht haben, dieser alle anderen Teilnehmer innerhalb derselben festgelegten Zeit erreicht.<\/p>\n<p><img decoding=\"async\" alt=\"Kann man Zufallszahlen generieren, wenn wir uns gegenseitig nicht vertrauen? Teil 2\" src=\"\/wp-content\/uploads\/2020\/10\/f7d92f18c75aa6161a9e3f1724b57426.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Wenn ein Teilnehmer in diesem Zeitraum nicht online ist und tats\u00e4chlich mindestens eine fehlerhafte Komponente hatte, kann dieser spezifische Teilnehmer nicht an der weiteren Generierung von Zahlen teilnehmen. Das Protokoll wird jedoch weiterhin funktionieren, sofern es mindestens <em>k<\/em> Teilnehmer gibt, die entweder nur korrekte Komponenten erhalten haben oder rechtzeitig einen Nachweis f\u00fcr die Fehlerhaftigkeit abgegeben haben.<\/p>\n<h3>Nachweise \u00fcber die Korrektheit von H_i<\/h3>\n<p>Der letzte Punkt, den wir besprechen m\u00fcssen, ist, wie man die Korrektheit der ver\u00f6ffentlichten<em> H<\/em>i beweist, n\u00e4mlich dass <em>Hi = p(i)H, <\/em>ohne Offenlegung<em> p(i) wiederherzustellen.<\/em><\/p>\n<p>Erinnern wir uns daran, dass die Werte<em> H, G, p(i)G <\/em>\u00f6ffentlich sind und allen bekannt sind.<em> <\/em>Der Vorgang der Bestimmung von<em> p(i) <\/em>bekannt<em> p(i)G <\/em>und<em> G <\/em>wird als diskreter Logarithmus oder<em> dlog, <\/em>und wir m\u00f6chten beweisen, dass:<\/p>\n<p><em>dlog(p(i)G, G) = dlog(H<\/em>i, <em>H<\/em>)<\/p>\n<p>ohne Offenlegung <em>p(i)<\/em>. Es existieren Konstruktionen f\u00fcr solche Nachweise, wie zum Beispiel<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Proof_of_knowledge#Schnorr_protocol\"> <u>das Schnorr-Protokoll.<\/u><\/a><\/noindex>.<\/p>\n<p>Mit einer solchen Konstruktion sendet jeder Teilnehmer zusammen mit <em>Hallo <\/em>einen Nachweis \u00fcber die Korrektheit gem\u00e4\u00df der Konstruktion.<\/p>\n<p>Wenn eine Zufallszahl generiert wird, muss sie h\u00e4ufig von den Teilnehmern verwendet werden, die sie nicht erzeugt haben. Daher m\u00fcssen diese Teilnehmer zusammen mit der Zahl alle <em>Hallo<\/em> und begleitenden Beweise erhalten.<\/p>\n<p>Ein neugieriger Leser k\u00f6nnte fragen: Da die endg\u00fcltige Zufallszahl \u2013 das ist<em> H<\/em>0, und <em>p(0)G \u2013 <\/em>ist \u00f6ffentliche Information, warum ist ein Beweis f\u00fcr jedes einzelne erforderlich?<em> H<\/em>Warum nicht stattdessen den Beweis schicken, dass<\/p>\n<p>dlog(<em>p(0)G, G) = dlog(H<\/em>0, <em>H<\/em>)<\/p>\n<p>Das Problem ist, dass mit dem Schnorr-Protokoll ein solcher Beweis nicht erstellt werden kann, weil niemand den Wert <em>p(0)<\/em>, der zur Erstellung des Beweises erforderlich ist, kennt, und dar\u00fcber hinaus basiert der gesamte Zufallszahlengenerator darauf, dass niemand diesen Wert kennt. Darum m\u00fcssen alle Werte <em>Hallo <\/em>und ihre individuellen Beweise vorliegen, um die Korrektheit zu belegen.<em> H<\/em>0.<\/p>\n<p>W\u00e4re jedoch eine Operation an den Punkten auf elliptischen Kurven vorhanden, die semantisch dem Multiplikationsprozess \u00e4hnlich ist, w\u00e4re der Korrektheitsbeweis <em>H0 <\/em>trivial, wir m\u00fcssten nur sicherstellen, dass<\/p>\n<p><em>H<\/em>0 \u00d7 <em>G<\/em> = <em>p(0)G \u00d7 H<\/em><\/p>\n<p>Wenn die gew\u00e4hlte Kurve elliptische Kurvenpaarungen unterst\u00fctzt. <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@VitalikButerin\/exploring-elliptic-curve-pairings-c73c1864e627\"><u>elliptische Kurvenpaarungen<\/u><\/a><\/noindex>, dieser Nachweis funktioniert. In diesem Fall<em> H<\/em>0 \u2013 das ist nicht nur die Ausgabe des Zufallszahlengenerators, die jeder Teilnehmer, der es wei\u00df, \u00fcberpr\u00fcfen kann <em>G, H<\/em> und <em>p(0)G. H<\/em>0 \u2013 es ist auch die Signatur der Nachricht, die als Seed verwendet wurde und best\u00e4tigt, dass <em>k<\/em> und <em>n <\/em>die Teilnehmer diese Nachricht signiert haben. Somit, wenn <em>Seed \u2013 <\/em>der Hash des Blocks im Blockchain-Protokoll ist, dann <em>H0<\/em> ist das gleichzeitig eine Multi-Signatur f\u00fcr den Block und eine sehr gute Zufallszahl.<\/p>\n<h4>Zusammenfassung<\/h4>\n<p>Dieser Artikel ist Teil einer Serie technischer Blogartikel <noindex><a rel=\"nofollow\" href=\"https:\/\/near.org\">NEAR<\/a><\/noindex>. NEAR ist ein Blockchain-Protokoll und eine Plattform zur Entwicklung von dezentralen Anwendungen mit Fokus auf einfache Entwicklung und Benutzerfreundlichkeit.<\/p>\n<p>Der Code des Protokolls ist offen, unsere Implementierung ist in Rust geschrieben und kann gefunden werden <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nearprotocol\/nearcore\">hier<\/a><\/noindex>.<\/p>\n<p>Schauen Sie sich an, wie die Entwicklung unter NEAR aussieht, und experimentieren Sie in der Online-IDE <noindex><a rel=\"nofollow\" href=\"https:\/\/examples.near.org\">hier<\/a><\/noindex>.<\/p>\n<p>Folgen Sie allen Nachrichten auf Russisch in der <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/near_protocol\">Gruppe bei Telegram<\/a><\/noindex> auch in <noindex><a rel=\"nofollow\" href=\"https:\/\/vk.com\/nearprotocol\">Gruppe bei VKontakte<\/a><\/noindex>, und auf Englisch in der offiziellen <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/NEARProtocol\">Twitter<\/a><\/noindex>.<\/p>\n<p>Bis bald!<\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/near\/blog\/521700\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438, \u0437\u0430\u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043a \u0442\u0430\u043a\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438 \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95847,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95846","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438, \u0437\u0430\u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043a \u0442\u0430\u043a\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.\u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438.\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u0427\u0430\u0441\u0442\u044c 2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438, \u0437\u0430\u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043a \u0442\u0430\u043a\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.\u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438.\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-03T23:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-03T23:42:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Ist es m\u00f6glich, Zufallszahlen zu generieren, wenn wir uns nicht gegenseitig vertrauen? Teil 2 | ProHoster","description":"Hallo, Habr! Im ersten Teil des Artikels haben wir dar\u00fcber gesprochen, warum es notwendig sein kann, Zufallszahlen f\u00fcr Teilnehmer zu generieren, die sich nicht gegenseitig vertrauen. Wir haben die Anforderungen an solche Zufallszahlengeneratoren besprochen und zwei Ans\u00e4tze zu deren Implementierung betrachtet. In diesem Teil des Artikels werden wir einen weiteren Ansatz genauer betrachten, der Schwellenwerte f\u00fcr die Signaturen verwendet. Ein wenig Kryptografie, um zu verstehen, wie Schwellenwerte funktionieren.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u0427\u0430\u0441\u0442\u044c 2 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043b\u0438, \u0437\u0430\u0447\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443, \u043a\u0430\u043a\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043a \u0442\u0430\u043a\u0438\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430\u043c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0434\u0432\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0430 \u043a \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.\u0412 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043f\u043e\u0434\u0445\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438.\u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043f\u043e\u0440\u043e\u0433\u043e\u0432\u044b\u0435","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-03T23:42:23+00:00","article:modified_time":"2020-10-03T23:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95846","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:56:24","updated":"2022-09-30 13:54:48"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/95846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=95846"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/95846\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/95847"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=95846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=95846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=95846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}