나는 pam에 기능을 추가하고 싶고, 소스를 다운로드하는 것이 좋은 출발점이라고 생각했습니다 libpam-modules
. 다운로드 시 다음 경고가 표시됩니다.gpgv: Can't check signature: public key not found
apt-get
공개 키를 찾을 수 없는 경우 소스 패키지의 무결성을 확인하는 공식적인 방법은 무엇입니까 ?
의 최신 버전 ubuntu-keyring
과 debian-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
동일한 검증을 수행합니다.
- 다운로드
http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release
하고http://dk.archive.ubuntu.com/ubuntu/dists/trusty/Release.gpg
. - 다음을 사용하여 서명을 확인합니다
gpg --keyring /etc/apt/trusted.gpg --verify Release.gpg Release
(공개 키는 에서도 찾을 수 있음/usr/share/keyrings/ubuntu-archive-keyring.gpg
). - 다운로드
http://dk.archive.ubuntu.com/ubuntu/dists/trusty/main/source/Sources.gz
sha256sum Sources.gz
에서 얻은 해시를 비교하고grep main/source/Sources.gz Release
sha256sum pam_1.1.8-1ubuntu2.dsc
에서 얻은 해시를 비교하고zcat Sources.gz | grep pam_1.1.8-1ubuntu2.dsc
- 파일 내에서 발견된 해시를 검증합니다
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
해당 키가 올바르게 서명되었는지 확인할 수 있습니다.