babaice
Goto Top

Seitenkanalangriff, aber wie?

Hey Leute,

ich studiere Informatik und habe eine Hausaufgabe, für die ich das Passwort eines Programmes per Seitenkanalangriff knacken soll.

Dazu nutzt das Programm die folgende Routine zur Überprüfung:

  int compare_key () { 
      unsigned int len = strlen ( key_input ); 
      unsigned int correct_len = strlen ( correct_key );
      int i , random_time , false_key = 0; 
  
      unsigned int seed = getpid () + key_input ; 
      srand ( seed );  

      if ( len != correct_len ) 
          return 1; 
    
    
      for ( i = correct_len - 1; i >= 0; i - -) { 
          if ( key_input [i] != correct_key [i ]) { 
              usleep (500000) ; 
              false_key = 1; } 
       } 
              
      random_time = 500000 * ( rand () % 3);
      usleep ( random_time ); 
      return false_key ; 
}


So, nun habe ich die Länge des Passworts, aber wie geht's weiter? Gibt es vielleicht jemanden, der mir Anregungen geben kann? Danke im Voraus!

Greetz babaice

Content-ID: 373765

Url: https://administrator.de/forum/seitenkanalangriff-aber-wie-373765.html

Ausgedruckt am: 10.04.2025 um 15:04 Uhr

canlot
canlot 13.05.2018 um 23:28:06 Uhr
Goto Top
Hi,

du könntest mit der timing attack anfangen. Die Variable seed ist beeinflussbar. Du musst dazu nur die Prozess Id fälschen und das passende erste Zeichen eingeben. Srand setzt einen ersten Wert für die Zufallszahlengenerierung, ohne den wären die Zufallszahlen immer die selben und da du denn bestimmen kannst,kannst du die "Zufallszeit" bestimmen.

Den Rest musst du wohl selbst rausfinden.

Gruß