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-Key: 373765

Url: https://administrator.de/contentid/373765

Printed on: April 18, 2024 at 19:04 o'clock

Member: canlot
canlot May 13, 2018 at 21:28:06 (UTC)
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ß