cmake를 설치하고 있어요cmake.org웹사이트에서는 소스 코드 다운로드를 확인하기 위해 설계된 두 개의 파일을 제공합니다.cmake-3.11.0-rc3.tar.gz
같은 페이지에 다운로드 링크가 있습니다cmake-3.11.0-rc3-SHA-256.txt파일과cmake-3.11.0-rc3-SHA-256.txt.asc문서
내가 이해하지 못하는 것은 다음과 같습니다.
- 동일한 소스(cmake.org)의 asc 파일에 대한 소스 코드 무결성을 보장하는 방법은 무엇입니까? 본 사이트에서 제공하는 소스코드가 유출되면 공격자는 asc 파일도 유출할 수 있지 않을까?
소스 코드 다운로드를 실제로 인증하려면 공개 키가 필요하지 않나요? asc 파일이 공개 키여야 한다고 생각합니다. 그러나 다음을 사용하여 asc 파일을 가져오려고 하면
gpg --import cmake-3.11.0-rc3-SHA-256.txt.asc
"유효한 OpenPGP 데이터를 찾을 수 없습니다"라는 오류 메시지가 나타납니다.
답변1
.asc
파일 내부를 살펴보면 다음으로 시작하는 것을 볼 수 있습니다.
-----BEGIN PGP SIGNATURE-----
그래서 이것은 PGP입니다징후. 이는 특정 PGP 키를 사용하여 특정 콘텐츠에 서명한다는 의미입니다.
1) 내용
이름으로 판단하면 콘텐츠는 .txt
다운로드할 소프트웨어에 해당하는 파일 목록인 file 이며, 각 파일에는 해당 해시 값이 있습니다.
2) 서명
이 두 파일을 실행 하면 gpg
결과는 다음과 같습니다.
$ gpg --verify cmake-3.11.0-rc3-SHA-256.txt.asc cmake-3.11.0-rc3-SHA-256.txt
gpg: Signature made Fri Mar 9 10:29:10 2018 EST
gpg: using RSA key 2D2CEF1034921684
gpg: Can't check signature: No public key
그러면 이 모든 것이 어떻게 작동합니까? 2D2CEF1034921684
로컬 키체인에 키가 있어야 합니다 . 그것을 어떻게 얻나요? 그리고 더 중요한 것은 당신이 올바른 것을 얻었는지 확인하는 것입니까? (id 자체로는 충분하지 않습니다). OpenPGP 신뢰 모델 네트워크가 이루어지는 곳입니다. 여기서 자세히 설명하기에는 너무 길지만 간단히 말해서 이상적으로는 대역 외 키에 액세스할 수 있고 이를 인증할 수 있는 방법이 있거나 아는 사람의 다른 키가 있습니다. 그 사람 자신이 다른 키를 확인했습니다. 및/또는 HTTPS(신뢰할 수 있는 인증서 및 CA 사용)를 통해 보안되고 가급적이면 DNSSEC를 사용하여 하나 이상의 장소에서 온라인으로 찾을 수 있습니다.
공개 키가 있고 그것이 가짜가 아니고 좋은 것이라고 생각하는 경우(일반적으로 다운로드하려는 도구의 소프트웨어 개발자에 해당) 위 명령은 파일이 .txt
변조되지 않았음을 보여줍니다. 그러면 보관된 모든 파일의 해시가 제공되므로 해당 파일을 다운로드하고 해시 알고리즘(파일 이름에 SHA256이 기록됨)을 다시 실행하여 파일에 저장된 값과 비교할 수 있습니다.
누군가가 서버를 손상시키고 일부 아카이브를 변경한 경우, 귀하가 말했듯 .txt
이 파일이 실제로 일치하는지 신뢰할 수 있도록 새 해시로 파일을 변경할 수도 있습니다. 그러나 이 제3자는 PGP 서명이 있는 올바른 파일을 생성할 수 없습니다 .asc
(이 경우 gpg --verify
유효하지 않은 서명에 대한 오류가 발생함). 이를 위해서는 개인 키에 액세스해야 하기 때문입니다. 개인 키가 아닌 적절하게 보호되었습니다. 어쨌든 웹 서버에 저장됩니다. 다른 키를 사용하여 생성하는 경우 이 알 수 없는 키를 신뢰하지 않기 때문에 표시됩니다.
물론 키 자체가 손상되면 전체 모델이 무너집니다.