Présentation de la signature d'artefact Assured OSS

Assured Open Source Software vous fournit des packages, des métadonnées de package et des scripts utilitaires. Chaque package Assured OSS est signé à l'aide d'un certificat distinct émis par Google, qui utilise l'algorithme ECDSA P256 pour la génération de clés. Chaque métadonnée de package et script utilitaire est également signé à l'aide d'un seul certificat émis par Google, qui utilise l'algorithme ECDSA P256 pour la génération de clés. Ces certificats sont émis à l'aide de Certificate Authority Service. Le certificat racine public correspondant est disponible dans un bucket Cloud Storage.

Ce document s'applique au niveau sans frais. Pour en savoir plus sur les signatures dans le niveau Premium, consultez Accéder aux métadonnées de sécurité et vérifier les packages.

Présentation des signatures

Les signatures sont stockées dans un fichier signature.zip. Le fichier signature.zip contient les fichiers suivants :

  • digest.txt : ce fichier stocke l'algorithme de hachage ainsi que le résumé du package au format hexadécimal. Consultez l'exemple ci-dessous :

    SHA-256:c5feab6f4de0878e94cf2a3074039b4f16a0c93a03501f047ee6eea29a8e33e0`.
    
  • signature.txt : ce fichier stocke l'algorithme de signature ainsi que la signature encodée en hexadécimal. Consultez l'exemple ci-dessous :

    ECDSAP256_DER:30450220585d2a01f20de98dfe6cfab2c01a8f11787dbafbc6541304d23cc582e61be016022100f05a19f5ce473144579dfefc47905fd650584a1c7a31bd9d5bf93ecce739a7cb`
    
  • cert.pem : ce fichier stocke le certificat public.

  • certChain.pem : ce fichier stocke la chaîne de certificats pour le certificat public.

Validation des signatures

Vous pouvez valider les signatures à l'aide de l'une des méthodes suivantes :

Valider les signatures à l'aide de l'outil aoss-verifier

  1. Pour vérifier l'authenticité et l'intégrité des packages logiciels Open Source, installez l'outil aoss-verifier.

  2. Pour valider un package, transmettez les valeurs LANGUAGE, PACKAGE_ID et VERSION, ainsi que le PATH_TO_DATA_FILE que vous souhaitez valider à l'aide des options --language, --package_id, --version et --artifact_path.

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

    Remplacez les éléments suivants :

    • LANGUAGE : langage du package. La valeur doit être en minuscules.
    • PACKAGE_ID : pour Java, le format est groupId:artifactId. Pour Python, le format est packageName. La valeur doit être en minuscules.
    • VERSION : version du package.
    • ARTIFACT_PATH : chemin d'accès au fichier de données dans votre répertoire local que vous souhaitez valider. Utilisez les extensions de nom de fichier suivantes :
      • Extension de fichier jar pour un package Java
      • Extension de fichier whl pour un package Python

Valider manuellement les signatures

Pour valider manuellement les signatures, procédez comme suit :

  1. Installez Google Cloud CLI et le logiciel OpenSSL, version 3.0.1 ou ultérieure.

  2. Vérifiez le condensé.

    1. Identifiez l'algorithme de hachage. Le fichier digest.txt contient l'algorithme de hachage utilisé pour calculer le condensé. Identifiez l'algorithme de hachage à l'aide de la commande suivante :

      cut -d ':' -f1 digest.txt
      

      Assurez-vous que le résultat est SHA256.

    2. Calculez le résumé du fichier de données. Vous pouvez calculer le résumé du fichier de données à l'aide de différents outils de ligne de commande, en fonction de l'algorithme de hachage utilisé. Pour les fichiers de données et les scripts Assured OSS, utilisez l'algorithme de hachage SHA-256 pour générer le résumé.

      Sous Linux, utilisez la commande suivante pour calculer le hachage :

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

      Pour la validation du package, remplacez PATH_TO_DATA_FILE par le chemin d'accès au package dans votre répertoire local.

      Pour la validation des métadonnées, remplacez PATH_TO_DATA_FILE par le nom du fichier de métadonnées. Par exemple, buildInfo.json, vexInfo.json ou healthInfo.json.

      Sous macOS, exécutez la commande suivante :

      shasum -a 256 PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txt
      
    3. Extrayez le hachage du fichier digest.txt à l'aide de la commande suivante :

      cut -d ':' -f2 digest.txt > signaturedigest.txt
      
    4. Comparez les deux résumés à l'aide de la commande suivante :

      diff datadigest.txt signaturedigest.txt
      

      S'il n'existe aucune différence, aucun résultat ne sera généré.

  3. Vérifier la signature

    1. Obtenez une clé publique à partir de cert.pem à l'aide de la commande suivante :

      openssl x509 -pubkey -noout -in cert.pem  > pubkey.pem
      
    2. Extrayez la signature au format binaire à l'aide de la commande suivante (installez la commande xxd si elle n'est pas présente) :

      cut -d ':' -f2 signature.txt | xxd -r -p > sig.sig
      
    3. Extrayez le résumé au format binaire à l'aide de la commande suivante :

      cut -d ':' -f2 digest.txt | xxd -r -p > digest.bin
      
    4. Vérifiez la signature à l'aide de l'une des commandes suivantes :

      Option 1

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

      La commande renvoie le résultat suivant :

      Signature Verified Successfully

      Option 2

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

      Remplacez PATH_TO_DATA_FILE par le chemin d'accès au fichier de données dans votre répertoire local.

      La commande renvoie le résultat suivant :

      Verified OK

  4. Valider le certificat

    Pour vérifier le certificat, exécutez la commande suivante :

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

    ca.cert est le certificat racine qui peut être téléchargé à l'aide de cette commande :

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

    Le résultat suivant s'affiche en cas de succès :

    cert.pem: OK

Valider les signatures à l'aide d'un script

Pour utiliser un script de validation afin de valider les signatures, procédez comme suit :

  1. Téléchargez le script de validation.

    1. Configurez l'authentification à l'aide des Identifiants par défaut de l'application (ADC).

    2. Téléchargez signatureverification.sh, README.md et signature.zip pour le script de validation à l'aide de la commande suivante :

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

      Remplacez PATH_TO_LOCAL_STORE par le chemin d'accès local où vous souhaitez télécharger le fichier.

      Vous pouvez également valider le script utilitaire à l'aide du script de validation.

  2. Exécutez le script en procédant comme suit :

    1. Installez Google Cloud CLI et le logiciel OpenSSL, version 3.0.1 ou ultérieure.

    2. Authentifiez-vous avec le compte de service autorisé à accéder à Assured OSS.

    3. Accordez les autorisations requises pour exécuter le script à l'aide de la commande suivante :

      chmod +x signatureverification.sh
      
    4. Exécutez le script à l'aide de la commande suivante si vous n'avez pas téléchargé le fichier signature.zip :

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

      Remplacez les éléments suivants :

      • PATH_TO_DATA_FILE : chemin d'accès au fichier de données dans votre répertoire local que vous souhaitez valider
      • SIGNATURE_ZIP_URL : URL du fichier ZIP de la signature
      • ROOT_CERT_URL : URL du certificat racine public

Exemple de résultat

La sortie suivante indique que le script de validation s'est exécuté correctement.

Signature verification successful

Certificate verification successful

Étapes suivantes