O Assured Open Source Software oferece pacotes, metadados de pacotes e scripts de utilidade. Cada pacote do Assured OSS é assinado usando um certificado separado emitido pelo Google que usa o algoritmo ECDSA P256 para geração de chaves. Cada metadado de pacote e script de utilidade também é assinado usando um único certificado emitido pelo Google que usa o algoritmo ECDSA P256 para geração de chaves. Esses certificados são emitidos usando Certificate Authority Service, e o certificado raiz público correspondente pode ser encontrado em um bucket do Cloud Storage.
Este documento se aplica ao nível sem custo financeiro. Para informações sobre assinaturas no nível premium, consulte Acessar metadados de segurança e verificar pacotes.
Visão geral das assinaturas
As assinaturas são armazenadas em um arquivo signature.zip. O arquivo signature.zip contém os seguintes arquivos:
digest.txt: esse arquivo armazena o algoritmo de hash e o resumo do pacote em um formato codificado em hexadecimal. Veja o exemplo a seguir:SHA-256:c5feab6f4de0878e94cf2a3074039b4f16a0c93a03501f047ee6eea29a8e33e0`.signature.txt: esse arquivo armazena o algoritmo de assinatura junto com a assinatura codificada em hexadecimal. Veja o exemplo a seguir:ECDSAP256_DER:30450220585d2a01f20de98dfe6cfab2c01a8f11787dbafbc6541304d23cc582e61be016022100f05a19f5ce473144579dfefc47905fd650584a1c7a31bd9d5bf93ecce739a7cb`cert.pem: esse arquivo armazena o certificado público.certChain.pem: esse arquivo armazena a cadeia de certificados do certificado público.
Verificação de assinaturas
É possível verificar assinaturas usando uma das seguintes opções:
- Ferramenta aoss-verifier
- manualmente
- script de verificação
Verificar assinaturas usando a ferramenta aoss-verifier
Para verificar a autenticidade e a integridade dos pacotes de software de código aberto, instale a ferramenta aoss-verifier (link em inglês).
Para verificar um pacote, transmita os valores LANGUAGE, PACKAGE_ID e VERSION e o PATH_TO_DATA_FILE que você quer verificar usando as flags
--language,--package_id,--versione--artifact_path.aoss-verifier verify-package \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ --artifact_path ARTIFACT_PATHSubstitua:
- LANGUAGE: o idioma do pacote. O valor precisa estar em letras minúsculas.
- PACKAGE_ID: para Java, o formato é groupId:artifactId. Para Python, o formato é packageName. O valor precisa estar em letras minúsculas.
- VERSION: a versão do pacote.
- ARTIFACT_PATH: o caminho para o arquivo de dados no diretório
local que você quer verificar. Use as seguintes extensões de nome de arquivo:
- Extensão de arquivo
jarpara um pacote Java - Extensão de arquivo
whlpara um pacote Python.
- Extensão de arquivo
Verificar assinaturas manualmente
Para verificar as assinaturas manualmente, faça o seguinte:
Instale a Google Cloud CLI e o software OpenSSL, versão 3.0.1 ou mais recente.
Verifique o resumo.
Identifique o algoritmo de hash. O arquivo
digest.txtcontém o algoritmo de hash usado para calcular o resumo. Identifique o algoritmo de hash usando o seguinte comando:cut -d ':' -f1 digest.txtVerifique se a saída é
SHA256.Calcular o resumo do arquivo de dados. É possível calcular o resumo do arquivo de dados usando várias ferramentas de linha de comando, dependendo do algoritmo de hash usado. Para arquivos de dados e scripts do Assured OSS, use o algoritmo de hash SHA-256 para gerar o resumo.
No Linux, use o seguinte comando para calcular o hash:
sha256sum PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txtPara a verificação do pacote, substitua PATH_TO_DATA_FILE pelo caminho do pacote no diretório local.
Para a verificação de metadados, substitua PATH_TO_DATA_FILE pelo nome do arquivo de metadados. Por exemplo,
buildInfo.json,vexInfo.jsonouhealthInfo.json.No macOS, use o seguinte comando:
shasum -a 256 PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txtExtraia o hash do arquivo
digest.txtusando o seguinte comando:cut -d ':' -f2 digest.txt > signaturedigest.txtCompare os dois resumos usando o seguinte comando:
diff datadigest.txt signaturedigest.txtSe não houver diferença, não haverá saída.
Verificar a assinatura
Extraia uma chave pública de
cert.pemusando o seguinte comando:openssl x509 -pubkey -noout -in cert.pem > pubkey.pemExtraia a assinatura no formato binário usando o seguinte comando (instale o comando
xxdse ele não estiver presente):cut -d ':' -f2 signature.txt | xxd -r -p > sig.sigExtraia o resumo no formato binário usando o seguinte comando:
cut -d ':' -f2 digest.txt | xxd -r -p > digest.binVerifique a assinatura usando um dos seguintes comandos:
Opção 1
openssl pkeyutl -in digest.bin -inkey pubkey.pem -pubin -verify -sigfile sig.sigO comando retorna a seguinte saída:
Signature Verified SuccessfullyOpção 2
openssl dgst -sha256 -verify pubkey.pem -signature sig.sig PATH_TO_DATA_FILESubstitua PATH_TO_DATA_FILE pelo caminho para o arquivo de dados no diretório local.
O comando retorna a seguinte saída:
Verified OK
Verificar o certificado
Para verificar o certificado, execute o seguinte comando:
openssl verify -verbose -CAfile ca.crt -untrusted certChain.pem cert.pemO
ca.certé o certificado raiz que pode ser baixado usando este comando:curl -o PATH_TO_LOCAL_STORE https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crtA seguinte saída será retornada em caso de sucesso:
cert.pem: OK
Verificar assinaturas usando um script
Para usar um script de verificação e verificar assinaturas, siga estas etapas:
Baixe o script de verificação.
Configure a autenticação usando Application Default Credentials (ADC).
Faça o download de
signatureverification.sh,README.mdesignature.zippara o script de verificação usando o seguinte comando:gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0" PATH_TO_LOCAL_STORE --recursiveSubstitua PATH_TO_LOCAL_STORE pelo caminho local em que você quer baixar o arquivo.
Também é possível realizar a verificação de scripts de utilidade usando o script de verificação.
Execute o script seguindo estas etapas:
Instale a Google Cloud CLI e o software OpenSSL, versão 3.0.1 ou mais recente.
Autentique-se com a conta de serviço que tem permissão para acessar o Assured OSS.
Conceda as permissões necessárias para executar o script usando o seguinte comando:
chmod +x signatureverification.shExecute o script usando o seguinte comando se você não tiver baixado o arquivo
signature.zip:./signatureverification.sh --data_file_path PATH_TO_DATA_FILE \ --signature_url SIGNATURE_ZIP_URL \ --root_cert_url ROOT_CERT_URLSubstitua:
- PATH_TO_DATA_FILE: o caminho para o arquivo de dados no diretório local que você quer verificar
- SIGNATURE_ZIP_URL: o URL do arquivo ZIP de assinatura.
- ROOT_CERT_URL: o URL do certificado raiz público
Exemplo de saída
A saída a seguir indica que o script de verificação foi executado com sucesso.
Signature verification successful
Certificate verification successful
A seguir
- Verificar assinaturas
- Verificar a origem do build
- Saiba como proteger sua cadeia de suprimentos de software