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 :
- Outil aoss-verifier
- manuellement
- script de validation
Valider les signatures à l'aide de l'outil aoss-verifier
Pour vérifier l'authenticité et l'intégrité des packages logiciels Open Source, installez l'outil aoss-verifier.
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,--versionet--artifact_path.aoss-verifier verify-package \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ --artifact_path ARTIFACT_PATHRemplacez 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
jarpour un package Java - Extension de fichier
whlpour un package Python
- Extension de fichier
Valider manuellement les signatures
Pour valider manuellement les signatures, procédez comme suit :
Installez Google Cloud CLI et le logiciel OpenSSL, version 3.0.1 ou ultérieure.
Vérifiez le condensé.
Identifiez l'algorithme de hachage. Le fichier
digest.txtcontient l'algorithme de hachage utilisé pour calculer le condensé. Identifiez l'algorithme de hachage à l'aide de la commande suivante :cut -d ':' -f1 digest.txtAssurez-vous que le résultat est
SHA256.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.txtPour 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.jsonouhealthInfo.json.Sous macOS, exécutez la commande suivante :
shasum -a 256 PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txtExtrayez le hachage du fichier
digest.txtà l'aide de la commande suivante :cut -d ':' -f2 digest.txt > signaturedigest.txtComparez les deux résumés à l'aide de la commande suivante :
diff datadigest.txt signaturedigest.txtS'il n'existe aucune différence, aucun résultat ne sera généré.
Vérifier la signature
Obtenez une clé publique à partir de
cert.pemà l'aide de la commande suivante :openssl x509 -pubkey -noout -in cert.pem > pubkey.pemExtrayez la signature au format binaire à l'aide de la commande suivante (installez la commande
xxdsi elle n'est pas présente) :cut -d ':' -f2 signature.txt | xxd -r -p > sig.sigExtrayez le résumé au format binaire à l'aide de la commande suivante :
cut -d ':' -f2 digest.txt | xxd -r -p > digest.binVé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.sigLa commande renvoie le résultat suivant :
Signature Verified SuccessfullyOption 2
openssl dgst -sha256 -verify pubkey.pem -signature sig.sig PATH_TO_DATA_FILERemplacez 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
Valider le certificat
Pour vérifier le certificat, exécutez la commande suivante :
openssl verify -verbose -CAfile ca.crt -untrusted certChain.pem cert.pemca.certest 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.crtLe 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 :
Téléchargez le script de validation.
Configurez l'authentification à l'aide des Identifiants par défaut de l'application (ADC).
Téléchargez
signatureverification.sh,README.mdetsignature.zippour 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 --recursiveRemplacez 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.
Exécutez le script en procédant comme suit :
Installez Google Cloud CLI et le logiciel OpenSSL, version 3.0.1 ou ultérieure.
Authentifiez-vous avec le compte de service autorisé à accéder à Assured OSS.
Accordez les autorisations requises pour exécuter le script à l'aide de la commande suivante :
chmod +x signatureverification.shExé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_URLRemplacez 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
- Valider les signatures
- Vérifier la provenance de la compilation
- Découvrez comment protéger votre chaîne d'approvisionnement logicielle.