디지털 서명은 주어진 패키지가 원 개발자가 생성한 것이고 이후 손대지 않은 것임을 보장하는 절차이에요. 다운로드 받은 Tor 브라우저가 Tor 프로젝트에서 만들었고, 공격자에 의해 개조되지 않았음을 검증하는 게 왜 중요하고, 어떻게 해야하는지 아래에 설명해뒀습니다.

다운로드 페이지에서 파일을 받으시면 labelled 패티지 이름은 같으면서, "signature" 라는 레이블이 더 붙은 파일을 같이 받게 돼요. 해당 파일의 확장자는 .asc로, OpenPGP 서명이에요. 위 서명을 통해 다운로드한 파일이 Tor 측에서 당신께 제공하려 했던 파일과 정확히 같은지 검증할 수 있습니다. 웹 브라우저마다 다르지만, 일반적으로 'signature' 링크를 오른쪽 마우스 버튼으로 클릭 후 'save file as' 옵션을 선택해서 이 파일을 다운로드할 수 있습니다.

예를 들어, tor-browser-windows-x86_64-portable-13.0.1.exe 파일은 tor-browser-windows-x86_64-portable-13.0.1.exe.asc와 함께 제공돼요. 위의 파일 이름은 예시일 뿐, 다운로드 받은 파일 이름과는 정확하게 일치하지 않아요.

지금부터는 다운로드 받은 파일의 디지털 서명을 검증하는 방법을 운영 체제에 따라 설명해드리겠습니다. 서명에 기재된 날짜는 패키지가 서명된 순간을 의미함을 유의하세요. 따라서 새로운 파일이 업로드될 때마다, 새로운 서명이 생성되며, 기재된 날짜도 달라지게 돼요. 서명을 검증한 이상 더이상 확인된 날짜가 상이하다고 해서 걱정할 필요가 없습니다.

GnuPG 설치하기

서명을 검증하기 전에 우선 GnuPG가 설치돼있어야 해요.

윈도우 사용자라면:

Windows를 사용 중이라면, Gpg4win를 다운로드 받으세요. 그 후 다운로드 받은 '설치 도우미'를 실행하세요.

서명을 검증하려면 윈도우 명령 행인 cmd.exe에 명령 몇 개를 입력해야 해요.

macOS 사용자라면:

macOS를 사용 중이라면, GPGTools를 설치하세요.

서명을 검증하려면 터미널('애플리케이션' 메뉴 내에 있습니다)에 명령 몇 개를 입력해야 해요.

GNU/LINUX 사용자라면:

GNU/Linux를 사용한다면 GnuPG가 이미 시스템 내에 있을 겁니다. GNU/Linux 배포판 대다수엔 사전 설치 돼있거든요.

서명을 검증하려면 터미널 창에 명령 몇 개를 입력해야 해요. 배포판에 따라 앞으로의 진행 방식에 차이가 있습니다.

Tor 개발자 키 인출하기

매 Tor 브라우저 릴리스엔 Tor 브라우저 팀의 서명이 들어있습니다. Tor 브라우저 개발자 서명 키 가져오기 (0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290):

gpg --auto-key-locate nodefault,wkd --locate-keys [email protected]

위 명령을 입력하면 다음과 같이 떠야 해요:

gpg: key 4E2C6E8793298290: public key "Tor Browser Developers (signing key) <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1
      EF6E286DDA85EA2A4BA7DE684E2C6E8793298290
uid           [ unknown] Tor Browser Developers (signing key) <[email protected]>

NOTE: Your output may deviate somewhat from the above (eg. expiration dates), however you should see the key correctly imported.

에러 메시지가 뜨나요? 뭔가 잘못된 거예요. 원인을 규명하기 전까지는 더이상의 진행이 불가능해요. Workaround (using a public key) 섹션을 대신 사용해 키를 가져올 수 있을지도 모릅니다.

키를 가져온 후, 파일(파일에 있는 지문을 통해 키를 식별할 수 있습니다)에 저장할 수 있습니다:

gpg --output ./tor.keyring --export 0xEF6E286DDA85EA2A4BA7DE684E2C6E8793298290

이 명령을 사용하면, 키가 ./tor.keyring 경로, 즉 현 디렉터리에 파일 형태로 저장돼요. 이 명령을 사용했음에도 ./tor.keyring경로가 없다면, 뭔가 잘못된 겁니다. 문제의 원인을 찾을 때까지 더이상 진행할 수 없습니다.

서명의 검증

다운로드한 패키지의 서명을 검증하려면, 상응하는 '.asc' 서명 파일과 Tor 브라우저 설치 파일(installer)을 다운로드해야 해요. 그 후 GnuPG가 다운로드한 파일을 검증하도록 하는 명령을 입력해 검증해요.

하단의 예시는 두 파일을 'Downloads' 폴더에 받았을 것을 상정하고 작성됐습니다. Note that these commands use example file names and yours will be different: you will need to replace the example file names with exact names of the files you have downloaded.

For Windows users (change x86_64 to i686 if you have the 32-bit package):

gpgv --keyring .\tor.keyring Downloads\tor-browser-windows-x86_64-portable-13.0.1.exe.asc Downloads\tor-browser-windows-x86_64-portable-13.0.1.exe

macOS 사용자라면:

gpgv --keyring ./tor.keyring ~/Downloads/tor-browser-macos-13.0.1.dmg.asc ~/Downloads/tor-browser-macos-13.0.1.dmg

For GNU/Linux users (change x86_64 to i686 if you have the 32-bit package):

gpgv --keyring ./tor.keyring ~/Downloads/tor-browser-linux-x86_64-13.0.1.tar.xz.asc ~/Downloads/tor-browser-linux-x86_64-13.0.1.tar.xz

The result of the command should contain:

gpgv: Good signature from "Tor Browser Developers (signing key) <[email protected]>"

'해당 파일이나 디렉터리가 없습니다(No such file or directory)'라는 에러 메시지가 송출될 경우, 이전까지의 단계를 진행하면서 뭔가 잘못 했을 수 있습니다. 혹은 명령을 입력할 때 예시에 적힌 파일 이름을 그대로 적어서 문제가 발생한 것일 수도 있습니다. 받은 파일 이름과 예시 파일 이름은 살짝 다르거든요.

Refreshing the PGP key

Run the following command to refresh the Tor Browser Developers signing key in your local keyring from the keyserver. This will also fetch the new subkeys.

gpg --refresh-keys EF6E286DDA85EA2A4BA7DE684E2C6E8793298290

차선책 (공개 키를 사용한 해결방법)

발생한 에러를 해결할 수 없다면, 부담을 갖지 마시고 이 공개 키를 대신 다운로드 받아 사용하세요. 다른 방법으로, 다음 명령을 사용해도 돼요:

curl -s https://openpgpkey.torproject.org/.well-known/openpgpkey/torproject.org/hu/kounek7zrdx745qydx6p59t9mqjpuhdf |gpg --import -

Tor 브라우저 개발자 키는 keys.openpgp.org and can be downloaded from https://keys.openpgp.org/vks/v1/by-fingerprint/EF6E286DDA85EA2A4BA7DE684E2C6E8793298290에서도 받으실 수 있습니다. macOS나 GNU/Linux를 사용 중이라면, 다음 명령을 실행해 키를 가져올(fetch) 수 있습니다:

gpg --keyserver keys.openpgp.org --search-keys EF6E286DDA85EA2A4BA7DE684E2C6E8793298290

GnuPG에 대해 더 알아보셔도 좋습니다.