Ich habe offene OpenSSL-Binärdateien von der dritten Partei (libeay32.dll
und ssleay32.dll
). Ich muss überprüfen und überprüfen, ob diese bereitgestellten Laufzeitbibliotheken kryptografische Algorithmen verwenden, die FIPS 140-2 einhalten. Gibt es eine Möglichkeit, dies zu überprüfen?Wie überprüft man, ob die openssl-Bibliotheken die FIPS-validierte Cryptography verwenden
Antwort
Gibt es eine Möglichkeit, dies zu überprüfen?
Ja, es gibt eine Reihe von Möglichkeiten. Am einfachsten ist es, openssl version
über die Befehlszeile auszuführen. Wenn seine FIPS Kryptographie validiert, dann wird es so etwas sagen wie:
> openssl version
Version: OpenSSL 1.0.1f-fips 6 Jan 2014
Eine verwandte Frage zu tun, um auf Linux bei How to check FIPS 140-2 support in OpenSSL? ist. Windows ist ausreichend unterschiedlich, daher sollte diese Frage offen bleiben.
Obwohl die frühere Frage Linux ist, können Sie das gleiche unter Windows mit dumpbin
, find
und strings
tun. Stellen Sie sicher, dass eine Entwicklereingabeaufforderung geöffnet ist (und keine normale Eingabeaufforderung), um sicherzustellen, dass Tools wie dumpbin im Pfad sind.
Hier sind einige der Dinge, die Sie (aus dem Schlitten Deck unten beschrieben) überprüfen:
- Erwartete User-Space Symbole vorhanden sind
- FIPS_mode_set(), FIPS_module_mode_set(), FIPS_mode() , FIPS_module_mode()
- erwartete interne Symbole vorhanden sind
- FIPS_text_start(), FIPS_text_end(), FIPS_rodata_start [], FIPS_rodata_end [], FIPS_signature [20];
- FIPS_set_mode (1) genannt wird und nicht
- ERR_get_error kehrt 0x0f06d065
- CRYPTO_R_FIPS_MODE_NOT_SUPPORTED zurück FTW nicht scheitern!
- mit Hilfe von Strings
- „FIPS 2.0 validiert Modul 14. März 2012“
- „FIPS 2.0.1 validierte Testmodul 12. Juni 2012“
- etc
- bekannt Antwort Tests
- Binäre Zeichenfolgedaten im RO-Abschnitt der ausführbaren Datei
- Überprüfen Sie die * .c Dateien für statische Werte
- Verschiedene Unterverzeichnisse: aes, cmac, des, ..., ecdsa, dsa, ...
- Selbsttest-Dateien: aes_selftest.c, dsa_selftes.c, ...
Hier ist ein Beispiel der binären Zeichenfolge, die aus fips/rand/fips_drbg_selftest.h
vorhanden sein wird:
0x2e,0xbf,0x98,0xf9,0x85,0x27,0x8b,0xff,
0x36,0xb9,0x40,0x0b,0xc0,0xa1,0xa0,0x13,
0x20,0x06,0xcc,0xe6,0x2a,0x03,0x77,0x7d,
0xee,0xde,0xcc,0x34,0xe3,0xcd,0x77,0xea,
0xd0,0x3e,0xbe,0xdd,0xf6,0x15,0xfb,0xa7,
0xd7,0x8e,0xd0,0x2e,0x2f,0x82,0x4c,0xc7,
0x87,0xb1,0x6f,0xc5,0xf8,0x5c,0x78,0xde,
0x77,0x9b,0x15,0x9a,0xb9,0x3c,0x38,0x38
ich auch ein Dia-Deck hochgeladen ich über das Thema der OpenSSL haben Wiki. Es heißt Building Applications using OpenSSL Validated Cryptography: Notes from the Field for Developers and Auditors. Sie möchten das Material um Folie 18 überprüfen.
Ich baute die Folie für OWASP, aber es gab kein Interesse, es zu erhalten. Ich weiß, Stack Overflow runzelt die Links wie die im OpenSSL-Wiki, aber ich weiß nicht, wie ich hier ein Overdeck mit über 35+ zur Verfügung stellen soll.
- 1. Wie überprüft man, ob die Schnittstelle ist
- 2. Wie überprüft man, ob die Übergabeschaltfläche die richtige Antwort enthält
- 3. Wie überprüft man, ob die Permutationen die gleiche Parität haben?
- 4. DllImport, wie überprüft man, ob die DLL geladen ist?
- 5. Wie überprüft man, ob localhost
- 6. Wie überprüft man, ob die XSLT-Anweisung ausgeführt wurde
- 7. Wie überprüft man, ob die FORM-Realm-Authentifizierung fehlgeschlagen ist?
- 8. Wie überprüft man, ob die Netzwerkadresse in Qt lokal ist
- 9. Wie überprüft man, ob die Entschlüsselung erfolgreich war?
- 10. Wie überprüft man, ob die Datei in Julia leer ist?
- 11. Wie überprüft man, ob die aktuelle Zeit in Python liegt?
- 12. Wie überprüft man, ob die Webseitenseite gescrollt wird?
- 13. Wie überprüft man, ob die Eingabe Buchstabe C ist?
- 14. Wie überprüft man, ob die erhaltene Homographiematrix gut ist?
- 15. Wie überprüft man, ob die Dotnet-Transaktion zurückgesetzt wird?
- 16. Java Wie überprüft man, ob die Datei existiert und öffnet?
- 17. Wie überprüft man, ob eine Zeile die richtige Syntax hat?
- 18. Wie überprüft man, ob die Ereignisausbreitung gestoppt wurde?
- 19. Wie überprüft man, ob die Nummer ein Mersenne Prime ist?
- 20. Wie überprüft man, ob die URL zur Datenbank gültig ist?
- 21. Wie überprüft man, ob die Zeile in Eloquent gelöscht wird?
- 22. TCL: Wie überprüft man, ob die Umgebungsvariable bereits gesetzt ist
- 23. Wie überprüft man, ob die Standardkonfiguration in CI3 geladen wurde?
- 24. Wie überprüft man, ob zwei Arrays die gleichen Werte enthalten?
- 25. Wie überprüft man, ob die Hilfsmethode/Variable in rspec existiert?
- 26. Wie überprüft man, ob die Aktivität noch im Stapel ist?
- 27. Wie überprüft man, ob die Seite mit Javascript existiert?
- 28. Wie überprüft man, ob die Django-Template-Variable definiert ist?
- 29. Android: Wie überprüft man, ob die Anwendung im Hintergrund läuft
- 30. Wie überprüft man, ob zwei vars die gleiche Referenz haben?
Vielen Dank JWW. Ich habe 'dumpbin/ALL libeay32.dll' verwendet, um Informationen über die libeay32.dll zu erhalten. Wie Sie vorgeschlagen haben, habe ich nach den User-Space-Symbolen und internen Symbolen gesucht. Aber ich konnte nur die Benutzerraumsymbole und nicht alle internen Symbole darin finden. Auch die genannten Strings fehlen in der ssl-Laufzeit libeay32.dll. –
7E1EFCE0: 66 69 70 73 20 6D 6F 64 65 20 61 6C 72 65 61 64 fips-Modus bereits eingelesen 7E1EFCF0: 79 20 73 65 74 00 00 00 66 69 6E 67 65 72 70 72 y einstellen ... fingerpr7E1EFD00: 69 6E 74 20 64 6F 65 73 20 6E 6F 74 20 6D 61 74 int mattiert nicht 7E1EFD10: 63 68 20 73 65 67 6D 65 6E 74 20 61 6C 69 61 73 ch segment alias 7E1EFD20: 69 6E 67 00 66 69 6E 67 65 72 70 72 69 6E 74 20 ing.fingerprint –
so teilweise validiert. Bedeutet das, dass die SSL-Laufzeit die erforderliche Kryptographie verwendet? –