Es gibt einen Fork von Bitcoin namens Tenebrix , der behauptet, CPU-freundlich und GPU-resistent zu sein (in Bezug auf das Mining). Sie sagen, dass dies daran liegt, dass sie Scrypt anstelle von SHA256 verwenden. Von dem, was ich lese, scheint scrypt bcrypt oder PBKDF2 insofern ähnlich zu sein, als es nur ein Mehrrundenschema ist. Wenn es einfach mehr Runden von etwas sind, das auf der GPU bereits schneller als auf der CPU ist, wären dann nicht N Runden auf der GPU immer noch schneller als auf der CPU, oder vermisse ich etwas, das der Verschlüsselung innewohnt und die GPU-Effizienz ruiniert?
Der Algorithmus scrypt() hat im Kern eine Routine namens ROMmix. Im Grunde definiert es
V(1) = hash(message)
V(2) = hash(hash(message))
V(3) = hash(hash(hash(message)))
...
und es rechnet
V(V(V(V(...(message))))
Da die Berechnung von V(n+1) zuerst die Berechnung von V(n) erfordert, besteht die effizienteste Methode darin, alle zuvor berechneten Werte zwischenzuspeichern . Sobald Sie eine ausreichend große Tabelle erstellt haben, besteht V(V(V(...))) nur aus einer Reihe von Nachschlagevorgängen.
Das Zwischenspeichern aller zuvor berechneten Werte erfordert viel Speicher, und da jede Suche von der vorherigen abhängt, ist sie empfindlich gegenüber Speicherlatenz (obwohl Sie beim Mining an mehreren Blöcken parallel arbeiten und die Anforderungen weiterleiten können, um dies zu umgehen).
GPUs können weitaus mehr ganzzahlige Operationen pro Sekunde ausführen als eine normale CPU, haben aber ungefähr die gleiche Speicherbandbreite/Latenzzeit wie eine CPU. Ein speicherdominierter Algorithmus sollte also „gleiche Wettbewerbsbedingungen“ zwischen CPUs und GPUs schaffen.
Ich verstehe immer noch nicht, warum die Leute von Tenebrix dies für ein wichtiges Ziel halten. Es "gleicht" nur GPUs und CPUs aus, aber Sie können immer noch benutzerdefinierte Hardware bauen, die scrypt() viel schneller und billiger als eine CPU ausführt. Es geht also nur von „GPUs sind am besten“ zu „kundenspezifische Leiterplatten, die mit Speicherbussen bedeckt sind, sind am besten“. Warum diese Umstellung den ganzen Aufwand wert ist, kann sich niemand erklären.
scrypt
viel schneller und billiger ist als eine CPU. CPUs haben bereits ziemlich nahe an den schnellsten und billigsten Speicherpfaden, die wir herstellen können.Dies könnte Sie interessieren . Wirksam
Tenebrix verwendet Scrypt als Proof-of-Work-Algorithmus. Scrypt wurde aufgrund der vom Algorithmus verwendeten Nachschlagetabellen im Speicher als GPU-resistent bezeichnet. Die meisten Leute minen Tenebrix nicht mehr mit CPUs und verwenden stattdessen GPUs. Wenn Sie Tenebrix mit einer GPU minen, können Sie davon ausgehen, dass Sie ungefähr 1/1000 der Rate hashen, die Sie mit derselben Karte beim Bitcoin-Mining erhalten würden. Wenn Sie zum Beispiel einen 5970-Bitcoin für das Mining von ~700 Mhash/s hätten, könnten Sie damit rechnen, ~700 Khash/s für das Mining von Tenebrix zu erhalten. Es gibt keineswegs eine direkte Korrelation wie im Beispiel und in Wirklichkeit wird die Tenebrix-Rate wahrscheinlich geringer sein, aber es ist wahr genug, um grobe Hardwarevergleiche durchzuführen, bei denen Litecoin-Mining-Daten fehlen.
Ich glaube, ich habe meine eigene Antwort gefunden (sogar auf einer anderen StackExchange-Beta!)
Die Antwort auf die Frage „ Warum kann man bcrypt nicht in Cuda implementieren ? Haar mehr Krypto-Wissen als ich. Hier ist die akzeptierte Antwort aus der anderen Frage:
Es ist nicht unmöglich, nur schwieriger. Das liegt am RAM. In einer GPU haben Sie eine Reihe von Kernen, die 32-Bit-Operationen ausführen können. Sie werden mit einer Operation pro Zyklus und pro Kern ausgeführt, solange sie mit ihren jeweiligen Registern arbeiten. Der RAM-Zugriff ist jedoch problematischer. Jede Gruppe von Kernen hat Zugriff auf eine kleine Menge an gemeinsam genutztem RAM, und alle Kerne können den GPU-Haupt-RAM lesen und schreiben, aber es gibt Zugriffsbeschränkungen: Nicht alle Kerne können gleichzeitig aus dem RAM lesen oder in den RAM schreiben (Beschränkungen sind strenger für den Haupt-RAM ).
Nun ist bcrypt eine Variante der Blowfish-Schlüsselplanung, die über eine Tabelle (einige Kilobyte) definiert ist, auf die während des gesamten Algorithmus ständig zugegriffen und diese geändert wird. Aufgrund der Größe der Tabelle muss jeder Kern sie im GPU-Haupt-RAM speichern, und sie konkurrieren um die Nutzung des Speicherbusses. Also wird bcrypt laufen – aber nicht mit voller Parallelität. Zu jedem Zeitpunkt werden die meisten Kerne ins Stocken geraten und darauf warten, dass der Speicherbus frei wird. Dies kommt von der Art der elementaren Operation, in der bcrypt besteht, nicht von der Tatsache, dass bcrypt aus dem Schlüsselplan einer Blockchiffre abgeleitet wird.
Für SHA-1 oder SHA-256 besteht die Berechnung vollständig aus 32-Bit-Operationen an einer Handvoll Register, sodass ein Passwort-Cracker ohne jeglichen Speicherzugriff ausgeführt wird und vollständige Parallelität leicht erreicht wird (ich habe es auf meiner GeForce 9800 GTX+, und ich habe etwa 98 % der theoretischen Höchstgeschwindigkeit mit einer einfachen, entrollten SHA-1-Implementierung erreicht).
Einzelheiten zum Programmiermodell in CUDA finden Sie im CUDA C Programming Guide. Außerdem schlägt der Autor von bcrypt jetzt scrypt vor, das die Speicherzugriffe noch schwerer macht, genau so, dass die Implementierung für GPU und FPGA schwierig ist.
Ich weiß, dass ich zu spät zur Party komme, aber was ist der Anreiz, kundenspezifische Hardware zu verwenden, wenn Größenvorteile CPUs billig machen?
Ein vernünftiger Rich Attacker würde einfach Hunderte von 4-CPU-Servern mit, sagen wir, Bulldozer-CPUs kaufen (im Falle von Bitcoin könnte ein Rich Attacker eine schreiende Tonne GPUs kaufen oder welche Ausrüstung ihm das beste Preis-Leistungs-Verhältnis bietet).
Sie können sich nicht mit technologischen Mitteln gegen einen Rich Attacker wehren, denn egal, ob Sie CPUs, GPUs oder Babage-Engines verwenden, er kauft am Ende einfach mehr Technologie, als Sie sich leisten können.
eldentyrell
David Perry
David Perry
eldentyrell
nmat
David Schwarz
eldentyrell
David Schwarz
Tod und Steuern
David Perry