소스 패키지의 무결성을 확인하는 공식적인 방법은 무엇입니까?

소스 패키지의 무결성을 확인하는 공식적인 방법은 무엇입니까?

나는 pam에 기능을 추가하고 싶고, 소스를 다운로드하는 것이 좋은 출발점이라고 생각했습니다 libpam-modules. 다운로드 시 다음 경고가 표시됩니다.gpgv: Can't check signature: public key not found

apt-get공개 키를 찾을 수 없는 경우 소스 패키지의 무결성을 확인하는 공식적인 방법은 무엇입니까 ?

의 최신 버전 ubuntu-keyringdebian-keyring패키지가 이미 설치되어 있습니다.

있다방법해당 공개 키를 찾아 설치합니다. 그러나 그 자체로는 무결성을 제공하지 않습니다. 왜냐하면 사실상 파일 dsc의 서명을 확인하는 데 사용할 공개 키를 알려주기 위해 파일 내용을 신뢰하기 때문입니다 dsc.

파일 의 gpg 서명이 dsc무결성 검증의 중요한 부분입니까? 중간에 있는 사람이나 루즈 미러가 뭔가 나쁜 일이 일어나고 있다는 유일한 표시인 gpg의 경고인 파일의 악성 버전을 제공할 수 있습니까? 아니면 apt-get무결성을 검증하는 다른 방법이 있습니까?

보안 모델에 대한 공식 문서는 어디에서 찾을 수 있나요? 이상적으로는 설치 이미지에서 다운로드 중인 소스 패키지까지의 전체 신뢰 경로를 이해하고 싶습니다.

다운로드의 전체 출력은 다음과 같습니다.

$ apt-get source libpam-modules
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Picking 'pam' as source package instead of 'libpam-modules'
NOTICE: 'pam' packaging is maintained in the 'Bzr' version control system at:
https://code.launchpad.net/~ubuntu-core-dev/pam/ubuntu
Please use:
bzr branch https://code.launchpad.net/~ubuntu-core-dev/pam/ubuntu
to retrieve the latest (possibly unreleased) updates to the package.
Need to get 2,043 kB of source archives.
Get:1 http://dk.archive.ubuntu.com/ubuntu/ trusty/main pam 1.1.8-1ubuntu2 (dsc) [2,510 B]
Get:2 http://dk.archive.ubuntu.com/ubuntu/ trusty/main pam 1.1.8-1ubuntu2 (tar) [1,893 kB]
Get:3 http://dk.archive.ubuntu.com/ubuntu/ trusty/main pam 1.1.8-1ubuntu2 (diff) [147 kB]
Fetched 2,043 kB in 6s (316 kB/s)                                              
gpgv: Signature made Fri 31 Jan 2014 11:12:23 PM CET using RSA key ID 64792D67
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./pam_1.1.8-1ubuntu2.dsc

답변1

파일 의 gpg 서명을 확인하지 않고도 소스 패키지의 무결성을 확인할 수 있습니다 dsc.

Release각 설치 소스에는 및 이라는 파일 쌍이 있습니다 Release.gpg. 이 두 파일은 아카이브에 있는 모든 항목의 무결성을 확인하는 데 사용할 수 있는 해시 트리의 루트입니다. GPG 서명은 Release확인이 필요한 유일한 서명입니다.

파일 의 서명은 dsc파일이 저장소에 저장되고 를 통해 간접적으로 서명되기 전에 중요한 목적으로 사용될 수 있습니다 Release.gpg. 파일이 저장소에 있으면 파일의 서명을 dsc무시할 수 있습니다.

무결성을 수동으로 확인하는 방법은 다음과 같습니다. 내가 알 수 있는 한, apt-get source동일한 검증을 수행합니다.

  1. 다운로드 http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release하고 http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg.
  2. 다음을 사용하여 서명을 확인합니다 gpg --keyring /etc/apt/trusted.gpg --verify Release.gpg Release(공개 키는 에서도 찾을 수 있음 /usr/share/keyrings/ubuntu-archive-keyring.gpg).
  3. 다운로드http://dk.archive.ubuntu.com/ubuntu/dists/trusty/main/source/Sources.gz
  4. sha256sum Sources.gz에서 얻은 해시를 비교하고grep main/source/Sources.gz Release
  5. sha256sum pam_1.1.8-1ubuntu2.dsc에서 얻은 해시를 비교하고zcat Sources.gz | grep pam_1.1.8-1ubuntu2.dsc
  6. 파일 내에서 발견된 해시를 검증합니다 dsc.cat pam_1.1.8-1ubuntu2.dsc | sed -e 's/^ //;s/ [1-9][0-9]* / /' | sha256sum -c

답변2

해당 경고가 표시되는 이유는 소스 패키지가 개발자 자체 키로 서명된 반면 저장소에서 가져온 바이너리 패키지는 저장소 서명 키로 서명되었기 때문입니다. ubuntu-keyring최종 저장소의 키링만 제공하므로( 실제로 debian-keyring는 모든 관리자의 공개 키도 제공) apt키를 찾을 수 없으며 패키지가 인증되지 않은 것으로 간주됩니다.

따라서 여기서 해결 방법은 키 서버에서 키를 가져오는 것입니다. Launchpad에서 소스 패키지를 찾아볼 수도 있습니다 pam(여기), 패키지를 마지막으로 변경한 사람의 이메일 주소를 클릭하고 거기에서 키 지문을 확인하세요.

이 경우 패키지를 마지막으로 변경한 사람은 Stéphane Graber였으며 그의 키는 debian-keyring(구체적으로는 /usr/share/keyrings/debian-maintainers.gpg)에 있습니다. 패키지를 설치하고 debian-keyring해당 키링에서 키를 내보낸 다음 해당 키를 자신의 키링으로 가져와서 apt해당 키가 올바르게 서명되었는지 확인할 수 있습니다.

관련 정보