Wie ermittle ich die Anzahl der von der CPU pro Sekunde durchgeführten Tests?

0

Mein Kontext ist, dass ich zur Prüfung der Verschlüsselungsmethoden die geschätzte Zeit berechnen muss, die ein Brute-Force-Angriff benötigt, um erfolgreich zu sein. Daher muss ich eine Annahme über das System machen, das zum Knacken des Algorithmus verwendet wird.

Als Beispiel in der Vorlesung habe ich:

  • Angenommen, eine Million Tests pro Sekunde (schnell)
  • Und dann hat DES 2 ^ 56 Schlüssel

Ich möchte moderne PCs und komplexe Systeme gegenüberstellen (viele Prozessoren - etwa 90 Milliarden Tests / Schlüssel pro Sekunde).

Wie ist es möglich, etwa 4-Kerne-3,5-GHz-Prozessor in Anzahl von Operationen pro Sekunde umzuwandeln?

Und eine Million Tests pro Sekunde entspricht 800 Mhz / 3k Mhz?

Tut mir leid, wenn es dumm klingt, aber lieber dumm als falsch.

Aubergine
quelle

Antworten:

3

Ich vermute, dass Sie Ihre Dozentenfrage falsch interpretieren.

Wenn das Q "eine Million Tests pro Sekunde annehmen" schreibt, bedeutet dies "annehmen, dass es eine Million Schlüssel pro Sekunde testen kann". Die tatsächliche physische Implementierung ist nicht wichtig.

Was die Antwort eher trivial macht:
2 56 Schlüsselanzahl / 1.000.000 Schlüssel pro Sekunde

Für den gesamten Schlüsselbereich werden 72057594037 Sekunden benötigt.
(das entspricht 833999 Tagen oder 2283 Jahren).

Welches ist für die ganze Schlüsselraum. Im Durchschnitt Sie müssen nur die Hälfte davon überprüfen, was eine Antwort von 1141 Jahren ergibt.

Für Bonuspunkte:

  1. Das setzt voraus, dass sich die PC-Geschwindigkeit in diesen 1141 Jahren nicht erhöht.
  2. Das ist mit einem einzigen System, das an dem Problem arbeitet. (Siehe dnetc und ähnliches, um zu sehen, wie Sie dieses Problem umgehen können.)
  3. Und es geht von der gleichen Architektur aus. Standardmäßige dumme PCs, die für allgemeine Aufgaben gut geeignet sind und tausend Jahre lang nichts anderes als eine sehr spezielle Reihe von Operationen ausführen.
    Dies ist eindeutig nicht der richtige Weg für diese Aufgabe.
    Schön anzusehen: Große CCC-Aufnahme


Ich möchte moderne PCs und komplexe Systeme gegenüberstellen (viele Prozessoren - etwa 90 Milliarden Tests / Schlüssel pro Sekunde).

Der einfachste Weg, um die praktische Geschwindigkeit (sehr viel weniger als die theoretische) auf einem modernen PC zu erreichen, besteht darin, nur einen Teil eines Schlüsselbereichs zu durchlaufen. Messen Sie, wie viele Schlüssel tatsächlich eingecheckt wurden, und wie viel Uhr es ist. (Oder jede Zeitspanne, die lang genug ist, um einen Durchschnitt zu bilden).

Dies ist keine sehr wissenschaftliche Lösung, aber Sie erhalten sehr gute praktische Antworten.

Wie ist es möglich, etwa 4-Kerne-3,5-GHz-Prozessor in Anzahl von Operationen pro Sekunde umzuwandeln?

Es ist nicht. Unterschiedliche Vorgänge erfordern eine unterschiedliche Anzahl von Zyklen. Eine einfache Addition kann nur einen Taktzyklus dauern. Eine Multiplikation kann 80 Sekunden dauern. Sie müssen also im Voraus wissen, was Sie verwenden werden. Und um die Dinge noch komplizierter zu machen, müssen Sie keine thermische Drosselung annehmen. Sie müssen den anfänglichen Turbo-Boost kompensieren, der die ersten Sekunden der Berechnungen beschleunigt. Sie müssen die Umgebungstemperatur, die Qualität der Kühlung, ...

Und eine Million Tests pro Sekunde entspricht 800 MHz / 3k MHz?

Auch nicht, da MHz nicht angibt, wie schnell die CPU ist.

Die nächste nichttechnische Analogie ist der Vergleich mit der Motordrehzahl oder der Geschwindigkeit, mit der sich Ihre Beine beim Radfahren drehen. Ohne Angabe, in welchem ​​Gang Sie sich befinden oder ob Sie einen 10CC-Motor oder einen riesigen 10-Liter-Motor verwenden.

Hennes
quelle
sehr interessant auch zu lesen :-)
Aubergine