Übersicht über die Signatur von Assured OSS-Artefakten

Assured Open Source Software bietet Ihnen Pakete, Paketmetadaten und Dienstprogrammskripts. Jedes Assured OSS-Paket wird mit einem separaten von Google ausgestellten Zertifikat signiert, das den ECDSA P256-Algorithmus für die Schlüsselgenerierung verwendet. Jede Paketmetadaten und jedes Utility-Script werden außerdem mit einem von Google ausgestellten Zertifikat signiert, das den ECDSA-P256-Algorithmus für die Schlüsselgenerierung verwendet. Diese Zertifikate werden mit dem Certificate Authority Service ausgestellt und das entsprechende öffentliche Root-Zertifikat ist in einem Cloud Storage-Bucket verfügbar.

Dieses Dokument bezieht sich auf die kostenlose Stufe. Informationen zu Signaturen im Premium-Tarif finden Sie unter Sicherheitsmetadaten aufrufen und Pakete überprüfen.

Übersicht über Signaturen

Signaturen werden in einer signature.zip-Datei gespeichert. Die Datei signature.zip enthält die folgenden Dateien:

  • digest.txt: In dieser Datei werden der Hash-Algorithmus und der Paket-Digest im hexadezimal codierten Format gespeichert. Sehen Sie sich folgendes Beispiel an:

    SHA-256:c5feab6f4de0878e94cf2a3074039b4f16a0c93a03501f047ee6eea29a8e33e0`.
    
  • signature.txt: In dieser Datei werden der Signaturalgorithmus und die hexadezimal codierte Signatur gespeichert. Sehen Sie sich folgendes Beispiel an:

    ECDSAP256_DER:30450220585d2a01f20de98dfe6cfab2c01a8f11787dbafbc6541304d23cc582e61be016022100f05a19f5ce473144579dfefc47905fd650584a1c7a31bd9d5bf93ecce739a7cb`
    
  • cert.pem: In dieser Datei wird das öffentliche Zertifikat gespeichert.

  • certChain.pem: In dieser Datei wird die Zertifikatskette für das öffentliche Zertifikat gespeichert.

Überprüfung von Signaturen

Sie können Signaturen mit einer der folgenden Methoden überprüfen:

Signaturen mit dem aoss-verifier-Tool prüfen

  1. Um die Authentizität und Integrität von Open-Source-Softwarepaketen zu prüfen, installieren Sie das Tool aoss-verifier.

  2. Um ein Paket zu überprüfen, übergeben Sie die Werte LANGUAGE, PACKAGE_ID und VERSION sowie die PATH_TO_DATA_FILE, die Sie überprüfen möchten, mit den Flags --language, --package_id, --version und --artifact_path.

    aoss-verifier verify-package \
       --language LANGUAGE \
       --package_id PACKAGE_ID \
       --version VERSION \
       --artifact_path ARTIFACT_PATH
    

    Ersetzen Sie Folgendes:

    • LANGUAGE: Die Sprache des Pakets. Der Wert muss in Kleinbuchstaben geschrieben werden.
    • PACKAGE_ID: Für Java ist das Format groupId:artifactId. Für Python lautet das Format packageName. Der Wert muss in Kleinbuchstaben geschrieben werden.
    • VERSION: Die Version des Pakets.
    • ARTIFACT_PATH: Der Pfad zur Datendatei in Ihrem lokalen Verzeichnis, die Sie überprüfen möchten. Verwenden Sie die folgenden Dateinamenerweiterungen:
      • jar-Dateiendung für ein Java-Paket
      • whl-Dateiendung für ein Python-Paket

Signaturen manuell überprüfen

So überprüfen Sie die Signaturen manuell:

  1. Installieren Sie die Google Cloud CLI und die OpenSSL-Software, Version 3.0.1 oder höher.

  2. Prüfen Sie den Digest.

    1. Hash-Algorithmus ermitteln Die Datei digest.txt enthält den Hashing-Algorithmus, der zum Berechnen des Digests verwendet wird. Ermitteln Sie den Hashing-Algorithmus mit dem folgenden Befehl:

      cut -d ':' -f1 digest.txt
      

      Prüfen Sie, ob die Ausgabe SHA256 ist.

    2. Berechnen Sie den Digest der Datendatei. Sie können den Digest der Datendatei mit verschiedenen Befehlszeilentools berechnen, je nachdem, welcher Hash-Algorithmus verwendet wird. Verwenden Sie für garantierte OSS-Datendateien und ‑Skripts den SHA-256-Hashalgorithmus, um den Digest zu generieren.

      Verwenden Sie unter Linux den folgenden Befehl, um den Hash zu berechnen:

      sha256sum PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txt
      

      Ersetzen Sie für die Paketüberprüfung PATH_TO_DATA_FILE durch den Pfad zum Paket in Ihrem lokalen Verzeichnis.

      Ersetzen Sie für die Metadatenbestätigung PATH_TO_DATA_FILE durch den Namen der Metadatendatei. Beispiel: buildInfo.json, vexInfo.json oder healthInfo.json.

      Verwenden Sie unter macOS den folgenden Befehl:

      shasum -a 256 PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txt
      
    3. Extrahieren Sie den Hash aus der Datei digest.txt mit dem folgenden Befehl:

      cut -d ':' -f2 digest.txt > signaturedigest.txt
      
    4. Vergleichen Sie die beiden Digests mit dem folgenden Befehl:

      diff datadigest.txt signaturedigest.txt
      

      Wenn es keinen Unterschied gibt, erfolgt keine Ausgabe.

  3. Überprüfen Sie die Signatur

    1. Rufen Sie mit dem folgenden Befehl einen öffentlichen Schlüssel von cert.pem ab:

      openssl x509 -pubkey -noout -in cert.pem  > pubkey.pem
      
    2. Extrahieren Sie die Signatur im Binärformat mit dem folgenden Befehl (installieren Sie den xxd-Befehl, falls er nicht vorhanden ist):

      cut -d ':' -f2 signature.txt | xxd -r -p > sig.sig
      
    3. Extrahieren Sie den Digest im Binärformat mit dem folgenden Befehl:

      cut -d ':' -f2 digest.txt | xxd -r -p > digest.bin
      
    4. Prüfen Sie die Signatur mit einem der folgenden Befehle:

      Option 1

      openssl pkeyutl -in digest.bin -inkey pubkey.pem -pubin -verify -sigfile sig.sig
      

      Der Befehl gibt die folgende Ausgabe zurück:

      Signature Verified Successfully

      Option 2

      openssl dgst -sha256 -verify pubkey.pem -signature sig.sig PATH_TO_DATA_FILE
      

      Ersetzen Sie PATH_TO_DATA_FILE durch den Pfad zur Datendatei in Ihrem lokalen Verzeichnis.

      Der Befehl gibt die folgende Ausgabe zurück:

      Verified OK

  4. Zertifikat überprüfen

    Führen Sie den folgenden Befehl aus, um das Zertifikat zu überprüfen:

    openssl verify -verbose -CAfile ca.crt -untrusted certChain.pem cert.pem
    

    ca.cert ist das Root-Zertifikat, das mit diesem Befehl heruntergeladen werden kann:

    curl -o PATH_TO_LOCAL_STORE https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
    

    Bei Erfolg wird die folgende Ausgabe zurückgegeben:

    cert.pem: OK

Signaturen mit einem Skript überprüfen

So verwenden Sie ein Bestätigungsskript zum Bestätigen von Signaturen:

  1. Laden Sie das Bestätigungsskript herunter.

    1. Authentifizierung mit Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) einrichten

    2. Laden Sie die Dateien signatureverification.sh, README.md und signature.zip für das Bestätigungsskript mit dem folgenden Befehl herunter:

      gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0" PATH_TO_LOCAL_STORE --recursive
      

      Ersetzen Sie PATH_TO_LOCAL_STORE durch den lokalen Pfad, in den Sie die Datei herunterladen möchten.

      Sie können auch die Überprüfung von Utility-Skripts mit dem Überprüfungsskript durchführen.

  2. Führen Sie das Skript so aus:

    1. Installieren Sie die Google Cloud CLI und die OpenSSL-Software, Version 3.0.1 oder höher.

    2. Authentifizieren Sie sich mit dem Dienstkonto, das die Berechtigung zum Zugriff auf Assured OSS hat.

    3. Gewähren Sie die erforderlichen Berechtigungen zum Ausführen des Skripts mit dem folgenden Befehl:

      chmod +x signatureverification.sh
      
    4. Führen Sie das Skript mit dem folgenden Befehl aus, wenn Sie die Datei signature.zip nicht heruntergeladen haben:

      ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE \
      --signature_url SIGNATURE_ZIP_URL \
      --root_cert_url ROOT_CERT_URL
      

      Ersetzen Sie Folgendes:

      • PATH_TO_DATA_FILE: der Pfad zur Datendatei in Ihrem lokalen Verzeichnis, die Sie überprüfen möchten
      • SIGNATURE_ZIP_URL: die URL der ZIP-Datei mit der Signatur
      • ROOT_CERT_URL: die öffentliche Root-Zertifikats-URL

Beispielausgabe

Die folgende Ausgabe zeigt an, dass das Überprüfungsskript erfolgreich ausgeführt wurde.

Signature verification successful

Certificate verification successful

Nächste Schritte