[컴][웹][보안] FIDO

fido2 / fido

FIDO

ref. 1 글에 대한 정리이다.

FIDO 얼라이언스

  • 보안 목적의 비밀번호 사용을 줄이는 데 목표를 둔 업계 협회
  • 2013년, 페이팔과 레노버 등에서 일하던 보안 전문가들이 여러 비밀번호 보안 취약점을 비판하면서 FIDO 얼라이언스를 결성
  • ’퍼블릭 키 암호화에 기반한 강력한 인증 체계’로 비밀번호를 보완하거나 대체하려 시도
  • 웹사이트와 기타 서비스 공급업체가 사용할 수 있는 ‘여러 기술 규격을 개발’

FIDO 얼라이언스가 비밀번호를 없애고 싶어하는 이유

  • 인터넷으로 두 컴퓨터 간 비밀번호를 교환해 인증을 수행하는 시스템의 취약점
    • 간간히 전송중에 패스워드를 가로채는 것이 가능하다: 암호화가 완벽하지 않고, 항상 암호화를 완벽하게 구현하는 것도 아니기 때문이다.
  • 암호화하지 않은 비밀번호 시스템
    • 서비스 공급업체가 자신의 서버에 암호화하지 않은채로 사용자 비밀번호 리스트를 유지.

FIDO 의 해결책

FIDO 규격들은 인증을 사용자의 로컬 기기에 전적으로 맡겨 이런 근본적인 취약점을 모두 해결한다.

먼저 FIDO 얼라이언스가 가장 먼저 출시한 두 규격들인 UAF와 U2F 새로운 규격인 FIDO2

본질적으로 FIDO 얼라이언스는 온라인 서비스를 안전하게 인증 하는 경우, 유저가 ’강력한 인증 방법을 지원하는 기기’를 이용해서 인증을 하고 있거나, ’강력한 인증 방법을 지원하는 기기’를 가지고 있다는 것을 확신한다.(is betting that)
 

UAF(Universal Authentication Framework)

  • 스마트폰이나 태블릿 같은 ’디지털 기기 사용자의 인증’에 초점이 맞춰져 있다.
    • PC의 경우에는 도움이 되지 않는다.
  • 예를 들어, UAF 를 지원하는 서비스에 접근한다고 하자.(특정 웹사이트에 접근하는 경우를 생각하자.)
    1. 사용자는 자신의 기기를 통해 자신의 계정을 등록하게 된다.
    2. 그리고나서 기기가 지원하는 보안 프로토콜을 이용해서 사용자가 스스로를 인증하도록 요청하게 된다.(예를 들면 지문을 인식하시오 등)
    3. 이 인증이 끝나면, 암호화 키를 주고 받게 된다.(접근기기와 서비스 서버 사이에서)
    4. 이후 사용자는 같은 인증기술을 이용해서 로그인을 할 수 있다.
  • 서비스 제공업체는 로그인에 사용된 사용된 인증 방법의 유형을 알 수 있다.
    • 그래서 사용자가 PIN 코드를 이용해 인증했다면, 이를 안된다고 알리고, 다시 지문등의 인증을 요구할 수 있다.

U2F(Universal Second Factor)

  • 2FA로 불리는 ’이중 인증(Second-factor Authentication)’을 제공하는 데 초점을 맞추고 있다.
  • 비밀번호 기반 보안을 대체하는 것이 아니라 보완하는 기법
  • U2F는 하드웨어 기기를 사용하는 방법을 규정해 제시
    • 별도의 하드웨어 인증 키가 필요하다.
    • 암호화된 통신에 필요한 ’프라이빗 암호 키가 하드웨어 기기에 저장’된다.
  • U2F 표준은 이런 목적에서 여러 기기들을 지원할 수 있다.
    • 가장 많이 사용되고 있는 기기는 ‘전용 하드웨어 보안 전자 열쇠’(fob, 구글이 만들었다.)
    • 이 보안 전자 열쇠는 USB나 NFC를 통해 사용자 기기와 연결할 수 있다.
  • 브라우저에서 이 ’보안열쇠(fob)’를 이용하면
    1. 2fa 를 구성하기 위해 fob 는 서비스 제공자와 '암호화 키를 교환'한다.
    2. 이어지는 인증에서 사용자는 fob 를 가지고 있어야 한다.
    3. fob 는 자신의 key 를 사용해서 현재 사용하는 site 가 진짜인지를 확인한다.

FIDO2

  • U2F 규격은 기술적으로 전용 전자 열쇠 대신 스마트폰을 인증 기기로 사용할 수 있다.
    • 그러나 U2F 규격은 구현이 용이하도록 스마트폰의 기능과 특징들을 활용하는 방법을 설명하지 않는다.
  • 이런 단점을 해결하기 위해, FIDO 얼라이언스는 FIDO2로 부르는 첫 번째 표준에 기반을 둔 두 번째 표준을 개발.
  • FIDO2의 ’2’는 서로를 보완, 비밀번호가 없는 인증과 이중 인증을 구현하기 더 쉽고 안전하게 만든다는 의미.

WebAuthn

  • FIDO2 규격의 첫 번째가 웹인증(WebAuthn)
  • 2019년 W3C가 권장한 규격
  • UAF 와 같지만 ‘모바일 기기에 국한되지 않는다’
  • 웹인증은 오픈 자바스크립트 API를 통해 최종 사용자(end user)와 서비스 제공업체 간의 통신을 규정 --> 표준을 지원하는 브라우저를 실행하는 모든 기기나 PC에서 이용 가능

CTAP(Client to Authenticator Protocols)

  • FIDO2의 두 번째 규격인 CTAP(Client to Authenticator Protocols)
  • CTAP는 별도의 기기를 인증 플랫폼으로 사용, 웹인증(WebAuthn)을 지원하는 서비스 제공업체와 사용자의 PC를 연결하는 규격.
  • 두 종류의 CTAP 프로토콜이 있다.
    • CTAP1은 U2F의 이름을 바꿔 업데이트한 것.
    • CTAP2는 개념을 확대했다.
      • 스마트폰이나 웨어러블을 PC에 연결해서 인증 서비스를 제공한다.(와이파이, 블루투스 또는 USB를 이용해서 연결)

FIDO authentication process

등록(회원가입)

  1. 사용자가 계정 생성을 요청하는 메시지를 보낸다.
  2. 서비스 제공자는 퍼블릭 키를 요청한다.
  3. 사용자는 웹인증 규격이 지원하고, 서비스 제공업체가 승인하는 로컬 기법을 사용해 자신을 인증한다. 서비스 제공업체와의 연결에 사용한 기기나 CTAP를 통해 연결되는 다른 기기를 사용해 인증할 수 있다.
  4. 로컬 장치는 사용자의 인증 데이터와 연결된 한 쌍의 암호 키(퍼블릭 키와 프라이빗 키 1개씩)를 생성한 후, 퍼블릭 키를 서비스 제공업체에게 전송한다.
  5. 서비스 제공업체는 퍼블릭 키를 저장하고, 이를 사용자의 새 계정과 연결시킨다.

로그인

  1. 사용자가 로컬 기기에서 서비스 제공업체에게 로그인 요청을 보낸다.
  2. 서비스 제공업체는 디지털 서명(digital signature)을 요청한다. 이는 프라이빗 키로만 생성할 수 있고, 연결된 퍼블릭 키로 읽을 수 있는 사용자의 신원을 증명하는 데이터이다.
  3. 사용자는 로컬 기기에서 자신을 인증한다.
  4. 로컬 기기는 인증된 신원과 접근하려는 서비스로 적절한 키 쌍을 사용했는지 판단하고, 프라이빗 키로 서명을 만든다. 그리고 이를 서비스 제공업체에게 전송한다.
  5. 서비스 제공업체는 사용자의 퍼블릭 키를 사용해 서명을 읽고, 사용자의 신원을 확인한 후 사용자를 로그인시킨다.

See Also

Reference

  1. 비밀번호 사용을 줄이기 위한 ’FIDO’의 의미와 인증 프로세스 - ITWorld Korea, 2021-02-03
  2. What is FIDO? How this initiative aims to make passwords obsolete | CSO Online, 20201-02-01
  3. 애플, FIDO 협회 합류··· 비밀번호 대체 시도에 동참 - CIO Korea, 2020-04
  4. 내 Facebook 계정을 안전하게 보호하려면? | Facebook 고객 센터
  5. 보안 키란 무엇이며 어떻게 사용하나요? | Facebook 고객 센터

댓글 없음:

댓글 쓰기