Kryptografie-Regeln

Erzwingen der Kryptografieregeln des Systems

In Fedora gelten systemweite Richtlinien für die Verwendung kryptografischer Protokolle wie TLS. Jede neu installierte Anwendung muss auf die Einhaltung dieser Richtlinien geprüft werden. Aktuell beschränken sich die Richtlinien auf wichtige Bibliotheken wie GnuTLS, OpenSSL, NSS und libkrb5, Programmiersprachen wie Java sowie gängige Anwendungen wie OpenSSH und bind. Das Werkzeug rpmlint warnt, sobald Handlungsbedarf besteht. Da diese Erkennung heuristisch erfolgt und auf C-Programme beschränkt ist, wird eine manuelle Überprüfung empfohlen. Beachten Sie jedoch, dass es Anwendungen gibt, die absichtlich schwächere oder benutzerdefinierte Einstellungen verwenden (z.B. Postfix). Diese müssen sich nicht an die Richtlinien halten. Im Zweifelsfall wenden Sie sich bitte an das Fedora Crypto Team.

Neue Kryptografie-Bibliotheken

Neue Krypto-Bibliotheken müssen den Kryptografierichtlinien von Fedora entsprechen, um in das Projekt aufgenommen zu werden, es sei denn, das Fedora-Packaging Commitee hat eine Ausnahme genehmigt. Wenn Sie ein Paket einreichen möchten, das nicht den Kryptografierichtlinien entspricht, MÜSSEN Sie sich zuerst an das Fedora-Kryptoteam wenden. Sobald die Genehmigung vorliegt, erstellen Sie ein Ticket beim Fedora Packaging Conmittee und beantragen Sie eine Ausnahme. Bitte verlinken Sie alle relevanten Diskussionen.

C/C++-Anwendungen

  • OpenSSL-Anwendungen:

    • Wenn die Anwendung eine Konfigurationsdatei bereitstellt, die das Ändern der Verschlüsselungsliste ermöglicht, stellen Sie sicher, dass die mitgelieferte Datei standardmäßig "PROFILE=SYSTEM" enthält. In diesem Fall sind keine weiteren Maßnahmen erforderlich.

    • Falls die Anwendung keine Konfigurationsdatei besitzt, stellen Sie sicher, dass keine Standard-Verschlüsselungsliste angegeben ist oder dass die Standardliste auf „PROFILE=SYSTEM“ gesetzt ist. Überprüfen Sie dazu den Quellcode auf die Funktion SSL_CTX_set_cipher_list(). Ist dies nicht vorhanden, ist keine Aktion erforderlich (der Standardwert wird verwendet). Ist der Aufruf hingegen vorhanden und liefert er eine feste Zeichenkette, die weder PSK noch SRP enthält, ersetzen Sie diese Zeichenkette durch „PROFILE=SYSTEM“ oder entfernen Sie den Aufruf.

  • GnuTLS-Anwendungen:

    • Wenn die Anwendung eine Konfigurationsdatei bereitstellt, die die Änderung der Prioritätszeichenkette der Verschlüsselung ermöglicht, enthält die mitgelieferte Datei standardmäßig "@SYSTEM". In diesem Fall sind keine weiteren Maßnahmen erforderlich.

    • Wenn die Anwendung keine Konfigurationsdatei besitzt, stellen Sie sicher, dass sie gnutls_set_default_priority() verwendet, oder dass die Standardprioritätszeichenkette "@SYSTEM" lautet. Überprüfen Sie also den Quellcode auf gnutls_priority_set_direct(), gnutls_priority_init(). Wenn diese nicht vorhanden sind und gnutls_set_default_priority() verwendet wird, ist nichts zu tun. Überprüfen Sie andernfalls die von der Anwendung bereitgestellten Zeichenketten. Wenn diese PSK oder SRP enthalten, unternehmen Sie nichts (diese Anwendungen sind derzeit nicht durch die Standardrichtlinie abgedeckt). Wenn nicht, ersetzen Sie gnutls_priority_set_direct() durch gnutls_set_default_priority(). Wenn stattdessen gnutls_priority_init() mit einer festen Zeichenkette verwendet wird, ersetzen Sie die Zeichenkette durch "@SYSTEM".

Anwendungen, die andere kryptografische Bibliotheken verwenden, halten sich nicht an die systemweiten Kryptografierichtlinien. (Die Einhaltung der systemweiten Richtlinien wird für NSS-Bibliotheken derzeit noch umgesetzt.) Anwendungen unter Fedora sollten, sofern möglich, eine dieser Bibliotheken verwenden, und vorzugsweise die vom Entwickler empfohlene Version.

Perl-Anwendungen

  • IO::Socket::SSL-Perl-Anwendungen:

    • Prüfen Sie den Quellcode auf das Übergeben des Arguments SSL_cipher_list an die Methoden von IO::Socket::SSL, wie z. B. new(), start_SSL(), new_from_fd(), set_defaults(), set_client_defaults() und set_server_defaults(). Falls das Argument nicht vorhanden ist, ist keine Aktion erforderlich (der Standardwert wird verwendet). Falls das Argument jedoch vorhanden ist, entfernen Sie es oder ändern Sie seinen Wert wie im OpenSSL-Abschnitt beschrieben.

  • Net::SSLeay-Perl-Anwendungen:

    • Prüfen Sie den Quellcode auf die Subroutinen CTX_set_cipher_list(), set_cipher_list() und set_pref_cipher() aus dem Namensraum Net::SSLeay. Falls ein solcher Aufruf vorhanden ist, folgen Sie den Anweisungen im OpenSSL-Abschnitt.

  • LWP::UserAgent-Perl-Anwendungen:

    • Prüfen Sie den Quellcode auf die Übergabe des Arguments SSL_cipher_list an den Methodenaufruf ssl_opts() eines LWP::UserAgent-Objekts. Falls ein solcher Aufruf vorhanden ist, folgen Sie den Anweisungen im Abschnitt zu OpenSSL.