mikrocontroller.net

Forum: PC-Programmierung Warscheinlichkeitsrechnung


Autor: Die Matrix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

Schaffe es leider nicht eine Warscheinlichkeitsrechung aufzustellen.
Darum bitte ich um Hilfe.

Angenommen ich wäre ein Hacker, und wollte eine Seriennummer eines
Programmes knacken. Angenommen der Benutzername ist bekannt (soll auch
noch in mein Programm einfliesen, um die Sicherheit zu erhöhen).

Die Seriennumer ist 32 Stellen lang. Es können Zahlen von 0 bis 9 und
Buchstaben von A bis Z verwendet werden. (Ein paar Zahlen und
Buchstaben sind verboten nähmlich 6 Stück )

Wie lange wäre ich beschäftigt, wenn ich zb. 1000 Versuche pro Sekunde
mache?


Mit welcher Methode wäre ich schneller am Ziel? Zufallszahlen
ausprobieren oder 000000001 dann 0000002 usw probieren?


Wie sicher wird die Methode wenn ich den Benutzernamen miteinfließen
lasse ?

Autor: Hacker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A..Z =    26
0..9 =    10
          --
          36
Verboten  -6
          --
Erlaubt:  30 Zeichen

Seriennummer mit 32 Stellen ergibt
30^32 = 1.853*10^47 mögliche Seriennummern

1.853*10^47/1000 = 1,835*10^44 Sekunden nach Nummer suchen

1,835*10^44 sind ca. 5.88*10^36 Jahre

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Die Seriennumer ist 32 Stellen lang. Es können Zahlen von 0 bis 9
> und Buchstaben von A bis Z verwendet werden. (Ein paar Zahlen und
> Buchstaben sind verboten nähmlich 6 Stück )

d.h. dein Alphabet besteht aus 29 Symbolen

> Wie lange wäre ich beschäftigt, wenn ich zb. 1000 Versuche pro
> Sekunde mache?

dazu muessen wir erstmal wissen, wieviele Kombinationen es gibt.

DU hast 32 Stellen. Gut

Für die erste Stelle gibt es 29 Möglichkeiten. Für jede einzelne
dieser Möglichkeiten in der ersten Stelle hast du 29 Möglichkeiten
für die 2.te Stelle. Für jede Kombination aus 1.ter und 2.ter Stelle
gibt es wieder 29 Möglichkeiten für die 3.te Stelle. usw.
Insgesammt gibt es 29 hoch 32 Möglichkeiten:

Moment: tip, tip, tip

das sind 6,2 mal 10 hoch 46 Möglichkeiten.

Bei 1000 Versuchen in der Sekunde, brauchst du also
6,2 mal 10 hoch 43 Sekunden um alle Kombinationen durchzutesten.
Ein Jahr hat 60*60*24*356 -> ~ 3 mal 10 hoch 7 Sekunden.

d.h. du brauchst ca. 2 mal 10 hoch 39 Jahre.

Das Universium ist ca. 15 Milliarden Jahre alt (ob das jetzt 15
oder 18 oder 20 sind, spielt keine Rolle.) Das sind 15 mal 10 hoch 9

Das heist das du das gegenwärtige Alter des Universums in etwa
4 mal 10 hoch 29 mal aufbrauchst um alle Kombinationen durchzuspielen.

> Mit welcher Methode wäre ich schneller am Ziel? Zufallszahlen
> ausprobieren oder 000000001 dann 0000002 usw probieren?

Eindeutig Zufallszahlen. Du könntest Glück haben und die Nummer
zufällig erraten. Systematisch durchprobieren ist mit der
von dir genannten Testrate wie oben gezeigt nicht zielführend.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mist.
Ich habe die 0 vergessen.
d.h. die Zahlen sind noch einen Tick höher. Spielt aber
keine wirkliche Rolle. Die Zeiträume sind so dermassen lang.

Autor: Hacker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1000 Versuche/Sekunde sind aber auch nicht viel.

Jetzt müsste man noch berechnen, wie die Anzahl der maximalen
Versuche/Sekunde, die ein jeweils aktueller Rechner schafft, im Laufe
der Zeit steigt...

Ausserdem muss noch bekannt sein, wie die Seriennummern im möglichen
Bereich verteilt sind, um einen passenden Suchalgorithmus zu finden.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Mit welcher Methode wäre ich schneller am Ziel? Zufallszahlen
>> ausprobieren oder 000000001 dann 0000002 usw probieren?
>
> Eindeutig Zufallszahlen.

Mit welcher Begründung? Bei gleichverteilten Nummern (das sollte bei
einer pseudozufälligen Seriennummer der Fall sein) macht doch keinen
Unterschied ob man zufällig oder der Reihe nach vorgeht.

Ist aber rein akademisch, bei der Menge an möglichen Zahlen ist ein
Erraten völlig und absolut unmöglich.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mit welcher Begründung?

Ganz einfach.
Wenn du systematisch durch den Suchraum gehst (lineare Suche),
dann musst du (Moment muss hochscrollen) du x mal das
Alter des Universums lang suchen bis du durch den Suchraum
bist. Wenn du Pech hast, ist es der letzte Key der richtig ist.
Nicht mal das Wissen, dass man bei linearer Suche im mittel
bei n/2 fündig wird (n sei die Größe des Suchraumes) hilft
dir: Du bist längst tot bis du n/2 erreicht hast.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry.
Hatte nicht weitergelesen.

Die Überlegung ist: 'Ein blindes Huhn findet auch mal ein Korn'.
Wenn du zufällig probierst, könntest du Glück haben und
zufällig den richtigen erwischen. Die Chancen dafür sind zwar
astronomisch schlecht, aber sie sind nicht ganz 0.

Auf der anderen Seite könnte man natürlich Glück haben und
der Ersteller des Keys benutzte einen Key der bei systematischer
Suche ganz am Anfang auftaucht. Dann ist er aber selber Schuld.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Auf der anderen Seite könnte man natürlich Glück haben und
> der Ersteller des Keys benutzte einen Key der bei systematischer
> Suche ganz am Anfang auftaucht. Dann ist er aber selber Schuld.

Es gibt keinen prinzipiellen Unterschied zwischen einem Wert der bei
der linearen Suche ganz am Anfang auftaucht (z.B. 0001), und einem der
per Zufall bestimmt wird (z.B. 4590). Es gibt keine "natürliche
Reihenfolge", keinen Grund dafür warum die Werte 0001, 0002, 0003 usw.
seltener auftauchen sollten als welche die du "zufällig" wählst. Den
gäbe es nur wenn der Ersteller den Algorithmus bewusst so gestaltet
hätte dass eine bestimmte Art von Werten vermieden wird, was bei 30^32
möglichen Werten völlig sinnlos wäre.

Die lineare Suche dauert nicht länger als die Zufallssuche, sie macht
nur anschaulich klar wie sinnlos das Unterfangen in diesem Fall ist.

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich stimme euch allen zu:
Man ist theoretisch bei derart riesigen Zahlen dass
es praktisch gesehen völlig unmöglich ist.

> der Ersteller den Algorithmus bewusst

Von einem Algorithmus war doch im Originalposting überhaupt
nicht die Rede. Ich gehe davon aus, dass die bewusste Nummer
von einem Menschen generiert wird. Und Menschen haben Vorlieben.
Ich denke mal dass die wenigsten Menschen die Nummer
   0000000000000....1
wählen würden.

> Die lineare Suche dauert nicht länger als die Zufallssuche, sie
> macht nur anschaulich klar wie sinnlos das Unterfangen in diesem
> Fall ist.

Natürlich tut sie das nicht. Den letztendlich bleibt nichts
anderes übrig als den kompletten Suchraum absuchen. Als Mensch
würdest du halt nur ein paar Kombinationen zurückstellen von
denen du nicht erwartest, dass der Generierer (ebenfalls ein
Mensch) sie gewählt hat. Ich sag ja auch nicht, dass eine
zufällige Suche zu Lebzeiten zum Ziel führen würde, ganz
im Gegenteil. Sie ist aber lustiger. Vor allem die Buchführung
welche Kombination schon gewählt wurde stell ich mir toll vor :-)

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Berechnung wird üblicherweise mit einem Hash gemacht, damit das
Programm die Nummer auch überprüfen kann (sonst müssten ja alle
möglichen Nummern in der Software mitgeliefert werden).

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wollte ich auch schon sagen. Natürlich wird die Seriennummer dadurch
weniger sicher, was bisher keiner erwähnt hat. Denn es gibt natürlich
weit mehr als nur eine gültige Seriennummer.

Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geh den einfachen Weg und debugge das Programm und NOP einfach die
Seriennummer abfrage, denn dann ist es völlig egal wie viele Nummern
die Seriennummer hat :-)

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 1000 Versuche/Sekunde sind aber auch nicht viel.

Stimmt, bei 1 Milliarde / Sekunde wären es nur noch 4 * 10 ^ 23 mal das
Alter des Universums ;-)

Autor: Hacker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber bei 1 Milliarde/Sekunde/Rechner sieht's dann besser aus.
Vorausgesetzt man hat genügend Rechner zur Verfügung ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.