키 0, 상대 공개키
압축되지 않은 X9.62 공개키 바이트(P-256의 경우 33바이트). 휴대폰은 이를 사용해 암호화된 터널을 수립합니다.
표준 · FIDO CTAP 2.2 하이브리드 (passkey QR)
당신이 방금 QR을 표시하는 기기에서 passkey 로그인을 시작한 경우에만 그렇습니다. 다른 누군가가 QR을 생성했다면, 낯선 사람, “헬프데스크” 직원, 기술 지원 전화 상대 누구든, 당신의 휴대폰으로 그것을 스캔하면 당신이 아니라 그들이 당신 계정에 로그인됩니다. 이 프로토콜의 공개 표준(FIDO CTAP 2.2 하이브리드)은 견고합니다. 위협은 누가 먼저 “passkey로 로그인” 버튼을 눌렀는지를 둘러싼 사회공학입니다.
passkey는 자격 증명, 즉 공개키/개인키 쌍으로, 당신의 기기 중 하나에 묶여 있습니다. example.com용 passkey를 휴대폰에 등록했다면, example.com의 로그인 챌린지에 서명할 수 있는 것은 당신의 휴대폰뿐입니다.
이는 당신이 휴대폰에서 로그인할 때는 잘 작동합니다. 하지만 그 사이트의 passkey가 없는 노트북에서 로그인할 때는 어떻게 될까요? 다음을 할 수 있습니다:
옵션 3이 바로 FIDO CTAP 2.2 “하이브리드”가 정의하는 것입니다. QR은 부트스트랩입니다. 휴대폰이 Bluetooth Low Energy를 통해 노트북을 발견하고, 일회용 보안 터널을 수립하고, WebAuthn 절차를 중계하는 데 필요한 정보를 충분히 담고 있습니다.
URI는 다음과 같이 생겼습니다:
FIDO:/0123456789012345678901234567890123456789...
10진수 숫자는 CBOR 맵의 base10 인코딩입니다. base10 디코드 + CBOR 파싱 후, 맵에는 정수 키가 있습니다:
압축되지 않은 X9.62 공개키 바이트(P-256의 경우 33바이트). 휴대폰은 이를 사용해 암호화된 터널을 수립합니다.
10바이트의 무작위 데이터. 이 특정 QR을 식별합니다. BLE 광고가 그 해시를 방송하므로 휴대폰이 올바른 노트북을 찾을 수 있습니다.
0 = make-credential(새 passkey 등록), 1 = get-assertion(로그인), 2 = discoverable-credential.
직접 BLE에 도달할 수 없을 때(예: NAT 너머) 두 기기 사이의 터널을 중계하는 HTTPS 호스트입니다. 보통 cable.ua5v.com(Google)이나 cable.auth.com(Apple/MS) 같은 공급사 운영 서버입니다.
QR이 생성된 시점의 에포크 이후 초. 재생 공격 방지에 사용되며, 휴대폰은 몇 분보다 오래된 QR을 받아들이지 않습니다.
불리언. 노트북이 휴대폰의 수동적 상태 유지 참여를 원하는지 나타냅니다(주로 자격 증명 열거 흐름과 관련됨).
프로토콜은 암호학적으로 견고합니다. Bluetooth 근접 확인은 실제이며 공격을 물리적으로 당신 근처에 있는 사람으로 제한합니다. 그렇다면 어떻게 잘못될 수 있을까요?
개시 단계의 사회공학을 통해서입니다. 공격자가 자신의 노트북에서 당신의 계정으로 passkey 로그인을 시작합니다. 그들의 노트북이 FIDO QR을 표시합니다. 그들은 어떻게든 그 QR을 당신 앞에 들이댑니다:
당신이 스캔하면, 당신의 휴대폰이 당신의 passkey 서명을 공격자의 노트북 브라우저로 중계합니다. 당신이 passkey를 가진 사이트는 당신이 로그인했다고 여깁니다. 공격자는 이제 당신의 계정에 로그인되어 있습니다.
근접 확인은 도움이 되지 않습니다. 공격자가 물리적으로 그 자리에 있기 때문입니다. QR 내용도 도움이 되지 않습니다. 암호학적으로 유효하기 때문입니다. 로그인 목적지도 도움이 되지 않습니다. 당신이 passkey를 가진 올바른 사이트이기 때문입니다. 도움이 되는 유일한 것은 상황을 알아차리는 것입니다: 당신은 자신의 기기에서 “로그인”을 클릭해 직접 생성하지 않은 FIDO QR을 절대 스캔해서는 안 됩니다.
FIDO QR을 우리 스캐너에 끌어다 놓으면, 결과에는 다음이 표시됩니다:
cable.ua5v.com, Apple의 터널 서버 등)?위협 등급은 항상 의심스러움입니다. 프로토콜이 깨졌기 때문이 아니라, 안전 판단이 상황에 따라 달라지며 스캐너는 누가 “로그인”을 눌렀는지 알 수 없기 때문입니다. 결과의 공지가 정확히 그것을 알려줍니다: “스캔은 누군가가 다른 기기에서 시작한 로그인을 완료합니다. 본인이 방금 로그인을 시작한 게 아니라면 거부하세요.”
안전: 당신이 노트북 앞에 앉아 은행이나 이메일 사이트를 열고 “passkey로 로그인”을 클릭했더니 노트북이 QR을 표시했습니다. 휴대폰을 들어 QR을 스캔하고 근접 확인 프롬프트를 승인합니다. 완료입니다.
안전하지 않음: 당신이 아닌 누군가가 로그인을 시작한 경우. 여기에는 전화로 연락한 누구든, 원격 지원 통화 중인 누구든, QR을 이메일로 보낸 누구든, “신원을 확인할 QR”을 보여준 누구든, 그리고 방금 직접 표시한 당신 기기가 아닌 곳의 모든 QR이 포함됩니다.
QR이 당신이 시작한 로그인에서 온 것인지 확신할 수 없다면, 원래 기기에서 로그인을 취소하고(브라우저 탭을 닫고), 사용하려던 기기에서 처음부터 다시 시작하세요. 진짜 FIDO QR은 약 10분만 유효하므로, 다시 시작하면 진행 중인 세션이 모두 비워지고 위협이 불가능해집니다.
이미지를 끌어다 놓거나 FIDO: URI를 붙여넣으세요. 결과에는 작업, 터널 서버, 타임스탬프, 그리고 본인이 직접 로그인을 시작한 게 아니라면 거부하라는 강력한 경고가 표시됩니다.