암호로 FIDO 인증

소개

FIDO (Fast IDentity Online) 인증 표준은 사용자가 웹사이트와 애플리케이션에 액세스하기 위한 빠르고 안전한 인증 메커니즘을 정의합니다.

여러 조직의 담당자가 참여하는 FIDO Alliance는 사용자가 공통 프로토콜을 통해 웹사이트와 앱에 액세스할 수 있도록 확장 가능한 개방형 기술 사양을 개발합니다. 즉, 모든 회사가 FIDO 표준을 사용하여 안전한 인증을 위해 패스키와 같은 기술을 구현할 수 있습니다.

비밀번호는 FIDO 로그인 사용자 인증 정보로, 출처 (웹사이트 또는 애플리케이션)와 실제 기기에 연결됩니다. 비밀번호를 사용하면 사용자 이름이나 비밀번호를 입력하거나 추가 인증 인자를 제공하지 않고도 인증할 수 있습니다. 이 기술은 비밀번호를 기본 인증 메커니즘으로 대체하는 것을 목표로 합니다.

보안 인증이 중요한 이유는 무엇인가요?

비밀번호는 수십 년간 컴퓨팅 인증에 사용되었습니다. 그러나 비밀번호 유출은 비밀번호가 유출될 가능성이 있고 비밀번호가 피싱될 수 있으므로 인증을 위한 가장 안전한 옵션은 아닙니다.

많은 사용자가 동일한 비밀번호를 사용하여 다른 웹사이트에 로그인합니다. 즉, 웹사이트 하나가 위반되면 동일한 비밀번호를 사용하는 다른 모든 계정이 위험에 처하게 됩니다. 따라서 사용자가 안전한 비밀번호 시스템을 구축했더라도 비밀번호가 유일한 보호 조치일 때는 위험에 처할 수 있습니다.

일부 사이트와 애플리케이션에서 SMS, 이메일, 애플리케이션 등을 통해 전송되는 두 번째 사용자 인증 정보를 요청하여 2단계 인증을 요청합니다. 비밀번호만 사용하는 것보다는 안전하지만 이러한 2단계 인증 방법은 악성 웹사이트에 2단계 인증 세부정보를 입력하도록 확신할 수 있기 때문에 여전히 피싱에 취약합니다.

FIDO는 어떤 방식으로 보안을 강화하나요?

FIDO 기반 인증은 비밀번호 기반 인증 및 기존 2단계 인증을 사용하는 인증에서 발생하는 많은 문제를 삭제합니다. 특히 다음 항목이 중요합니다.

  • FIDO 인증은 공개 키 암호화를 사용합니다.
  • FIDO는 사용자 인증 정보가 악의적인 당사자 또는 사용자 인증 정보를 소유하지 않은 다른 사용자와 공유되지 않도록 도와줍니다.

공개 키 암호화는 잠재적인 데이터베이스 유출의 위협을 줄입니다. 사용자가 하나의 출처 (사이트 또는 애플리케이션)로 등록하면 사용자 인증자 (실제 기기)에서 공개-비공개 키 쌍이 생성됩니다. 사용자의 공개 키는 원본 서버에 저장되지만 공격자에게는 유용하지 않습니다. 공격자는 인증을 완료하는 데 필요한 서버에 저장된 데이터에서 사용자의 비공개 키를 파생할 수 없습니다.

FIDO를 사용하면 사용자는 웹사이트 또는 애플리케이션이 실제 본인인지 확인할 책임이 없습니다. 또한 사용자 인증 정보가 다른 위치에서 사용되지 않도록 할 책임이 없습니다. FIDO는 각 사용자 인증 정보를 특정 출처에 결합합니다. 다시 말해, 사람이 아닌 기기가 웹사이트나 애플리케이션을 올바르게 식별해야 합니다.

예를 들어, 사용자가 example.com에 로그인하려고 한다고 가정해 보겠습니다. 사용자가 phishing-example.com에서 example.com의 사용자 인증 정보를 요청하면 인증자가 요청을 거부하므로 사용자를 보호합니다. 인증 프로세스에서는 피싱 웹사이트 또는 앱이 다른 출처를 대상으로 하는 인증을 받기가 매우 어렵습니다.

전반적으로 FIDO와 패스키를 사용하면 대다수의 사용자에게 유용하고 간편한 인증을 더 많이 배포할 수 있습니다.

데모

비밀번호란 무엇인가요?

패스키는 FIDO 및 W3C 웹 인증 (WebAuthn) 표준을 준수하는 디지털 사용자 인증 정보입니다. 비밀번호와 마찬가지로 웹사이트 및 애플리케이션에서는 사용자에게 계정에 액세스하기 위한 비밀번호를 생성할 수 있습니다.

패스키를 사용하려면 기기 잠금 해제를 통해 사용자의 신원을 확인해야 합니다. 이 기능은 생체 인식 센서 (예: 지문 또는 얼굴 인식), PIN, 패턴으로 실행될 수 있습니다. 사용자가 먼저 출처에 등록하여 패스키 (공개-비공개 키 쌍)를 생성해야 합니다.

사용자가 웹사이트 또는 앱으로 돌아가서 로그인하는 방법은 다음과 같습니다.

  1. 애플리케이션으로 이동합니다.
  2. 로그인을 클릭합니다.
  3. 비밀번호를 선택합니다.
  4. 기기를 잠금 해제하여 로그인을 완료합니다.

인증자는 비공개 키를 사용하여 서명을 생성합니다. 이 서명은 공개 키를 사용하고 비공개 키를 표시하지 않고 출처와 인증자 간의 로그인 사용자 인증 정보를 확인하는 데 사용됩니다.

사용자는 패스키가 저장된 위치와 관계없이 패스키를 사용하여 모든 기기에서 서비스에 로그인할 수 있습니다. 예를 들어 휴대전화에 저장된 패스키를 사용하여 별도의 노트북에서 웹사이트에 로그인할 수 있습니다.

패스키는 어떻게 작동하나요?

비밀번호가 생성되어 운영체제를 통해 동기화됩니다. 일부 운영체제에서는 동일한 Google 계정에 로그인된 Android 휴대전화와 ChromeOS 기기 등 사용자 기기 간 패스키의 자동 동기화를 허용할 수 있습니다.

패스키는 운영체제에 연결되어 있지만 사용자는 노트북에 로그인할 때 휴대전화에서 패스키를 사용할 수 있습니다. 패스키는 FIDO 및 W3C 표준으로 빌드되므로 모든 브라우저에서 패스키를 채택할 수 있습니다. 예를 들어 사용자가 Chromebook에서 site.example을 방문합니다. 이 사용자는 이전에 iOS 기기에서 site.example에 로그인한 적이 있습니다. iOS 기기에서 ID를 확인하라는 메시지가 표시됩니다. 일반적으로 site.example는 사용자의 Chromebook에 사용할 새 키를 생성하므로 향후 로그인 시 휴대전화가 더 이상 필요하지 않습니다.

패스키는 엔드 투 엔드 암호화가 적용됩니다. 즉, Google에서 다른 Android 기기에 동기화를 담당하더라도 Google에서 패스키를 읽거나 다른 방식으로 데이터를 알 수 없습니다.

인증 절차

인증 기간의 모습을 나타냅니다.

웹사이트 또는 앱에 패스키를 구현하려면 다음을 숙지하는 것이 중요합니다.

  • 인증자는 사용자 소유 패스키를 보유하여 사용자를 식별할 수 있는 사용자 소유 물리적 기기입니다.
  • 신뢰 당사자는 프런트엔드 애플리케이션 및 백엔드 서버로 구성된 웹사이트 또는 앱입니다.

예를 들어 사용자가 shoes.example 매장 (의사당)에서 신발을 구매하려 한다고 가정해 보겠습니다. 사용자가 이미 Android 휴대전화를 생체 인식 센서로 사용하여 shoes.example에 계정을 등록했습니다. 사용자가 기기를 잠금 해제하여 Android 기기에서 shoes.example에 로그인합니다. 그런 다음 shoes.example은 사용자의 알려진 신원 확인에 대해 암호화된 서명의 사용자 인증 정보를 확인하여 사용자의 신원을 확인합니다.

OTP

OTP는 FIDO 준수 기기로, 사용자 ID를 확인하는 데 사용됩니다. 여기에는 특수 목적 기기 (FIDO 보안 키), 휴대전화 및 인증자 요구사항을 충족하는 기타 컴퓨터가 포함됩니다. OTP는 FIDO 및 WebAuthn 표준에 설명된 암호화 작업을 실행합니다.

이 기기에는 등록 및 인증의 두 가지 역할이 있습니다.

  • 사용자가 신뢰 당사자에 등록하면 기기에서 고유한 공개-비공개 키 쌍을 생성합니다. 여기에는 사용자의 휴대전화와 컴퓨터가 포함됩니다.
  • 향후 사용자가 신뢰 당사자에 로그인하면 기기는 비공개 키를 사용하여 서명을 생성합니다.

사용자가 OTP를 소유하고 있음을 증명하면 두 작업이 모두 수행됩니다. 이 키 쌍은 특정 출처로 등록되며 정확한 출처에서만 사용할 수 있습니다. 사용자가 피싱 사이트를 방문하면 사용자 인증 정보를 사용할 수 없습니다.

FIDO 준수 기기

가장 일반적인 인증자는 다음과 같습니다.

  • 플랫폼 인증기: 스마트폰 및 컴퓨터에 내장되어 있습니다. 플랫폼 인증자는 생체 인식 센서 (지문 센서 또는 얼굴 인식이 있는 카메라), PIN, 패턴을 사용합니다. 인증 상호작용은 기기 잠금 해제를 통해 완료되므로 사용자가 기기를 소유하고 있으며 고유한 생체 인식으로 ID를 확인할 수 있는 단일 단계로 증명됩니다.
  • 보안 키: 일반적으로 인증을 나타내기 위해 눌러주는 버튼이 있는 USB 기기입니다. 비밀번호와 함께 사용할 경우 보안 키는 2단계 인증의 소유 요소를 제공할 수 있습니다. 가장 일반적인 예는 Titan 보안 키 또는 YubiKey입니다.

프런트엔드

애플리케이션은 WebAuthnAndroid용 FIDO2와 같은 클라이언트 측 API를 사용하여 인증자와 함께 사용자 인증 정보를 만들고 확인합니다.

애플리케이션은 백엔드 서버에서 생성된 암호화 문제를 인증자에게 전달합니다. 애플리케이션은 검증을 위해 인증자 응답을 서버에 전송하고 검증에 따라 조치를 취합니다.

백엔드

서버는 사용자의 공개 키 사용자 인증 정보와 계정 정보를 저장합니다.

등록 및 인증 시 서버에서 암호화 질문을 생성합니다. 이 챌린지는 인증자가 발급한 서명을 확인하여 사용자가 주장하는 사람이 맞는지 확인합니다.

자주 묻는 질문(FAQ)

누가 패스키를 지원하나요?

패스키는 FIDO 표준을 기반으로 하므로 Android 및 Chrome, Microsoft Windows, Microsoft Edge, MacOS, iOS, Safari 등 널리 사용되는 기타 플랫폼과 브라우저에서 작동합니다.

현재 가용성 상태를 확인하려면 이러한 플랫폼에서 제공하는 문서를 참고하세요.

Android에서는 2022년 말에 개발자에게 패스키 지원을 제공하는 것을 목표로 합니다.

사용자가 기기를 분실하면 어떻게 되나요?

Android에서 생성된 비밀번호는 같은 Google 계정에 로그인된 Android 기기에 백업되고 동기화되며, 비밀번호가 비밀번호 관리자에 백업되는 것과 같은 방식으로 이루어집니다.

즉, 사용자가 기기를 교체할 때 패스키를 가지고 다닙니다. 새 휴대전화에서 앱에 로그인하려면 휴대전화를 잠금 해제하기만 하면 됩니다.

사용자가 친구의 기기에서 패스키를 사용하여 친구의 기기에 로그인할 수 있나요?

예. 사용자는 로그인하려는 목적으로 휴대전화와 다른 사용자의 기기 간에 1회 연결 링크를 설정할 수 있습니다.

다음 단계

Codelab을 살펴보겠습니다.

다음에 대해 자세히 알아보기

업데이트 받기: