먼저 비밀번호를, 이어서 여섯 자리 코드를 요구하는 VPN 클라이언트에 로그인하면 두 프롬프트가 두 개의 독립된 장벽처럼 보입니다. 요소 유형으로 세면 실제로 비밀번호는 아는 것이고 코드는 가진 것입니다. 침해된 노트북 한 대가 무엇을 노출하는지로 세면, 가진 것이 바로 당신이 입력 중인 기기의 파일이기 때문에 둘은 하나의 경계로 무너질 수 있습니다. 이 두 셈의 차이가 이 해설의 주제입니다.

비밀번호 필드에서 코드 상자까지 한 번의 로그인을 따라가기

라벨이 아니라 순서를 보세요. 클라이언트가 비밀번호를 보내고, 서버가 두 번째 증명이 필요하다고 답하며, 클라이언트가 여섯 또는 여덟 자리용 필드를 엽니다. 그 필드 뒤에는 공유 비밀과 시계를 가진 생성기 앱이 있습니다. 비밀과 현재 시간 단계에서 값을 계산하고, 서버는 비밀의 자기 사본에서 같은 값을 다시 계산합니다.

양쪽은 같은 키 자료를 보관합니다. 코드를 비밀이라고 설명할 때 사람들이 놓치는 부분이 바로 이 대칭성이며, 제공자도 당신의 코드를 생성할 수 있으므로 시드는 어떤 단일 출력보다 가치가 큽니다. 유출된 코드는 일회성 값이고, 그것을 만든 시드는 교체될 때까지 유효한 값을 계속 만들어 내는 영구 자격 증명입니다.

활성화는 흐름의 나머지 절반입니다. 기기 암호, 생체 인증 요청 또는 암호화된 컨테이너로 잠금을 해제하는 생성기는 소유 증명에 다른 무엇인가를 더해 제시합니다. 암호화 없이 실행되고 운영체제 세션으로 잠금을 해제하는 생성기는 파일만 제시합니다. 같은 앱도 등록이 어떻게 이루어졌는지에 따라 두 가지 배열을 모두 제공할 수 있으므로 배포 결정은 그 단계에 있고 앱의 마케팅 페이지에 있지 않습니다.

코드가 실제로 무엇을 증명하는지 판단하기

표준의 언어는 여기서 유난히 명확하며 직접 읽을 가치가 있습니다. NIST의 인증기 지침 은 소프트웨어 기반 OTP 생성기를 인증기로 나열하고, 활성화 요소가 있는 다중 요소 OTP와 단일 요소 OTP를 구분하며, OTP 인증이 피싱에 저항하지 못한다고 밝힙니다. 이 세 조항 각각이 프롬프트에 대해 무엇을 주장할 수 있는지를 바꿉니다.

피싱에 저항하지 못한다는 점이 가장 날카로운 모서리입니다. 필드에 입력한 코드는 실시간으로, 그렇게 하도록 설득된 사람에 의해 다른 사람의 필드에 입력될 수 있습니다. 창은 짧아서 유용한 시도 횟수를 줄이지만 기법을 닫지는 못합니다. 요구 사항에 그에 대한 저항이 포함된다면 생성기가 어디서 실행되든 OTP는 잘못된 기본 요소입니다.

단일 요소 대 다중 요소가 두 번째 구분입니다. 활성화 단계 없이 나타나는 코드는 파일 소유를 증명할 뿐이며, 그 파일은 그것을 읽을 수 있는 계정만큼만 강합니다. 활성화 요소를 더하면 주장은 나아지지만, 여전히 로그인 시 제시된 증명을 설명하고 그것을 만드는 기기의 격리를 설명하지는 않습니다.

침해된 노트북이 어디까지 닿는지 보기

워크스테이션에서 코드 실행 권한을 가진 공격자는 당신이 입력하는 필드를 읽는 데 그치지 않습니다. 로그인 성공 후 수립된 세션은 보통 토큰이나 쿠키이며, 토큰은 코드 없이도 다른 기기에서 사용할 수 있습니다. 그것이 당신이 방어하는 능력이라면 로그인 시 두 번째 프롬프트를 추가하는 것은 공격 단계 수를 바꿀 뿐 결과를 바꾸지 않습니다.

ArrangementWhat it adds at loginWhat it leaves inside the laptop boundary
Password plus TOTP app on the same machineA possession proof the password alone does not supplyThe seed, the unlock step and the authenticated session
TOTP app on a separate phoneSeed storage outside the workstationSession cookies, the typed password and any prompt that can be proxied
Hardware key with a signed challengeA per-login signature bound to the originWhatever the browser and the workstation are already trusted to do

세 번째 열을 정직한 열로 읽으세요. 위의 모든 배열은 세션이 바로 거기서 쓰이기 때문에 워크스테이션의 신뢰 경계 안에 무언가를 남깁니다. 달라지는 것은 장기 비밀이 그 경계와 함께 이동하는지 아니면 밖에 남는지, 그리고 증명이 특정 오리진에 묶여 유사 페이지가 그것을 중계할 수 없는지입니다.

두 가지 작은 세부 사항도 같은 그림에 속합니다. 코드는 수락 창 동안 유효하며, 흔히 삼십 초에 더해 시계 편차에 대한 허용치가 있어, 검증자가 재사용을 거부하지 않으면 포획된 값이 그 창 안에서 재생될 수 있습니다. 그리고 새 생성기를 설치해도 이미 인증된 세션은 종료되지 않으므로 오래된 세션은 사고를 억제했어야 할 자격 증명 변경보다 오래 살아남습니다.

분리가 도움이 되는 곳에만 생성기를 옮기기

코드 생성기를 휴대전화에 두는 것은 도난당한 노트북이 더는 두 증명을 함께 지니지 않는다는 한 가지 특정한 실패에 대한 실제 개선입니다. 그러나 노트북에서의 세션 탈취에는 아무것도 하지 못하고, 피싱 페이지에 코드를 입력하는 사용자에게도, 한 번 인쇄해 메모 앱에 사진으로 남긴 복구 코드에도 아무것도 하지 못합니다.

그러니 도구를 고르기 전에 요구 사항을 쓰세요. 목표가 유출된 비밀번호에 대한 추가 증명이라면 그렇게 분명히 말하면 되고, 같은 기기의 앱이 이미 그것을 제공합니다. 목표가 VPN 워크스테이션의 침해에 대한 회복력이라면 그 공격자 능력을 명명하고 그것에 대해 평가된 배열을 고르며, 피싱 요구 사항은 가정하지 말고 따로 밝히세요.

그다음, 이 중 무엇이 사고와의 접촉에서 살아남는지를 결정하는 운영 측 절반을 다루세요. 기기 분실에는 문서화된 교체 경로가 필요하고, 자격 증명 순환에는 활성 세션 폐기가 필요하며, 등록 자료에는 시드와 같은 보호가 필요한데, 이는 보호되지 않은 등록 사본이 같은 미래의 코드를 더 짧은 경로로 공격자에게 넘기기 때문입니다. 이 네 항목을 나열하는 것이 같은 기기 토큰이 좋은지 무가치한지 논쟁하는 것보다 유용합니다.

관련 글