Assured Open Source Software te proporciona paquetes, metadatos de paquetes y secuencias de comandos de utilidad. Cada paquete de Assured OSS se firma con un certificado independiente emitido por Google que usa el algoritmo ECDSA P256 para la generación de claves. Cada paquete de metadatos y secuencia de comandos de utilidad también se firma con un solo certificado emitido por Google que usa el algoritmo ECDSA P256 para la generación de claves. Estos certificados se emiten con Certificate Authority Service y el certificado raíz público correspondiente se puede encontrar en un bucket de Cloud Storage.
Este documento se aplica al nivel gratuito. Para obtener información sobre las firmas en el nivel Premium, consulta Accede a los metadatos de seguridad y verifica los paquetes.
Descripción general de las firmas
Las firmas se almacenan en un archivo signature.zip. El archivo signature.zip contiene los siguientes archivos:
digest.txt: Este archivo almacena el algoritmo de hash junto con el resumen del paquete en un formato codificado en hexadecimal. Consulta el siguiente ejemplo:SHA-256:c5feab6f4de0878e94cf2a3074039b4f16a0c93a03501f047ee6eea29a8e33e0`.signature.txt: Este archivo almacena el algoritmo de firma junto con la firma codificada en hexadecimal. Consulta el siguiente ejemplo:ECDSAP256_DER:30450220585d2a01f20de98dfe6cfab2c01a8f11787dbafbc6541304d23cc582e61be016022100f05a19f5ce473144579dfefc47905fd650584a1c7a31bd9d5bf93ecce739a7cb`cert.pem: Este archivo almacena el certificado público.certChain.pem: Este archivo almacena la cadena de certificados del certificado público.
Verificación de firmas
Puedes verificar las firmas con cualquiera de las siguientes opciones:
- Herramienta aoss-verifier
- manualmente
- secuencia de comandos de verificación
Verifica firmas con la herramienta de aoss-verifier
Para verificar la autenticidad y la integridad de los paquetes de software de código abierto, instala la herramienta aoss-verifier.
Para verificar un paquete, pasa los valores LANGUAGE, PACKAGE_ID y VERSION, y el PATH_TO_DATA_FILE que deseas verificar con las marcas
--language,--package_id,--versiony--artifact_path.aoss-verifier verify-package \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ --artifact_path ARTIFACT_PATHReemplaza lo siguiente:
- LANGUAGE: Es el idioma del paquete. El valor debe estar en minúsculas.
- PACKAGE_ID: En Java, el formato es groupId:artifactId. En Python, el formato es packageName. El valor debe estar en minúsculas.
- VERSION: Es la versión del paquete.
- ARTIFACT_PATH: Es la ruta de acceso al archivo de datos en tu directorio local que deseas verificar. Usa las siguientes extensiones de nombre de archivo:
- Extensión de archivo
jarpara un paquete de Java - Extensión de archivo
whlpara un paquete de Python
- Extensión de archivo
Cómo verificar firmas de forma manual
Para verificar las firmas de forma manual, haz lo siguiente:
Instala Google Cloud CLI y el software OpenSSL, versión 3.0.1 o posterior.
Verifica el resumen.
Identifica el algoritmo de hash. El archivo
digest.txtcontiene el algoritmo de hash que se usa para calcular el resumen. Identifica el algoritmo de hash con el siguiente comando:cut -d ':' -f1 digest.txtAsegúrate de que el resultado sea
SHA256.Calcula el resumen del archivo de datos. Puedes calcular el resumen del archivo de datos con varias herramientas de línea de comandos, según el algoritmo de hash que se use. En el caso de los archivos de datos y las secuencias de comandos de OSS asegurado, usa el algoritmo de hash SHA-256 para generar el resumen.
En Linux, usa el siguiente comando para calcular el hash:
sha256sum PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txtPara la verificación del paquete, reemplaza PATH_TO_DATA_FILE por la ruta de acceso al paquete en tu directorio local.
Para la verificación de metadatos, reemplaza PATH_TO_DATA_FILE por el nombre del archivo de metadatos. Por ejemplo,
buildInfo.json,vexInfo.jsonohealthInfo.json.En macOS, usa el siguiente comando:
shasum -a 256 PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txtExtrae el hash del archivo
digest.txtcon el siguiente comando:cut -d ':' -f2 digest.txt > signaturedigest.txtCompara los dos resúmenes con el siguiente comando:
diff datadigest.txt signaturedigest.txtSi no hay diferencias, no se generará ningún resultado.
Verifica la firma
Obtén una clave pública de
cert.pemcon el siguiente comando:openssl x509 -pubkey -noout -in cert.pem > pubkey.pemExtrae la firma en formato binario con el siguiente comando (instala el comando
xxdsi no está presente):cut -d ':' -f2 signature.txt | xxd -r -p > sig.sigExtrae el resumen en formato binario con el siguiente comando:
cut -d ':' -f2 digest.txt | xxd -r -p > digest.binVerifica la firma con uno de los siguientes comandos:
Opción 1
openssl pkeyutl -in digest.bin -inkey pubkey.pem -pubin -verify -sigfile sig.sigEl comando devuelve el siguiente resultado:
Signature Verified SuccessfullyOpción 2
openssl dgst -sha256 -verify pubkey.pem -signature sig.sig PATH_TO_DATA_FILEReemplaza PATH_TO_DATA_FILE por la ruta de acceso al archivo de datos en tu directorio local.
El comando devuelve el siguiente resultado:
Verified OK
Verifica el certificado
Para verificar el certificado, ejecuta el siguiente comando:
openssl verify -verbose -CAfile ca.crt -untrusted certChain.pem cert.pemca.certes el certificado raíz que se puede descargar con este comando:curl -o PATH_TO_LOCAL_STORE https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtSi la operación se realiza correctamente, se mostrará el siguiente resultado:
cert.pem: OK
Verifica firmas con una secuencia de comandos
Para usar una secuencia de comandos de verificación y verificar firmas, sigue estos pasos:
Descarga la secuencia de comandos de verificación.
Configura la autenticación con las credenciales predeterminadas de la aplicación (ADC).
Descarga
signatureverification.sh,README.mdysignature.zippara la secuencia de comandos de verificación con el siguiente comando:gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0" PATH_TO_LOCAL_STORE --recursiveReemplaza PATH_TO_LOCAL_STORE por la ruta de acceso local en la que deseas descargar el archivo.
También puedes realizar la verificación de la secuencia de comandos de utilidad con la secuencia de comandos de verificación.
Ejecuta la secuencia de comandos siguiendo estos pasos:
Instala Google Cloud CLI y el software OpenSSL, versión 3.0.1 o posterior.
Autentícate con la cuenta de servicio que tiene permiso para acceder a Assured OSS.
Otorga los permisos necesarios para ejecutar la secuencia de comandos con el siguiente comando:
chmod +x signatureverification.shEjecuta la secuencia de comandos con el siguiente comando si no descargaste el archivo
signature.zip:./signatureverification.sh --data_file_path PATH_TO_DATA_FILE \ --signature_url SIGNATURE_ZIP_URL \ --root_cert_url ROOT_CERT_URLReemplaza lo siguiente:
- PATH_TO_DATA_FILE: Es la ruta de acceso al archivo de datos en tu directorio local que deseas verificar.
- SIGNATURE_ZIP_URL: URL del archivo ZIP de la firma
- ROOT_CERT_URL: Es la URL del certificado raíz público.
Resultado de muestra
El siguiente resultado indica que la secuencia de comandos de verificación se ejecutó correctamente.
Signature verification successful
Certificate verification successful
¿Qué sigue?
- Verificar firmas
- Verifica la procedencia de la compilación
- Más información para proteger tu cadena de suministro de software