Crypto++

Projekte, die den nachfolgenden Best Practices folgen, können sich freiwillig selbst zertifizieren und zeigen, dass sie einen Core-Infrastruktur-Initiative-/OpenSSF-Badge erhalten haben.

Wenn dies Ihr Projekt ist, zeigen Sie bitte Ihren Badge-Status auf Ihrer Projektseite! Der Badge-Status sieht so aus: Badge-Level für Projekt 3806 ist passing So können Sie ihn einbetten:

Dies sind die Kriterien das Level Silber. Sie können auch die Kriterien für die Level Passing oder Gold sehen.

        

 Grundlagen 15/17

  • Identifizierung

    Free C++ class library of cryptographic schemes

  • Voraussetzungen


    Das Projekt MUSS ein bestimmtes Level erreichen. [achieve_passing]

  • Grundlegende Informationen auf der Projektwebseite


    Die Informationen darüber, wie man mitwirken kann, MÜSSEN die Anforderungen für akzeptable Beiträge (z.B. einen Hinweis auf einen erforderlichen Codierungsstandard) enthalten. (URL erforderlich) [contribution_requirements]
  • Projektüberwachung


    Das Projekt SOLLTE einen rechtlichen Mechanismus haben, wo alle Entwickler von nicht-trivialen Beiträgen versichern, dass sie rechtlich ermächtigt sind, diese Beiträge zu machen. Der häufigste und leicht umsetzbare Ansatz, ist die Verwendung eines Developer Certificate of Origin (DCO) , wo Benutzer "signed-off-by" in ihren Commits und die Projektlinks zur DCO-Website hinzufügen. Allerdings DARF dies als Contributor License Agreement (CLA) oder als ein anderer rechtlicher Mechanismus implementiert werden. (URL erforderlich) [dco]

    The library does not have a process in place to handle paperwork like Developer Certificate of Origin (DCO).

    The library does require contributors to place their contributions in Public Domain to avoid legal issues. It is a precondition to accepting a contribution. But it is not the same as "legal authority to make contributions [sic]". Also see https://www.cryptopp.com/wiki/Category:Patch.



    Das Projekt MUSS eindeutig sein Projekt-Governance-Modell (die Art, wie es Entscheidungen fällt, einschließlich der wichtigsten Rollen) definieren und dokumentieren. (URL erforderlich) [governance]

    The project's governance is detailed in several places. In particular https://www.cryptopp.com/wiki/Release_Process and https://www.cryptopp.com/wiki/Release_Signing. We should probably create a PDF with the relevant information in one place.



    Das Projekt MUSS einen Code of Conduct etablieren und an einem üblichen Ort veröffentlichen. (URL erforderlich) [code_of_conduct]

    Do we really need to restate the Golden Rule?



    Das Projekt MUSS klar und deutlich die Rollen- auf Aufgabenverteilung dokumentieren, inklusive einzelnen Tätigkeiten, die von den Rollenträgern ausgeführt werden müssen. Es MUSS eindeutig sein wer welche Rolle hat, auch wenn es in anderer Form dokumentiert ist. (URL erforderlich) [roles_responsibilities]

    The project's key players and their roles are detailed in several places. In particular https://www.cryptopp.com/wiki/Release_Process and https://www.cryptopp.com/wiki/Release_Signing. We should probably create a PDF with the relevant information in one place.



    Das Projekt MUSS in der Lage sein, mit minimaler Unterbrechung fortzufahren, wenn eine beliebige Person nicht in der Lage ist oder stirbt. Insbesondere MUSS das Projekt in der Lage sein, Probleme zu lösen, vorgeschlagene Änderungen zu akzeptieren und Versionen der Software freizugeben, innerhalb einer Woche nach der Bestätigung, dass eine Person nicht mehr in der Lage ist oder gestorben ist. Dies DARF sichergestellt werden, indem man jemandem anderes notwendige Schlüssel, Passwörter und gesetzliche Rechte gibt, um das Projekt fortzusetzen. Einzelpersonen, die ein FLOSS-Projekt ausführen, DÜRFEN dies durch die Bereitstellung von Schlüsseln in einer Lockbox und einer Willenserklärung zur Bereitstellung von erforderlichen gesetzlichen Rechten (z. B. für DNS-Namen). (URL erforderlich) [access_continuity]

    The project's key players and their roles are detailed in several places. In fact four different key members were selected from different regions of the world to ensure continuity. In particular https://www.cryptopp.com/wiki/Release_Process and https://www.cryptopp.com/wiki/Release_Signing. We should probably create a PDF with the relevant information in one place.



    Das Projekt SOLLTE einen Bus-Faktor von 2 oder mehr haben. (URL erforderlich) [bus_factor]

    The project's key players and their roles are detailed in several places. In fact four different key members were selected from different regions of the world to ensure continuity. In particular https://www.cryptopp.com/wiki/Release_Process and https://www.cryptopp.com/wiki/Release_Signing. We should probably create a PDF with the relevant information in one place.


  • Dokumentation


    Das Projekt MUSS eine dokumentierte Roadmap, für mindestens das nächste Jahr haben, die beschreibt, was das Projekt beabsichtigt zu tun und nicht zu tun. (URL erforderlich) [documentation_roadmap]

    The project includes a Roadmap and Release Process. Also see https://www.cryptopp.com/wiki/Roadmap and >https://www.cryptopp.com/wiki/Release_Process>



    Das Projekt MUSS in der Dokumentation die Architektur (alias High-Level-Design) der vom Projekt entwickelten Software bereitstellen. Wenn das Projekt keine Software produziert, wählen Sie "nicht anwendbar" (N/A). (URL erforderlich) [documentation_architecture]

    Documentation is provided in the Manual and the Wiki. The manual is Doxygen-based and brief and focuses on API. The wiki is verbose with lost of code examples and provides greater details. Also see https://www.cryptopp.com/docs/ref/ and https://www.cryptopp.com/wiki.



    Das Projekt MUSS dokumentieren, was der/die Benutzer/in in Bezug auf die Sicherheit der Projektsoftware (seine "Sicherheitsanforderungen") erwarten kann und nicht erwarten kann. (URL erforderlich) [documentation_security]

    Documentation is provided in the Manual and the Wiki. The manual is Doxygen-based and brief and focuses on API. The wiki is verbose with lost of code examples and provides greater details. Also see https://www.cryptopp.com/docs/ref/ and https://www.cryptopp.com/wiki.



    Das Projekt MUSS eine "Quickstart"-Anleitung für neue Benutzer/innen haben, um ihnen zu helfen, schnell mit der Software umgehen zu können. (URL erforderlich) [documentation_quick_start]

    The quick Start guide is provided in Install.txt, which is similar to INSTALL. Also see https://github.com/weidai11/cryptopp/blob/master/Install.txt.

    Documentation is provided in the Manual and the Wiki. The manual is Doxygen-based and brief and focuses on API. The wiki is verbose with lost of code examples and provides greater details. Also see https://www.cryptopp.com/docs/ref/ and https://www.cryptopp.com/wiki.



    Das Projekt MUSS sich bemühen, die Dokumentation mit der aktuellen Version der Projektergebnisse (einschließlich der vom Projekt produzierten Software) stehts zu aktualisieren. Jegliche bekannte Dokumentationsfehler, die es inkonsistent machen, MÜSSEN behoben werden. Wenn die Dokumentation in der Regel aktuell ist, aber fälschlicherweise einige ältere Informationen enthält, die nicht mehr wahr sind, behandeln Sie diese als Störung, dann verfolgen und beheben Sie diese wie üblich. [documentation_current]

    Documentation is provided in the Manual and the Wiki. The manual is Doxygen-based and brief and focuses on API. The manual is frequently updated. The wiki is verbose and provides greater details. Also see https://www.cryptopp.com/docs/ref/ and https://www.cryptopp.com/wiki.



    Die Projekt-Repository-Titelseite und / oder Website MUSS alle Errungenschaften, die erreicht wurden, einschließlich dieses Best Practices Abzeichens, innerhalb von 48 Stunden nach der öffentlichen Anerkennung ausweisen und verlinken. (URL erforderlich) [documentation_achievements]

    Ugh, we need to update the site's HTML and cutover to markdown (*.md) for this.


  • Zugänglichkeit und Internationalisierung


    Das Projekt (beide Projektwebsite und Projektergebnisse) SOLLTE den bewährten Praktiken der Erreichbarkeit folgen, damit Personen mit Behinderungen noch an dem Projekt teilnehmen und die Projektergebnisse nutzen können, wo es vernünftig ist. [accessibility_best_practices]

    Ugh, we are missing text alternatives for those using screen readers.



    Die Projektsoftware SOLLTE internationalisiert werden, um eine einfachen Zugang für die Kultur, Region oder Sprache der Zielgruppe zu ermöglichen. Wenn die Internationalisierung (i18n) nicht andzuwenden ist (z. B. die Software keine für Endbenutzer beabsichtigte Texte erzeugt und keinen menschlich lesbaren Text sortiert), wählen Sie "nicht anwendbar" (N/A). [internationalization]

    The library uses 7-bit ASCII clean for source code. The website uses UTF-8 encoding for web pages. The wiki uses UTF-8 encoding for web pages.


  • Andere


    Wenn die Projektseiten (Website, Repository und Download-URLs) Passwörter für die Authentifizierung von externen Benutzern speichern, müssen die Passwörter als iterierte Hashes mit einem per-User-Salt unter Verwendung eines Key-Stretching (iterierten) Algorithmus (z. B. Argon2id, Bcrypt, Scrypt, or PBKDF2). Wenn die Projektseiten hierfür keine Passwörter speichern, wählen Sie "nicht anwendbar" (N/A) aus. [sites_password_security]

    The website is hosted on a CentOS 7 VM. Access is granted through SSH using public key only.

    The source code is hosted on GitHub. Our governance requires code signing so nearly all commits are signed.

    The wiki accounts are by request only. Once granted Mediawiki hashes the password using SHA-512.


  • Vorherige Versionen


    Das Projekt MUSS die am häufigsten verwendeten älteren Versionen des Produkts beibehalten oder einen Upgrade-Pfad zu neueren Versionen bieten. Wenn der Upgrade-Pfad schwierig durchzuführen ist, muss das Projekt dokumentieren, wie das Upgrade durchgeführt werden kann (z. B. die Interfaces, die sich geändert haben, detaillierte Anleitung für die Aktualisierung des Upgrades). [maintenance_or_update]

    The library provides past releases back to Crypto++ 2.0 dated January 1998. Also see https://www.cryptopp.com/downloads.html.

    Being a library there is little need for upgrade paths. When needed for backwards compatibility, the library provides a class with the older behavior. For example, when a particular software-based PRNG was changed, a new class with the old behavior was added due to user requests. Also see the "OldRandomPool" class at https://www.cryptopp.com/wiki/RandomNumberGenerator#Old_RandomPool.


  • Bug-Report-Prozess


    Das Projekt MUSS ein Issue-Tracking-System zur Verwaltung einzelner Issues verwenden. [report_tracker]
  • Anfälligkeits-Prozessbericht


    Das Projekt MUSS die Reporter/in von allen in den letzten 12 Monaten bekanntgegebenen Schwachstellenberichte aufführen, mit Ausnahme der Reporter, die Anonymität erbeten. Wurde in den letzten 12 Monaten keine Schwachstelle festgestellt, wählen Sie "nicht anwendbar" (N/A). (URL erforderlich) [vulnerability_report_credit]

    The library gives credit where credit is due. Also see release notes like https://www.cryptopp.com/release600.html.



    Das Projekt MUSS den Prozess für die Meldung von Schwachstellen auf der Projektseite veröffentlichen. (URL erforderlich) [vulnerability_response_process]

    The process for responding to bugs in general and security bugs in particular can be found at https://www.cryptopp.com/wiki/Bug_Report#Security_Bugs.


  • Programmierstil


    Das Projekt MUSS die spezifischen Codierungsstilrichtlinien für die primären Programmierprachen, die es verwendet, einhalten, und erfordern, dass die Beiträge die Bedingungen generell erfüllen. (URL erforderlich) [coding_standards]

    Ugh, we fail...

    On the good side, lack of coding standards removes a lot of barriers for patches. We don't reject contributions items like space vs tab, how to comment, end-of-line conversions, etc. We accpet the patch and fix it according to our [internal] standards.



    Das Projekt MUSS automatisch dafür sorgen, dass die ausgewählten Stilrichtlinien eingehalten werden, wenn mindestens ein FLOSS-Tool vorhanden ist, welches das in der gewählten Programmiersprache tun kann. [coding_standards_enforced]

    Ugh, we fail...

    On the good side, lack of coding standards removes a lot of barriers for patches. We don't reject contributions items like space vs tab, how to comment, end-of-line conversions, etc. We accpet the patch and fix it according to our [internal] standards.


  • Produktivsystem


    Build-Systeme für native Binärdateien MÜSSEN die relevanten Compiler- und Linker- (Umgebungs-) Variablen, die an sie übergeben werden (z.B. CC, CFLAGS, CXX, CXXFLAGS und LDFLAGS), respektieren und an Compiler- und Linker-Aufrufe weiterleiten. Ein Build-System DARF sie mit zusätzlichen Flags erweitern; Es DARF NICHT einfach die mitgelieferten Werte ersetzen. Wenn keine nativen Binärdateien erzeugt werden, wählen Sie "nicht anwendbar" (N/A). [build_standard_variables]

    Absolutely. The project follows GNU Coding Standards by default. The user always has the final say in compilers and flags.



    Das Build- und Installationssystem SOLLTE Debugging-Informationen beibehalten, wenn sie in den entsprechenden Flags angefordert werden (z. B. "install -s" wird nicht verwendet). Wenn kein Build- oder Installationssystem vorhanden ist (z. B. typische JavaScript-Bibliotheken), wählen Sie "nicht anwendbar" (N / A). [build_preserve_debug]

    Absolutely. The project follows GNU Coding Standards by default. The project adds debug information in default builds.



    Das Build-System für die Software, die durch das Projekt erzeugt wird, DARF NICHT rekursive Unterverzeichnisse aufbauen, wenn es Querverweise in den Unterverzeichnissen gibt. Wenn kein Build- oder Installationssystem vorhanden ist (z.B. typische JavaScript-Bibliotheken), wählen Sie "nicht anwendbar" (N / A). [build_non_recursive]

    Absolutely. The project does not use recursive directories, so there is no recursive make.



    Das Projekt MUSS in der Lage sein, den Prozess der Generierung von Informationen aus Quelldateien zu wiederholen und genau das gleiche Bit-für-Bit-Ergebnis zu erhalten. Wenn kein Build auftritt (z. B. Skriptsprachen, in denen der Quellcode direkt verwendet wird, anstatt kompiliert zu werden), wählen Sie "nicht anwendbar" (N / A). [build_repeatable]

    Absolutely. The project attempts to obtain a reproducible builds.


  • Installationssystem


    Das Projekt MUSS eine Möglichkeit zur einfachen Installation und Deinstallation der Software haben, unter Benutzung einer häufig verwendeten Methode. [installation_common]

    Absolutely. The project follows GNU Coding Standards by default. 'make install' and 'make uninstall' are supported in the makefile.



    Das Installationssystem für den/die Endbenutzer/in MUSS Standardkonventionen zur Auswahl des Zielortes, in dem gebildete Artefakte zur Installationszeit geschrieben werden, folgen. Zum Beispiel, wenn es Dateien auf einem POSIX-System installiert, muss es die DESTDIR-Umgebungsvariable verwenden. Wenn es kein Installationssystem oder keine Standardkonvention gibt, wählen Sie "nicht anwendbar" (N/A). [installation_standard_variables]

    Absolutely. The project follows GNU Coding Standards by default. Users are allowed to override default choices.



    Das Projekt MUSS einen Weg für potenzielle Entwickler bereithalten, um schnell alle erforderlich Projektergebnisse und Support-Umgebungen zu installieren, um Änderungen vornehmen zu können, einschließlich der Tests und Test-Umgebung. Dies MUSS mit einer gängigen Methode durchgeführt werden können. [installation_development_quick]

    Absolutely. The project follows GNU Coding Standards by default. We also work hard to minimize dependencies. The only thing needed to setup an environment is GNU make 3.80 or higher and a working C++ compiler that supports RTTI and exceptions.


  • Externe gepflegte Komponenten


    Das Projekt MUSS externe Abhängigkeiten in computerlesbarer Form auflisten. (URL erforderlich) [external_dependencies]

    The prject maintains three external projects. The three external projects allow users to use a different build system (other then GNU Make). The wiki pages for the projects:

    And the corresponding GitHub repos:



    Projekte MÜSSEN ihre externen Abhängigkeiten (einschließlich Bequemlichkeitskopien) überwachen oder regelmäßig überprüfen, um bekannte Schwachstellen zu erkennen und ausnutzbare Schwachstellen zu beheben oder sie als unausweichlich zu verifizieren. [dependency_monitoring]

    While we provide external projects, they are only project build files for Autotools, Cmake and Android.

    Whenever a new release of the library occurs, we package a new release of the build systems.



    Das Projekt MUSS entweder:
    1. Es einfach machen, wiederverwendbare extern gepflegte Komponenten zu identifizieren und zu aktualisieren;oder
    2. Die Standardkomponenten des Systems oder der Programmiersprache verwenden.
    Dann, wenn eine Schwachstelle in einer wiederverwendeten Komponente gefunden wird, wird es einfach sein diese Komponente zu aktualisieren. [updateable_reused_components]

    While we provide external projects, they are only project build files for Autotools, Cmake and Android.



    Das Projekt SOLLTE vermeiden veraltete oder obsolete Funktionen und APIs zu verwenden, für die FLOSS-Alternativen in der eingesetzten Technologie verfügbar sind (ihr "Technologie-Stack") und eine Supermajorität der Benutzer, die das Projekt unterstützt (so dass die Benutzer den Zugriff auf die Alternative haben ). [interfaces_current]

    Absolutely. We remove deprecated APIs, or only provide them as needed for older/ancient platforms. On modern platforms the project uses modern system calls.


  • Automatisierte Test-Suite


    Eine automatisierte Test-Suite MUSS bei jedem Check-In auf ein gemeinsames Repository für mindestens einen Zweig angewendet werden. Diese Test-Suite muss einen Bericht über Erfolg oder Misserfolg des Testes produzieren. [automated_integration_testing]

    Absolutely. The project uses Travis, Cirrus and AppVeyor for CI. Results are sent to the [public] cryptopp-build mailing list at https://groups.google.com/forum/#!forum/cryptopp-build.



    Das Projekt MUSS Regressionstests zu einer automatisierten Test-Suite hinzufügen für mindestens 50% der, in den letzten sechs Monaten, gefixten Bugs. [regression_tests_added50]

    Our governance requires each bug and mailing list question has a postmortem examination. We try to determine why the instance problem (bug or question) happened. We then take action to fix future problems of the same class. We also add a specific test case in the case of a bug. We usually add documentation in response to a user question if it is missing. We consider lack of documentation bugs, too.



    Das Projekt MUSS automatisierte FLOSS-Test-Suite(s) haben, die mindestens 80% Aussage Berichterstattung haben, wenn es mindestens ein FLOSS-Tool gibt, das dieses Kriterium in der ausgewählten Sprache erfüllen kann. [test_statement_coverage80]

    The project uses Gcov, but it is not automated (yet).


  • Neue Funktionalitätsüberprüfung


    Das Projekt MUSS eine formale schriftliche Richtlinie dazu haben, wie wichtige neue Funktionalität hinzugefügt werden. Tests für die neue Funktionalität MÜSSEN zu einer automatisierten Test-Suite hinzugefügt werden. [test_policy_mandated]

    Our governance requires new algorithms have both documentation on the wiki and test cases. We don't add new algorithms without test cases. It is too dangerous.



    Das Projekt MUSS in seinen dokumentierten Anweisungen für Änderungsvorschläge die Richtlinien enthalten, die Tests für große neue Funktionalität hinzugefügt werden sollen. [tests_documented_added]

    Our governance requires new algorithms have both documentation on the wiki and test cases. We don't add new algorithms without test cases. It is too dangerous.

    It looks like we need to add a wiki page on this topic. I thought we had one, but I cannot find it.


  • Warnhinweise


    Projekte MÜSSEN praktischerweise sehr streng mit Warnungen in der Projektsoftware sein. [warnings_strict]

    Testing includes -Werror when using GCC and Clang.


  • Wissen über sichere Entwicklungspraktiken


    Das Projekt MUSS sichere Designprinzipien (von "know_secure_design"), soweit anwendbar, umsetzen. Wenn das Projekt keine Software produziert, wählen Sie "nicht anwendbar" (N/A). [implement_secure_design]

    The project complies with FIPS 140-2 software requirements and attempts to use "secure by default" settings. For example, the library's assert is "off by default" because asserts are so dangerous. Also see https://www.cryptopp.com/wiki/Assertions.

    Note that the library only complies with FIPS 140-2. It is not longer validated (it used to be validated, but the validation was sunsetted by NIST).


  • Verwende grundlegend gute kryptographische Praktiken

    Beachten Sie, dass einige Software keine kryptographischen Mechanismen verwenden muss. Wenn Ihr Project Software erstellt das (1) kryptographische funktionen einbindet, aktiviert, oder ermöglicht und (2) aus den USA heraus an nicht US-Bürger verteilt wird, dann könnten sie rechtlich zu weiterne Schritten gezwungen sein. Meistens beinhaltet dies lediglich das Senden einer E-Mail. Für mehr Informationen, siehe den Abschnitt zu Encryption in Understanding Open Source Technology & US Export Controls.

    Die Standard-Sicherheitsmechanismen innerhalb der Projektsoftware DÜRFEN NICHT von kryptographischen Algorithmen oder Modi mit bekannten schweren Mängeln abhängen (z.B. der SHA-1-Kryptographie-Hash-Algorithmus oder der CBC-Modus in SSH). [crypto_weaknesses]

    When available, the project uses 128-bits of security by default. 128-bits of security is the US government's recommendation nowadays.



    Das Projekt SOLLTE mehrere kryptographische Algorithmen unterstützen, so dass Benutzer schnell wechseln können, wenn eines defekt ist. Verbreitete symmetrische Schlüsselalgorithmen umfassen AES, Twofish und Serpent. Verbreitete kryptographische Hash-Algorithmus-Alternativen umfassen SHA-2 (einschließlich SHA-224, SHA-256, SHA-384 UND SHA-512) und SHA-3. [crypto_algorithm_agility]

    The Crypto++ library has an abundance of crypto agility :)



    Das Projekt MUSS die Speicherung von Anmeldeinformationen (z.B. Passwörter und dynamische Token) und private kryptografische Schlüssel in Dateien, die von anderen Informationen getrennt sind (z.B. Konfigurationsdateien, Datenbanken und Protokolle), unterstützen und den Benutzern erlauben, sie ohne Code-Neukompilierung zu aktualisieren und zu ersetzen . Wenn das Projekt keine Anmeldeinformationen und private kryptographische Schlüssel verarbeitet, wählen Sie "nicht anwendbar" (N/A). [crypto_credential_agility]

    The library itself does not handle sensitive information per se.

    The calling application will handle the sensitive information, and may use the library to encrypt it and store it where the user wants.



    Die vom Projekt produzierte Software SOLLTE sichere Protokolle für alle Netzwerkkommunikationen unterstützen , wie SSHv2 oder höher, TLS1.2 oder höher (HTTPS), IPsec, SFTP und SNMPv3. Unsichere Protokolle wie FTP, HTTP, Telnet, SSLv3 oder früher, und SSHv1 SOLLTEN standardmäßig deaktiviert werden und nur aktiviert werden, wenn der/die Benutzer/in es speziell konfiguriert. Wenn die vom Projekt produzierte Software keine Netzwerkkommunikation verwendet, wählen Sie "nicht anwendbar" (N/A). [crypto_used_network]

    The library does not provide protocols like SSH or TLS.



    Wenn die Software, die durch das Projekt produziert wird, TLS unterstützt oder verwendet, SOLLTE sie mindestens TLS Version 1.2 verwenden. Beachten Sie, dass der Vorgänger von TLS SSL genannt wurde. Wenn die Software TLS nicht verwendet, wählen Sie "nicht anwendbar" (N/A). [crypto_tls12]

    The library does not provide protocols like SSH or TLS.



    Die Software, die vom Projekt produziert wird, muss, wenn es TLS unterstützt, die TLS-Zertifikatsüberprüfung standardmäßig bei der Verwendung von TLS, einschließlich auf Subresources, durchführen. Wenn die Software TLS nicht verwendet, wählen Sie "nicht anwendbar" (N/A). [crypto_certificate_verification]

    The library does not provide protocols like SSH or TLS.

    The library does provide a X.509 certificate class that can be used to read and verify certificates and certificate chains. Also see https://www.cryptopp.com/wiki/X509Certificate.



    Die Software, die vom Projekt produziert wird, MUSS, wenn sie TLS unterstützt, eine Zertifikatsüberprüfung durchführen, bevor HTTP-Header mit privaten Informationen (wie z.B. sichere Cookies) versendet werden. Wenn die Software TLS nicht verwendet, wählen Sie "nicht anwendbar" (N/A). [crypto_verification_private]

    The library does not provide protocols like SSH or TLS.


  • Sicheres Release


    Das Projekt MUSS kryptographisch unterschriebene Releases der Projektergebnisse aufzeichnen, die für weit verbreitete Verwendung gedacht sind, und es MUSS ein dokumentierter Prozess sein, der den Benutzern/innen erklärt, wie sie die öffentlichen Signaturschlüssel erhalten und die Signatur(en) überprüfen können. Der private Schlüssel für diese Signatur(en) MUSS NICHT auf der Seite(n) verwendet werden, die öffentlich zugänglich sind. Wenn Releases nicht für eine weit verbreitete Verwendung bestimmt sind, wählen Sie "nicht anwendbar" (N/A). [signed_releases]

    The project signs releases with GnuPG using RSA-4096 keys and SHA-256 digests. Also see https://www.cryptopp.com/wiki/Release_Signing.



    Es wird empfohlen, dass in dem Versionskontrollsystem jeder wichtige Versions-Tag (ein Tag, der Teil eines Hauptrelease, eines kleineren Release, oder eines Fixes, öffentlich gemeldeten Schwachstellen, ist) kryptographisch signiert und verifizierbar ist, wie in Signed_releases. [version_tags_signed]

    Hmmm.... I don't know how to sign a tag.


  • Andere Sicherheitsissues


    Die Projektergebnisse MÜSSEN alle Eingaben aus potenziell nicht vertrauenswürdigen Quellen überprüfen, um sicherzustellen, dass sie gültig sind (eine *Allowliste*) und ungültige Eingaben ablehnen, wenn überhaupt Einschränkungen für die Daten vorliegen. [input_validation]

    The project does not handle untrusted user inputs. The applications that user the library may do so.



    Härtungsmechanismen SOLLTEN in der Software, die das Project entwickelt, verwendet werden, so dass Softwarefehler weniger wahrscheinlich zu Sicherheitslücken führen. [hardening]

    The project uses hardened toolchain settings when available, like -fexceptions, -fplugin=annobin, -fstack-clash-protection, -fstack-protector-strong (or -fstack-protector), -grecord-gcc-switches, -mcet -fcf-protection, -Werror=format-security, -Werror=implicit-function-declaration, -fPIC and -pie for ASLR, -Wa,--noexecstack, -Wl,-z,relro, -Wl,-z,now and -Wl,-z,defs.



    Das Projekt MUSS einen "Assurance Case" bereithalten, der rechtfertigt, wie die Sicherheitsanforderungen erfüllt werden. Der Assurance Case muss Folgendes beinhalten: eine Beschreibung des Bedrohungsmodells, eine eindeutige Identifizierung von Vertrauensgrenzen, eine Beschreibung wie sichere Designprinzipien angewendet wurden, und eine Beschreibung wie die üblichen Implementierungssicherheitsschwächen beseitige wurden. (URL erforderlich) [assurance_case]

    Ugh, the project lacks threat models, attack trees and compensating controls.


  • Statische Codeanalyse


    Das Projekt MUSS mindestens ein statisches Analyse-Tool mit Regeln oder Ansätzen verwenden, um nach bekannten Schwachstellen in der analysierten Sprache oder Umgebung zu suchen, wenn es mindestens ein FLOSS-Tool gibt, das dieses Kriterium in der ausgewählten Sprache implementieren kann. [static_analysis_common_vulnerabilities]

    The project uses Coverity Scan on Linux and OS X. The project uses Visual Studio Enterprise Analysis on Windows. Finally, the project uses the Looks Good To Me continuous security analysis. Also see https://www.cryptopp.com/wiki/Coverity_Scan and https://lgtm.com.


  • Dynamische Codeanalyse


    Wenn die Projektsoftware Software mit einer speicherunsicheren Sprache (z.B. C oder C ++) enthält, MUSS mindestens ein dynamisches Werkzeug (z.B. ein Fuzzer oder ein Web-Applikationsscanner) routinemäßig in Kombination mit einem Mechanismus verwendet werden, welche Speichersicherheitsproblemen wie Puffer-Cach Überschreibe erkennen. Wenn das Projekt keine Software verwendet, die in einer speicherunsicheren Sprache geschrieben ist, wählen Sie "nicht anwendbar" (N/A). [dynamic_analysis_unsafe]

    The project uses Valgrind and Sanitizers to test for runtime violations. Valgrind detects memory and thread problems. Santiziers include Asan, Msan and UBsan.

    The projects self tests also "fuzz" certain interfaces attempting to crash the test suite. The fuzzing occurs under Valgrind, Asan and Msan.



Die Daten sind unter der Creative Commons Attribution 3.0-Lizenz oder Nachfolder (CC-BY-3.0+) verfügbar, bereitgestellt von der Open Source Security Foundation unter den Nutzungsbedingungen. Es ist allen erlaubt, die Daten zu teilen und anzupassen, müssen aber einen angemessene Hinweis auf den Urheber geben. Bitte geben Sie als Urheber Jeffrey Walton und die OpenSSF Best Practices Badge Mitwirkenden an.

Projekt-Badge-Eintrag im Besitz von: Jeffrey Walton.
Eintrag erstellt: 2020-03-25 18:25:43 UTC, zuletzt aktualisiert: 2020-03-26 03:01:39 UTC. Letztes erreichtes Badge: 2020-03-25 19:57:57 UTC.

Zurück