포럼 스레드에 VPN 프로필을 붙여 넣는 사람은 모두 같은 믿음에서 출발합니다. 파일에는 서버 주소와 몇 가지 옵션만 들어 있어서, 그것을 공유하는 일이 전화번호를 공유하는 것처럼 느껴집니다. 그러다 누군가 그 파일을 읽고 넷째 줄에서 암호화되지 않은 개인 키를 발견합니다.

프로필은 터널에 관한 문서가 아닙니다. 그것은 터널의 신원을 그대로 적어 둔 것입니다.

파일 속 객체들은 같은 비밀 등급을 공유하지 않습니다

공개 CA 인증서는 이동하도록 만들어진 것입니다. 클라이언트 개인 키는 그렇지 않습니다. 둘이 같은 파일에 나타나면, 무해한 쪽이 첨부 파일 전체를 안전해 보이게 만듭니다. 그것이 함정입니다.

OpenVPN은 설계상 이 문제를 더 악화시킵니다. 인증서, 키, 인증 자료를 파일 안에 직접 삽입할 수 있게 합니다. 배포에는 편리하고 공유에는 재앙입니다. 읽을 수 있는 인증서 블록으로 시작하는 파일은 그대로 개인 영역까지 이어집니다.

WireGuard는 더 노골적입니다. 인터페이스 섹션이 개인 키를 담고, 각 피어는 그 위에 미리 공유된 키까지 담을 수 있습니다. 어떤 줄이 중요한지에 대한 모호함은 없습니다. 거의 모든 줄이 중요합니다.

스크린샷은 다른 형식의 같은 유출입니다

설정을 QR 코드로 인코딩한다고 해서 미리보기가 되는 것은 아닙니다. 코드는 같은 바이트를 담고 있으며, 방 안의 어떤 휴대폰 카메라든 그것을 해독할 수 있습니다. 클라이언트 설정 창의 스크린샷도 마찬가지로, 구석에 키가 읽히는 형태로 남습니다.

인증 파일과 참조된 키 경로는 같은 감사에 속합니다. 외부 파일을 가리키는 프로필은 그 경로가 독자가 접근할 수 있는 곳으로 이어질 수 있으므로 자동으로 더 안전한 것은 아닙니다. 인증 파일 속 토큰은 비밀번호만큼 쓸모가 있고, 비밀번호처럼 보이는 경우는 드뭅니다.

키가 아니라 오류 텍스트를 보내세요

진단에는 오류 텍스트, 클라이언트 버전, 시도한 옵션 이름이 필요합니다. 키는 필요하지 않습니다. 이 세 가지로 질문을 쓰고, 파일이 당신의 컴퓨터를 떠나기 전에 모든 비밀과 불필요한 네트워크 식별자를 바꾸세요.

OpenVPN의 인라인 파일에 관한 매뉴얼 절은 그 객체들이 어디에 있는지 보여 주는 유용한 지도입니다. 하나의 프로필이 얼마나 많이 담을 수 있는지도 일깨워 줍니다.

# which lines in this profile look like secrets?
grep -n -E 'PrivateKey|PresharedKey|password|auth-user-pass|BEGIN .*PRIVATE KEY' wg0.conf

# OpenVPN: show the structure without printing key material
awk '/BEGIN/{print NR": "$0} /^[a-z-]+ /{print NR": "$1}' office.ovpn

그다음에는 편집에 대한 기억을 믿는 대신 최종 첨부 파일을 읽으세요. 키는 뒤쪽 블록에, 가리지 않은 주석에, 구조적이라고 판단한 줄에 숨어 있습니다.

노출된 뒤에는 교체만이 유일한 복구입니다

게시물을 지운다고 해서 무엇도 폐기되지 않습니다. 파일을 받은 사람은 여전히 유효한 자격 증명을 가지고 있으므로, 발급자는 서비스 자체의 절차를 통해 그것을 폐기하거나 교체해야 합니다. 로컬 사본을 지우는 것은 반대편에서 아무것도 바꾸지 않습니다.

사용 중인 프로필은 보호된 방법으로 보관하고, 더 이상 쓰지 않는 가져온 항목은 다운로드 폴더에 세 벌 남겨 두지 말고 의도적으로 지우세요. 더 이상 쓰지 않는 프로필도 폐기되기 전까지는 여전히 자격 증명입니다.

들일 만한 습관은 작습니다. 어떤 프로필이 컴퓨터를 떠나기 전에 주소 외에 무엇이 더 들어 있는지 묻고, 기억에 의존하지 말고 파일을 읽어서 답하세요.

관련 글