Assured Open Source Software fornisce pacchetti, metadati dei pacchetti e script di utilità. Ogni pacchetto Assured OSS è firmato utilizzando un certificato separato emesso da Google che utilizza l'algoritmo ECDSA P256 per la generazione delle chiavi. Anche i metadati di ogni pacchetto e lo script di utilità sono firmati utilizzando un unico certificato emesso da Google che utilizza l'algoritmo ECDSA P256 per la generazione delle chiavi. Questi certificati vengono emessi utilizzando Certificate Authority Service e il certificato radice pubblico corrispondente è disponibile in un bucket Cloud Storage.
Questo documento si applica al livello senza costi. Per informazioni sulle firme nel livello premium, vedi Accedere ai metadati di sicurezza e verificare i pacchetti.
Panoramica delle firme
Le firme vengono memorizzate in un file signature.zip. Il file signature.zip
contiene i seguenti file:
digest.txt: questo file memorizza l'algoritmo di hashing insieme al digest del pacchetto in un formato con codifica esadecimale. Vedi il seguente esempio:SHA-256:c5feab6f4de0878e94cf2a3074039b4f16a0c93a03501f047ee6eea29a8e33e0`.signature.txt: questo file memorizza l'algoritmo di firma insieme alla firma codificata in esadecimale. Vedi il seguente esempio:ECDSAP256_DER:30450220585d2a01f20de98dfe6cfab2c01a8f11787dbafbc6541304d23cc582e61be016022100f05a19f5ce473144579dfefc47905fd650584a1c7a31bd9d5bf93ecce739a7cb`cert.pem: Questo file memorizza il certificato pubblico.certChain.pem: Questo file memorizza la catena di certificati per il certificato pubblico.
Verifica delle firme
Puoi verificare le firme utilizzando uno dei seguenti metodi:
- Strumento aoss-verifier
- manualmente
- script di verifica
Verificare le firme utilizzando lo strumento aoss-verifier
Per verificare l'autenticità e l'integrità dei pacchetti software open source, installa lo strumento aoss-verifier.
Per verificare un pacchetto, trasmetti i valori LANGUAGE, PACKAGE_ID e VERSION e il PATH_TO_DATA_FILE che vuoi verificare utilizzando i flag
--language,--package_id,--versione--artifact_path.aoss-verifier verify-package \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ --artifact_path ARTIFACT_PATHSostituisci quanto segue:
- LANGUAGE: la lingua del pacchetto. Il valore deve essere in minuscolo.
- PACKAGE_ID: per Java, il formato è groupId:artifactId. Per Python, il formato è packageName. Il valore deve essere in minuscolo.
- VERSION: la versione del pacchetto.
- ARTIFACT_PATH: il percorso del file di dati nella directory locale che vuoi verificare. Utilizza le seguenti estensioni
dei nomi dei file:
- Estensione del file
jarper un pacchetto Java - Estensione file
whlper un pacchetto Python
- Estensione del file
Verificare le firme manualmente
Per verificare manualmente le firme:
Installa Google Cloud CLI e il software OpenSSL, versione 3.0.1 o successive.
Verifica il digest.
Identifica l'algoritmo di hashing. Il file
digest.txtcontiene l'algoritmo di hashing utilizzato per calcolare il digest. Identifica l'algoritmo di hashing utilizzando il seguente comando:cut -d ':' -f1 digest.txtAssicurati che l'output sia
SHA256.Calcola il digest del file di dati. Puoi calcolare il digest del file di dati utilizzando vari strumenti della riga di comando a seconda dell'algoritmo hash utilizzato. Per i file di dati e gli script di Assured OSS, utilizza l'algoritmo hash SHA-256 per generare il digest.
Su Linux, utilizza il seguente comando per calcolare l'hash:
sha256sum PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txtPer la verifica del pacchetto, sostituisci PATH_TO_DATA_FILE con il percorso del pacchetto nella directory locale per la verifica del pacchetto.
Per la verifica dei metadati, sostituisci PATH_TO_DATA_FILE con il nome del file dei metadati. Ad esempio,
buildInfo.json,vexInfo.jsonohealthInfo.json.Su macOS, utilizza il seguente comando:
shasum -a 256 PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txtEstrai l'hash dal file
digest.txtutilizzando il seguente comando:cut -d ':' -f2 digest.txt > signaturedigest.txtConfronta i due digest utilizzando il seguente comando:
diff datadigest.txt signaturedigest.txtSe non c'è alcuna differenza, non verrà generato alcun output.
Verificare la firma
Ottieni una chiave pubblica da
cert.pemutilizzando il seguente comando:openssl x509 -pubkey -noout -in cert.pem > pubkey.pemEstrai la firma in formato binario utilizzando il seguente comando (installa il comando
xxdse non è presente):cut -d ':' -f2 signature.txt | xxd -r -p > sig.sigEstrai il digest in formato binario utilizzando il seguente comando:
cut -d ':' -f2 digest.txt | xxd -r -p > digest.binVerifica la firma utilizzando uno dei seguenti comandi:
Opzione 1
openssl pkeyutl -in digest.bin -inkey pubkey.pem -pubin -verify -sigfile sig.sigIl comando restituisce il seguente output:
Signature Verified SuccessfullyOpzione 2
openssl dgst -sha256 -verify pubkey.pem -signature sig.sig PATH_TO_DATA_FILESostituisci PATH_TO_DATA_FILE con il percorso del file di dati nella directory locale.
Il comando restituisce il seguente output:
Verified OK
Verifica il certificato
Per verificare il certificato, esegui questo comando:
openssl verify -verbose -CAfile ca.crt -untrusted certChain.pem cert.pemca.certè il certificato radice che può essere scaricato utilizzando questo comando:curl -o PATH_TO_LOCAL_STORE https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtIn caso di esito positivo, viene restituito il seguente output:
cert.pem: OK
Verificare le firme utilizzando uno script
Per utilizzare uno script di verifica per verificare le firme:
Scarica lo script di verifica.
Configura l'autenticazione utilizzando le Credenziali predefinite dell'applicazione (ADC).
Scarica
signatureverification.sh,README.mdesignature.zipper lo script di verifica utilizzando il seguente comando:gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0" PATH_TO_LOCAL_STORE --recursiveSostituisci PATH_TO_LOCAL_STORE con il percorso locale in cui vuoi scaricare il file.
Puoi anche eseguire la verifica dello script di utilità utilizzando lo script di verifica.
Esegui lo script seguendo questa procedura:
Installa Google Cloud CLI e il software OpenSSL, versione 3.0.1 o successive.
Esegui l'autenticazione con il account di servizio che dispone dell'autorizzazione per accedere ad Assured OSS.
Concedi le autorizzazioni richieste per eseguire lo script utilizzando il seguente comando:
chmod +x signatureverification.shEsegui lo script utilizzando il seguente comando se non hai scaricato il file
signature.zip:./signatureverification.sh --data_file_path PATH_TO_DATA_FILE \ --signature_url SIGNATURE_ZIP_URL \ --root_cert_url ROOT_CERT_URLSostituisci quanto segue:
- PATH_TO_DATA_FILE: il percorso del file di dati nella directory locale che vuoi verificare
- SIGNATURE_ZIP_URL: l'URL del file zip della firma
- ROOT_CERT_URL: l'URL del certificato radice pubblico
Esempio di output
L'output seguente indica che lo script di verifica è stato eseguito correttamente.
Signature verification successful
Certificate verification successful
Passaggi successivi
- Verificare le firme
- Verificare la provenienza della build
- Scopri di più sulla protezione della catena di fornitura del software