PGP Suite

키 쌍 생성, 메시지 암호화, 메시지 복호화, 누구나 당신에게서 왔음을 증명할 수 있도록 텍스트에 서명하기, 받은 서명 검증하기, 신뢰하기 전에 키 검사하기 — 사람들이 실제로 GnuPG를 여는 다섯 가지 일을 명령줄 없이. 모든 작업은 이 브라우저 탭 안에서 로컬로 실행됩니다: 개인 키와 암호 구절은 업로드되지도, 기록되지도, 기기를 떠나지도 않습니다. 개인 키를 서버에 붙여 넣으라고 요구하는 도구는 유일하게 중요한 시험에서 이미 떨어진 것이기 때문입니다. 탭을 닫으면 키도 함께 사라집니다 — 떠나기 전에 생성한 것을 저장하세요.

키 쌍 생성

Curve25519는 현대적인 기본값입니다: 작은 키, 빠른 연산, 그리고 현재 GnuPG가 새 키에 내리는 선택과 같습니다. RSA-4096은 상대방 도구가 오래되어 필요로 할 때만 선택하세요. 암호 구절은 저장 중의 개인 키를 암호화합니다 — 키를 어딘가에 보관할 거라면 꼭 설정하세요.

암호 구절은 이 탭을 절대 떠나지 않습니다. 설정하고 잊어버리면 개인 키를 복구할 수 없습니다 — 저희도, 누구도요.

메시지 암호화

받는 사람의 공개 키와 메시지를 붙여 넣으세요. 맞는 개인 키만 결과를 열 수 있으므로, 암호문은 신뢰하지 않는 경로로도 보낼 수 있습니다.

메시지 복호화

개인 키, 그 암호 구절, 암호화된 메시지를 붙여 넣으세요. 평문은 여기에서만 나타나고 다른 어디에도 나타나지 않습니다 — 저장되지 않으니 탭을 닫기 전에 복사하세요.

서명 및 검증

클리어텍스트 서명은 메시지를 읽을 수 있는 상태로 유지하면서, 당신의 공개 키를 가진 누구나 그 메시지가 당신 것이며 변조되지 않았음을 증명할 수 있게 합니다. 왼쪽에서 개인 키로 서명하고, 오른쪽에서 서명자의 공개 키로 서명된 메시지를 검증하세요.

키 검사

누군가 건네준 키로 암호화하기 전에 그 키를 살펴보세요: 누구의 것이라고 주장하는지, 어떤 알고리즘을 쓰는지, 언제 만들어졌는지, 만료되는지, 그리고 대역 외로 비교할 지문 — 전화로, 직접 만나서, 키를 전달한 경로가 아닌 다른 모든 방법으로요.

이 도구는 OpenPGP.js로 구동되며, 수정 없이 GNU Lesser General Public License v3.0 이상(LGPL-3.0-or-later)에 따라 사용됩니다. 전체 소스 코드는 OpenPGP.js 저장소에서 볼 수 있습니다.

이것이 브라우저 안에 사는 이유, 그리고 할 수 없는 것

PGP가 30년을 버틴 것은 그 신뢰 모델에 서버가 필요 없기 때문입니다: 키는 소유자가 생성하고, 암호화는 보내는 사람의 기계에서 일어나며, 복호화는 받는 사람의 기계에서 일어납니다. 그 형태를 깨는 모든 웹 양식 — 개인 키를 업로드하세요, 복호화는 저희가 합니다 — 은 PGP가 제거하려고 존재하는 바로 그 중간자를 다시 불러옵니다. 그래서 이 모음은 반대로 만들어졌습니다: OpenPGP.js 라이브러리는 코드로 한 번 다운로드되고, 그 뒤 당신의 키, 암호 구절, 평문, 암호문은 그 코드에 의해 탭 안에서 처리되며 절대 전송되지 않습니다. 여기에 계정도, 키 보관소도 없는 이유가 그것입니다. 위에서 생성한 키는 저장하기 전까지 나타난 텍스트 상자 안에만 존재합니다; 정직한 작업 흐름은 양쪽 절반을 모두 다운로드하고, 개인 키를 암호화된 곳에 보관하고, 공개 키를 사람들이 당신을 찾는 곳에 게시하며, “키를 온라인에서 안전하게 보관해 드립니다”라고 제안하는 서비스를 치료책이 아니라 위협으로 취급하는 것입니다. 동반 가이드인 명령줄 없는 PGP 암호화는 첫 메시지 전에 지문을 확인하는 방법을 포함해 그 흐름을 처음부터 끝까지 안내합니다.

정직한 한계는 기능만큼 중요합니다. 이 페이지는 클리어텍스트 서명만 만듭니다 — 파일을 분리 서명하거나 파일을 암호화하지 않습니다. 파일 도구 역시 입력을 절대 업로드해서는 안 되며, 그것은 덧붙임이 아니라 자체 페이지가 필요한 일이기 때문입니다. 키링을 관리하지도, 키 서버에서 키를 가져오지도, 폐지를 확인하지도 않습니다: 여기서 검사하는 키는 붙여 넣은 그대로의 키이며, 그 지문이 다른 곳에서 검증해야 할 부분입니다. 그리고 잃어버린 암호 구절은 구할 수 없습니다 — 설계상 복구는 없습니다. 모음 주변에서는 이웃 도구들이 인접한 일을 맡습니다: 인증서 및 키 매처는 TLS 인증서에 대해 같은 쌍 확인을 하고, 비밀번호 생성기는 당신의 개인 키가 받을 만한 강력하고 고유한 암호 구절을 만듭니다 — 둘 다 이 페이지처럼 브라우저 밖으로 아무것도 내보내지 않습니다.

자주 묻는 질문

개인 키를 여기에 붙여 넣는 것이 정말 안전한가요?

이 페이지에서는 그렇습니다 — 그리고 그 이유는 약속이 아니라 아키텍처입니다. 이 페이지는 복호화하거나 서명할 때 네트워크 요청을 전혀 하지 않습니다: OpenPGP.js 코드는 브라우저 탭 안에서 실행되고, 키는 메모리에서 사용되며 전송, 저장, 기록이 절대 되지 않습니다. 직접 확인할 수 있습니다: 페이지를 불러온 뒤 오프라인으로 전환해도 모든 것이 그대로 동작합니다. 이는 서버 측 “온라인 PGP” 양식과는 다른 종의 도구입니다. 거기서는 키가 실제로 다른 사람의 기계로 이동합니다 — 중요한 키로는 절대 쓰지 마세요.

Curve25519와 RSA-4096 중 무엇을 생성해야 하나요?

새로운 용도에는 모두 Curve25519를 쓰세요. 현재 GnuPG와 OpenPGP.js의 기본값이고, 키와 서명이 훨씬 작으며, 생성은 소수를 찾는 몇 초가 아니라 즉시 이뤄지고, 약한 RSA 매개변수라는 함정도 없습니다. RSA-4096은 호환성을 위해 여기 있습니다: 아주 오래된 메일 플러그인, 레거시 HSM 작업 흐름, 일부 기업 도구는 여전히 타원 곡선 키를 읽지 못합니다. RSA가 필요한지 확신이 서지 않는다면, 필요 없는 것입니다.

개인 키 암호 구절을 잊으면 어떻게 되나요?

키를 잃는 것입니다. 암호 구절은 개인 키 재료 자체를 암호화하므로, 그것 없이는 누구도 그 수학을 실행할 수 없습니다 — 이 사이트도(본 적조차 없습니다), OpenPGP.js도, GnuPG도요. 그 최종성 자체가 보안 속성이 설계대로 동작하는 것입니다. 새 키 쌍을 생성하고 새 공개 키를 게시하세요. 접근을 잃는 것이 아플 일이라면, 암호 구절은 비밀번호 관리자에 보관하세요 — 외워서 재사용하지 말고, 같은 부류의 로컬 도구로 생성한 것을요.

검증에서 서명이 일치하지 않는다고 합니다. 무슨 뜻인가요?

눈앞의 메시지가 서명된 메시지와 비트 단위로 동일하지 않다는 뜻입니다 — 또는 서명 블록 자체가 전송 중에 손상됐다는 뜻입니다. 메일 클라이언트와 채팅 도구는 줄을 다시 감싸고, 대시를 변환하고, 줄 끝 공백을 먹어 버립니다. 클리어텍스트 서명은 정확한 바이트를 대상으로 하므로 흔한 원인은 전송 중 훼손입니다; 의도적인 편집도 검증자의 자리에서는 똑같이 보입니다 — 그게 바로 서명의 요점입니다. 메시지를 파일 첨부로 다시 요청하고, 내용이 중요하다면 지문을 대역 외로 비교하세요.

GnuPG, Mailvelope, 키 서버 등에서 이미 가진 키를 쓸 수 있나요?

네. 아머 블록을 내보내서(공개 키는 gpg --armor --export [email protected], 개인 키는 --export-secret-keys) 이 페이지 어디에든 붙여 넣으세요; 검사기는 다른 OpenPGP 소프트웨어가 만든 키도 읽습니다. 형식은 표준이지 이 사이트의 발명이 아니기 때문입니다. 반대도 성립합니다: 여기서 생성한 키는 GnuPG와 모든 호환 클라이언트로 깔끔하게 가져올 수 있어, 여기서 만든 것에 갇히지 않습니다.