연결 대화상자는 로그인을 기억하는 체크 상자를 제공하고, 이를 체크하면 계정 정보가 사용자의 머리에서 기기로 옮겨 간다. 인터페이스는 어디에 있는지 결코 말하지 않는다. Windows에서는 현재 사용자의 레지스트리 영역, 로그인을 이미 담고 있는 프로필 파일, 자동화 스크립트가 하는 일이 후보이다. 위치마다 읽는 주체와 실패 방식과 정리가 다르므로, 유용한 질문은 어느 프로세스가 비밀을 되찾을 수 있으며 얼마나 오래인가이다. 대화상자에서 체크 상자를 바깥으로 따라가고, 잃어버린 노트북이 실제로 무엇을 노출하는지 결정하라.

연결 대화상자의 체크 상자에서 시작하라

기억된 값은 프로필별, Windows 계정별로 공유 기기 저장소가 아니라 사용자 하이브에 보관된다. 그래서 같은 컴퓨터의 두 번째 사용자는 저장된 로그인을 보지 못하고, 클라이언트를 다시 설치해도 저장된 항목이 반드시 지워지지는 않는다.

프로필 파일 자체는 서버, 포트, 설정을 보관하지만 비밀은 보관하지 않으므로 사람들은 먼저 잘못된 대상을 살핀다. 따라서 프로필을 지우면 연결은 사라지고 자격 증명은 남는다. 이것이 정리 중 가장 흔한 놀라움이다. 둘 다 제거하라, 하나만이 아니라.

레지스트리 값이 드러내는 것

계정 이름은 읽을 수 있는 텍스트이므로 그 사용자로 실행되는 무엇이든 특별한 호출 없이 해독할 수 있다. 비밀번호는 다르게 Windows DPAPI로 봉인되어 있고, 계정에, 플래그에 따라 특정 기기에 묶여 있다. 그래서 봉인된 덩어리를 다른 컴퓨터로 옮겨 재생해도 쓸 수 있는 비밀이 되지 않는다.

값을 나열하는 것만으로 비밀 자체를 건드리지 않고 운영상의 질문에 답할 수 있다. 항목이 있는지 확인하는 데 복호화는 필요 없다. 이 목록은 정리 전후의 기록으로도 쓰인다.

reg query "HKCU\Software\OpenVPN-GUI\configs" /s
cmdkey /list | findstr /i vpn
reg query "HKCU\Software\OpenVPN-GUI" /s | findstr /i "username password"

두 가지 한계는 분명히 말할 가치가 있다. 같은 로그온 세션 안의 프로세스는 클라이언트가 쓰는 것과 같은 보호 해제 루틴을 호출할 수 있으므로, 봉인은 저장 상태의 보호이지 침해된 데스크톱에 대한 방어가 아니다. 그리고 전체 디스크 암호화가 없으면 봉인된 값의 사생활 보호는 디스크만큼이다.

프로필 파일에 이미 로그인이 들어 있을 때

일부 포털은 계정 이름과 비밀번호가 적힌 구성을 제공하므로 클라이언트가 조용히 연결한다. 그 시점에서 파일은 작동하는 자격 증명이고, 그 사본 하나하나가 같은 문의 또 다른 열쇠다.

그런 파일은 백업, 채팅 스레드, 동기화 폴더에 남고, 원본을 지워도 그 사본은 작동을 멈추지 않는다. 로컬 파일을 편집해도 다른 것에는 아무 변화가 없다. 접근을 취소하려면 서버에서 비밀번호를 바꿔야 하고, 그것도 신속히 해야 한다. 노트북 한 대에서의 정리는 별개의 더 작은 작업이다.

프롬프트가 허용되는 곳에서는 그것을 택하고 클라이언트의 캐시 제어를 사용하라. 미리 채워진 프로필이 정말 필요하다면 동기화 폴더 밖에 두고 작업이 끝나면 제거하라.

자동화는 비밀을 다른 곳으로 옮긴다

스크립트는 프로세스 인수와 합성 키 입력이라는 두 가지 통로를 더 들여온다. 명령줄에 이름이 오른 파일은 프로세스 인수나 파일 권한을 읽을 수 있는 모든 것에 보이고, 도구가 입력하는 비밀번호는 현재 포커스를 가진 창으로 간다. 공개된 한 사례는 클라이언트를 실행하기 전에 데스크톱 비밀번호를 그런 식으로 입력한다. 저장된 일회용 비밀번호 시드는 앞으로의 모든 코드를 만들 수 있고 한 번의 로그인보다 오래 살아남기 때문에 같은 주의를 받을 만하다.

더 나은 방식은 서비스 계정만 읽을 수 있는 곳에 비밀을 두고, 클라이언트의 문서화된 재시도와 자격 증명 원본 옵션에 의존하며, 권한 프롬프트에 입력을 주입하지 않는다. 스크립트가 승격을 위해 데스크톱 비밀번호를 필요로 한다면 그것은 VPN이 아니라 권한 설계의 문제다.

기기를 잃은 뒤의 정리

무엇보다 먼저 서버에서 계정을 취소하거나 비활성화하라, 로컬 삭제는 누군가 이미 가진 사본을 무효로 만들 수 없기 때문이다. 그다음 기억된 레지스트리 값을 지우고, 프로필과 자격 증명 파일을 제거하고, 셸 기록과 스크립트 디렉터리에서 붙여 넣은 비밀번호를 찾아라.

무엇을 제거했고 접근이 언제 끝났는지 적어 두라. 그 두 가지가 사고 검토가 던지는 유일한 질문, 즉 기기가 떠난 뒤에도 자격 증명 사본이 작동했는가에 답한다.

관련 글