Zeitkonstante 'if-else' in Python

8

Ich würde gerne wissen, ob es einen einfachen Weg (vielleicht eine Bibliothek) gibt, um Konstantenprogramme in Python zu schreiben. Insbesondere würde ich gerne spezifizieren können, dass ein If-Else-Fluss immer die gleiche Zeit dauern muss, wenn die If-Bedingung True oder False ist.

Zum Beispiel:

%Vor%

Die Idee von constant-time ist, dass in der Ausführung die Zeit bis zum Erreichen von f3() unabhängig vom Ergebnis der Auswertung von condition die gleiche Zeit benötigt. Dies würde Zeitverlust als Seitenkanal verhindern, um andere Informationen preiszugeben (vgl. Timing-Angriffe ). .

    
synack 09.08.2014, 12:07
quelle

1 Antwort

9

Da es sich bei Ihrer Frage um Sicherheit handelt, gehe ich davon aus, dass wir die Leistung vernachlässigen und ganz naiv eine minimale Zeit für alle möglichen Zweige einplanen können. Eine Möglichkeit, dies zu erreichen, ist kontext manager :
Ihr Problem könnte dann wie folgt geschrieben werden:

%Vor%

Verwenden eines Kontext-Managers wie folgt definiert:

%Vor%

Sie müssten natürlich die tatsächliche Zeit an realistische Werte anpassen, je nachdem, was Sie tun.

Im Allgemeinen können Sie nicht sicher sein, dass Ihre minimale Zeit vom gewählten Zweig nicht überschritten wird, da Python eine sehr hohe Sprache ist und Sie es wahrscheinlich nicht in einem Echtzeit-Betriebssystem ausführen, aber wenn Sie es sind Um die durchschnittliche Laufzeit zu decken, sollten Sie die Informationen aus der Timing-Analyse deutlich reduzieren.

    
Leo Antunes 09.08.2014 23:18
quelle

Tags und Links