{"id":95468,"date":"2020-09-29T19:42:29","date_gmt":"2020-09-29T17:42:29","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1"},"modified":"2020-09-29T19:42:29","modified_gmt":"2020-09-29T17:42:29","slug":"mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1","title":{"rendered":"Kann man Zufallszahlen generieren, wenn man sich nicht gegenseitig vertraut? Teil 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo, Habr!<\/p>\n<p>In diesem Artikel werde ich \u00fcber die Generierung von pseudo-zuf\u00e4lligen Zahlen durch Teilnehmer sprechen, die einander misstrauen. Wie wir weiter unten sehen werden, ist es relativ einfach, einen \u201efast\u201c guten Generator zu implementieren, w\u00e4hrend es sehr schwierig ist, einen wirklich guten zu schaffen.<\/p>\n<p>\u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\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, \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u041e\u0434\u043d\u0430 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f &#8212; \u044d\u0442\u043e \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0443 \u043e\u0442 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 \u0438 \u043b\u0438\u0431\u043e \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u0441\u0443\u043c\u043c\u0443 \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e 49%, \u043b\u0438\u0431\u043e \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0441 51%, \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0437\u044f\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e. \u0415\u0441\u043b\u0438 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0438 \u0434\u0430\u0436\u0435 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0448\u0430\u043d\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u043f\u043b\u0430\u0442\u0443 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043e\u043d \u043b\u0435\u0433\u043a\u043e \u043e\u043f\u0443\u0441\u0442\u043e\u0448\u0438\u0442 \u0435\u0433\u043e.<\/p>\n<p>Wenn wir ein verteiltes Protokoll zur Generierung von Zufallszahlen entwickeln, m\u00f6chten wir, dass es drei Eigenschaften besitzt:<\/p>\n<ol>\n<li>\n<p>Es muss unparteiisch sein. Mit anderen Worten, kein Teilnehmer darf in irgendeiner Weise das Ergebnis des Zufallszahlengenerators beeinflussen.<\/p>\n<\/li>\n<li>\n<p>Er muss unvorhersehbar sein. Mit anderen Worten, kein Teilnehmer sollte in der Lage sein, vorherzusagen, welche Zahl generiert wird (oder irgendwelche ihrer Eigenschaften) bevor sie generiert wird.<\/p>\n<\/li>\n<li>\n<p>Das Protokoll muss funktionsf\u00e4hig sein, das hei\u00dft, es muss robust gegen\u00fcber dem Ausfall eines gewissen Prozentsatzes von Teilnehmern oder dem absichtlichen Versuch, das Protokoll zu stoppen, sein.<\/p>\n<\/li>\n<\/ol>\n<p>In diesem Artikel betrachten wir zwei Ans\u00e4tze: RANDAO + VDF und einen Ansatz, der auf fehlerkorrigierenden Codes basiert. Im n\u00e4chsten Teil werden wir den Ansatz, der auf Schwellenwertsignaturen basiert, detaillierter untersuchen.<\/p>\n<p>Aber zun\u00e4chst wollen wir einen einfachen und oft verwendeten Algorithmus aufschl\u00fcsseln, der funktionsf\u00e4hig, unvorhersehbar, aber voreingenommen ist.<\/p>\n<h3>RANDAO<\/h3>\n<p>RANDAO &#8212; \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u0438. \u0412\u0441\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0441\u0435\u0442\u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0437\u0430\u0442\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u0445\u0435\u0448 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430. \u0414\u0430\u043b\u0435\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0432\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043d\u0430\u0434 \u0432\u0441\u043a\u0440\u044b\u0442\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e XOR, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430.<\/p>\n<p>Der Schritt zur Ver\u00f6ffentlichung von Hashes, bevor die Zahlen aufgedeckt werden, ist notwendig, damit ein Angreifer nicht seine eigene Zahl w\u00e4hlen kann, nachdem er die Zahlen der anderen Teilnehmer gesehen hat. Dies w\u00fcrde ihm erm\u00f6glichen, die Ausgabe des Zufallszahlengenerators tats\u00e4chlich allein zu bestimmen.<\/p>\n<p>Im Verlauf des Protokolls m\u00fcssen die Teilnehmer zweimal zu einer gemeinsamen Entscheidung (dem sogenannten Konsens) kommen: wann sie beginnen, die gew\u00e4hlten Zahlen aufzudecken und somit die Annahme von Hashes einzustellen, und wann die Annahme der gew\u00e4hlten Zahlen abgeschlossen ist und die resultierende Zufallszahl berechnet wird. Solche Entscheidungen zwischen Teilnehmern, die sich gegenseitig nicht vertrauen, sind an sich eine herausfordernde Aufgabe, auf die wir in zuk\u00fcnftigen Artikeln zur\u00fcckkommen werden; in diesem Artikel nehmen wir an, dass ein solcher Konsensusalgorithmus f\u00fcr uns verf\u00fcgbar ist.<\/p>\n<p>Welche der oben beschriebenen Eigenschaften besitzt RANDAO? Es ist unvorhersehbar und hat die gleiche Lebensf\u00e4higkeit wie das zugrunde liegende Konsensprotokoll, zeigt jedoch eine Voreingenommenheit. Insbesondere kann ein Angreifer das Netzwerk beobachten, und nachdem andere Teilnehmer ihre Zahlen offenbart haben, kann er deren XOR berechnen und entscheiden, ob er seine eigene Zahl offenbaren sollte, um das Ergebnis zu beeinflussen. Auch wenn dies dem Angreifer nicht erlaubt, den Ausgang des Zufallszahlengenerators allein zu bestimmen, gibt es ihm dennoch 1 Bit Einfluss. Wenn Angreifer mehrere Teilnehmer kontrollieren, wird die Anzahl der von ihnen kontrollierten Bits der Anzahl der unter ihrer Kontrolle stehenden Teilnehmer entsprechen.<\/p>\n<p><img decoding=\"async\" alt=\"Kann man Zufallszahlen generieren, wenn man sich nicht gegenseitig vertraut? Teil 1\" src=\"\/wp-content\/uploads\/2020\/09\/4869d0c7dbc4cc8a368c2846997d6d2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Der Einfluss von Angreifern kann erheblich verringert werden, wenn Teilnehmer gefordert werden, ihre Zahlen in einer bestimmten Reihenfolge preiszugeben. In diesem Fall kann der Angreifer den Ausgang nur beeinflussen, wenn er als letzter offenbart. W\u00e4hrend der Einfluss deutlich geringer ist, bleibt der Algorithmus dennoch voreingenommen.<\/p>\n<h3>RANDAO + VDF<\/h3>\n<p>Eine M\u00f6glichkeit, RANDAO unparteiisch zu gestalten, besteht darin, dass, nachdem alle Zahlen enth\u00fcllt sind und das XOR berechnet wurde, das Ergebnis in eine Funktion eingegeben wird, deren Berechnung sehr viel Zeit in Anspruch nimmt, jedoch eine schnelle \u00dcberpr\u00fcfung der Korrektheit erm\u00f6glicht.<\/p>\n<pre><code>(vdf_output, vdf_proof) = VDF_compute(input) \/\/ das ist sehr langsam\ncorrect = VDF_verify(input, vdf_output, vdf_proof) \/\/ das ist sehr schnell<\/code><\/pre>\n<p>Eine solche Funktion wird als Verifiable Delay Function oder VDF bezeichnet. Wenn die Berechnung des endg\u00fcltigen Ergebnisses mehr Zeit in Anspruch nimmt als der Schritt der Zahlenenth\u00fcllung, kann ein Angreifer nicht vorhersagen, welchen Einfluss die Offenlegung oder das Zur\u00fcckhalten seiner Zahl hat, und somit verliert er die M\u00f6glichkeit, das Ergebnis zu beeinflussen.<\/p>\n<p>Die Entwicklung guter VDF ist extrem komplex. In letzter Zeit gab es einige Durchbr\u00fcche, zum Beispiel <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2018\/623.pdf\"><u>diese<\/u><\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2018\/627.pdf\"><u>dieser,<\/u><\/a><\/noindex> welche VDF praktischer anwendbar machte, und Ethereum 2.0 plant langfristig, RANDAO mit VDF als Zufallszahlengenerator zu nutzen. Abgesehen davon, dass dieser Ansatz unvorhersehbar und unvoreingenommen ist, hat er den zus\u00e4tzlichen Vorteil der Lebensf\u00e4higkeit, solange mindestens zwei Teilnehmer im Netzwerk verf\u00fcgbar sind (vorausgesetzt, dass das verwendete Konsensprotokoll bei so wenigen Teilnehmern funktionsf\u00e4hig ist).<\/p>\n<p>Die gr\u00f6\u00dfte Herausforderung dieses Ansatzes besteht darin, VDF so zu konfigurieren, dass selbst ein Teilnehmer mit sehr teurer spezialisierter Hardware VDF nicht vor dem Ende der Offenlegungsphase berechnen kann. Idealerweise sollte der Algorithmus sogar einen erheblichen Puffer haben, sagen wir 10x. Die untenstehende Abbildung zeigt einen Angriff eines Teilnehmers mit spezialisierter ASIC-Hardware, der es ihm erm\u00f6glicht, VDF schneller auszuf\u00fchren, als die f\u00fcr die Offenlegung der RANDAO-Best\u00e4tigung vorgesehene Zeit. Ein solcher Teilnehmer kann das Endergebnis berechnen, indem er seine Zahl sowohl verwendet als auch nicht verwendet, und danach, basierend auf den Berechnungen, entscheiden, ob er sie zeigt oder nicht.<\/p>\n<p><img decoding=\"async\" alt=\"Kann man Zufallszahlen generieren, wenn man sich nicht gegenseitig vertraut? Teil 1\" src=\"\/wp-content\/uploads\/2020\/09\/3c6e64b6473b951f549f5ba60edbafa9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>F\u00fcr die oben erw\u00e4hnte VDF-Familie kann die Leistung eines spezialisierten ASIC mehr als 100-mal h\u00f6her sein als bei herk\u00f6mmlicher Hardware. Wenn die Entdeckungsphase also 10 Sekunden dauert, sollte die auf einem solchen ASIC berechnete VDF mehr als 100 Sekunden in Anspruch nehmen, um einen Sicherheitsvorrat von 10-fach zu gew\u00e4hrleisten. Folglich sollte dieselbe VDF, die auf herk\u00f6mmlicher Hardware berechnet wird, 100 x 100 Sekunden = ~ 3 Stunden dauern.<\/p>\n<p>Die Ethereum Foundation plant, dieses Problem durch die Schaffung eigener \u00f6ffentlicher, kostenloser ASICs zu l\u00f6sen. Sobald dies geschehen ist, k\u00f6nnen auch alle anderen Protokolle von dieser Technologie profitieren, aber bis dahin wird der RANDAO + VDF-Ansatz f\u00fcr Protokolle, die nicht in die Entwicklung ihrer eigenen ASICs investieren k\u00f6nnen, nicht ebenso tragf\u00e4hig sein.<\/p>\n<p>Viele Artikel, Videos und andere Informationen \u00fcber VDF sind gesammelt auf <noindex><a rel=\"nofollow\" href=\"https:\/\/vdfresearch.org\/\"><u>dieser Website<\/u><\/a><\/noindex>.<\/p>\n<h3>Wir verwenden Fehlerkorrekturcodes<\/h3>\n<p>In diesem Abschnitt werden wir das Protokoll zur Generierung von Zufallszahlen betrachten, das <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D1%82%D0%B8%D1%80%D0%B0%D1%8E%D1%89%D0%B8%D0%B9_%D0%BA%D0%BE%D0%B4\">Fehlerkorrekturcodes verwendet<\/a><\/noindex>. Es kann bis zu ein Drittel der Angreifer aushalten und bleibt dabei funktionsf\u00e4hig, und es erlaubt die Existenz von bis zu zwei Dritteln der Angreifer, bevor sie das Ergebnis vorhersagen oder beeinflussen k\u00f6nnen.<\/p>\n<p>Die grundlegende Idee des Protokolls l\u00e4sst sich wie folgt zusammenfassen. Zur Vereinfachung nehmen wir an, dass es genau 100 Teilnehmer gibt. Nehmen wir auch an, dass jeder Teilnehmer lokal einen bestimmten privaten Schl\u00fcssel hat und die \u00f6ffentlichen Schl\u00fcssel aller Teilnehmer allen bekannt sind:<\/p>\n<ol>\n<li>\n<p>Jeder Teilnehmer erfindet lokal eine lange Zeichenfolge, zerlegt sie in 67 Teile, erstellt L\u00f6schcodes, um 100 Anteile zu erzeugen, wobei beliebige 67 zur Wiederherstellung der Zeichenfolge ausreichend sind, weist jeden der 100 Anteile einem der Teilnehmer zu und verschl\u00fcsselt sie mit dem \u00f6ffentlichen Schl\u00fcssel desselben Teilnehmers. Danach werden alle codierten Anteile ver\u00f6ffentlicht.<\/p>\n<\/li>\n<li>\n<p>Die Teilnehmer verwenden einen bestimmten Konsens, um Einigkeit \u00fcber die kodierten S\u00e4tze von konkret 67 Teilnehmern zu erzielen.<\/p>\n<\/li>\n<li>\n<p>Sobald der Konsens erreicht ist, nimmt jeder Teilnehmer die kodierten Anteile aus jedem der 67 S\u00e4tze, die mit ihrem \u00f6ffentlichen Schl\u00fcssel verschl\u00fcsselt sind, entschl\u00fcsselt alle solchen Anteile und ver\u00f6ffentlicht alle entschl\u00fcsselten Anteile.<\/p>\n<\/li>\n<li>\n<p>Sobald 67 Teilnehmer Schritt (3) abgeschlossen haben, k\u00f6nnen alle vereinbarten S\u00e4tze vollst\u00e4ndig dekodiert und wiederhergestellt werden, dank der Eigenschaften von L\u00f6schcodes. Die endg\u00fcltige Zahl kann als XOR der urspr\u00fcnglichen Zeilen erhalten werden, von denen die Teilnehmer in (1) ausgegangen sind.<\/p>\n<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Kann man Zufallszahlen generieren, wenn man sich nicht gegenseitig vertraut? Teil 1\" src=\"\/wp-content\/uploads\/2020\/09\/b74ef4bb4a8148766f0b1ab2a8222625.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Es kann gezeigt werden, dass dieses Protokoll unparteiisch und unvorhersehbar ist. Die resultierende Zufallszahl wird nach Erreichen des Konsenses festgelegt, aber niemand wei\u00df sie, bis \u2154 der Teilnehmer die Teile dekodiert haben, die mit ihrem \u00f6ffentlichen Schl\u00fcssel verschl\u00fcsselt sind. Somit wird die Zufallszahl festgelegt, bevor die Informationen, die f\u00fcr ihre Wiederherstellung erforderlich sind, ver\u00f6ffentlicht werden.<\/p>\n<p>Was passiert, wenn in Schritt (1) einer der Teilnehmer den anderen Teilnehmern kodierte Anteile sendet, die keinen g\u00fcltigen L\u00f6schcode einer bestimmten Zeile darstellen? Ohne zus\u00e4tzliche \u00c4nderungen werden unterschiedliche Teilnehmer entweder in der Lage sein, die Zeile \u00fcberhaupt nicht wiederherzustellen oder unterschiedliche Zeilen wiederherzustellen, was dazu f\u00fchren wird, dass verschiedene Teilnehmer unterschiedliche Zufallszahlen erhalten. Um dies zu verhindern, kann Folgendes getan werden: Jeder Teilnehmer berechnet zus\u00e4tzlich zu den kodierten Anteilen auch <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B5%D1%80%D0%B5%D0%B2%D0%BE_%D1%85%D0%B5%D1%88%D0%B5%D0%B9\">Merkel-Baum<\/a><\/noindex> aller solcher Anteile, und jeder Teilnehmer erh\u00e4lt sowohl den codierten Anteil als auch die Wurzel des Merkel-Baums sowie den Beweis f\u00fcr die Einbeziehung des Anteils in den Merkel-Baum. Bei dem Konsensschritt (2) einigen sich die Teilnehmer nicht nur auf eine Menge von S\u00e4tzen, sondern auf eine Menge spezifischer Wurzeln solcher B\u00e4ume (wenn ein Teilnehmer vom Protokoll abweicht und verschiedenen Teilnehmern unterschiedliche Wurzeln des Merkel-Baums sendet, wird seine Zeile nicht in die Ergebnismenge aufgenommen). Am Ende des Konsenses werden wir 67 codierte Zeilen und die entsprechenden Wurzeln des Merkel-Baums haben, sodass es mindestens 67 Teilnehmer gibt (nicht unbedingt die gleichen, die die entsprechenden Zeilen vorgeschlagen haben), bei denen f\u00fcr jede der 67 Zeilen eine Nachricht mit dem Anteil des L\u00f6schcodes vorliegt und der Nachweis der Einbeziehung ihres Anteils in den entsprechenden Merkel-Baum erbracht wird.<\/p>\n<p>Wenn ein Teilnehmer in Schritt (4) 67 Anteile f\u00fcr eine bestimmte Zeile entschl\u00fcsselt und versucht, die urspr\u00fcngliche Zeile wiederherzustellen, gibt es eine der folgenden M\u00f6glichkeiten:<\/p>\n<ol>\n<li>\n<p>Die Zeile wird wiederhergestellt, und wenn sie dann erneut mit L\u00f6schcodes kodiert wird und der Merkle-Baum f\u00fcr die lokal berechneten Anteile gez\u00e4hlt wird, stimmt die Wurzel mit derjenige \u00fcberein, bei der Konsens erzielt wurde.<\/p>\n<\/li>\n<li>\n<p>Die Zeile wird wiederhergestellt, jedoch stimmt die lokal berechnete Wurzel nicht mit der \u00fcberein, bei der Konsens erzielt wurde.<\/p>\n<\/li>\n<li>\n<p>Die Zeile kann nicht wiederhergestellt werden.<\/p>\n<\/li>\n<\/ol>\n<p>Es ist leicht zu zeigen, dass, wenn bei mindestens einem Teilnehmer der Fall (1) eintritt, f\u00fcr alle Teilnehmer der Fall (1) eintreten wird. Umgekehrt, wenn bei mindestens einem Teilnehmer der Fall (2) oder (3) eintritt, dann wird es bei allen Teilnehmern der Fall (2) oder (3) eintreten. Somit wird f\u00fcr jede Zeile im Satz entweder allen Teilnehmern die Wiederherstellung erfolgreich gelingen oder keiner der Teilnehmer kann sie wiederherstellen. Die resultierende Zufallszahl ist dann das XOR nur der Zeilen, die die Teilnehmer wiederherstellen konnten.<\/p>\n<h3>Schwellensignaturen<\/h3>\n<p>Ein alternativer Ansatz zur Zuf\u00e4lligkeit besteht darin, sogenannte Schwellenwerte f\u00fcr BLS-Signaturen zu verwenden. Ein auf Schwellenwertsignaturen basierender Zufallszahlengenerator bietet die gleichen Garantien wie der oben beschriebene Algorithmus, der auf L\u00f6schcodes basiert, weist jedoch eine signifikant niedrigere Asymptotik der Anzahl der Nachrichten auf, die f\u00fcr jede generierte Zahl \u00fcber das Netzwerk gesendet werden.<\/p>\n<p>BLS-Signaturen sind ein Konstrukt, das es mehreren Teilnehmern erm\u00f6glicht, eine gemeinsame Signatur f\u00fcr eine Nachricht zu erstellen. Solche Signaturen werden h\u00e4ufig verwendet, um Platz und Bandbreite zu sparen, da sie keine Verteilung mehrerer Signaturen erfordern.&nbsp;<\/p>\n<p>Eine h\u00e4ufige Anwendung von BLS-Signaturen in Blockchain-Protokollen, neben der Generierung von Zufallszahlen, ist die Signierung von Bl\u00f6cken in BFT-Protokollen. Nehmen wir an, 100 Teilnehmer erstellen Bl\u00f6cke, und ein Block wird als endg\u00fcltig betrachtet, wenn 67 von ihnen ihn signieren. Alle k\u00f6nnen ihre Teile der BLS-Signatur pr\u00e4sentieren und einen Konsensalgorithmus verwenden, um 67 von ihnen zu best\u00e4tigen, bevor sie diese zu einer einzigen BLS-Signatur zusammenf\u00fchren. Jede beliebige Kombination von 67 (oder mehr) Teilen kann zur Erstellung der endg\u00fcltigen Signatur verwendet werden, die davon abh\u00e4ngt, welche spezifischen 67 Signaturen zusammengef\u00fchrt wurden. Daher kann sie variieren, aber unabh\u00e4ngig davon, welche 67 Teilnehmer ausgew\u00e4hlt wurden, wird jede solche Signatur eine g\u00fcltige Signatur f\u00fcr den Block sein. Den \u00fcbrigen Teilnehmern gen\u00fcgt es dann, \u00fcber das Netzwerk nur eine Signatur pro Block zu erhalten und zu \u00fcberpr\u00fcfen, anstatt 67, was die Netzwerklast erheblich verringert.<\/p>\n<p>Es stellt sich heraus, dass, wenn die privaten Schl\u00fcssel, die von den Teilnehmern verwendet werden, auf bestimmte Weise generiert werden, die resultierende Signatur unabh\u00e4ngig davon, welche 67 Signaturen (oder mehr, aber auf keinen Fall weniger) aggregiert werden, gleich sein wird. Dies kann als Quelle der Zuf\u00e4lligkeit genutzt werden: Die Teilnehmer einigen sich zun\u00e4chst auf eine bestimmte Nachricht, die sie signieren wollen (dies kann der Ausgabe von RANDAO oder einfach der Hash des letzten Blocks sein; es ist eigentlich unerheblich, solange sie jedes Mal anders ist und einvernehmlich ist) und erstellen daf\u00fcr eine BLS-Signatur. Das Ergebnis der Generierung bleibt unvorhersehbar, bis 67 Teilnehmer ihre Teile bereitgestellt haben; danach sind die Ausgaben bereits vordefiniert und k\u00f6nnen nicht von den Aktionen eines beliebigen Teilnehmers abh\u00e4ngen.<\/p>\n<p>Dieser Ansatz zur Zuf\u00e4lligkeit ist tragf\u00e4hig, wenn mindestens \u2154 der Teilnehmer online sind und das Protokoll befolgen. Zudem bleibt es unparteiisch und unvorhersehbar, solange mindestens \u2153 der Teilnehmer dem Protokoll folgen. Es ist wichtig zu beachten, dass ein Angreifer, der mehr als \u2153, aber weniger als \u2154 der Teilnehmer kontrolliert, das Protokoll stoppen kann, jedoch nicht dessen Ausgang vorhersagen oder beeinflussen kann.<\/p>\n<p>Schwellensignaturen sind an sich ein sehr interessantes Thema. Im zweiten Teil des Artikels werden wir detailliert untersuchen, wie sie funktionieren und wie die Schl\u00fcssel der Teilnehmer generiert werden m\u00fcssen, damit Schwellensignaturen als Zufallszahlengenerator verwendet werden k\u00f6nnen.<\/p>\n<h3>Zusammenfassung<\/h3>\n<p>Dieser Artikel ist der erste in einer Reihe von technischen Blog-Artikeln. <noindex><a rel=\"nofollow\" href=\"https:\/\/near.org\">NEAR<\/a><\/noindex>. NEAR ist ein Blockchain-Protokoll und eine Plattform zur Entwicklung dezentraler Anwendungen mit dem 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\/521090\/\">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 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \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. \u041a\u0430\u043a \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0438\u0436\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u201c\u043f\u043e\u0447\u0442\u0438\u201d \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0430 \u0432\u043e\u0442 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u2013 \u0441\u043b\u043e\u0436\u043d\u043e. \u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\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, \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u041e\u0434\u043d\u0430 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f &#8212; \u044d\u0442\u043e \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95469,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95468","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 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \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. \u041a\u0430\u043a \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0438\u0436\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u201c\u043f\u043e\u0447\u0442\u0438\u201d \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0430 \u0432\u043e\u0442 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u2013 \u0441\u043b\u043e\u0436\u043d\u043e.\u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\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, \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u041e\u0434\u043d\u0430 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f -- \u044d\u0442\u043e \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0443\" \/>\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-1\" \/>\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 1 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \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. \u041a\u0430\u043a \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0438\u0436\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u201c\u043f\u043e\u0447\u0442\u0438\u201d \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0430 \u0432\u043e\u0442 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u2013 \u0441\u043b\u043e\u0436\u043d\u043e.\u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\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, \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u041e\u0434\u043d\u0430 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f -- \u044d\u0442\u043e \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0443\" \/>\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-1\" \/>\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-09-29T17:42:29+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-29T17:42:29+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\udd47Kann man zuf\u00e4llige Zahlen generieren, wenn wir uns nicht vertrauen? Teil 1 | ProHoster","description":"Hallo, Habr! In diesem Artikel erkl\u00e4re ich, wie Teilnehmer, die sich gegenseitig nicht vertrauen, pseudo-zuf\u00e4llige Zahlen generieren k\u00f6nnen. Wie wir gleich sehen werden, ist es relativ einfach, einen \u201efast\u201c guten Zufallszahlengenerator zu implementieren, aber einen wirklich guten zu entwickeln, ist kompliziert. Warum ist es \u00fcberhaupt notwendig, f\u00fcr Teilnehmer, die sich nicht vertrauen, zuf\u00e4llige Zahlen zu generieren? Ein Anwendungsbereich sind dezentrale Anwendungen. Zum Beispiel eine Anwendung, die ein Gebot annimmt.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1","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 1 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \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. \u041a\u0430\u043a \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0438\u0436\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u201c\u043f\u043e\u0447\u0442\u0438\u201d \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0430 \u0432\u043e\u0442 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u2013 \u0441\u043b\u043e\u0436\u043d\u043e.\u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\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, \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u041e\u0434\u043d\u0430 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f -- \u044d\u0442\u043e \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0443","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1","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-09-29T17:42:29+00:00","article:modified_time":"2020-09-29T17:42:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95468","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 11:05:29","updated":"2022-09-28 01:55:15"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/95468","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=95468"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/95468\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/95469"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=95468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=95468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=95468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}