Assured Open Source Software는 패키지, 패키지 메타데이터, 유틸리티 스크립트를 제공합니다. 각 Assured OSS 패키지는 키 생성에 ECDSA P256 알고리즘을 사용하는 별도의 Google 발급 인증서를 사용하여 서명됩니다. 각 패키지 메타데이터와 유틸리티 스크립트도 키 생성에 ECDSA P256 알고리즘을 사용하는 단일 Google 발급 인증서를 사용하여 서명됩니다. 이러한 인증서는 인증 기관 서비스를 사용하여 발급되며 해당 공개 루트 인증서는 Cloud Storage 버킷에서 확인할 수 있습니다.
이 문서는 무료 등급에 적용됩니다. 프리미엄 등급의 서명에 관한 자세한 내용은 보안 메타데이터 액세스 및 패키지 확인을 참고하세요.
서명 개요
서명은 signature.zip 파일에 저장됩니다. signature.zip 파일에는 다음 파일이 포함됩니다.
digest.txt: 이 파일은 해싱 알고리즘과 패키지 다이제스트를 16진수 인코딩 형식으로 저장합니다. 아래 예시를 참조하세요.SHA-256:c5feab6f4de0878e94cf2a3074039b4f16a0c93a03501f047ee6eea29a8e33e0`.signature.txt: 이 파일은 서명 알고리즘을 16진수로 인코딩된 서명과 함께 저장합니다. 아래 예시를 참조하세요.ECDSAP256_DER:30450220585d2a01f20de98dfe6cfab2c01a8f11787dbafbc6541304d23cc582e61be016022100f05a19f5ce473144579dfefc47905fd650584a1c7a31bd9d5bf93ecce739a7cb`cert.pem: 이 파일은 공개 인증서를 저장합니다.certChain.pem: 이 파일은 공개 인증서의 인증서 체인을 저장합니다.
서명 확인
다음 중 하나를 사용하여 서명을 확인할 수 있습니다.
- aoss-verifier 도구
- 수동
- 인증 스크립트
aoss-verifier 도구를 사용하여 서명 확인
오픈소스 소프트웨어 패키지의 신뢰성과 무결성을 확인하려면 aoss-verifier 도구를 설치하세요.
패키지를 확인하려면
--language,--package_id,--version,--artifact_path플래그를 사용하여 LANGUAGE, PACKAGE_ID, VERSION 값과 확인할 PATH_TO_DATA_FILE를 전달합니다.aoss-verifier verify-package \ --language LANGUAGE \ --package_id PACKAGE_ID \ --version VERSION \ --artifact_path ARTIFACT_PATH다음을 바꿉니다.
- LANGUAGE: 패키지 언어입니다. 값은 소문자여야 합니다.
- PACKAGE_ID: Java의 경우 형식은 groupId:artifactId입니다. Python의 경우 형식은 packageName입니다. 값은 소문자여야 합니다.
- VERSION: 패키지 버전입니다.
- ARTIFACT_PATH: 확인하려는 로컬 디렉터리의 데이터 파일 경로입니다. 다음 파일 이름 확장자를 사용합니다.
- Java 패키지의
jar파일 확장자 - Python 패키지의
whl파일 확장자
- Java 패키지의
수동으로 서명 확인
서명을 수동으로 확인하려면 다음 단계를 따르세요.
Google Cloud CLI 및 OpenSSL 소프트웨어 버전 3.0.1 이상을 설치합니다.
다이제스트를 확인합니다.
해싱 알고리즘을 식별합니다.
digest.txt파일에는 다이제스트를 계산하는 데 사용된 해싱 알고리즘이 포함되어 있습니다. 다음 명령어를 사용하여 해싱 알고리즘을 식별합니다.cut -d ':' -f1 digest.txt출력이
SHA256인지 확인합니다.데이터 파일의 다이제스트를 계산합니다. 사용된 해시 알고리즘에 따라 다양한 명령줄 도구를 사용하여 데이터 파일의 다이제스트를 계산할 수 있습니다. 보증된 OSS 데이터 파일 및 스크립트의 경우 SHA-256 해시 알고리즘을 사용하여 다이제스트를 생성합니다.
Linux에서는 다음 명령어를 사용하여 해시를 계산합니다.
sha256sum PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txt패키지 확인의 경우 PATH_TO_DATA_FILE를 패키지 확인을 위한 로컬 디렉터리의 패키지 경로로 바꿉니다.
메타데이터 확인의 경우 PATH_TO_DATA_FILE을 메타데이터 파일 이름으로 바꿉니다. 예를 들면
buildInfo.json,vexInfo.json또는healthInfo.json입니다.macOS에서는 다음 명령어를 사용합니다.
shasum -a 256 PATH_TO_DATA_FILE | cut -d ' ' -f1 > datadigest.txt다음 명령어를 사용하여
digest.txt파일에서 해시를 추출합니다.cut -d ':' -f2 digest.txt > signaturedigest.txt다음 명령어를 사용하여 두 다이제스트를 비교합니다.
diff datadigest.txt signaturedigest.txt차이가 없으면 출력이 표시되지 않습니다.
서명 확인
다음 명령어를 사용하여
cert.pem에서 공개 키를 가져옵니다.openssl x509 -pubkey -noout -in cert.pem > pubkey.pem다음 명령어를 사용하여 바이너리 형식으로 서명을 추출합니다(
xxd명령어가 없는 경우 설치).cut -d ':' -f2 signature.txt | xxd -r -p > sig.sig다음 명령어를 사용하여 바이너리 형식으로 다이제스트를 추출합니다.
cut -d ':' -f2 digest.txt | xxd -r -p > digest.bin다음 명령어 중 하나를 사용하여 서명을 확인합니다.
옵션 1
openssl pkeyutl -in digest.bin -inkey pubkey.pem -pubin -verify -sigfile sig.sig이 명령어는 다음 출력을 반환합니다.
Signature Verified Successfully옵션 2
openssl dgst -sha256 -verify pubkey.pem -signature sig.sig PATH_TO_DATA_FILEPATH_TO_DATA_FILE을 로컬 디렉터리의 데이터 파일 경로로 바꿉니다.
이 명령어는 다음 출력을 반환합니다.
Verified OK
인증서 확인
인증서를 확인하려면 다음 명령어를 실행합니다.
openssl verify -verbose -CAfile ca.crt -untrusted certChain.pem cert.pemca.cert는 다음 명령어를 사용하여 다운로드할 수 있는 루트 인증서입니다.curl -o PATH_TO_LOCAL_STORE https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt성공하면 다음 출력이 반환됩니다.
cert.pem: OK
스크립트를 사용하여 서명 확인
인증 스크립트를 사용하여 서명을 인증하려면 다음 단계를 따르세요.
확인 스크립트를 다운로드합니다.
애플리케이션 기본 사용자 인증 정보 (ADC)를 사용하여 인증을 설정합니다.
다음 명령어를 사용하여 확인 스크립트의
signatureverification.sh,README.md,signature.zip를 다운로드합니다.gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0" PATH_TO_LOCAL_STORE --recursivePATH_TO_LOCAL_STORE을 파일을 다운로드할 로컬 경로로 바꿉니다.
확인 스크립트를 사용하여 유틸리티 스크립트 확인을 실행할 수도 있습니다.
다음 단계에 따라 스크립트를 실행합니다.
Google Cloud CLI 및 OpenSSL 소프트웨어 버전 3.0.1 이상을 설치합니다.
Assured OSS에 액세스할 권한이 있는 서비스 계정으로 인증합니다.
다음 명령어를 사용하여 스크립트를 실행하는 데 필요한 권한을 부여합니다.
chmod +x signatureverification.shsignature.zip파일을 다운로드하지 않은 경우 다음 명령어를 사용하여 스크립트를 실행합니다../signatureverification.sh --data_file_path PATH_TO_DATA_FILE \ --signature_url SIGNATURE_ZIP_URL \ --root_cert_url ROOT_CERT_URL다음을 바꿉니다.
- PATH_TO_DATA_FILE: 확인하려는 로컬 디렉터리의 데이터 파일 경로
- SIGNATURE_ZIP_URL: 서명 zip 파일의 URL
- ROOT_CERT_URL: 공개 루트 인증서 URL
샘플 출력
다음 출력은 확인 스크립트가 성공적으로 실행되었음을 나타냅니다.
Signature verification successful
Certificate verification successful