2016-09-21 2 views
1

Ich verwende FIPS zusammen mit OpenSSL-Bibliotheken. Wenn ich FIPS nicht möchte, verschlechtert sich die Systemleistung aufgrund des FIPS-Selbsttests. Aufgrund von Leistungsproblemen, möchte ich folgende Lösung haben: -Wie dynamisch FIPS und nicht-FIPS openssl-Bibliothek basierend auf Flags verwenden?

  1. Liba -> OpenSSL + FIPS
  2. libb -> OpenSLL nur

Wenn ich FIPS aktivieren, es in eine Datei berührt/tmp-Verzeichnis & startet das System neu. Jetzt, basierend auf dem Vorhandensein der Datei, möchte ich entweder LibA oder LibB laden. Hier sind beide LibA & LibB openssl Bibliotheken entweder mit FIPS oder ohne.

Ist es möglich, es zu tun? Wenn ja, wie? Gibt es noch eine andere bessere Lösung?

Hinweis: - Plattform ist LINUX.

Antwort

1

Ich möchte folgende Lösung haben:

  • Liba -> OpenSSL + FIPS
  • libb -> OpenSLL nur

FIPS aktivieren oder zu deaktivieren, rufen Sie FIPS_mode_set . FIPS_mode_set(1) sollte den Modus aktivieren, wenn die Bibliothek FIPS-fähig ist, während FIPS_mode_set(0) FIPS-Algorithmen deaktiviert.

Ich denke in Ihrer gewünschten Verwendung, wenn libA geladen wird, sucht es nach der temporären Datei und ruft nur FIPS_mode_set(1) auf, wenn die Datei vorhanden ist.

Wenn Sie kompilieren und verknüpfen gegen FIPS fähig und FIPS nicht fähig, dann sollten Sie den Code mit OPENSSL_FIPS schützen.

Also vielleicht so etwas wie:

#ifdef OPENSSL_FIPS 

int mode, ret = 0; unsigned long err = 0; 
mode = FIPS_mode(); 

if (temp_file_exsts && mode == 0) 
{  
    ret = FIPS_mode_set(1 /*on*/); 
    err = ERR_get_error(); 
} 
else if (temp_file_exsts && mode != 0)) 
{ 
    ret = FIPS_mode_set(0 /*off*/); 
    err = ERR_get_error(); 
} 
else 
{ 
    printf("Who knows..."); 
} 

if(ret != 1) 
{ 
    printf("FIPS_mode_set failed: %lx.", err);  
} 
#endif 

Wie dynamisch FIPS verwenden, um und Nicht-FIPS

Sie dlopen und Freunde verwenden. Sie müssen einige Tricks ausführen, um sicherzustellen, dass libA immer Lasten/Laufzeit-Links vor libB ist. Recherchiere es und stelle eine neue Frage, wenn du Probleme hast.


es berührt eine Datei im Verzeichnis/tmp & dem System

Forschung neu startet, wie eine temporäre Datei zu schreiben und wie programmatisch das System neu zu starten. Stellen Sie eine neue Frage, wenn Sie Probleme haben.

+0

Ich bin in der Lage, den ersten und letzten Teil zu erreichen. Ich wurde blockiert, während ich FIPS- und Nicht-FIPS-Bibliotheken benutzte, die auf fips-Flags basierten. Lass mich deinen Vorschlag ausprobieren. Vielen Dank. – 0x07FC

Verwandte Themen