여러 시스템에서 GPG 키를 관리하는 방법은 무엇입니까?


103

GnuPG를 처음 사용하고 사용법을 이해하려고 노력하고 있습니다. 비전문가를위한 GPG / PGP에 대한 짧고 이해하기 쉬운 설명을 검토 했습니까? 하지만 대부분의 가이드는 단일 컴퓨터 관점에서 PGP를 설명합니다.

Linux PC, Linux 랩톱 및 Android 전화의 세 가지 컴퓨팅 장치에서 GnuPG를 사용하고 싶습니다.

기본적인 사용 사례는 IMAP 서비스에서 관리하는 전자 메일을 암호화 / 복호화하는 것이므로 모든 장치의 암호 해독에는 동일한 개인 키가 필요합니다.

나는 나의 선택이 다음과 같다고 생각한다.

  1. 모든 키를 각 장치의 키 링에 복사하고 보호를 위해 주로 개인 키 암호를 사용하십시오.

  2. 내 신원을 나타내는 마스터 키 (--gen-key 포함)를 만든 다음 전자 메일을 암호화 / 복호화하고 마스터 키로 서명하기 위해 별도의 일회용 키 (--gen-key와 함께)를 만듭니다. 전자는 내 PC에만 있고 후자는 각 장치에 배포됩니다. 모바일 장치가 손상되지 않는 한 일회용 키는 계속 유효합니다.

나는 지나치게 편집증적일 수도 있고, 이것을 이전보다 더 복잡하게 만들 수도 있지만, 유머하십시오. 나는 당신의 모든 계란을 한 바구니에 넣지 않을 것이라고 믿습니다.

마스터 키는 내 디지털 신원으로 간주됩니다. 많은 노력 해당 ID의 주위에 신뢰를 구축 소요되며, 차라리 부주의에서 내 키를 분실보다는 내 편집증의 불편을 고통 새 마스터 키 주위 신뢰를 구축해야 할 것이다 어쩌면이만큼 나쁘지 않다 (I 생각하지만, 나는 이것에 익숙하지 않습니다) .

PC보다 랩톱이나 휴대 전화를 잃을 가능성이 높습니다. loss == 타협이라면 마스터 키 페어보다 일회용 키 페어를 잃어 버릴 것입니다. 항상 새로운 일회용 키에 마스터 키의 신뢰를 부여 할 수 있습니다.

정말 긴 질문에 대해 죄송합니다. :-)

TL; DR

마스터 개인 키를 여러 장치 에 저장하기에 충분한 암호로 보호되어 있습니까?

옵션 # 2에 대한 나의 계획이 실현 가능합니까? 내가 잘못했거나 개선 할 수 있습니까?

옵션 # 2가 나쁜 생각이라면 여러 장치에서 단일 사용자에게 GnuPG를 사용할 때 가장 좋은 방법은 무엇입니까?

답변:


59

글쎄, 이것은 약간 창피하다. 나는 일주일 동안이 문제를 파악하기 위해 몇 시간을 보냈으며 그 대답은 하위 키에 있습니다 .GnuPG 설명서 및 FAQ에 관한 주제입니다.

하위 키가 무엇이고 왜 --gen-key 대신 사용될 수 있는지 조사하는 동안 http://wiki.debian.org/subkeys와 같은 보석을 발견했습니다 .

데비안 위키는 서브 키가있는 마스터 키를 사용하여 옵션 # 2 (OP 참조) 를 구현하는 방법 과 백업 매체 (예 : 플래시 드라이브)에 저장 한 후 시스템에서 마스터 키를 제거하는 방법에 대해 설명합니다. 그런 다음 하위 키를 각 장치의 내 키 링간에 배포 할 수 있습니다.

장점 :

  1. 마스터 키를 보호하기 위해 주로 비밀번호에 의존하지 않고,

  2. 시스템이 손상된 경우 마스터 키를 즉시 사용할 수 없습니다 (어리석게 플래시 드라이브를 연결 한 상태로 두거나 해당 드라이브를 손상된 시스템에 연결하지 않은 경우)

  3. 이것은 데비안 개발팀이 구현 한 연습입니다.

  4. GnuPG의 하위 키 기능을 사용합니다. 열쇠 고리에 여러 개의 느슨한 열쇠를 두는 것보다 조금 더 조직적으로 보이는 것 같습니다.

데비안 서브 키 위키의 관련 부분

  1. 기존 GnuPG 파일 ($ HOME / .gnupg)을 백업하십시오. 그들을 안전하게 지키십시오. 다음 단계에서 문제가 발생하면 알려진 좋은 장소로 돌아 가기 위해 필요할 수 있습니다. (참고 : umask 077은 백업에 대한 권한을 제한합니다.)

    • umask 077; tar -cf $HOME/gnupg-backup.tar -C $HOME .gnupg
  2. 서명 할 새 하위 키를 만듭니다.

    • 키 ID 찾기 : gpg --list-keys yourname
    • gpg --edit-key YOURMASTERKEYID
    • 상기 gpg>프롬프트 :addkey
    • 암호 문구를 입력하고 입력하십시오.
    • "RSA (서명 만)"키 유형을 선택하십시오.
    • 4096 (또는 2048) 비트 키 크기를 선택하는 것이 좋습니다.
    • 만료 날짜를 선택하십시오 (마스터 키보다 하위 키를 더 자주 회전 시키거나 만료없이 마스터 키 수명 동안 유지할 수 있음).
    • GnuPG는 (결국) 키를 만들지 만 엔트로피가 충분 해지기를 기다려야 할 수도 있습니다.
    • 키를 저장하십시오. save
  3. 이 작업을 반복하고 원하는 경우 "RSA (암호화 만)"하위 키도 만들 수 있습니다.

  4. 이제 $HOME/.gnupgUSB 드라이브에 복사 하십시오.

  5. 여기 까다로운 부분이 있습니다. 개인 마스터 키를 제거해야하지만 불행히도 GnuPG는 편리한 방법을 제공하지 않습니다. 하위 키를 내보내고 개인 키를 제거한 다음 하위 키를 다시 가져와야합니다.

    • 하위 키 내보내기 : gpg --export-secret-subkeys YOURMASTERKEYID >secret-subkeys(내보낼 하위 키를 선택하려면 각각 느낌표가있는 하위 키 ID를 지정하십시오. gpg --export-secret-subkeys SUBKEYID! [SUBKEYID! ..])
    • 마스터 비밀 키를 제거하십시오. gpg --delete-secret-key YOURMASTERKEYID
    • 하위 키를 다시 가져옵니다. gpg --import secret-subkeys
    • 개인 키 대신 gpg -K표시 되는지 확인하십시오 . 그것은 비밀 키가 실제로 없다는 것을 의미합니다. 의 출력에 더미 OpenPGP 패킷이 있는지 확인하십시오 .sec#secgpg --export-secret-key YOURMASTERKEYID | gpg --list-packets
    • 선택적으로 하위 키를 보호하는 비밀번호 문구를 변경하십시오 gpg --edit-key YOURMASTERKEYID passwd. (개인 마스터 키를 포함하여 백업의 개인 키 자료는 이전 암호로 보호됩니다.)

이제 컴퓨터를 정상적으로 사용할 준비가되었습니다.

마스터 키를 사용해야 할 경우 암호화 된 USB 드라이브를 마운트하고 GNUPGHOME 환경 변수를 설정하십시오.

export GNUPGHOME=/media/something
gpg -K

또는 --home 명령 줄 인수를 사용하십시오.

gpg --home=/media/something -K

후자의 명령은 이제 개인 키를 표시 sec하고 표시하지 않아야 sec#합니다.

머신 당 여러 서브 키 대 모든 머신에 대해 하나의 단일 서브 키

데비안 서브 키 위키에서 발췌. 주석에 원래 언급되었습니다. [낙서]와 강조 광산.

머신 당 하나의 서브 키를 갖고 싶은 유혹이있을 수 있으므로 해당 머신의 잠재적으로 손상된 서브 키 만 교환하면됩니다. 모든 컴퓨터에서 단일 하위 키를 사용하는 경우 모든 하위 컴퓨터에서 단일 하위 키를 교환해야합니다 (단일 하위 키가 손상되었거나 의심되는 경우).

그러나 이것은 하위 키 서명에만 작동합니다 . 암호화 하위 키가 여러 개인 경우 gpg는 가장 최근의 암호화 하위 키에 대해서만 암호화한다고하며 , 알려 지거나 취소되지 않은 암호화 하위 키에 대해서는 암호화하지 않습니다.


5
좋은 Q & A이지만 AFAIK에는 여전히이 설정에 한 가지 문제가 있습니다. 서명에 유용하지만 다른 장치간에 동일한 enc 키를 공유하지 않으려는 경우 암호화에는 적합하지 않습니다. 메시지, gpg는 기본적으로 생성 된 최신 취소되지 않은 enc 키를 사용합니다. 발신자가 UID (집 또는 직장 등)에 따라 특정 enc 하위 키를 사용하도록 할 수는 없습니다.
KurzedMetal

2
아마도 이것은 문제입니다. 가장 큰 관심사는 마스터 키를 중심으로 구축 한 신뢰 웹을 잃어 버리는 것입니다. 물론 암호화 하위 키는 암호화 된 메시지를 읽는 데 사용하는 모든 장치에 있어야합니다. 암호화 키가 손상된 경우 복구 프로세스에는 본인 만 관련됩니다. 마스터 서명 키를 잃어 버리고 새로운 키에 서명하기 위해 웹에 신뢰를 요청 / 설득 해야하는 것과는 반대로. 볼트에서 암호화 하위 키를 재배치하지 않았습니다.
저스틴 C

9

단일 실패 지점 (마스터 키 및 특히 암호 포함)을 좋아하지 않는 사람이이 방법을 사용합니다. 분산 신원을 허용하면서도 장치가 웹을 통해 작동 할 수 있습니다.

이미 기존 시스템이 있는지 모르겠지만 크론 작업 및 몇 줄의 Bash와 함께 사용할 수 있다고 생각합니다.

이 시스템에는 두 가지 클래스의 키 쌍 ( 장치 키 쌍 및 시간 프레임 키 쌍)이 있습니다. 각 장치에서 사용자에 대해 하나의 장치 키 쌍이 생성되고 해당 장치에서 수명이 유지됩니다. 기간 키 쌍은 일상적인 간격으로 중앙 서버에 의해 생성됩니다 (매월, 매일, 매시간 - 당신이 원하는 방법 편집증에 따라 다름). 공개 키는 공개적으로 공개되며 (서버 자체에 서명 할 장치 키 쌍이 있음) 개인 키는이 키에 액세스 할 수있는 각 장치의 공개 키로 암호화되어 배포됩니다. (이 배포판은 장치가 서버에 직접 연결되도록하는 등 가능한 한 개인용이어야합니다.)

메시지 서명에는 메시지를 보내는 모든 장치의 장치 키를 사용합니다. 누군가 메시지를 보내려면 현재 공개 시간대 키로 서명 할 수 있습니다. (알림을 유지하려면 자동화 된 시스템이 있어야합니다.) 그런 다음 모든 장치에서 메시지를 읽을 수 있습니다.

오래된 암호화 된 메시지를 읽기 위해, 다른 세트가있는 적절한 전략 (원하는 경우 다시 한 번-편집증 수준에 따라 타임 프레임 키쌍 생성 서버 포함)에 따라 각 장치에서 이전 타임 프레임 키 쌍이 백업됩니다. 이전 키를 보호하는 암호로 보호 된 키 쌍 (하지만 기억하기 쉽기 때문에 시간이 지남에 따라 많은 암호).

기기를 도난 당했거나 다른 방식으로 도난당한 경우 공개적으로 신뢰할 수있는 다른 기기를 사용하여 신원을 확인하는 공개 서명 된 메시지를 만들 수 있습니다 (예 : 공개 모임 및 / 또는 신뢰할 수있는 친구가 사용자를 직접 확인하도록하고 손상된 기기 키와 액세스 할 수있는 기간 키를 해지합니다. 키를 해지 할 때 서버의 신뢰할 수있는 장치 목록에서 암호와 신뢰할 수있는 장치 키를 사용하여 도난 된 장치를 제거 할 수도 있습니다.

새로 발표 된 장치 키를 신뢰하는 정책은 현재 신뢰 정책과 같은 것을 따라야합니다. 적절한 정책은 생성 서버, 모바일 장치 및 크고 무거운 장치를 믿거 나 훔치기 어렵 기 때문에 신뢰하는 것입니다 사용자가 알아 차리기 전에 사용자의 전화, 데스크톱 PC 및 VPS를 함께 사용합니다.

서버가 손상된 경우 다른 손상된 장치에 대해 설명 된 것과 동일한 절차 (새 장치를 추가하는 것과 유사한 정책으로)에 따라 해당 서버를 해지하고 다시 보안되거나 완전히 새로운 서버 ( 새로운 장치 키 쌍).


취소 섹션은 서면으로 약간 흐릿합니다. 다른 기기에서 알림을 받아 기기를 취소 할 수 있어야합니다 (누군가 랩탑을 훔쳐서 휴대 전화가 서버에 직접 접속할 수없는 경우에도 실패하지 않도록). 도둑이 수행해야합니다 (따라서 장치에는 해지를 위해 암호로 보호 된 키가 있어야 함). 보고서가 충돌하는 경우, 타사의 수동 검증을 수행 할 수있을 때까지 모든 키를 일시적으로 불신해야합니다.
스튜어트 P. 벤틀리

실제로 정기적으로 수동으로 업데이트 (교체)되는 강력한 공개 암호를 사용하여 키를 취소하는 다른 메커니즘을 사용하는 것이 좋습니다. 이렇게하면 장치 에 관계 없이 키를 취소 할 수 있습니다 (예 : 비밀번호를 비밀로 유지하는 한 휴대 전화 만 사용하여 누군가가 도용합니다.
스튜어트 P. 벤틀리
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.