Ringkasan tanda tangan artefak Assured OSS

Assured Open Source Software menyediakan paket, metadata paket, dan skrip utilitas. Setiap paket OSS Tepercaya ditandatangani menggunakan sertifikat terpisah yang dikeluarkan Google yang menggunakan algoritma ECDSA P256 untuk pembuatan kunci. Setiap metadata paket dan skrip utilitas juga ditandatangani menggunakan satu sertifikat yang dikeluarkan Google yang menggunakan algoritma ECDSA P256 untuk pembuatan kunci. Sertifikat ini diterbitkan menggunakan Certificate Authority Service dan sertifikat root publik yang sesuai dapat ditemukan di bucket Cloud Storage.

Dokumen ini berlaku untuk paket gratis. Untuk mengetahui informasi tentang tanda tangan di tingkat premium, lihat Mengakses metadata keamanan dan memverifikasi paket.

Ringkasan tanda tangan

Tanda tangan disimpan dalam file signature.zip. File signature.zip berisi file berikut:

  • digest.txt: File ini menyimpan algoritma hashing beserta ringkasan paket dalam format yang dienkode hex. Lihat contoh berikut:

    SHA-256:c5feab6f4de0878e94cf2a3074039b4f16a0c93a03501f047ee6eea29a8e33e0`.
    
  • signature.txt: File ini menyimpan algoritma tanda tangan beserta tanda tangan yang dienkode dalam hex. Lihat contoh berikut:

    ECDSAP256_DER:30450220585d2a01f20de98dfe6cfab2c01a8f11787dbafbc6541304d23cc582e61be016022100f05a19f5ce473144579dfefc47905fd650584a1c7a31bd9d5bf93ecce739a7cb`
    
  • cert.pem: File ini menyimpan sertifikat publik.

  • certChain.pem: File ini menyimpan rantai sertifikat untuk sertifikat publik.

Verifikasi tanda tangan

Anda dapat memverifikasi tanda tangan menggunakan salah satu cara berikut:

Memverifikasi tanda tangan menggunakan alat aoss-verifier

  1. Untuk memverifikasi keaslian dan integritas paket software open source, instal alat aoss-verifier.

  2. Untuk memverifikasi paket, teruskan nilai LANGUAGE, PACKAGE_ID, dan VERSION serta PATH_TO_DATA_FILE yang ingin Anda verifikasi menggunakan flag --language, --package_id, --version, dan --artifact_path.

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

    Ganti kode berikut:

    • LANGUAGE: Bahasa paket. Nilai harus dalam huruf kecil.
    • PACKAGE_ID: Untuk Java, formatnya adalah groupId:artifactId. Untuk Python, formatnya adalah packageName. Nilai harus dalam huruf kecil.
    • VERSION: Versi paket.
    • ARTIFACT_PATH: Jalur ke file data di direktori lokal yang ingin Anda verifikasi. Gunakan ekstensi nama file berikut:
      • Ekstensi file jar untuk paket Java
      • Ekstensi file whl untuk paket Python

Memverifikasi tanda tangan secara manual

Untuk memverifikasi tanda tangan secara manual, lakukan hal berikut:

  1. Instal Google Cloud CLI dan software OpenSSL, versi 3.0.1 atau yang lebih tinggi.

  2. Verifikasi ringkasan.

    1. Mengidentifikasi algoritma hashing. File digest.txt berisi algoritma hashing yang digunakan untuk menghitung ringkasan. Identifikasi algoritma hashing menggunakan perintah berikut:

      cut -d ':' -f1 digest.txt
      

      Pastikan outputnya adalah SHA256.

    2. Menghitung ringkasan file data. Anda dapat menghitung ringkasan file data menggunakan berbagai alat command line, bergantung pada algoritma hash yang digunakan. Untuk file dan skrip data OSS yang Terjamin, gunakan algoritma hash SHA-256 untuk membuat ringkasan.

      Di Linux, gunakan perintah berikut untuk menghitung hash:

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

      Untuk verifikasi paket, ganti PATH_TO_DATA_FILE dengan jalur ke paket di direktori lokal Anda untuk verifikasi paket.

      Untuk verifikasi metadata, ganti PATH_TO_DATA_FILE dengan nama file metadata. Misalnya, buildInfo.json, vexInfo.json, atau healthInfo.json.

      Di macOS, gunakan perintah berikut:

      shasum -a 256 PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txt
      
    3. Ekstrak hash dari file digest.txt menggunakan perintah berikut:

      cut -d ':' -f2 digest.txt > signaturedigest.txt
      
    4. Bandingkan kedua ringkasan menggunakan perintah berikut:

      diff datadigest.txt signaturedigest.txt
      

      Jika tidak ada perbedaan, maka tidak akan ada output.

  3. Memverifikasi tanda tangan

    1. Dapatkan kunci publik dari cert.pem menggunakan perintah berikut:

      openssl x509 -pubkey -noout -in cert.pem  > pubkey.pem
      
    2. Ekstrak tanda tangan dalam format biner menggunakan perintah berikut (instal perintah xxd jika tidak ada):

      cut -d ':' -f2 signature.txt | xxd -r -p > sig.sig
      
    3. Ekstrak ringkasan dalam format biner menggunakan perintah berikut:

      cut -d ':' -f2 digest.txt | xxd -r -p > digest.bin
      
    4. Verifikasi tanda tangan menggunakan salah satu perintah berikut:

      Opsi 1

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

      Perintah akan menampilkan output berikut:

      Signature Verified Successfully

      Opsi 2

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

      Ganti PATH_TO_DATA_FILE dengan jalur ke file data di direktori lokal Anda.

      Perintah akan menampilkan output berikut:

      Verified OK

  4. Memverifikasi sertifikat

    Untuk memverifikasi sertifikat, jalankan perintah berikut:

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

    ca.cert adalah sertifikat root yang dapat didownload menggunakan perintah ini:

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

    Output berikut akan ditampilkan jika berhasil:

    cert.pem: OK

Memverifikasi tanda tangan menggunakan skrip

Untuk menggunakan skrip verifikasi guna memverifikasi tanda tangan, ikuti langkah-langkah berikut:

  1. Download skrip verifikasi.

    1. Siapkan autentikasi menggunakan Kredensial Default Aplikasi (ADC).

    2. Download signatureverification.sh, README.md, dan signature.zip untuk skrip verifikasi menggunakan perintah berikut:

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

      Ganti PATH_TO_LOCAL_STORE dengan jalur lokal tempat Anda ingin mendownload file.

      Anda juga dapat melakukan verifikasi skrip utilitas menggunakan skrip verifikasi.

  2. Jalankan skrip menggunakan langkah-langkah berikut:

    1. Instal Google Cloud CLI dan software OpenSSL, versi 3.0.1 atau yang lebih tinggi.

    2. Lakukan autentikasi dengan akun layanan yang memiliki izin untuk mengakses Assured OSS.

    3. Berikan izin yang diperlukan untuk menjalankan skrip menggunakan perintah berikut:

      chmod +x signatureverification.sh
      
    4. Jalankan skrip menggunakan perintah berikut jika Anda belum mendownload file signature.zip:

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

      Ganti kode berikut:

      • PATH_TO_DATA_FILE: jalur ke file data di direktori lokal yang ingin Anda verifikasi
      • SIGNATURE_ZIP_URL: URL file zip tanda tangan
      • ROOT_CERT_URL: URL sertifikat root publik

Contoh output

Output berikut menunjukkan bahwa skrip verifikasi telah berhasil dijalankan.

Signature verification successful

Certificate verification successful

Langkah berikutnya