명령줄 없는 PGP 암호화

PGP는 강력하면서도 고달프다는 평판을 함께 가지고 있고, 그래서 오늘날 그 사용의 상당 부분은 개인 키가 결코 가서는 안 되는 곳, 즉 AI 채팅에 키를 붙여넣는 방식으로 이루어집니다. 이 가이드는 브라우저 안에서 로컬로 실행되는 PGP 도구 모음을 이용해 실제 사용의 거의 전부를 차지하는 네 가지 작업 — 쌍 생성, 암호화, 복호화, 서명과 검증 — 을 순서대로 살펴보고, 그 모든 것이 버티는지를 결정하는 위생까지 다룹니다.

개인 키를 챗봇에 붙여넣는 일을 멈추세요

이는 예측 가능한 순간에 일어납니다. 키가 가져와지지 않고, 메시지가 복호화되지 않고, 지문이 일치하지 않을 때, 가장 빠른 방법은 개인 키까지 포함한 블록 전체를 AI 채팅에 붙여넣고 뭐가 잘못됐는지 묻는 것처럼 보입니다. 그러지 마세요. 개인 키가 채팅에 들어가는 순간, 그것은 당신의 통제를 벗어납니다. 대화 기록에 남을 수도 있고, 로그에 남을 수도 있고, 나중에 공유하는 스크린샷에 남을 수도 있고, 사용하고 있다고 생각한 기기가 아닌 다른 기기에 남을 수도 있습니다. 붙여넣기는 되돌릴 수 없습니다. 당신이 통제하지 않는 시스템에 복사된 키는 유출된 것으로 취급해야 하며, 이는 그것을 폐지하고 처음부터 다시 시작해야 한다는 뜻입니다 — 바로 그 붙여넣기가 피하려던 작업 그 자체입니다.

두 번째 문제가 있는데, 첫 번째보다 조용합니다. 답이 틀릴 수 있다는 것입니다. 언어 모델은 키 취급 요청 일부를 거부하고, 긴 아머 블록을 잘라내며, 그 중간을 잘못 읽은 뒤에도 지문이나 키 ID를 완전한 확신을 가지고 말할 수 있습니다. 암호 기술은 아슬아슬한 근접을 용서하지 않습니다. 대안은 명령줄 그 자체를 위한 것이 아니라, 재료가 결코 이동하지 않는 곳, 즉 로컬에서 작업을 수행하는 것입니다. 그것이 이 사이트의 PGP 도구 모음의 용도입니다. 키 생성, 암호화, 복호화, 서명, 검증은 브라우저 탭 안에서 실행되며 아무것도 업로드되지 않습니다.

PGP가 실제로 당신에게 주는 것

PGP는 — 현대적 형태로는 GnuPG를 비롯한 도구들이 구현하는 OpenPGP 표준으로서 — 하나의 키 쌍 위에 구축된 두 가지 작업입니다. 공개 키는 누구와도 공유할 수 있고, 인쇄하거나, 이메일로 보내거나, 게시할 수 있습니다. 개인 키는 비밀로 유지되며 패스프레이즈로 보호됩니다. 공개 키로 암호화된 것은 무엇이든 대응하는 개인 키로만 복호화할 수 있습니다. 그것이 기밀성 메커니즘의 전부입니다. 미리 교환할 공유 비밀이 없고, 보호하려는 바로 그 채널에서 합의할 비밀번호도 없습니다.

서명은 반대 방향으로 동작합니다. 당신은 개인 키로 서명하고, 당신의 공개 키를 가진 사람은 누구나 그 서명이 해당 개인 키 소유자로부터 왔으며 서명된 내용이 그 이후로 바뀌지 않았음을 검증할 수 있습니다. 함께 사용하면, 암호화는 누가 이것을 읽을 수 있는가?에 답하고, 서명은 누가 이것을 썼으며, 온전한가?에 답합니다. 둘 다 답하지 않는 것은 누가 지켜보고 있었는가?이며, 이 한계는 아래에서 다시 다룹니다. PGP가 언제 올바른 도구인지를 그것이 결정하기 때문입니다.

쌍을 생성한 뒤, 다른 사람의 키로 암호화하세요

신뢰하는 컴퓨터에서 키 쌍을 생성하고, 첫 1분부터 두 절반을 다르게 취급하세요. 공개 절반은 명함입니다. 내보내고, 당신에게 편지를 쓸 수 있는 누구에게든 주고, 주고받는 사람들이 찾을 수 있는 곳에 두세요. 개인 절반은 당신 앞으로 암호화된 모든 메시지에 대한 마스터 키이며, 그 자리는 오프라인입니다. 복호화하는 컴퓨터에 두고, 암호화된 백업을 별도 매체에 보관하되, 클라우드 메모에도, 메일함에도, 채팅에도 두지 마세요. 생성할 때는 어디에서도 재사용하지 않는 패스프레이즈를 고르세요. 이 사이트의 비밀번호 생성기는 로컬에서 긴 패스프레이즈를 만들 수 있으며, 이는 압박 속에서 하나를 지어내는 것보다 낫습니다.

암호화는 사람들이 상상하는 단계이자 가장 단순한 단계입니다. 수신자의 공개 키를 — 신뢰하는 방식으로 얻은 것을, 그 이유는 아래에서 다룹니다 — 가져와 메시지를 쓰거나 파일을 첨부한 뒤 그 키로 암호화합니다. 출력은 아머 블록이며, 그 내용은 대응하는 개인 키의 소유자만 읽을 수 있으므로 일반 이메일을 통해 이동할 수 있습니다. 한 가지 결과는 분명히 말할 가치가 있습니다. 자신의 키로도 함께 암호화하지 않으면, 보낸 것을 나중에 다시 읽을 수 없습니다. 그것을 우연이 아니라 의도적으로 결정하세요.

어떤 키가 작업을 했는지 주목하세요. 암호화하는 것은 상대방의 공개 키이지 당신의 것이 아닙니다. 당신의 키 쌍이 중요해지는 때는 사람들이 당신에게 쓸 때와 당신이 서명할 때이며, 상대방의 것은 당신이 상대방에게 쓸 때입니다. 초보자의 혼란 대부분 — 그리고 실패한 첫 시도의 대부분 — 은 이 방향이 뒤바뀌는 것이며, 그 뒤에는 아무도 열 수 없는 메시지가 남습니다. 때로는 그것을 받아야 할 사람조차 열 수 없습니다.

도착한 것을 복호화하고, 보내는 것에 서명하고, 받은 것을 검증하세요

복호화는 개인 키가 그 보관 규칙의 가치를 입증하는 지점입니다. 누군가가 아머 블록이나 암호화된 파일을 보냅니다. 당신은 개인 키로 그것을 열고, 패스프레이즈를 입력하고, 내용을 로컬에서 읽습니다. 그 단계의 어느 부분도 네트워크나 서버나 계정이 필요하지 않으며, 그 어느 것도 있어서는 안 됩니다. 어떤 워크플로가 암호화된 메시지와 개인 키를 웹사이트에 업로드해 대신 복호화해 달라고 한다면, 그 워크플로 자체가 위협입니다. 탭을 닫으세요.

서명과 검증은 한 쌍이며, 검증은 사람들이 건너뛰는 절반입니다. 당신이 만드는 서명은 수신자에게 이렇게 말합니다. 이것은 이 키의 소유자로부터 왔으며, 바뀌지 않았다. 당신이 검증하는 서명은 도착한 것에 대해 같은 이야기를 합니다 — 하지만 그것은 당신이 실제로 확인하고, 발신자의 것이라고 신뢰하는 공개 키에 대해서만 확인했을 때만 그렇습니다. 검증 실패는 클릭해서 지나갈 경고가 아닙니다. 그것은 세 가지 중 하나를 뜻합니다. 서명 후 내용이 바뀌었거나, 서명이 손상되었거나, 서명한 키가 기대한 키가 아닙니다. 셋 다 같은 결말로 끝납니다. 그 내용을 근거로 행동하지 말고, 다른 채널로 발신자에게 무슨 일이 있었는지 물으세요.

대부분의 날에 키 위생이 곧 보안입니다

현실 세계에서 PGP의 실패는 수학이 깨지는 경우인 일이 드뭅니다. 그것은 백업 없는 개인 키가 노트북과 함께 사라지는 것입니다. 포럼 계정에서 재사용한 패스프레이즈입니다. 대화 도중에 만료된 키 때문에 주고받는 사람들이 조용히 평문으로 되돌아가는 것입니다. 실제로 유지할 만료일을 설정하세요 — 1년에서 2년이 흔하고 합리적인 선택입니다 — 그리고 갱신 날짜를 키가 만료되는 주가 아니라, 키를 생성한 바로 그날 일정에 넣어 두세요.

폐지 인증서는 키와 동시에, 필요해지기 전에 생성하고, 백업과 함께 보관하세요. 폐지 인증서는 키가 폐기되었거나 유출되었음을 세상에 알리는 방법입니다. 그것을 만들려면 개인 키가 필요하며, 그것은 바로 나쁜 날에 당신이 없을지도 모르는 것입니다. 패스프레이즈, 백업, 폐지 인증서는 화려하지 않지만, 사건과 막다른 골목 사이의 차이가 바로 그것들입니다.

마지막으로 지문입니다. 키 ID는 짧고 아무것도 증명하지 않습니다. 지문은 공개 키의 긴 해시이며, 그것을 비교하는 것이 당신이 가진 키가 상대방이 가진 키임을 아는 방법입니다. 대역 외(out-of-band) 방식으로 비교하세요 — 통화에서 소리 내어 읽거나, 상대방이 건넨 명함과 대조하거나, 상대방이 통제하는 페이지와 대조하세요 — 키를 전달한 바로 그 이메일 스레드 안에서는 하지 마세요. 이메일로 도착하고 그 지문도 같은 메시지에 들어 있던 키는 자기 자신을 검증한 셈이며, 이는 곧 전혀 검증되지 않았다는 뜻입니다.

정직한 한계, 그리고 다른 것을 써야 할 때

PGP는 내용을 암호화합니다. 메타데이터는 숨기지 않습니다. 이메일에서는 발신자, 수신자, 시각, 그리고 대개 제목이 메시지를 운반하는 서버에 그대로 보이며, 암호화된 파일의 크기도 무언가를 말해 줍니다. 또한 PGP는 30년에 걸친 사용성 역사를 짊어지고 있습니다 — 키 관리는 한 세대의 사용자를 혼란스럽게 했고, 도구는 현대 메신저처럼 보이지 않게 되는 일이 결코 없었습니다. 그 어느 것도 PGP를 쓸모없게 만들지는 않습니다. 그것은 PGP를 구체적으로 만듭니다. 중앙 계정도, 중간에 서는 공급업체도 없이, 키를 관리할 수 있는 사람들 사이에서 이루어지는 비동기 파일 및 메시지 암호화입니다.

일상적인 대화에는 Signal이 더 나은 도구입니다. 키는 당신 대신 관리되고, 메타데이터 처리는 더 강력하며, 저녁 식사 전에 지문을 비교해야 할 사람은 아무도 없습니다. 저장이나 전송을 위해 파일을 암호화하는 데는 age가 PGP보다 단순하고 잘못 사용하기가 더 어렵습니다. 필요한 것이 서명뿐일 때 릴리스나 문서에 서명하는 데는 minisign이 더 작고 더 명확합니다. PGP에 남은 영역은 실재합니다 — 수년 뒤에도 읽을 수 있어야 하는 이메일, 기존 인프라 안의 서명, 도구와 수십 년에 걸친 상호 운용성 — 그리고 그 영역에서는 여기의 PGP 도구 모음이 작업에서 명령줄을 제거하되, 그 작업이 요구하는 주의까지 제거하지는 않습니다.

자주 묻는 질문

브라우저 기반 PGP는 안전한가요?

키 재료는 탭을 결코 떠나지 않습니다. 생성, 암호화, 복호화, 서명은 모두 브라우저 안에서 로컬로 실행되며, 페이지는 아무것도 업로드하거나 저장하지 않습니다. 그렇긴 해도, 브라우저는 그것을 실행하는 기기와 브라우저 자체만큼만 신뢰할 수 있습니다 — 확장 프로그램, 맬웨어, 빌린 컴퓨터가 그 아래에 있습니다. 일상적인 키에 대해서는 그 절충이 합리적입니다. 가장 위험도가 높은 키 — 릴리스나 금고, 또는 다른 사람들의 데이터를 보호하는 키 — 에 대해서는 오프라인 컴퓨터를 사용하고, 브라우저 도구는 편의용 작업에 남겨 두세요.

개인 키나 그 패스프레이즈를 잃어버렸습니다 — 누군가 제 메시지를 복구할 수 있나요?

아니요, 그리고 그것이 요점입니다. 비밀번호 재설정도, 지원 데스크도, 백도어도 없습니다. 개인 절반이 사라진 키나 패스프레이즈를 잊은 키로 암호화된 메시지는 암호화된 채로 남습니다. 당신을 위해 그것을 복구할 수 있는 사람은 다른 누군가를 위해서도 복구할 수 있을 것입니다. 그래서 위생 섹션의 백업과 폐지 인증서가 존재합니다 — 백업은 기기를 잃어도 살아남는 방법이고, 폐지 인증서는 더 이상 사용할 수 없거나 더 이상 신뢰하지 않는 키를 폐기하는 방법입니다.

공개 키가 정말 그 사람의 것인지 어떻게 알 수 있나요?

지문을 두 번째 채널을 통해 비교하세요. 통화에서 소리 내어 읽거나, 그 사람이 건넨 명함과 대조하거나, 그 사람이 통제하는 페이지와 대조하세요. 지문은 공개 키의 전체 해시입니다. 양쪽에서 일치하면, 그 사람이 가진 것과 같은 키를 당신이 가지고 있는 것입니다. 키 서버는 아무것도 보증하지 않습니다 — 누구든 어떤 이름과 이메일 주소든 주장하는 키를 업로드할 수 있으며, 목록에 오르는 것은 검증이 아닙니다. 어딘가에서 내려받은 키를 지문으로 다른 곳에서 확인하는 것, 그것이 목표로 삼아야 할 기준입니다.